162 lines
4.6 KiB
C++
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;
|
|
}
|