170 lines
2.9 KiB
C
170 lines
2.9 KiB
C
/*++
|
||
|
||
Copyright (c) 1993 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
eventlog.c
|
||
|
||
Abstract:
|
||
|
||
This module contains routines that allow the simple TCP/IP services
|
||
to log events.
|
||
|
||
Author:
|
||
|
||
David Treadwell (davidtr) 08-02-1993
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#include <simptcp.h>
|
||
|
||
//
|
||
// Private globals.
|
||
//
|
||
|
||
HANDLE EventSource;
|
||
|
||
|
||
//
|
||
// Private prototypes.
|
||
//
|
||
|
||
VOID
|
||
LogEventWorker (
|
||
DWORD Message,
|
||
WORD EventType,
|
||
WORD SubStringCount,
|
||
CHAR *SubStrings[],
|
||
DWORD ErrorCode
|
||
);
|
||
|
||
|
||
INT
|
||
SimpInitializeEventLog (
|
||
VOID
|
||
)
|
||
{
|
||
//
|
||
// Register as an event source.
|
||
//
|
||
|
||
EventSource = RegisterEventSource( NULL, TEXT("SimpTcp") );
|
||
|
||
if( EventSource == NULL ) {
|
||
return GetLastError();
|
||
}
|
||
|
||
return NO_ERROR;
|
||
|
||
} // SimpInitializeEventLog
|
||
|
||
|
||
VOID
|
||
SimpTerminateEventLog(
|
||
VOID
|
||
)
|
||
{
|
||
//
|
||
// Deregister as an event source.
|
||
//
|
||
|
||
if( EventSource != NULL )
|
||
{
|
||
if( !DeregisterEventSource( EventSource ) )
|
||
{
|
||
INT err = GetLastError();
|
||
}
|
||
|
||
EventSource = NULL;
|
||
}
|
||
|
||
} // SimpTerminateEventLog
|
||
|
||
|
||
VOID
|
||
SimpLogEvent(
|
||
DWORD Message,
|
||
WORD SubStringCount,
|
||
CHAR *SubStrings[],
|
||
DWORD ErrorCode
|
||
)
|
||
{
|
||
WORD Type;
|
||
|
||
//
|
||
// Determine the type of event to log based on the severity field of
|
||
// the message id.
|
||
//
|
||
|
||
if( NT_INFORMATION(Message) ) {
|
||
|
||
Type = EVENTLOG_INFORMATION_TYPE;
|
||
|
||
} else if( NT_WARNING(Message) ) {
|
||
|
||
Type = EVENTLOG_WARNING_TYPE;
|
||
|
||
} else if( NT_ERROR(Message) ) {
|
||
|
||
Type = EVENTLOG_ERROR_TYPE;
|
||
|
||
} else {
|
||
ASSERT( FALSE );
|
||
Type = EVENTLOG_ERROR_TYPE;
|
||
}
|
||
|
||
//
|
||
// Log it!
|
||
//
|
||
|
||
LogEventWorker(
|
||
Message,
|
||
Type,
|
||
SubStringCount,
|
||
SubStrings,
|
||
ErrorCode
|
||
);
|
||
|
||
} // SimpLogEvent
|
||
|
||
|
||
VOID
|
||
LogEventWorker(
|
||
DWORD Message,
|
||
WORD EventType,
|
||
WORD SubStringCount,
|
||
CHAR *SubStrings[],
|
||
DWORD ErrorCode
|
||
)
|
||
{
|
||
VOID *RawData = NULL;
|
||
DWORD RawDataSize = 0;
|
||
|
||
ASSERT( ( SubStringCount == 0 ) || ( SubStrings != NULL ) );
|
||
|
||
if( ErrorCode != 0 ) {
|
||
RawData = &ErrorCode;
|
||
RawDataSize = sizeof(ErrorCode);
|
||
}
|
||
|
||
if( !ReportEvent( EventSource, // hEventSource
|
||
EventType, // fwEventType
|
||
0, // fwCategory
|
||
Message, // IDEvent
|
||
NULL, // pUserSid,
|
||
SubStringCount, // cStrings
|
||
RawDataSize, // cbData
|
||
(LPCTSTR *)SubStrings, // plpszStrings
|
||
RawData ) ) // lpvData
|
||
{
|
||
INT err = GetLastError();
|
||
DbgPrint( "cannot report event, error %lu\n", err );
|
||
}
|
||
|
||
} // LogEventWorker
|
||
|
||
|