0

Windows用のイベントトレースの使用方法を理解しようとしています...しかし失敗しています。
このコードでエラーコードが表示されるのはなぜERROR_WMI_INSTANCE_NOT_FOUNDですか?

#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <Wmistr.h>
#include <Evntrace.h>
#include <evntcons.h>

ULONG NTAPI EtpEtwBufferCallback(IN PEVENT_TRACE_LOGFILE Buffer) { return TRUE; }
VOID  NTAPI  EtpEtwEventCallback(IN PEVENT_TRACE EventTrace) { }

int _tmain()
{
    LPCTSTR loggerName = KERNEL_LOGGER_NAME;
    EVENT_TRACE_LOGFILE logFile = {0};
    logFile.LoggerName = const_cast<LPTSTR>(loggerName);
    logFile.ProcessTraceMode = PROCESS_TRACE_MODE_REAL_TIME;
    logFile.BufferCallback = EtpEtwBufferCallback;
    logFile.EventCallback = EtpEtwEventCallback;
    TRACEHANDLE hTrace = OpenTrace(&logFile);
    ULONG result = ProcessTrace(&hTrace, 1, NULL, NULL);
    // result is ERROR_WMI_INSTANCE_NOT_FOUND
    _tprintf(_T("%u\n"), result);
}
4

1 に答える 1

1

ProcessTraceドキュメントから、「ERROR_WMI_INSTANCE_NOT_FOUNDイベントをリアルタイムで消費しようとしているセッションが実行されていないか、リアルタイムトレースモードが有効になっていない」ことを意味します。

Windows Driver Kitのtracelogを使用してNTカーネルロガーを起動できますが、WDKを持っていないため、試していません。

この記事では、NTカーネルロガーを自分で起動する方法について説明します。

于 2012-07-16T19:26:32.950 に答える