在某些情况下,微型筛选器驱动程序可能会选择禁止快速 I/O 操作,而不是完成它。 禁止快速 I/O 操作会防止快速 I/O 路径被用于该操作。
完成 I/O 操作就像禁止快速 I/O 操作一样,意味着停止处理并将其返回给筛选器管理器。 但是,不允许快速 I/O操作与完成它不同。 如果微型筛选器驱动程序禁止 I/O 管理器发起的快速 I/O 操作,I/O 管理器可能会重新发起相同的操作,作为基于 IRP 的等效操作。
当微过滤器驱动程序的 预操作回调例程 禁止快速 I/O操作时,筛选器管理器执行以下工作:
不会将操作发送到当前微型筛选器驱动程序以下的微型筛选器驱动程序、旧筛选器或文件系统。
在微型筛选器驱动程序实例堆栈中,调用位于当前微型筛选器驱动程序上方的微型筛选器驱动程序的 操作后回调例程。
如果存在,则不调用当前微型筛选器驱动程序的后操作回调例程。
微型筛选器驱动程序通过从作的预作回调例程返回FLT_PREOP_DISALLOW_FASTIO来禁止快速 I/O作。
预作回调例程不应设置回调数据结构的 IoStatus.Status 字段,因为筛选器管理器会自动将此字段设置为STATUS_FLT_DISALLOW_FAST_IO。
仅能对快速 I/O 操作返回 FLT_PREOP_DISALLOW_FASTIO。 若要确定操作是否为快速 I/O 操作,请参阅 FLT_IS_FASTIO_OPERATION。
微型筛选器驱动程序无法在IRP_MJ_SHUTDOWN、IRP_MJ_VOLUME_MOUNT或IRP_MJ_VOLUME_DISMOUNT操作中返回FLT_PREOP_DISALLOW_FASTIO。