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 驱动程序,则大部分工作都是为你完成的。

  • 定义一个控件 GUID,唯一标识驱动程序或应用程序,并将其作为跟踪提供程序。 提供商在其定义的 WPP_CONTROL_GUIDS 宏以及 Tracelog 或其他 跟踪控制器 使用的相关控制文件中指定此 GUID。

  • 将所需的 WPP 相关 C 预处理器指令和 WPP 宏调用添加到提供程序的源文件,如 将 WPP 软件跟踪添加到 Windows 驱动程序WPP 软件跟踪参考中所述。

  • 修改 Visual Studio 项目以运行 WPP 预处理器并生成驱动程序,如将 WPP 软件跟踪添加到 Windows 驱动程序 的步骤 6 中所述。 可以参考 WPP 预处理器 获取更多生成时间选项。

  • 安装驱动程序或组件。 启动跟踪会话并记录跟踪消息。 使用用于软件跟踪的工具(如 TraceViewTracelogTracefmtTracepdb )配置、启动和停止跟踪会话,以及显示和筛选跟踪消息。 这些工具包含在 Windows 驱动程序工具包(WDK)中。

本部分内容

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

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

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

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

WmiQueryTraceInformation

WmiTraceMessage

WmiTraceMessageVa