Comprobación de MDL invariable para la pila

La opción Comprobación de MDL invariable para pila supervisa cómo controla el controlador los búferes MDL invariables en la pila de controladores. El comprobador de controladores puede detectar modificaciones ilegales de búferes MDL invariables. Para usar esta opción, la verificación de E/S debe estar habilitada en al menos un controlador.

Nota Esta opción está disponible a partir de Windows 8.

La opción Comprobación de MDL invariable para pila garantiza que los controladores sigan las reglas de los búferes MDL invariables solo en el momento en que la solicitud salga de la pila del controlador.

La primera vez que se ve un IRP con MDL invariable en la rutina IoCallDriver , se calcula una firma única a partir del contenido del búfer MDL invariable y se almacena en una base de datos interna. Durante la finalización del IRP en la rutina IoCompleteRequest , si el IRP sigue llevando un MDL invariable para el que registramos la firma, el Comprobador de controladores valida que el búfer no ha cambiado.

No se puede modificar un búfer invariable, para la solicitud de escritura, a lo largo de toda la duración del IRP. Para una solicitud de lectura, no se puede modificar un búfer invariable en su ruta de distribución, por lo que la comparación de la firma del búfer se realiza en la última llamada a IoCallDriver.

La opción Comprobación de MDL invariable para pila comprueba la invariable de búfer MDL en toda la pila de controladores, sin tener en cuenta lo que ocurre con el búfer a medida que pasa a través de controladores individuales de la pila. Esta opción es global y no se puede aplicar de forma selectiva por controlador. La opción Comprobación de MDL invariable para pila solo puede detectar la infracción, sin poder identificar al controlador que infringía la invariable del búfer. Para ayudar a identificar el controlador defectuoso, use la opción Comprobación de MDL invariable para controlador , que realiza la validación de la invariable de contenido del búfer en cada llamada a IoCallDriver e IoCompleteRequest DDIs.

Activación de esta opción

Puedes activar la característica Comprobación de MDL invariable para pila para uno o varios controladores mediante el Administrador de comprobadores de controladores o la línea de comandos Verifier.exe. Debes reiniciar el equipo para activar o desactivar la opción Comprobación de MDL invariable para pila. Para obtener más información, vea Seleccionar opciones del comprobador de controladores.

Para activar la opción Comprobación de MDL invariable para pila, también debe activar la verificación de E/S.

  • En la línea de comandos

    En la línea de comandos, la comprobación de MDL invariable para pila se representa mediante 0x00002000 (bit 13). Para activar la comprobación de MDL invariable para la pila, usa un valor de marca de 0x00002010 o agrega 0x00002010 al valor de marca. Este valor activa la comprobación de E/S (0x10) y la comprobación de MDL invariable para la pila (0x00002000). Por ejemplo:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

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

  • 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) Verificación de E/S e Comprobación de MDL invariable para la pila.
    5. Reinicie el equipo.