Трассировка программного обеспечения WPP
В этом разделе описывается использование препроцессора трассировки программного обеспечения Windows (WPP) для трассировки работы программного компонента (поставщика трассировки). Поставщик трассировки может быть одним из следующих:
Драйвер в режиме ядра.
Драйвер пользовательского режима, приложение или библиотека динамической компоновки (DLL).
Программная трассировка WPP дополняет и улучшает трассировку событий WMI , добавляя способы упрощения трассировки работы поставщика трассировки. Это эффективный механизм, позволяющий поставщику трассировки регистрировать двоичные сообщения в режиме реального времени. Впоследствии зарегистрированные сообщения можно преобразовать в удобочитаемую трассировку работы поставщика трассировки.
Когда следует использовать трассировку программного обеспечения WPP? |
---|
Трассировка программного обеспечения WPP в основном предназначена для отладки кода во время разработки. Если вы хотите опубликовать события, которые могут использоваться приложениями, заинтересованными в структурированных событиях трассировки событий Windows, в дополнение к трассировке во время разработки, используйте следующее:
|
Ведение журнала сообщений с помощью трассировки программного обеспечения 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).
В этом разделе
- Добавление трассировки программного обеспечения WPP в драйвер Windows
- Inflight Trace Recorder для ведения журнала трассировок
- Использование трассировки программного обеспечения WPP в поставщике трассировки
- Добавление макросов WPP в поставщик трассировки
- Препроцессор WPP
- Трассировка и диагностика драйверов WDF
Примечание Трассировка событий Windows (ETW) и WPP поддерживает большинство типов драйверов в режиме ядра и пользовательском режиме. Однако трассировка событий Windows и WPP используют типы, недоступные для определенных типов драйверов, таких как драйверы минипорта. Чтобы определить, поддерживается ли определенный тип драйвера, добавьте в драйвер базовые макросы WPP, такие как WPP_INIT_TRACING и WPP_CLEANUP. Если код не компилируется, так как используемые типы не определены, etw и WPP не поддерживают тип драйвера.
Дополнительные сведения о трассировке событий Windows см. в статье Трассировка событий Windows.
Примечание Поставщики трассировки WPP могут быть включены только одним сеансом трассировки за раз. Дополнительные сведения см. в разделе Поставщики WPP .
Сведения о подпрограммах поддержки библиотекИ WMI, поддерживающих трассировку программного обеспечения WPP, см. в следующих разделах: