Compartir a través de


Solución de problemas de bloqueos del controlador UMDF 2.0

A partir de User-Mode versión 2 de Driver Framework (UMDF), puede usar un subconjunto de los comandos de extensión del depurador implementados en Wdfkd.dll para depurar un controlador UMDF. En este artículo se describen los comandos que puede usar para solucionar problemas de controladores UMDF.

Determinar por qué se bloqueó un controlador UMDF 2.0

Si se finaliza el proceso de host del controlador, es posible que el controlador tenga un problema en una devolución de llamada que da lugar a que se supere el umbral de tiempo de espera del host . En este caso, el reflector finaliza el proceso de host del controlador.

Para investigarlo, configure primero una sesión de depuración en modo kernel como se describe en Cómo habilitar la depuración de un controlador UMDF. Se recomienda encarecidamente realizar todo el desarrollo y las pruebas del controlador UMDF con un depurador de kernel asociado al sistema de prueba y habilitar comprobador de aplicaciones (AppVerif.exe) en WUDFHost.exe. Use el siguiente comando, adjunte un depurador de kernel y reinicie.

AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
  • Si se establece HostFailKdDebugBreak , el reflector se divide en el depurador en modo kernel cuando se supera el umbral de tiempo de espera. En la salida del depurador, verá varias sugerencias sobre cómo empezar, incluidos los vínculos que puede seleccionar. Por ejemplo:

    **** Problem detected in UMDF driver "WUDFOsrUsbFx2". !process 0xFFFFE0000495B080 0x1f, !devstack 0xFFFFE000032BFA10, Problem code 3 ****
    **** Dump UMDF driver image name and stack: !wdfkd.wdfumdevstack 0x000000BEBB49AE20
    **** Dump UM Irps for this stack: !wdfkd.wdfumirps 0x000000BEBB49AE20
    **** Dump UMDF trace log: !wmitrace.logdump WUDFTrace
    **** Helpful UMDF debugger extension commands: !wdfkd.wdfhelp
    **** Note that driver host process may get terminated if you go past this break, making it difficult to debug the problem!
    
  • Use !analyze para mostrar información sobre el error y otros comandos de extensión umDF que puede probar. Este comando puede ayudar con errores de comprobador de UMDF o excepciones no controladas de UMDF. Puede usarlo para depurar kernel activo o depurar archivos de volcado de memoria del usuario desde %ProgramData%\Microsoft\WDF.

  • Use !process 0 0x1f wudfhost.exe para enumerar todos los procesos de host del controlador Wudfhost.exe, incluida la información de la pila de subprocesos.

    También puede usar !wdfkd.wdfumtriage y !wdfkd.wdfldr para mostrar todos los controladores que están enlazados actualmente a WDF. Al seleccionar el nombre de la imagen de un controlador UMDF, el depurador muestra la dirección del proceso de hospedaje. A continuación, puede seleccionar la dirección del proceso para mostrar información específica de ese proceso.

  • Si es necesario, use .process /r /p Process para cambiar el contexto de proceso al del proceso wudfhost que hospeda el controlador. Use .cache forcedecodeuser y lmu para comprobar que el controlador está hospedado en el proceso actual.

  • Examine las pilas de llamadas de subprocesos (!thread Address) para determinar si se agota el tiempo de espera de una devolución de llamada del controlador. Examine el recuento de tics de los subprocesos. En Windows 8.1, el reflector agota el tiempo de espera después de un minuto.

  • Use !wdfkd.wdfdriverinfo MyDriver.dll 0x10 para mostrar el árbol del dispositivo en forma detallada. A continuación, seleccione !wdfdevice. Este comando muestra información detallada sobre el estado de energía, directiva de energía y Plug and Play (PnP).

  • Use !wdfkd.wdfumirps para buscar IRP pendientes.

  • Use !wdfkd.wdfdevicequeues para comprobar el estado de las colas del controlador.

  • En una sesión de depuración en modo kernel, puede usar !wmitrace.logdump WudfTrace para mostrar el registro de seguimiento.

Mostrar el registro de IFR de UMDF 2.0

En una sesión de depuración en modo kernel, puedes usar el comando de extensión !wdfkd.wdflogdump para mostrar los registros de Windows Driver Frameworks (WDF) In-flight Recorder (IFR), si está disponible.

Buscar archivos de volcado de memoria

Vea Determinar por qué el reflector finalizó el proceso de host para obtener información sobre cómo buscar archivos de volcado en modo de usuario. Vea Usar el seguimiento de software de WPP en controladores UMDF para obtener información sobre cómo establecer el valor del Registro LogMinidumpType para especificar el tipo de información almacenada en el archivo minivolcado.