You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.8 KiB
132 lines
2.8 KiB
/*++
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
kerbtrace.cxx
|
|
|
|
Abstract:
|
|
|
|
Set up event tracing for Kerberos
|
|
|
|
Author:
|
|
|
|
15 June 2000 t-ryanj (* largely stolen from kdctrace.cxx *)
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#include <kerb.hxx>
|
|
#include <wmistr.h>
|
|
#define INITGUID
|
|
#include "kerbdbg.h"
|
|
|
|
#define RESOURCE_NAME __TEXT("MOF_RESOURCE") // kerberos.mof => kerberos.bmf => MOF_RESOURCE
|
|
#define IMAGE_PATH __TEXT("kerberos.dll")
|
|
|
|
BOOLEAN KerbEventTraceFlag = FALSE;
|
|
TRACEHANDLE KerbTraceRegistrationHandle = (TRACEHANDLE) 0;
|
|
TRACEHANDLE KerbTraceLoggerHandle = (TRACEHANDLE) 0;
|
|
|
|
|
|
ULONG
|
|
KerbTraceControlCallback(
|
|
IN WMIDPREQUESTCODE RequestCode,
|
|
IN PVOID RequestContext,
|
|
IN OUT ULONG *InOutBufferSize,
|
|
IN OUT PVOID Buffer
|
|
);
|
|
|
|
TRACE_GUID_REGISTRATION KerbTraceGuids[] =
|
|
{
|
|
{ &KerbLogonGuid, NULL },
|
|
{ &KerbInitSCGuid, NULL },
|
|
{ &KerbAcceptSCGuid, NULL },
|
|
{ &KerbSetPassGuid, NULL },
|
|
{ &KerbChangePassGuid, NULL }
|
|
};
|
|
|
|
#define KerbGuidCount (sizeof(KerbTraceGuids) / sizeof(TRACE_GUID_REGISTRATION))
|
|
|
|
ULONG
|
|
KerbInitializeTrace(
|
|
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(
|
|
KerbTraceControlCallback,
|
|
NULL,
|
|
&KerbControlGuid,
|
|
KerbGuidCount,
|
|
KerbTraceGuids,
|
|
(LPCWSTR) FileName,
|
|
(LPCWSTR) RESOURCE_NAME,
|
|
&KerbTraceRegistrationHandle);
|
|
|
|
|
|
if (status != ERROR_SUCCESS) {
|
|
DebugLog((DEB_ERROR,"Trace registration failed with %x\n",status));
|
|
}
|
|
return status;
|
|
}
|
|
|
|
|
|
ULONG
|
|
KerbTraceControlCallback(
|
|
IN WMIDPREQUESTCODE RequestCode,
|
|
IN PVOID RequestContext,
|
|
IN OUT ULONG *InOutBufferSize,
|
|
IN OUT PVOID Buffer
|
|
)
|
|
{
|
|
ULONG Status;
|
|
ULONG RetSize;
|
|
|
|
Status = ERROR_SUCCESS;
|
|
|
|
switch (RequestCode)
|
|
{
|
|
case WMI_ENABLE_EVENTS:
|
|
{
|
|
KerbTraceLoggerHandle =
|
|
GetTraceLoggerHandle(Buffer);
|
|
KerbEventTraceFlag = TRUE;
|
|
RetSize = 0;
|
|
break;
|
|
}
|
|
|
|
case WMI_DISABLE_EVENTS:
|
|
{
|
|
KerbEventTraceFlag = FALSE;
|
|
RetSize = 0;
|
|
KerbTraceLoggerHandle = (TRACEHANDLE) 0;
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
RetSize = 0;
|
|
Status = ERROR_INVALID_PARAMETER;
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
*InOutBufferSize = RetSize;
|
|
return Status;
|
|
}
|