//+---------------------------------------------------------------------------- // // File:eventlog.cpp // // Module: // // Synopsis: Implement eventlog helper class CEventLog // // Copyright (C) Microsoft Corporation. All rights reserved. // // Author: Created 9/16/98 // //+---------------------------------------------------------------------------- #include #include "debug.h" #include "eventlog.h" //+---------------------------------------------------------------------------- // // Function: CEventLog::Open // // Synopsis: // Register the specified event source. // Note that the registry entries must already exist. // HKLM\System\CurrentControlSet\Services\EventLog\Application\ // Requires values "EventMessageFile" and "TypesSupported". // // Arguments: LPCTSTR lpSourceName - The source name must be a subkey of // a logfile entry under the EventLog key in the registry // // Returns: BOOL - TRUE if succeed // // History: Created Header 9/16/98 // //+---------------------------------------------------------------------------- BOOL CEventLog::Open(LPCWSTR lpSourceName) { ASSERT(lpSourceName != NULL); if (lpSourceName == NULL) { return FALSE; } ASSERT(m_hEventLog == NULL); m_hEventLog = ::RegisterEventSource(NULL, // local machine lpSourceName); // source name if (m_hEventLog == NULL) { TRACE2(("CEventLog::Open %ws failed, LastError = %d"), lpSourceName, GetLastError()); } return m_hEventLog != NULL; } //+---------------------------------------------------------------------------- // // Function: CEventLog::ReportEvent // // Synopsis: Writes an entry at the end of the event log. Support upto 3 // parameters // // Arguments: WORD wType - see wType of ::ReportEvent // DWORD dwEventID - see dwEventID of ::ReportEvent // const TCHAR* pszS1 - The 1st string, default is NULL // const TCHAR* pszS2 - The 2st string, default is NULL // const TCHAR* pszS3 - The 3st string, default is NULL // // Returns: BOOL - TRUE is succeed // // History: Created Header 9/16/98 // //+---------------------------------------------------------------------------- BOOL CEventLog::ReportEvent(WORD wType, DWORD dwEventID, const TCHAR* pszS1, const TCHAR* pszS2, const TCHAR* pszS3) { // // Set up an array of strings // const TCHAR* arString[3] = {pszS1, pszS2, pszS3}; int iNumString = 0; // number of parameters for (iNumString = 0; iNumString < 3; iNumString++) { if (arString[iNumString] == NULL) { break; } } ASSERT(m_hEventLog); if (m_hEventLog == NULL) { return FALSE; } BOOL fSucceed = ::ReportEvent(m_hEventLog, wType, 0, // event category dwEventID, NULL, // user security identifier (WORD) iNumString,// number of strings to merge with message 0, // size of binary data arString, // array of strings to merge with message NULL); // address of binary data if (!fSucceed) { TRACE2(("CEventLog::ReportEvent failed for event id %d, LastError = %d"), dwEventID, GetLastError()); } return fSucceed; }