summaryrefslogtreecommitdiffstats
path: root/private/net/svcdlls/rpl/lib/report.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/net/svcdlls/rpl/lib/report.c')
-rw-r--r--private/net/svcdlls/rpl/lib/report.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/private/net/svcdlls/rpl/lib/report.c b/private/net/svcdlls/rpl/lib/report.c
new file mode 100644
index 000000000..2364ed2e0
--- /dev/null
+++ b/private/net/svcdlls/rpl/lib/report.c
@@ -0,0 +1,111 @@
+/*++
+
+Copyright (c) 1993 Microsoft Corporation
+
+Module Name:
+
+ report.c
+
+Abstract:
+
+ Contains:
+ VOID RplReportEvent(
+
+Author:
+
+ Vladimir Z. Vulovic (vladimv) 19 - November - 1993
+
+Revision History:
+
+--*/
+
+#include "local.h"
+
+
+VOID RplReportEvent(
+ IN DWORD MessageId,
+ IN LPWSTR InsertionString,
+ IN DWORD RawDataBufferLength OPTIONAL,
+ IN LPVOID RawDataBuffer
+ )
+/*++
+
+Routine Description:
+
+ Writes an error message and ascii string to the error log. Also,
+ writes the data in the data buf if there are any.
+
+Arguments:
+
+ MessageId - Message ID
+
+ InsertionString - at most one asciiz string (may be NULL)
+
+ RawDataBufferLength - size of data to be printed from the auxiliary data
+ buffer. May be zero, in which case the actual value depends on
+ "RawDataBuffer". It is 0 if "RawDataBuffer" is NULL, else it is
+ "sizeof( wchar) * wcslen( RawDataBuffer)".
+
+ RawDataBuffer - data buffer containing secondary error code & some
+ other useful info. Must be NULL terminated string or NULL if
+ "RawDataBufferLength" is zero.
+
+Return Value:
+
+ None.
+
+--*/
+{
+ WORD NumberOfStrings;
+ LPWSTR InsertionStringArray[ 1];
+ LPWSTR * PointerToStrings;
+ HANDLE logHandle;
+
+ logHandle = RegisterEventSource( NULL, RPL_EVENTLOG_NAME);
+
+ // If the event log cannot be opened, just return.
+
+ if ( logHandle == NULL) {
+#ifdef NOT_YET
+ RplDump( RG_DebugLevel & RPL_DEBUG_MISC,(
+ "ReportEvent: RegisterEventSource() failed with error %d",
+ GetLastError()));
+#endif // NOT_YET
+ return;
+ }
+
+ if ( InsertionString == NULL) {
+ PointerToStrings = NULL;
+ NumberOfStrings = 0;
+ } else {
+ InsertionStringArray[ 0] = InsertionString;
+ PointerToStrings = InsertionStringArray;
+ NumberOfStrings = 1;
+ }
+
+ //
+ // Use default for RawDataBufferLength if caller requested us so.
+ //
+ if ( RawDataBufferLength == 0 && RawDataBuffer != NULL) {
+ RawDataBufferLength = sizeof( TCHAR) * wcslen( (LPWSTR)RawDataBuffer);
+ }
+
+ if ( !ReportEvent(
+ logHandle,
+ EVENTLOG_ERROR_TYPE,
+ 0, // event category
+ MessageId, // event id
+ NULL, // user SID. We're local system - uninteresting
+ NumberOfStrings, // number of strings
+ RawDataBufferLength, // raw data size
+ PointerToStrings, // string array
+ RawDataBuffer // raw data buffer
+ )) {
+#ifdef NOT_YET
+ RplDump( RG_DebugLevel & RPL_DEBUG_MISC,(
+ "ReportEvent: fails with error %d", GetLastError()));
+#endif // NOT_YET
+ }
+
+ DeregisterEventSource( logHandle);
+}