Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается расположение и содержимое отчетов об ошибках Windows (WER), создаваемых операционной системой при сбое User-Mode Driver Framework (UMDF).
Система создает отчеты WER для трех различных типов событий UMDF: WUDFHostProblem, WUDFUnhandledException и WUDFVerifierFailure.
Когда рефлектор завершает процесс узла драйвера, иногда из-за превышения порогового значения времени ожидания узла система создает файл с именем Report.wer, содержащий сведения WER. В частности, Report.wer содержит метаданные UMDF, которые могут быть полезны при попытке отладки драйвера UMDF без доступа к целевому объекту динамической отладки.
В Windows 8.1 файл Report.wer можно найти в каталоге C:\ProgramData\Microsoft\Windows\WER\ReportQueue. В этом каталоге откройте последнюю папку NonCritical_HostProblem_* и найдите Report.wer.
Вы также можете получить доступ к отчетам WER для UMDF с помощью следующей команды PowerShell:
get-winevent -providername "Windows Error Reporting" | where-object {$_.Message -like "*wudf*"} | format-list | out-file UmdfReports.txt
Пример отчета WUDFHostProblem
Ниже приведен пример отчета UMDF WER типа WUDFHostProblem. Он был получен из каталога ReportQueue, описанного выше. Если вы используете PowerShell для получения отчетов, поля могут быть помечены как P0, P1, P2 вместо Sig[0], Sig[1], Sig[2]. В противном случае поля совпадают и содержат те же возможные значения. Этот пример был создан из одного из примеров WDK, которые используют OSR USB-FX2 референсную плату оборудования.
Sig[0].Name=EventClass
Sig[0].Value=HostProblem
Sig[1].Name=Problem
Sig[1].Value=HostTimeout
Sig[2].Name=DetectedBy
Sig[2].Value=2
Sig[3].Name=UMDFVersion
Sig[3].Value=6.3.9600
Sig[4].Name=ExitCode
Sig[4].Value=103
Sig[5].Name=Operation
Sig[5].Value=3
Sig[6].Name=Message
Sig[6].Value=11b00
Sig[7].Name=Status
Sig[7].Value=ffffffff
Sig[8].Name=HardwareId
Sig[8].Value=USB\VID_0547&PID_1002&REV_0000
Поля WUDFHostProblem
В следующей таблице описаны возможные значения полей в отчете типа WUDFHostProblem.
Индекс | Имя | Значения |
---|---|---|
0 | EventClass | Фреймворк устанавливает это значение на HostProblem. |
1 | Проблема | Это поле содержит одно из следующих значений:
|
2 | Обнаружено | Содержит одно из следующих значений перечисления: cpp
WdfComponentInvalid = 0,
WdfComponentPlatform,
WdfComponentReflector,
WdfComponentDriverManager,
WdfComponentHost,
WdfComponentFramework,
WdfComponentTest,
WdfComponentMax
|
3 | UMDFVersion | Указывает версию библиотек UMDF, используемых в настоящее время. Обратите внимание, что это может быть более поздняя версия, чем версия, поставляемая с операционной системой, если пользователь принял меры по обновлению библиотек фреймворка. |
4 | Код завершения | Содержит одно из следующих значений перечисления: cpp
WdfHostExit_StillActive = 0x103,
WdfHostExit_CodeUnknown = 0x70000000,
WdfHostExit_InternalDriverStopReported,
WdfHostExit_InternalDriverStopReportFailed,
WdfHostExit_ExternalTermination
WdfHostExit_StillActive указывает, что на момент создания отчета об ошибке хост-процесс выполнялся в контексте фреймворка. |
5 | Операция | Содержит одно из следующих значений перечисления: cpp
WudfOperation_Invalid,
WudfOperation_Init,
WudfOperation_HostShutdown,
WudfOperation_Pnp,
WudfOperation_Cleanup,
WudfOperation_Close,
WudfOperation_Cancel,
WudfOperation_IO,
WudfOperation_Interrupt,
WudfOperation_PoFx,
WudfOperation_Other,
WudfOperation_Max
|
6 | Сообщение | Первая цифра этого поля всегда равна 1, что указывает на то, что IRP участвует в операции. Последующие пары цифр указывают MajorFunction и MinorFunction IRP соответственно. Например, в приведенном выше примере отчета это поле содержит значение 11b00. Это означает, что операция была IRP, которую отражатель обрабатывал от имени узла драйвера с основным значением функции IRP_MJ_PNP и незначительным значением функции IRP_MN_START_DEVICE (1 = сообщение IRP, 1b = IRP_MJ_PNP, 00 = IRP_MN_START_DEVICE). |
7 | Состояние | Платформа всегда задает этому значению значение 0xffffffff. |
8 | HardwareId | Это поле содержит идентификатор оборудования устройства, связанного с драйвером, который имел проблему. |
Поля WUDFUnhandledException
В следующей таблице описываются возможные значения полей в отчете типа WUDFUnhandledException.
Индекс | Имя | Значения |
---|---|---|
0 | EventClass | Платформа задает для этого значения значение UnhandledException. |
1 | Компонент | Это поле содержит одно из следующих значений:
|
2 | КодИсключения | Причина возникновения исключения. Список значений см. в EXCEPTION_RECORD. |
3 | Относительный адрес неисправности | Адрес, в котором произошло исключение. |
4 | CrashingModuleName | Имя драйвера, вызвавого исключение. |
5 | Аварийное завершениеFileVersion | Версия драйвера в составе фреймворка. |
6 | ИмяПоследнегоВодителя | Имя первого компонента драйвера, отличного от UMDF, в стеке драйверов. |
7 | ПоследняяВерсияДрайвера | Номер версии первого компонента драйвера, отличного от UMDF, в стеке драйверов. |
8 | UMDFVersion | Указывает версию библиотек UMDF, используемых в настоящее время. Обратите внимание, что это может быть более поздняя версия, чем та, которая поставляется с операционной системой, если пользователь принял меры по обновлению библиотек фреймворка. |
9 | HardwareId | Начиная с Windows 8 идентификатор оборудования предоставляется в отдельном файле. В этом случае платформа задает это значение как выгружено отдельно. |
Поля WUDFVerifierFailure
В следующей таблице описаны возможные значения полей в отчете типа WUDFVerifierFailure.
Индекс | Имя | Значения |
---|---|---|
0 | EventClass | Фреймворк задает это значение как VerifierFailure. |
1 | FoundBy | Фреймворк устанавливает это значение как Framework. |
2 | Категория | Это поле содержит одно из следующих значений:
|
3 | КодОшибки | Только для внутреннего применения. |
4 | Местоположение | Только для внутреннего применения. |
5 | Водитель | Имя модуля драйвера, который завершился сбоем. |
6 | Адрес звонящего | Адрес подпрограммы, инициирующей создание отчета. |
7 | UMDFVersion | Указывает версию библиотек UMDF, используемых в настоящее время. Обратите внимание, что это может быть более поздняя версия, чем та, которая изначально поставлялась с операционной системой, если пользователь принял меры по обновлению библиотек фреймворка. |
8 | HardwareId | Начиная с Windows 8 идентификатор оборудования предоставляется в отдельном файле. В этом случае фреймворк задает это значение как выгружено отдельно. |