2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #include <afs/param.h>
16 #include <WINNT/afsreg.h>
20 /* AFS NT alternative event logging functions.
22 * All event logging functions take a variable number of arguments,
23 * with the trailing (variable) arguments being a set of message text
24 * insertion strings terminated by a 0 (NULL) argument.
25 * Status values are logged as raw data if the status is not zero.
27 * All functions return 0 if message is logged successfully and -1 otherwise.
29 * Example: ReportErrorEventAlt(eventId, status, filenameString, 0);
33 ReportEventAlt(WORD eventType,
39 HANDLE eventLog = NULL;
42 /* open write handle to the event log */
43 eventLog = RegisterEventSource(NULL /* local machine */,
44 AFSREG_SVR_APPLOG_SUBKEY);
45 if (eventLog == NULL) {
50 result = ReportEvent(eventLog, eventType, 0 /* category */, eventId,
52 insertStrCount, (status ? sizeof(status) : 0),
55 (void) DeregisterEventSource(eventLog);
57 return (result ? 0 : -1);
62 ReportErrorEventAlt(unsigned int eventId, int status, char *str, ...)
65 char *iStrings[AFSEVT_MAXARGS];
68 /* construct iStrings (insertion strings) array */
69 va_start(strArgs, str);
70 for (i = 0; str && (i < AFSEVT_MAXARGS); i++) {
72 str = va_arg(strArgs, char *);
81 /* report error event */
82 return ReportEventAlt(EVENTLOG_ERROR_TYPE,
83 (DWORD) eventId, (WORD) i, iStrings, status);
88 ReportWarningEventAlt(unsigned int eventId, int status, char *str, ...)
91 char *iStrings[AFSEVT_MAXARGS];
94 /* construct iStrings (insertion strings) array */
95 va_start(strArgs, str);
96 for(i = 0; str && (i < AFSEVT_MAXARGS); i++) {
98 str = va_arg(strArgs, char *);
107 /* report warning event */
108 return ReportEventAlt(EVENTLOG_WARNING_TYPE,
109 (DWORD) eventId, (WORD) i, iStrings, status);
114 ReportInformationEventAlt(unsigned int eventId, char *str, ...)
117 char *iStrings[AFSEVT_MAXARGS];
120 /* construct iStrings (insertion strings) array */
121 va_start(strArgs, str);
122 for(i = 0; str && (i < AFSEVT_MAXARGS); i++) {
124 str = va_arg(strArgs, char *);
133 /* report information event */
134 return ReportEventAlt(EVENTLOG_INFORMATION_TYPE,
135 (DWORD) eventId, (WORD) i, iStrings, 0);