📄 log.c
字号:
/* Microsoft Developer Support Copyright (c) 1993 Microsoft Corporation. *//* Skip asynch rpc inclusion */#ifndef __RPCASYNC_H__#define __RPCASYNC_H__#endif#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "messages.h"#include "log.h"#define PERR(bSuccess, api) {if(!(bSuccess)) printf("%s: Error %d from %s \ on line %d\n", __FILE__, GetLastError(), api, __LINE__);}/********************************************************************** FUNCTION: addSourceToRegistry(LPSTR pszAppname, LPSTR pszMsgDLL) ** ** PURPOSE: Add a source name key, message DLL name value, and ** message type supported value to the registry ** ** INPUT: source name, path of message DLL ** ** RETURNS: none **********************************************************************/void addSourceToRegistry(LPSTR pszAppname, LPSTR pszMsgDLL){ HKEY hk; /* registry key handle */ DWORD dwData; BOOL bSuccess; char regarray[200]; char *lpregarray = regarray; /* When an application uses the RegisterEventSource or OpenEventLog function to get a handle of an event log, the event loggging service searches for the specified source name in the registry. You can add a new source name to the registry by opening a new registry subkey under the Application key and adding registry values to the new subkey. */ strcpy(lpregarray, "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\"); strcat(lpregarray, pszAppname); /* Create a new key for our application */ bSuccess = RegCreateKey(HKEY_LOCAL_MACHINE,lpregarray, &hk); PERR(bSuccess == ERROR_SUCCESS, "RegCreateKey"); /* Add the Event-ID message-file name to the subkey. */ bSuccess = RegSetValueEx(hk, /* subkey handle */ "EventMessageFile", /* value name */ 0, /* must be zero */ REG_EXPAND_SZ, /* value type */ (LPBYTE) pszMsgDLL, /* address of value data */ strlen(pszMsgDLL) + 1); /* length of value data */ PERR(bSuccess == ERROR_SUCCESS, "RegSetValueEx"); /* Set the supported types flags and addit to the subkey. */ dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; bSuccess = RegSetValueEx(hk, /* subkey handle */ "TypesSupported", /* value name */ 0, /* must be zero */ REG_DWORD, /* value type */ (LPBYTE) &dwData, /* address of value data */ sizeof(DWORD)); /* length of value data */ PERR(bSuccess == ERROR_SUCCESS, "RegSetValueEx"); RegCloseKey(hk); return;}/********************************************************************** FUNCTION: reportAnEvent(DWORD dwIdEvent, WORD cStrings, ** LPTSTR *ppszStrings); ** ** PURPOSE: add the event to the event log ** ** INPUT: the event ID to report in the log, the number of insert ** strings, and an array of null-terminated insert strings ** ** RETURNS: none **********************************************************************/void reportAnIEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings){ HANDLE hAppLog; BOOL bSuccess; /* Get a handle to the Application event log */ hAppLog = RegisterEventSource(NULL, /* use local machine */ "NTP"); /* source name */ PERR(hAppLog, "RegisterEventSource"); /* Now report the event, which will add this event to the event log */ bSuccess = ReportEvent(hAppLog, /* event-log handle */ EVENTLOG_INFORMATION_TYPE, /* event type */ 0, /* category zero */ dwIdEvent, /* event ID */ NULL, /* no user SID */ cStrings, /* number of substitution strings */ 0, /* no binary data */ pszStrings, /* string array */ NULL); /* address of data */ PERR(bSuccess, "ReportEvent"); DeregisterEventSource(hAppLog); return;}void reportAnWEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings){ HANDLE hAppLog; BOOL bSuccess; /* Get a handle to the Application event log */ hAppLog = RegisterEventSource(NULL, /* use local machine */ "NTP"); /* source name */ PERR(hAppLog, "RegisterEventSource"); /* Now report the event, which will add this event to the event log */ bSuccess = ReportEvent(hAppLog, /* event-log handle */ EVENTLOG_WARNING_TYPE, /* event type */ 0, /* category zero */ dwIdEvent, /* event ID */ NULL, /* no user SID */ cStrings, /* number of substitution strings */ 0, /* no binary data */ pszStrings, /* string array */ NULL); /* address of data */ PERR(bSuccess, "ReportEvent"); DeregisterEventSource(hAppLog); return;}void reportAnEEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings){ HANDLE hAppLog; BOOL bSuccess; /* Get a handle to the Application event log */ hAppLog = RegisterEventSource(NULL, /* use local machine */ "NTP"); /* source name */ PERR(hAppLog, "RegisterEventSource"); /* Now report the event, which will add this event to the event log */ bSuccess = ReportEvent(hAppLog, /* event-log handle */ EVENTLOG_ERROR_TYPE, /* event type */ 0, /* category zero */ dwIdEvent, /* event ID */ NULL, /* no user SID */ cStrings, /* number of substitution strings */ 0, /* no binary data */ pszStrings, /* string array */ NULL); /* address of data */ PERR(bSuccess, "ReportEvent"); DeregisterEventSource(hAppLog); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -