【问题标题】:How to create real-time etw consumer for TraceLogging provider(kernel)?如何为 TraceLogging 提供者(内核)创建实时 etw 消费者?
【发布时间】:2020-12-09 17:42:16
【问题描述】:

我正在尝试为在驱动程序中声明的TraceLogging 提供程序创建实时消费者:

TRACELOGGING_DECLARE_PROVIDER(g_etwProvider);
TRACELOGGING_DEFINE_PROVIDER(g_etwProvider, "TraceLoggingProvider", 
    (/*my guid*/));

用户模式提供者:

EVENT_TRACE_LOGFILEA etwTraceSettings{};
char loggerName[]{"TraceLoggingProvider"};
etwTraceSettings.LoggerName = loggerName;
etwTraceSettings.ProcessTraceMode = PROCESS_TRACE_MODE_REAL_TIME | PROCESS_TRACE_MODE_EVENT_RECORD;
etwTraceSettings.EventRecordCallback = MyCallback;
TRACEHANDLE traceHandle = OpenTraceA(&etwTraceSettings);
ProcessTrace(&traceHandle, 1, nullptr, nullptr);

ProcessTrace 返回ERROR_WMI_INSTANCE_NOT_FOUND。我究竟做错了什么? 我试图在驱动程序中的TraceLoggingRegister 之前和之后调用ProcessTrace。结果是一样的。

例如,logman 可以在提供者注册之前创建会话。我也想这样做。我必须做什么?

【问题讨论】:

    标签: c++ windows etw windows-kernel


    【解决方案1】:

    您必须在OpenTrace 之前通过StartTraceEnableTrace 函数创建ETW 会话。

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多