【问题标题】:Tracing to multiple ETW providers using WPP使用 WPP 跟踪多个 ETW 提供程序
【发布时间】:2012-08-29 14:34:03
【问题描述】:

我正在尝试通过 WPP 工具使用“Windows 事件跟踪”。根据Getting Started with Software Tracing in Windows Drivers 中的文档,可以从单个驱动程序向多个提供程序发出跟踪,但我没有看到这样做的示例:

驱动程序可以指定多个控件 GUID。每个控件 GUID 标识一个唯一的提供程序。例如,如果驱动程序定义了两个控制 GUID,一个用于共享库,一个用于驱动程序,则库和驱动程序可以作为两个不同的提供程序启用。可以为库或驱动程序启用跟踪,或同时为两者启用跟踪。

我尝试使用不同的 guid 创建两个头文件,每个文件都有 WPP_CONTROL_GUIDS。然后我包含来自 c/cpp 文件的不同头文件,我希望这些头文件向不同的提供者发出跟踪。但似乎主文件中的定义覆盖了这个分隔,所有跟踪都到达了它使用的提供者......

有什么建议吗?有样品吗?谢谢!!

【问题讨论】:

    标签: windows winapi trace wdk etw


    【解决方案1】:

    我现在避免像瘟疫一样进行 WPP 跟踪,但跟踪模板提供了如何执行此操作的示例。您应该在某个 TMH 文件中的某处看到此注释:

    // template C:\WinDDK\7600.16385.1\bin\wppconfig\rev1\control.tpl
    //
    //     Defines a set of macro that expand control model specified
    //     with WPP_CONTROL_GUIDS (example shown below)
    //     into an enum of trace levels and required structures that
    //     contain the mask of levels, logger handle and some information
    //     required for registration.
    //
    
    ///////////////////////////////////////////////////////////////////////////////////
    //
    // #define WPP_CONTROL_GUIDS \
    //     WPP_DEFINE_CONTROL_GUID(Regular,(81b20fea,73a8,4b62,95bc,354477c97a6f), \
    //       WPP_DEFINE_BIT(Error)      \
    //       WPP_DEFINE_BIT(Unusual)    \
    //       WPP_DEFINE_BIT(Noise)      \
    //    )        \
    //    WPP_DEFINE_CONTROL_GUID(HiFreq,(91b20fea,73a8,4b62,95bc,354477c97a6f), \
    //       WPP_DEFINE_BIT(Entry)      \
    //       WPP_DEFINE_BIT(Exit)       \
    //       WPP_DEFINE_BIT(ApiCalls)   \
    //       WPP_DEFINE_BIT(RandomJunk) \
    //       WPP_DEFINE_BIT(LovePoem)   \
    //    )  
    

    因此,您应该在同一个 WPP_CONTROL_GUIDS 宏中定义两个 GUID。

    【讨论】:

    • 谢谢!我在这里缺少的部分是如何在跟踪时选择要使用的控制指南(您的示例中的常规与 HiFreq)。是否使用一组不重叠的标志然后在跟踪宏中指定特定标志来实现?还是我以某种方式直接指定使用哪一个?
    • 我的理解是你使用不重叠的标志。生成的跟踪语句只需要一个标志(和可选的级别)。幕后魔术应该根据标志将消息记录到适当的控件 GUID。
    • @snoone,您对当今的 WPP 追踪有何看法?根据我使用 Windows 8.1 的经验,WPP 跟踪非常好。
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2019-04-23
    • 2021-09-02
    相关资源
    最近更新 更多