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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WmiQueryTraceInformation

WmiTraceMessage

WmiTraceMessageVa