windows-nt/Source/XPSP1/NT/ds/security/protocols/msv_sspi/trace.cxx
2020-09-26 16:20:57 +08:00

149 lines
3 KiB
C++

/*++
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 <Global.h>
#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