Share via


Uso del comprobador de UMDF

El marco proporciona una funcionalidad de comprobación integrada que puede usar para probar un controlador de User-Mode Driver Framework (UMDF) en ejecución. Esta funcionalidad, a veces denominada Comprobador de UMDF, valida ampliamente el estado del controlador y los argumentos que el controlador pasa a los métodos de objeto de marco. Puede usar el Comprobador de UMDF por sí mismo o junto con la herramienta Comprobador de aplicaciones de uso general (AppVerif.exe).

El comprobador de UMDF comprueba la adquisición y las jerarquías de bloqueos, comprueba el uso correcto de la cancelación y la cola de E/S, y garantiza que el controlador y el marco sigan los contratos documentados.

El comprobador de UMDF provoca errores en el código del controlador UMDF para comprobar el proceso de host. Sin embargo, una comprobación de errores de UMDF no hace que aparezca una pantalla de texto azul con información sobre el error. En su lugar, se comprueba un error de UMDF:

  • Crea un archivo de volcado de memoria y guarda el archivo en el directorio del archivo de registro del equipo (por ejemplo, %windir%\System32\LogFiles\WUDF\Xxx.dmp).

    Nota A partir de UMDF 2.15, el directorio de registro es %ProgramData%\Microsoft\WDF.

  • Crea un informe de errores para Microsoft (participación).

  • Se divide en el depurador si se adjunta uno al equipo.

  • Finaliza el proceso de host y deshabilita el dispositivo.

A partir de UMDF 2.0, el comprobador de UMDF emite puntos de interrupción en algunos casos y provoca una comprobación de errores de UMDF en otros. Este comportamiento es similar al del comprobador de KMDF.

Se recomienda encarecidamente realizar todas las pruebas y desarrollo del controlador después de habilitar Application Verifier (AppVerif.exe) en WUDFHost.exe. Use el siguiente comando, adjunte un depurador y reinicie.

AppVerif -enable Heaps Exceptions Handles Locks Memory TLS Leak -for WudfHost.exe

A partir de la versión 2.0 de UMDF, si ejecuta Application Verifier en el proceso de host del controlador (Wudfhost), umdf Verifier se habilita automáticamente para todos los controladores UMDF 2.0 de ese host, así como para todos los controladores UMDF 2.0 en futuros procesos de host de controladores.

En UMDF 1.11 y versiones anteriores, el comprobador del marco siempre está activado y no se puede desactivar.

Habilitación y deshabilitación del comprobador de UMDF

Puede habilitar manualmente el comprobador de UMDF estableciendo VerifierOn en un valor distinto de cero en la subclave Parameters\Wdf del controlador de la clave del Registro de nombre> de controlador deHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<.

Nota La existencia de un valor VerifierOn en absoluto, incluso establecido en cero, invalida la vinculación con Application Verifier. Como resultado, se recomienda eliminar el valor si no lo está forzando, en lugar de establecerlo en cero.

Para determinar si el comprobador de UMDF está habilitado, establezca un punto de interrupción en una ubicación después de que el controlador llame a WdfDriverCreate y use el comando de extensión del depurador !wdfdriverinfo :

!wdfkd.wdfdriverinfo<el nombre> **** del controlador0x1

Para obtener más información sobre los comandos de extensión del depurador, vea Debugger Extensions for Framework-based Drivers.

Controlar el comportamiento del comprobador

Puede controlar el comportamiento del comprobador de UMDF modificando los valores del Registro. Como alternativa, puede usar la aplicación de control de comprobador de WDF para establecer estos valores.

Los siguientes valores del Registro se pueden usar con UMDF 1. Controladores x , así como controladores UMDF 2.0 y versiones posteriores.

VerifyDownLevel (REG_DWORD)
Si VerifyDownLevel se establece en un valor distinto de cero y si el controlador se creó con una versión del marco anterior a la versión actual, el comprobador del marco incluye pruebas que se agregaron después de compilar el controlador. Si este valor no existe o se establece en cero, el comprobador del marco solo incluye las pruebas que existían cuando se creó el controlador.

Por ejemplo, si el controlador se creó con la versión 1.7 del marco y si la versión 1.9 del marco está instalada en el equipo, al establecer VerifyDownLevel en distinto de cero, el comprobador incluirá pruebas que se agregaron a la versión 1.9 del comprobador cuando se ejecuta el controlador.

Este valor se encuentra en la subclave Parameters\Wdf de la clave del Registro driverName deHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\.

TrackObjects (REG_DWORD)
Si TrackObjects se establece en un valor distinto de cero, el marco escribe el depurador cuando se descarga el controlador, si se han filtrado objetos basados en marcos (no se han eliminado).

Durante las pruebas periódicas, debe habilitar TrackObjects y no TrackRefCounts. Si el comprobador informa de que el controlador está filtrando objetos de marco, use la aplicación de control para habilitar la opción de comprobador TrackRefCounts .

Este valor se encuentra en la subclave DefaultHostProcessGuid de la clave del Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , donde DefaultHostProcessGuid es un valor que puede encontrar en la subclave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

TrackRefCounts (REG_DWORD)
Si TrackRefCounts se establece en un valor distinto de cero, el marco mantiene un recuento del número de referencias a cada objeto basado en marco. Puede usar la extensión del depurador !wudfrefhist para ver los cambios del recuento de referencias de un objeto.

Establecer TrackRefCounts en un valor distinto de cero degrada el rendimiento del controlador, por lo que debe dejar el valor en cero a menos que esté depurando un error de eliminación de objetos.

Este valor se encuentra en la subclave DefaultHostProcessGuid de la clave del Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , donde DefaultHostProcessGuid es un valor que puede encontrar en la subclave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

Además de los valores del Registro enumerados anteriormente, los controladores UMDF 2.0 y versiones posteriores también pueden usar muchos de los valores del Registro enumerados en Uso del comprobador de KMDF.