Compartir a través de


Determinar si un controlador filtra objetos de marco

En este tema se describe cómo puede encontrar pérdidas de memoria del controlador causadas por referencias no editadas. Se aplica a los controladores User-Mode Driver Framework (UMDF) versión 1 y 2.

UMDF 1

En la versión 1 de UMDF, una pila de llamadas puede provocar una pérdida de memoria si cada llamada a AddRef no tiene una llamada release coincidente.

Para probar si el controlador UMDF versión 1 filtra objetos de marco, siga estos pasos:

  1. Use la aplicación de control de comprobador de WDF para establecer las opciones de comprobador que desee. Durante las pruebas periódicas, empiece estableciendo TrackObjects y no TrackRefCounts.

    Cuando se descarga el controlador, el comprobador de código del marco escribe el depurador si no se eliminó un objeto de marco y le pide que use la extensión del depurador !wudfdumpobjects . Esta extensión del depurador muestra una lista de objetos no eliminados.

  2. Si el comprobador de código indica que el controlador está filtrando objetos de marco, use la aplicación de control para establecer la opción TrackRefCounts .

    Si se establece esta opción, el comprobador realiza un seguimiento de las referencias a objetos de marco mientras se ejecuta el controlador. Puede usar la extensión del depurador !wudfrefhist para mostrar cada pila de llamadas (conjunto de llamadas de función) que incremente o disminuya el recuento de referencias de un objeto. Al examinar las llamadas AddRef y Release en estas pilas de llamadas, debería poder encontrar una pila que no disminuya el recuento de referencias del objeto y, por tanto, provocará la fuga.

Para obtener información sobre las opciones adicionales del comprobador, consulte Uso del comprobador de UMDF.

Para obtener información sobre cuándo eliminar objetos de marco, vea Administrar la duración de los objetos.

UMDF 2

En la versión 2 de UMDF, las referencias no editadas son poco frecuentes, pero pueden producirse debido a discrepancias de llamadas al usar WdfObjectReference y WdfObjectDereference.

Para probar si el controlador UMDF versión 2 filtra objetos de marco, use el procedimiento siguiente:

  1. Siga los pasos descritos en Procedimientos recomendados para configurar el equipo para la depuración de UMDF.

  2. Para usar el seguimiento de etiquetas, habilite el comprobador de UMDF y controle el seguimiento en el registro. Ambas opciones se almacenan en la subclave Parameters\Wdf del controlador de la clave de nombre> del controladorHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<.

    Para habilitar el comprobador de UMDF, establezca un valor distinto de cero para VerifierOn.

    Para habilitar el seguimiento de identificadores, establezca el valor de TrackHandles en el nombre de uno o varios tipos de objeto, o especifique un asterisco (*) para realizar un seguimiento de todos los tipos de objeto.

    También puede modificar la configuración del comprobador de UMDF mediante la aplicación WdfVerifier.exe .

  3. Reinicie, establezca una conexión del depurador y, a continuación, use los siguientes comandos del depurador:

Si el comprobador de UMDF está activado, las fugas de memoria se detectan en la descarga del controlador, igual que en KMDF.

Para obtener más información sobre el uso de recuentos de referencia en los controladores KMDF y UMDF versión 2, vea Ciclo de vida de objetos de marco.