我正在尝试通过WPP实施使用“Windows事件跟踪”。根据{{3}}中的文档,可以从单个驱动程序向多个提供程序发出跟踪,但我没有看到这样做的示例:
驱动程序可以指定多个控件GUID。每个控件GUID标识唯一的提供者。例如,如果驱动程序定义了两个控件GUID,一个用于共享库,另一个用于驱动程序,则库和驱动程序可以作为两个不同的提供程序启用。可以为库或驱动程序或两者启用跟踪。
我尝试使用不同的guid创建了两个头文件,每个头文件都有WPP_CONTROL_GUIDS
。然后我包含来自c / cpp文件的不同头文件,我希望将这些文件发布到不同的提供者。但似乎主文件中的定义覆盖了这个分隔,并且所有跟踪都到达了它使用的提供程序......
有什么建议吗?有样品吗?谢谢!
答案 0 :(得分: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。