Share via


不允許預先操作回呼常式中的快速 I/O 作業

在某些情況下,迷你篩選驅動程式可能會選擇不允許快速 I/O 作業,而不是完成。 不允許快速 I/O 作業防止快速 I/O 路徑用於作業。

就像完成 I/O 作業一樣,不允許快速 I/O 作業表示停止處理,並將它傳回至篩選管理員。 不過,不允許快速 I/O 作業與完成作業不同。 如果迷你篩選驅動程式不允許 I/O 管理員發出的快速 I/O 作業,I/O 管理員可能會重新發出與對等 IRP 型作業相同的作業。

當迷你篩選驅動程式 的預先操作回呼常式 不允許快速 I/O 作業時,篩選管理員會執行下列動作:

  • 不會將作業傳送至目前迷你篩選驅動程式下方的迷你篩選驅動程式、舊版篩選或檔案系統。

  • 在 minifilter 驅動程式實例堆疊中,呼叫目前迷你篩選驅動程式上方迷你篩選器驅動程式的 後置回呼常式

  • 如果作業存在,則不會呼叫目前迷你篩選驅動程式的後續操作回呼常式。

迷你篩選驅動程式會從作業的預先操作回呼常式傳回FLT_PREOP_DISALLOW_FASTIO,以禁止快速 I/O 作業。

預先操作回呼常式不應該設定回呼資料結構的 IoStatus.Status 欄位,因為篩選管理員會自動將此欄位設定為STATUS_FLT_DISALLOW_FAST_IO。

FLT_PREOP_DISALLOW_FASTIO只能針對快速 I/O 作業傳回。 若要判斷作業是否為快速 I/O 作業,請參閱 FLT_IS_FASTIO_OPERATION

迷你篩選驅動程式無法針對IRP_MJ_SHUTDOWN、IRP_MJ_VOLUME_MOUNT或IRP_MJ_VOLUME_DISMOUNT作業傳回FLT_PREOP_DISALLOW_FASTIO。