WPP预处理器和跟踪消息标头tmh文件

WPP预处理器

WPP又称为WIndows软件跟踪预处理器,它可以跟踪软件组件

跟踪提供程序可以是以下项之一:

  • 内核模式驱动程序。

  • 用户模式驱动程序、应用程序或动态链接库(DLL)。

 

将 WPP 软件跟踪添加到 Windows 驱动程序

必须对每个跟踪提供程序(如驱动程序或用户模式应用)进行唯一定义。 为此,可以添加WPP_控件_guid宏,用于定义控件 GUID、标识符和跟踪标志。 这样就可以确定并控制要跟踪的时间和内容。 虽然每个驱动程序通常都有一个单独的控件 GUID,但驱动程序可以有多个控制 guid,或多个驱动程序可以共享一个控制 GUID。

为方便起见," WPP_控件_guid " 宏通常在公共头文件中定义。 必须在要检测跟踪的任何源文件中包含头文件(#包含)。

 

WPP_控件_GUID 的语法

参考MSDN

#define WPP_CONTROL_GUIDS \
    WPP_DEFINE_CONTROL_GUID(GUIDFriendlyName, (ControlGUID),  \
        WPP_DEFINE_BIT(NameOfTraceFlag1)  \
        WPP_DEFINE_BIT(NameOfTraceFlag2)  \
        .............................   \
        .............................   \
        WPP_DEFINE_BIT(NameOfTraceFlag31)
  • GUIDFriendlyName
    Specifies the friendly name of a driver-defined control GUID associated with the software tracing session. This is the friendly name specified in the control file used by Tracelog. The friendly name must comply with C variable name conventions.

  • ControlGUID
    Specifies the value of the control GUID in the following format, which consists of five comma-separated fields that contain a total of 32 hexadecimal digits: "XXXXXXXX, XXXX, XXXX, XXXX, XXXXXXXXXXXX". The first field is 8 hexadecimal digits, followed by three fields, each with 4 hexadecimal digits, and the last field is 12 hexadecimal digits.

  • NameOfTraceFlag1NameOfTraceFlag2, ... , ... , NameOfTraceFlag31
    Specifies a sequence of driver-defined trace flag names containing at least one and at most 31 names. Trace flag names must comply with C variable name conventions.

比如在msnmntr项目源码中

https://github.com/microsoft/Windows-driver-samples/tree/master/network/trans/msnmntr

//
// Software Tracing Definitions 
//
#define WPP_CONTROL_GUIDS \
    WPP_DEFINE_CONTROL_GUID(MsnMntrCtl,(eab718af, 52de, 477c, 874d, cb49746bb131),  \
        WPP_DEFINE_BIT(TRACE_INIT)               \
        WPP_DEFINE_BIT(TRACE_DEVICE_CONTROL)     \
        WPP_DEFINE_BIT(TRACE_STATE) )

tmh文件 

此外,还需要为跟踪消息头文件(. tmh)添加 #包含语句。 生成驱动程序或应用程序时,WPP 预处理器将为包含跟踪消息函数的每个源文件生成跟踪消息头文件(. tmh)。

tmh文件是自动生成的 参考MSDN

跟踪消息标头(TMH)文件是一个文本文件,该文件包含 WPP 生成的跟踪代码所使用的函数和变量的声明。 标头文件还包括将跟踪消息格式设置指令添加到跟踪提供程序的 PDB 文件(如内核模式驱动程序或用户模式应用程序)的宏。

当你编译包含 WPP 宏的跟踪提供程序时,WPP 会自动生成 TMH 文件。 TMH 文件具有与源文件相同的名称,但文件扩展名为 TMH。 WPP 将该文件保存在源文件所在的同一目录中。

include xx.tmh语句必须出现在wpp _ 控件 _ guid宏的定义之后、在对 wpp 宏的任何调用之前。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值