Seguimiento de grupos

El seguimiento del grupo supervisa las asignaciones de memoria realizadas por el controlador. En el momento en que se descarga el controlador, el Comprobador de controladores garantiza que todas las asignaciones realizadas por el controlador se hayan liberado.

Las asignaciones de memoria sin frecuencia (también denominadas pérdidas de memoria) son una causa común del rendimiento del sistema operativo reducido. Pueden fragmentar los grupos del sistema y, finalmente, provocar bloqueos del sistema.

Cuando esta opción está activa, el Comprobador de controladores emitirá la comprobación de errores 0xC4 (con el parámetro 1 igual a 0x62) si un controlador se descarga sin liberar todas sus asignaciones.

Si el Comprobador de controladores emite esta comprobación de errores con el parámetro 1 igual a 0x51, 0x52, 0x53, 0x54 o 0x59, el controlador ha escrito en memoria fuera de sus asignaciones. En este caso, debe habilitar la característica Grupo especial para buscar el origen del error.

Consulte Comprobación de errores 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) para obtener una lista de los parámetros de comprobación de errores.

A partir de Windows Vista, habilitar la opción Pool Tracking también habilita el seguimiento de páginas bloqueadas. Cuando esta opción está activa, el Comprobador de controladores emitirá la comprobación de errores 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) si un controlador no puede liberar páginas bloqueadas después de una operación de E/S.

En Windows 7 y versiones posteriores del sistema operativo Windows, la opción Seguimiento de grupos admite memoria asignada mediante las siguientes API de kernel:

En Windows 7 y versiones posteriores del sistema operativo Windows, cuando se activa el seguimiento de grupos, el comprobador de controladores puede detectar intentos de asignar memoria del grupo de kernel con cuota en el contexto del proceso inactivo. Estos intentos suelen significar que el controlador asigna memoria de una rutina DPC. El contexto de proceso o subproceso para rutinas DPC no es confiable, por lo que intentar cobrar cuota a ese proceso es incorrecto.

Seguimiento del grupo de supervisión

Las estadísticas de asignación del grupo de memoria se pueden supervisar por separado para cada controlador que se está comprobando. Estas estadísticas se pueden mostrar mediante el Administrador de comprobadores de controladores, la línea de comandos Verifier.exe o en un archivo de registro. Consulte Supervisión de contadores individuales para obtener más información.

La extensión del depurador de kernel !comprobador 0x3 se puede usar para buscar asignaciones de memoria pendientes después de descargar el controlador o para realizar un seguimiento de las asignaciones actuales mientras se ejecuta el controlador. Esta extensión también muestra la etiqueta de grupo, el tamaño del grupo y la dirección del asignador para cada asignación. Para obtener información sobre las extensiones del depurador, vea Depuración de Windows.

Cargos de cuota de grupo de la rutina DPC

Los controladores de kernel pueden llamar a ExAllocatePoolWithQuotaTag para asignar memoria del grupo de kernel y cargar el número de bytes asignados a la cuota de grupo del proceso actual. Los controladores suelen usar la cuota para las asignaciones de memoria que están directamente relacionadas con una solicitud que procede de una aplicación.

Las rutinas de llamada a procedimiento diferido (DPC) se pueden ejecutar en el contexto de cualquier proceso. Por lo tanto, la cuota de carga de una rutina DPC cobra un proceso aleatorio. Aún peor, cuando la rutina DPC se ejecuta en el contexto del proceso Inactivo, esta condición puede provocar daños en la memoria o bloqueos del sistema.

A partir de Windows 7, el Comprobador de controladores detecta llamadas ExAllocatePoolWithQuotaTag desde rutinas DPC.

Activación de esta opción

Puede activar la característica De seguimiento de grupos para uno o varios controladores mediante el Administrador de comprobadores de controladores o la línea de comandos Verifier.exe. Para obtener más información, vea Seleccionar opciones del comprobador de controladores.

  • En la línea de comandos

    En la línea de comandos, la opción Pool Tracking se representa mediante bit 3 (0x8). Para activar el seguimiento del grupo, use un valor de marca de 0x8 o agregue 0x8 al valor de marca. Por ejemplo:

    verifier /flags 0x8 /driver MyDriver.sys
    

    La característica estará activa después del siguiente arranque.

    En Windows Vista y versiones posteriores de Windows, también puede activar y desactivar el seguimiento de grupos sin reiniciar el equipo agregando el parámetro /volatile al comando. Por ejemplo:

    verifier /volatile /flags 0x8 /adddriver MyDriver.sys
    

    Esta configuración es efectiva inmediatamente, pero se pierde al apagar o reiniciar el equipo. Para obtener más información, consulte Uso de la configuración volátil.

    La característica Pool Tracking también se incluye en la configuración estándar. Por ejemplo:

    verifier /standard /driver MyDriver.sys
    
  • Uso del Administrador de comprobadores de controladores

    1. Inicie el Administrador de comprobadores de controladores. Escriba Comprobador en una ventana del símbolo del sistema.
    2. Seleccione Crear configuración personalizada (para desarrolladores de código) y haga clic en Siguiente.
    3. Seleccione Seleccionar configuración individual en una lista completa.
    4. Seleccione (comprobar) Seguimiento del grupo.

    La característica Pool Tracking también se incluye en la configuración estándar. Para usar esta característica, en el Administrador de comprobadores de controladores, haga clic en Crear configuración estándar.