Поделиться через


Трассировка программного обеспечения WPP

В этом разделе описывается, как использовать препроцессор трассировки программного обеспечения Windows (WPP) для трассировки операции компонента программного обеспечения (поставщика трассировки). Поставщик трассировки может быть одним из следующих:

  • Драйвер режима ядра.

  • Драйвер пользовательского режима, приложение или библиотека динамической компоновки (DLL).

Программное обеспечение WPP для трассировки дополняет и улучшает трассировку событий WMI, предлагая более простые способы трассировки работы поставщика трассировки. Это эффективный механизм для поставщика трассировки для регистрации двоичных сообщений в режиме реального времени. Регистрируемые сообщения впоследствии можно преобразовать в удобочитаемую пользователем трассировку работы источника трассировки.

Когда следует использовать трассировку программного обеспечения WPP?

Трассировка программного обеспечения WPP в основном предназначена для отладки кода во время разработки. Если вы хотите опубликовать события, которые могут использоваться приложениями, заинтересованными в структурированных ETW-событиях, помимо трассировки во время разработки, используйте следующее:

Дополнительные сведения см. в разделе "Когда следует использовать трассировку программного обеспечения WPP" или API трассировки событий для Windows (ETW)?

Ведение журналов сообщений с помощью трассировки программного обеспечения WPP аналогично использованию служб ведения журнала событий Windows. Драйвер записывает идентификатор сообщения и неформатированные двоичные данные в файле журнала. Впоследствии постпроцессор преобразует сведения из файла журнала в удобочитаемую форму. Однако трассировка программного обеспечения WPP поддерживает форматы сообщений, которые более способны и гибки, чем поддерживаемые службами ведения журнала событий. Например, трассировка программного обеспечения WPP имеет встроенную поддержку IP-адресов, идентификаторов GUID, системных идентификаторов, меток времени и других полезных типов данных. Кроме того, пользователи могут добавлять пользовательские типы данных, относящиеся к приложению.

Обзор процесса трассировки программного обеспечения WPP

Базовый процесс добавления трассировки программного обеспечения WPP в драйвер или приложение включает следующие действия. Если вы используете один из шаблонов Visual Studio, предоставляемых в WDK для создания драйвера WDF, большая часть работы выполняется для вас.

  • Определите GUID элемента управления, который однозначно идентифицирует драйвер или приложение в качестве поставщика трассировки. Поставщик задает этот GUID в определении макроса WPP_CONTROL_GUIDS и в связанном файле управления, используемом tracelog или другим контроллером трассировки.

  • Добавьте необходимые директивы препроцессора, связанные с WPP, и вызовы макросов WPP к исходным файлам поставщика, как описано в Добавление трассировки ПО WPP в драйвер Windows и в Справочник по трассировке ПО WPP.

  • Измените проект Visual Studio, чтобы запустить препроцессор WPP и создать драйвер, как описано на шаге 6 добавления трассировки программного обеспечения WPP в драйвер Windows. Вы можете обратиться к препроцессору WPP для получения дополнительных параметров времени сборки.

  • Установите драйвер или компонент. Запустите сеанс трассировки и запишите сообщения трассировки. Используйте средства для трассировки программного обеспечения, таких как TraceView, Tracelog, Tracefmt и Tracepdb для настройки, запуска и остановки сеансов трассировки, а также для отображения и фильтрации сообщений трассировки. Эти средства включены в комплект драйверов Windows (WDK).

В этом разделе

Заметка Трассировка событий для Windows (ETW) и WPP поддерживают большинство типов драйверов в режиме ядра и пользовательском режиме. Однако ETW и WPP используют типы, которые недоступны для определённых драйверов, таких как минипорт-драйверы. Чтобы определить, поддерживается ли конкретный тип драйвера, добавьте основные макросы WPP в драйвер, например WPP_INIT_TRACING и WPP_CLEANUP. Если код не компилируется, так как используемые типы не определены, ETW и WPP не могут поддерживать тип драйвера.

Дополнительные сведения о трассировке событий для Windows см. в разделе «Трассировка событий для Windows».

Заметка Поставщики трассировки WPP могут быть включены только одним сеансом трассировки за раз. Дополнительные сведения см. в разделе поставщиков WPP .

Сведения о подпрограммах поддержки библиотеки WMI, поддерживающих трассировку программного обеспечения WPP, см. в следующих разделах:

WmiQueryTraceInformation

WmiTraceMessage

WmiTraceMessageVa