summaryrefslogtreecommitdiffstats
path: root/libntp/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'libntp/log.c')
-rw-r--r--libntp/log.c161
1 files changed, 161 insertions, 0 deletions
diff --git a/libntp/log.c b/libntp/log.c
new file mode 100644
index 0000000..991b498
--- /dev/null
+++ b/libntp/log.c
@@ -0,0 +1,161 @@
+/* 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;
+}
OpenPOWER on IntegriCloud