4

我正在尝试通过 WPP 仪器使用“Windows 事件跟踪”。根据Windows 驱动程序中的软件跟踪入门中的文档,可以从单个驱动程序向多个提供程序发出跟踪,但我没有看到这样做的示例:

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

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

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

4

1 回答 1

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。

于 2012-09-11T18:31:23.923 回答