如何记录到全局记录器会话
使用以下过程将驱动程序配置为记录到全局记录器跟踪会话:
将以下定义添加到驱动程序代码。 在 WPP_CONTROL_GUIDS 宏定义和 跟踪消息头文件的 include 语句之间插入定义。
#define WPP_GLOBALLOGGER
使用 Tracelog 配置全局记录器跟踪会话。 最简单的命令如下所示:
tracelog -start GlobalLogger
有关完整说明(包括用于配置全局记录器跟踪会话的参数),请参阅 Tracelog 命令语法 和 全局记录器跟踪会话。
有关示例,请参阅 示例 13:创建全局记录器会话。
此命令创建并配置跟踪会话,但直到重新启动系统 (步骤 5) 后,会话才会启动。
在 HKLM\System\CurrentControlSet\Control\WMI\GlobalLogger 子项下,为跟踪提供程序的 控件 GUID 添加名为 的子项。 在 Windows Vista 及更高版本的 Windows 中,控件 GUID 必须括在大括号 ( {} ) 中。
tracelog -start GlobalLogger 命令将 GlobalLogger 子项添加到注册表。 ControlGUID 子项将驱动程序建立为全局记录器跟踪会话的跟踪提供程序。
例如,若要将 Tracedrv 示例驱动程序配置为登录到运行 Windows XP 的计算机上的全局记录器跟踪会话,请为 Tracedrv 控件 GUID 添加名为 的子项, d58c126f-b309-11d1-969e-0000f875a5bc: HKLM\SYSTEM\CurrentControlSet\Control\WMI\GlobalLogger\d58c126f-b309-11d1-969e-0000f875a5bc。
TraceDrv 是一个专为软件跟踪而设计的示例驱动程序,可在 GitHub 上的 Windows 驱动程序示例 存储库中找到。
若要配置跟踪提供程序,请将以下注册表项添加到 ControlGUID 子项。 这些条目是可选的,其值由驱动程序定义。
注册表项名称 数据类型 说明 标记
REG_DWORD
指定提供程序的 跟踪标志 。
标志的含义由每个跟踪提供程序独立定义。 通常,标志表示越来越详细的报告级别。
级别
REG_DWORD
指定提供程序的 跟踪级别 。
Level 值的含义由每个跟踪提供程序独立定义。 通常,跟踪级别表示事件的严重性, (信息、警告或错误) 。
请注意, Flags 条目的名称为复数, 级别 条目的名称为单数。
- 重启系统。 这会启动全局记录器跟踪会话。
测试完成后,删除 ControlGUID 子项,或将 GlobalLogger 子项中的 Start 条目的值设置为 0。 否则,将运行全局记录器会话,每次重启系统时,驱动程序都会记录到该会话。
备注
当存在WPP_GLOBALLOGGER时,WPP 会添加读取注册表的代码,并确定全局记录器会话是否正在运行,以及是否启用驱动程序来跟踪到全局记录器会话。 此代码取代了驱动程序将从标准跟踪会话接收的启用通知。
此外,由于全局记录器会话不提供回调通知,Windows 假定已发生回调,并相应地继续。
WPP 定义仅生成少量代码,因此无需在测试后将其从代码中删除。