windows-nt/Source/XPSP1/NT/admin/pchealth/client/common/pfcommon/ntevents.cpp
2020-09-26 16:20:57 +08:00

162 lines
4.6 KiB
C++

/********************************************************************
Copyright (c) 1995-2000 Microsoft Corporation
Module Name:
ntevents.cpp
Abstract:
Defines a generic class that can register an NT
event source and log NT events on that evens source.
Revision History:
rsraghav created 03/10/95
DerekM modified 04/06/99
********************************************************************/
#include "stdafx.h"
#include "ntevents.h"
/////////////////////////////////////////////////////////////////////////////
// tracing
#ifdef THIS_FILE
#undef THIS_FILE
#endif
static char __szTraceSourceFile[] = __FILE__;
#define THIS_FILE __szTraceSourceFile
/////////////////////////////////////////////////////////////////////////////
// CWebLog- initialization stuff
// **************************************************************************
CNTEvent::CNTEvent(void)
{
m_hEventSource = INVALID_HANDLE_VALUE;
}
// **************************************************************************
CNTEvent::~CNTEvent()
{
if (m_hEventSource != INVALID_HANDLE_VALUE)
{
DeregisterEventSource(m_hEventSource);
m_hEventSource = NULL;
}
}
/////////////////////////////////////////////////////////////////////////////
// CWebLog- exposed methods
// **************************************************************************
HRESULT CNTEvent::InitEventLog(LPCWSTR wszEventSourceName)
{
USE_TRACING("CNTEvent::InitEventLog");
if (wszEventSourceName == NULL)
return E_INVALIDARG;
m_hEventSource = RegisterEventSourceW(NULL, wszEventSourceName);
if (m_hEventSource == INVALID_HANDLE_VALUE)
return Err2HR(GetLastError());
return NOERROR;
}
// **************************************************************************
HRESULT CNTEvent::TerminateEventLog(void)
{
USE_TRACING("CNTEvent::TerminateEventLog");
HRESULT hr = NOERROR;
if (m_hEventSource != INVALID_HANDLE_VALUE)
{
TESTBOOL(hr, DeregisterEventSource(m_hEventSource))
}
m_hEventSource = INVALID_HANDLE_VALUE;
return hr;
}
// **************************************************************************
HRESULT CNTEvent::LogEvent(WORD wEventType, DWORD dwEventID, LPCWSTR wszParam1,
LPCWSTR wszParam2, LPCWSTR wszParam3, LPCWSTR wszParam4,
LPCWSTR wszParam5, LPCWSTR wszParam6, LPCWSTR wszParam7,
LPCWSTR wszParam8, LPCWSTR wszParam9)
{
USE_TRACING("CNTEvent::LogEvent");
HRESULT hr = NOERROR;
if (m_hEventSource == INVALID_HANDLE_VALUE)
return E_FAIL;
LPCWSTR wszInsertString[10];
WORD cInsertStrings = 0;
if (wszParam1 != NULL)
{
cInsertStrings++;
wszInsertString[0] = wszParam1;
if (wszParam2 != NULL)
{
cInsertStrings++;
wszInsertString[1] = wszParam2;
if (wszParam3 != NULL)
{
cInsertStrings++;
wszInsertString[2] = wszParam3;
if (wszParam4 != NULL)
{
cInsertStrings++;
wszInsertString[3] = wszParam4;
if (wszParam5 != NULL)
{
cInsertStrings++;
wszInsertString[4] = wszParam5;
if (wszParam6 != NULL)
{
cInsertStrings++;
wszInsertString[5] = wszParam6;
if (wszParam7 != NULL)
{
cInsertStrings++;
wszInsertString[6] = wszParam7;
if (wszParam8 != NULL)
{
cInsertStrings++;
wszInsertString[7] = wszParam8;
if (wszParam9 != NULL)
{
cInsertStrings++;
wszInsertString[8] = wszParam9;
}
}
}
}
}
}
}
}
}
TESTBOOL(hr, ReportEventW(m_hEventSource, wEventType, 0, dwEventID, NULL,
cInsertStrings, 0, (LPCWSTR *)wszInsertString,
NULL))
return hr;
}