Compartir a través de


Acceso a metadatos de UMDF en informes WER

En este tema se describe la ubicación y el contenido de los informes de Informe de errores de Windows (WER) que el sistema operativo crea cuando se bloquea un User-Mode Driver Framework (UMDF).

El sistema genera informes WER para tres tipos de eventos UMDF diferentes: WUDFHostProblem, WUDFUnhandledException y WUDFVerifierFailure.

Cuando el reflector finaliza el proceso de host del controlador, a veces debido a que se supera el umbral de tiempo de espera del host , el sistema genera un archivo denominado Report.wer, que contiene la información de WER. En concreto, Report.wer contiene metadatos de UMDF que pueden resultar útiles si está intentando depurar un controlador UMDF sin acceso a un destino de depuración en directo.

En Windows 8.1, puede encontrar el archivo Report.wer en el directorio C:\ProgramData\Microsoft\Windows\WER\ReportQueue. En este directorio, abra la carpeta NonCritical_HostProblem_* más reciente y busque Report.wer.

También puede acceder a los informes WER para UMDF mediante el siguiente comando de PowerShell:

get-winevent -providername "Windows Error Reporting" | where-object {$_.Message -like "*wudf*"} | format-list | out-file UmdfReports.txt

Informe de ejemplo WUDFHostProblem

A continuación se muestra un informe de WER de UMDF de ejemplo de tipo WUDFHostProblem. Se obtuvo del directorio ReportQueue descrito anteriormente. Si usa PowerShell para recuperar los informes, los campos se pueden etiquetar como P0, P1, P2 en lugar de Sig[0], Sig[1], Sig[2]. De lo contrario, los campos son los mismos y contienen los mismos valores posibles. Este ejemplo se generó a partir de uno de los ejemplos de WDK que usan la placa de referencia de hardware USB-FX2 del OSR.

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

Campos WUDFHostProblem

En la tabla siguiente se describen los valores posibles para los campos de un informe de tipo WUDFHostProblem.

Índice Nombre Valores
0 EventClass (Clase de evento)

El marco establece este valor en HostProblem.

1 Problema

Este campo contiene uno de los siguientes valores:

  • HostFailure
  • SendFailure
  • HostTimeout
  • BadRequest
  • BadReply
  • HostFailure
  • Otros
  • HostDisconnect
  • LeakedHandle
  • InvalidInterruptState
  • IsrTimedOut
2 DetectedBy

Contiene uno de los siguientes valores de enumeración:

cpp WdfComponentInvalid = 0, WdfComponentPlatform, WdfComponentReflector, WdfComponentDriverManager, WdfComponentHost, WdfComponentFramework, WdfComponentTest, WdfComponentMax
3 UMDFVersion

Especifica la versión de las bibliotecas de UMDF que se están usando actualmente. Tenga en cuenta que puede tratarse de una versión posterior a la del sistema operativo si el usuario ha realizado una acción para actualizar las bibliotecas del marco.

4 ExitCode

Contiene uno de los siguientes valores de enumeración:

cpp WdfHostExit_StillActive = 0x103, WdfHostExit_CodeUnknown = 0x70000000, WdfHostExit_InternalDriverStopReported, WdfHostExit_InternalDriverStopReportFailed, WdfHostExit_ExternalTermination

WdfHostExit_StillActive indica que el proceso de host se estaba ejecutando en el momento en que el marco creó el informe de errores.

5 Operación

Contiene uno de los siguientes valores de enumeración:

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 Message

El primer dígito es de este campo es siempre 1, lo que indica que un IRP está implicado en la operación. Los pares posteriores de dígitos indican majorFunction y MinorFunction del IRP, respectivamente.

En el informe de ejemplo anterior, por ejemplo, este campo contiene el valor 11b00. Esto significa que la operación era un IRP que el reflector controla en nombre del proceso host del controlador con un valor de función principal de IRP_MJ_PNP y un valor de función secundaria de IRP_MN_START_DEVICE (1 = mensaje IRP, 1b = IRP_MJ_PNP, 00 = IRP_MN_START_DEVICE).

7 Estado

El marco siempre establece en este valor en 0xffffffff.

8 HardwareId

Este campo contiene el identificador de hardware del dispositivo asociado al controlador que tenía un problema.

Campos WUDFUnhandledException

En la tabla siguiente se describen los valores posibles para los campos de un informe de tipo WUDFUnhandledException.

Índice Nombre Valores
0 EventClass (Clase de evento)

El marco establece este valor en UnhandledException.

1 Componente

Este campo contiene uno de los siguientes valores:

  • No válida
  • Plataforma
  • Reflector
  • DriverManager
  • Host
  • marco
  • Prueba
2 ExceptionCode

Motivo por el que se produjo la excepción. Para obtener una lista de valores, consulte EXCEPTION_RECORD.

3 RelativeFaultingAddress

Dirección donde se produjo la excepción.

4 CrashingModuleName Nombre del controlador que generó la excepción.
5 CrashingFileVersion Versión del marco del controlador.
6 LastDriverName Nombre del primer componente de controlador que no es UMDF en la pila de controladores.
7 LastDriverVersion Número de versión del primer componente de controlador no UMDF de la pila de controladores.
8 UMDFVersion

Especifica la versión de las bibliotecas de UMDF que se están usando actualmente. Tenga en cuenta que puede tratarse de una versión posterior a la del sistema operativo si el usuario ha realizado una acción para actualizar las bibliotecas del marco.

9 HardwareId

A partir de Windows 8, el identificador de hardware se proporciona en un archivo independiente. En este caso, el marco establece este valor en Volcado por separado.

Campos WUDFVerifierFailure

En la tabla siguiente se describen los valores posibles para los campos de un informe de tipo WUDFVerifierFailure.

Índice Nombre Valores
0 EventClass (Clase de evento)

El marco establece este valor en VerifierFailure.

1 FoundBy

El marco establece este valor en Framework.

2 Category

Este campo contiene uno de los siguientes valores:

  • Interno
  • Controlador
  • Autor de llamada
  • Externo
  • UnhandledException
3 ErrorNumber Exclusivamente para uso interno.
4 Location Solo para uso interno.
5 Controlador Nombre del módulo del controlador que produjo un error.
6 CallerAddress Dirección de la rutina que inició la generación del informe.
7 UMDFVersion

Especifica la versión de las bibliotecas de UMDF que se están usando actualmente. Tenga en cuenta que puede tratarse de una versión posterior a la del sistema operativo si el usuario ha realizado una acción para actualizar las bibliotecas del marco.

8 HardwareId

A partir de Windows 8, el identificador de hardware se proporciona en un archivo independiente. En este caso, el marco establece este valor en Volcado por separado.