Использование трассировки программного обеспечения WPP в драйверах UMDF
Программная трассировка WPP позволяет добавлять сообщения трассировки, помогающие отлаживать драйвер. Кроме того, средство ведения журнала событий платформы предоставляет сотни сообщений трассировки, которые можно просматривать.
Сообщения трассировки можно просматривать с помощью TraceView или Tracelog. Сообщения трассировки также можно отправлять в отладчик ядра.
Добавление сообщений трассировки в драйвер
Чтобы добавить сообщения трассировки в драйвер на основе платформы, необходимо:
Добавьте директиву #include в каждый исходный файл драйвера, содержащий любой из макросов WPP. Эта директива должна определить файл заголовка сообщения трассировки (TMH). Имя файла должно иметь формат <driver-source-file-name.tmh>.
Например, если драйвер состоит из двух исходных файлов с именем MyDriver1.c и MyDriver2.c, myDriver1.c должен содержать:
#include "MyDriver1.tmh"
и MyDriver2.c должны содержать:
#include "MyDriver2.tmh"
При сборке драйвера в Microsoft Visual Studio препроцессор WPP создает TMH-файлы.
Определите макрос WPP_CONTROL_GUIDS в файле заголовка. Этот макрос определяет GUID и флаги трассировки для сообщений трассировки драйвера. (Для каждого из примеров драйверов WDK на основе UMDF файл заголовка Internal.h содержит этот макрос.)
Включите макрос WPP_INIT_TRACING в подпрограмму DllMain драйвера. Этот макрос активирует трассировку программного обеспечения в драйвере. (Для каждого примера драйверов WDK на основе UMDF файл заголовка DllSup.h содержит этот макрос.)
Включите макрос WPP_CLEANUP в подпрограмму DllMain драйвера. Этот макрос отключает трассировку программного обеспечения в драйвере. (Для каждого примера драйверов WDK на основе UMDF файл заголовка DllSup.h содержит этот макрос.)
Используйте макрос DoTraceMessage или настраиваемую версию макроса в драйвере для создания сообщений трассировки. (Для каждого из примеров драйверов WDK на основе UMDF файл заголовка Internal.h содержит настраиваемый макрос.)
Откройте страницы свойств для проекта драйвера. Щелкните правой кнопкой мыши проект драйвера в Обозреватель решений и выберите Свойства. На страницах свойств драйвера выберите Свойства конфигурации, а затем Wpp. В меню Общие установите для параметра Запуск трассировки WPP значение Да. В меню Параметры файла также следует указать файл шаблона WPP платформы, например:
{km-WdfDefault.tpl}*.tmh
Дополнительные сведения о добавлении сообщений трассировки в драйвер см. в статье Добавление макросов WPP в драйвер.
Примеры драйверов, использующих трассировку программного обеспечения WPP
Все примеры драйверов на основе UMDF в WDK предоставляют файлы DllSup.h, Internal.h и Sources, которые обеспечивают трассировку программного обеспечения WPP. Большинство из этих примеров драйверов также используют настраиваемый макрос для создания сообщений трассировки.
Просмотр сообщений трассировки драйвера
Если вы добавили сообщения трассировки в драйвер, драйвер является поставщиком трассировки. Для управления сеансом трассировки и создания журнала трассировки можно использовать контроллер трассировки, например Tracelog. Для просмотра сообщений можно использовать потребитель трассировки, например Tracefmt.
Дополнительные сведения об использовании средств трассировки программного обеспечения см. в разделе Обзор средств трассировки программного обеспечения.
Просмотр журнала трассировки UMDF
Файл журнала UMDF находится в %ProgramData%*\\Microsoft\\WDF
.
Файл журнала UMDF можно просмотреть с помощью TraceView или Tracelog. Для обоих средств требуются файлы формата сообщений трассировки (TMF), которые форматируют сообщения журнала трассировки. Файлы TMF доступны в WDK в подкаталоге \tools\tracing. (В TraceView UMDF отображается как именованный поставщик с именем "Трассировка UMDF-Framework" или "Трассировка платформы" в зависимости от версии UMDF.)
Средство проверки WDF позволяет отправлять сообщения трассировки как в журнал трассировки UMDF, так и в отладчик ядра. (Сообщения трассировки не следует отправлять в отладчик ядра с помощью параметра -kd в Tracelog, так как Tracelog может нарушить ведение журнала трассировки в UMDF.)
Вы также можете использовать расширение отладчика !wmitrace для просмотра сообщений трассировки в отладчике:
В WinDbg подключитесь к экземпляру WUDFHost, на котором размещен драйвер. Дополнительные сведения см. в разделе Включение отладки драйвера UMDF.
Если драйвер использует версию 1.11 или более позднюю, а вы используете отладчик ядра из Windows 8 или более поздней версии, этот шаг можно пропустить. Если драйвер использует версию UMDF более ранней, чем 1.11, используйте !wmitrace.tmffile или !wmitrace.searchpath , чтобы указать формат сообщения трассировки (TMF- файл) для конкретной платформы или путь к TMF-файлу. TMF-файлы находятся в подкаталогах конкретной платформы в WDK.
Используйте команду !wmitrace.logdump , чтобы отобразить содержимое буферов трассировки:
!wmitrace.logdump WudfTrace
Управление сообщениями трассировки
Вы можете управлять сообщениями трассировки UMDF с помощью пользовательского интерфейса, предоставляемого WDF Verifier , или путем изменения значений реестра. По возможности следует использовать интерфейс средства проверки WDF , так как значения реестра могут измениться в будущих версиях UMDF. Кроме того, вы не должны получать доступ к этим значениям в INF-файлах или коде драйвера.
В настоящее время можно изменить следующие значения реестра, которые находятся в разделе реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF:
Значение LogEnable определяет, создает ли UMDF журнал трассировки для драйвера. Если это значение равно 1, UMDF создает журнал трассировки.
Значение LogLevel определяет объем сведений, содержащихся в сообщениях трассировки UMDF. Значение по умолчанию для LogLevel равно 3, что приводит к тому, что сообщения трассировки UMDF будут содержать сообщения об ошибках и предупреждениях. Задайте для этого значения значение 7, чтобы включить сообщения об ошибках и предупреждениях, а также информационные сообщения без ошибок. Задайте для него значение 15, чтобы включить все сведения трассировки, которые может предоставить UMDF.
Значение LogKd определяет, отправляет ли UMDF сообщения трассировки в отладчик ядра. Если параметр LogKd имеет значение 1, UMDF отправляет сообщения трассировки в отладчик ядра.
Значение LogFlushPeriodSeconds указывает, как часто в секундах сообщения трассировки записываются в журнал трассировки.
Значение LogMinidumpType содержит флаги, указывающие тип сведений, которые будут содержаться в файле мини-дампа, если он создан. Дополнительные сведения об этих флагах см. в перечислении MINIDUMP_TYPE .
Дополнительные значения реестра можно найти в разделе реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF. Эти значения изменять не следует.