windows-nt/Source/XPSP1/NT/net/rras/cps/pbserver/ntevents.cpp
2020-09-26 16:20:57 +08:00

133 lines
4.4 KiB
C++

/*--------------------------------------------------------
ntevents.cpp
Defines a generic class that can register an NT
event source and log NT events on that evens source.
Copyright (c) 1996-1998 Microsoft Corporation
All rights reserved.
Authors:
rsraghav R.S. Raghavan
History:
03-10-95 rsraghav Created.
-------------------------------------------------------*/
#include <windows.h>
#include "ntevents.h"
///////////////////////////////////////////////////////////////////////////////
//
// Function: CNTEvent::CNTEvent
//
// Description: This is the constructor for the generic NT Even logging class
//
// Parameters: pszEventSourceName - points to a null-terminated string
// representing the event source name.
//
//
// Histroy: 03/10/96 rsraghav Created
///////////////////////////////////////////////////////////////////////////////
CNTEvent::CNTEvent(const char *pszEventSourceName)
{
if (pszEventSourceName)
{
m_hEventSource = RegisterEventSource(NULL, pszEventSourceName);
}
}
///////////////////////////////////////////////////////////////////////////////
//
// Function: CNTEvent::~CNTEvent
//
// Description: This is the destructor for the generic NT Even logging class
//
// Parameters: none.
//
//
// Histroy: 03/10/96 rsraghav Created
///////////////////////////////////////////////////////////////////////////////
CNTEvent::~CNTEvent()
{
if (m_hEventSource)
{
DeregisterEventSource(m_hEventSource);
m_hEventSource = NULL;
}
}
///////////////////////////////////////////////////////////////////////////////
//
// Function: CNTEvent::FLogEvent
//
// Description: This fucntion allows logging events to the event source
// associated with this object. The function is a generic
// log function that could handle upto 5 insert strings.
// The string params are given the default value of NULL,
// and the first NULL parameter in the argument list terminates
// the insert string list.
//
// Parameters: wEventType - type of event to be logged (possible values
// are EVENTLOG_INFORMATION_TYPE, EVENTLOG_ERROR_TYPE,
// EVENTLOG_WARNING_TYPE, EVENTLOG_AUDIT_SUCCESS, and
// EVENTLOG_AUDIT_FAILURE)
// dwEventID - ID of the event to be logged (constants are
// defined in the appropriate header files generated
// by the mc compiler.
// pszParamN - {N=1,2,3,4,5} represent the appropriate insert
// string parameter. All have default value NULL, and the
// first NULL parameter terminates the insert string list.
//
//
// Histroy: 03/10/96 rsraghav Created
///////////////////////////////////////////////////////////////////////////////
BOOL CNTEvent::FLogEvent(WORD wEventType, DWORD dwEventID, const char *pszParam1 /* = NULL */,
const char *pszParam2 /* = NULL */, const char *pszParam3 /* = NULL */,
const char *pszParam4 /* = NULL */, const char *pszParam5 /* = NULL */,
const char *pszParam6 /* = NULL */, const char *pszParam7 /* = NULL */,
const char *pszParam8 /* = NULL */, const char *pszParam9 /* = NULL */)
{
if (!m_hEventSource)
{
OutputDebugString("Can't log event, m_hEventSource is NULL\n");
return FALSE;
}
const char *pszInsertString[10];
const int cszInsertString = (sizeof(pszInsertString) / sizeof(pszInsertString[0]));
WORD cInsertStrings = 0;
pszInsertString[0] = pszParam1;
pszInsertString[1] = pszParam2;
pszInsertString[2] = pszParam3;
pszInsertString[3] = pszParam4;
pszInsertString[4] = pszParam5;
pszInsertString[5] = pszParam6;
pszInsertString[6] = pszParam7;
pszInsertString[7] = pszParam8;
pszInsertString[8] = pszParam9;
pszInsertString[9] = NULL;
for (int i = 0; i < cszInsertString; ++i)
{
if (pszInsertString[i])
{
cInsertStrings++;
}
else
{
break;
}
}
return ReportEvent(m_hEventSource, wEventType, 0, dwEventID, NULL, cInsertStrings, 0, (const char **) pszInsertString, NULL);
}