WPP 软件跟踪

本部分介绍如何使用 Windows 软件跟踪预处理器 (WPP) 跟踪软件组件 (跟踪提供程序) 的操作。 跟踪提供程序可以是以下项之一:

  • 内核模式驱动程序。

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

WPP 软件跟踪通过添加简化跟踪提供程序操作的方法来补充和增强 WMI 事件 跟踪。 它是跟踪提供程序记录实时二进制消息的有效机制。 随后,记录的消息可以转换为跟踪提供程序操作的可读跟踪。

何时应使用 WPP 软件跟踪?

WPP 软件跟踪主要用于在开发过程中调试代码。 如果要发布可由对结构化 ETW 事件感兴趣的应用程序使用的事件,除了在开发期间进行跟踪外,请使用以下命令:

有关详细信息,请参阅 何时应使用 WPP 软件跟踪或 Windows (ETW 事件跟踪) API?

使用 WPP 软件跟踪记录消息类似于使用 Windows 事件日志记录服务。 驱动程序在日志文件中记录消息 ID 和未格式化的二进制数据。 随后,后处理器将日志文件中的信息转换为可读的形式。 但是,WPP 软件跟踪支持比事件日志记录服务支持的消息格式更强大、更灵活。 例如,WPP 软件跟踪具有对 IP 地址、GUID、系统 ID、时间戳和其他有用数据类型的内置支持。 此外,用户可以添加与其应用程序相关的自定义数据类型。

WPP 软件跟踪过程概述

将 WPP 软件跟踪添加到驱动程序或应用程序的基本过程包括以下步骤。 如果使用 WDK 中提供的 Visual Studio 模板之一来创建 WDF 驱动程序,则大部分工作都是为你完成的。

在本节中

注意 Windows (ETW) 和 WPP 的事件跟踪支持大多数类型的内核模式和用户模式驱动程序。 但是,ETW 和 WPP 使用不适用于某些类型的驱动程序的类型,例如微型端口驱动程序。 若要确定是否支持特定驱动程序类型,请将基本 WPP 宏添加到驱动程序,例如 WPP_INIT_TRACINGWPP_CLEANUP。 如果代码由于未定义所使用的类型而未编译,则 ETW 和 WPP 无法支持驱动程序类型。

有关 ETW 的详细信息,请参阅 Windows 事件跟踪

注意 一次只能由一个跟踪会话启用 WPP 跟踪提供程序。 有关详细信息 ,请参阅 WPP 提供程序

有关 WMI 库支持支持 WPP 软件跟踪的例程的信息,请参阅:

WmiQueryTraceInformation

WmiTraceMessage

WmiTraceMessageVa