/*++ Copyright (c) 2000 Microsoft Corporation Module Name: trace.c Abstract: Contains the initialization function for event tracing, the callback function which enables and disables tracing, plus the handles and trace flag. Author: 15-June-2000 Jason Clark Revision History: --*/ // // // #define INITGUID #include #include "trace.h" #define IMAGE_PATH L"Msv1_0.dll" #define RESOURCE_NAME L"MofResource" BOOL NtlmGlobalEventTraceFlag = FALSE; TRACEHANDLE NtlmGlobalTraceRegistrationHandle = (TRACEHANDLE) 0; TRACEHANDLE NtlmGlobalTraceLoggerHandle = (TRACEHANDLE) 0; ULONG NtlmTraceControlCallback( IN WMIDPREQUESTCODE RequestCode, IN PVOID RequestContext, IN OUT ULONG *InOutBufferSize, IN OUT PVOID Buffer ); TRACE_GUID_REGISTRATION NtlmTraceGuids[] = { { &NtlmAcceptGuid, NULL }, { &NtlmInitializeGuid, NULL }, { &NtlmLogonGuid, NULL }, { &NtlmValidateGuid, NULL }, { &NtlmGenericPassthroughGuid, NULL } }; #define NtlmGuidCount (sizeof(NtlmTraceGuids) / sizeof(TRACE_GUID_REGISTRATION)) ULONG NtlmInitializeTrace( VOID ) { ULONG status; HMODULE hModule; TCHAR FileName[MAX_PATH+1]; DWORD nLen = 0; hModule = GetModuleHandle(IMAGE_PATH); if (hModule != NULL) { nLen = GetModuleFileName(hModule, FileName, MAX_PATH); } if (nLen == 0) { lstrcpy(FileName, IMAGE_PATH); } status = RegisterTraceGuids( NtlmTraceControlCallback, NULL, &NtlmControlGuid, NtlmGuidCount, NtlmTraceGuids, (LPCWSTR) FileName, (LPCWSTR) RESOURCE_NAME, &NtlmGlobalTraceRegistrationHandle); if (status != ERROR_SUCCESS) { SspPrint((SSP_API, "Trace registration failed with %x\n",status)); //DebugLog((DEB_ERROR,"Trace registration failed with %x\n",status)); } return status; } ULONG NtlmTraceControlCallback( IN WMIDPREQUESTCODE RequestCode, IN PVOID RequestContext, IN OUT ULONG *InOutBufferSize, IN OUT PVOID Buffer ) { PWNODE_HEADER Wnode = (PWNODE_HEADER)Buffer; ULONG Status; ULONG RetSize; Status = ERROR_SUCCESS; SspPrint((SSP_API,"NtlmTrace callback\n")); switch (RequestCode) { case WMI_ENABLE_EVENTS: { NtlmGlobalTraceLoggerHandle = GetTraceLoggerHandle(Buffer); NtlmGlobalEventTraceFlag = TRUE; RetSize = 0; break; } case WMI_DISABLE_EVENTS: { NtlmGlobalEventTraceFlag = FALSE; RetSize = 0; NtlmGlobalTraceLoggerHandle = (TRACEHANDLE) 0; break; } default: { RetSize = 0; Status = ERROR_INVALID_PARAMETER; break; } } *InOutBufferSize = RetSize; return Status; } // NtlmTraceControlCallback