You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用TraceEvents?TRACE_DRIVER未定义及日志位置问题

问题解决:TRACE_DRIVER未定义与TraceEvents日志定位

一、解决TRACE_DRIVER未定义问题

TRACE_DRIVER是WPP追踪框架中的控制位标识,需要通过WPP配置或代码声明生成定义,按以下步骤处理:

  1. 检查WPP配置文件
    项目中通常包含*.wpp文件(如Driver.wpp),确保其中定义了TRACE_DRIVER对应的控制位:

    // Driver.wpp 示例配置
    -TRACEGUIDGUID={12345678-1234-1234-1234-123456789ABC} // 替换为你的驱动专属GUID
    -FLAGS
    TRACE_DRIVER=0x00000001 // 为TRACE_DRIVER分配唯一的位值
    
  2. 手动声明控制GUID(无wpp文件时)
    在驱动代码的头文件或源文件顶部添加以下代码,直接定义WPP控制GUID和TRACE_DRIVER位:

    #define WPP_CONTROL_GUIDS \
        WPP_DEFINE_CONTROL_GUID(DriverTraceGuid, \
        0x12345678, 0x1234, 0x1234, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0), \
        WPP_DEFINE_BIT(TRACE_DRIVER)
    
  3. 确保编译启用WPP追踪

    • 在Visual Studio项目属性中,进入「配置属性」→「WPP追踪」→「常规」,勾选「运行WPP」。
    • 代码中必须包含生成的tmh文件,且放在所有头文件之后:
      #include "YourDriverName.tmh" // 替换为你的驱动生成的tmh文件名
      

    重新编译后,WPP工具会自动在tmh文件中生成TRACE_DRIVER的定义。

二、TraceEvents日志的定位与查看

WPP的TraceEvents输出不会直接写入注册表,而是通过ETW(Windows事件追踪)机制工作,需主动捕获才能查看:

  1. 用tracelog捕获日志
    以管理员身份打开命令提示符,执行以下命令启动追踪会话:

    tracelog.exe -start MyDriverTrace -guid #你的驱动GUID -f driver.etl -level 5 -flag 1
    
    • -flag 1对应TRACE_DRIVER的位值(需和WPP配置一致)
    • -level 5表示捕获TRACE_LEVEL_INFORMATION及以下级别的日志
  2. 停止追踪并解析日志
    驱动加载完成后,停止追踪会话:

    tracelog.exe -stop MyDriverTrace
    

    使用tracefmt解析生成的ETL文件:

    tracefmt.exe driver.etl -o driver.log
    

    打开driver.log即可查看完整的TraceEvents输出。

  3. 实时查看日志(可选)
    使用DebugView工具,开启「Capture Kernel」选项,驱动加载时的TraceEvents信息会实时显示在窗口中(需系统开启内核调试支持)。

内容的提问来源于stack exchange,提问作者IgnoreExeption

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:12:16