Compartir a través de


No permitir una operación de E/S rápida en una rutina de devolución de llamada de preoperación

En determinadas circunstancias, un controlador de minifiltro puede optar por no permitir una operación de E/S rápida en lugar de completarla. No permitir una operación de E/S rápida impide que se use la ruta de acceso de E/S rápida para la operación.

Al igual que completar una operación de E/S, no permitir una operación de E/S rápida significa detener el procesamiento en él y devolverlo al administrador de filtros. Sin embargo, no permitir una operación de E/S rápida es diferente de completarla. Si un controlador de minifiltro no permite una operación de E/S rápida emitida por el administrador de E/S, el administrador de E/S puede volver a emitir la misma operación que una operación basada en IRP equivalente.

Cuando la rutina de devolución de llamada de preoperación de un controlador minifiltro no permite una operación de E/S rápida, el administrador de filtros hace lo siguiente:

  • No envía la operación a controladores de minifiltro por debajo del controlador de minifiltro actual, a filtros heredados o al sistema de archivos.

  • Llama a las rutinas de devolución de llamada de postoperación de los controladores de minifiltro por encima del controlador de minifiltro actual en la pila de instancias del controlador de minifiltro.

  • No llama a la rutina de devolución de llamada posterior a la operación del controlador minifiltro actual para la operación, si existe.

Un controlador de minifiltro no permite una operación de E/S rápida devolviendo FLT_PREOP_DISALLOW_FASTIO de la rutina de devolución de llamada de preoperación para la operación.

La rutina de devolución de llamada de preoperación no debe establecer el campo IoStatus.Status de la estructura de datos de devolución de llamada, ya que el administrador de filtros establece automáticamente este campo en STATUS_FLT_DISALLOW_FAST_IO.

FLT_PREOP_DISALLOW_FASTIO solo se pueden devolver para operaciones de E/S rápidas. Para determinar si una operación es una operación de E/S rápida, consulte FLT_IS_FASTIO_OPERATION.

Los controladores de minifiltro no pueden devolver FLT_PREOP_DISALLOW_FASTIO para las operaciones de IRP_MJ_SHUTDOWN, IRP_MJ_VOLUME_MOUNT o IRP_MJ_VOLUME_DISMOUNT.