在預先操作回呼常式中完成 I/O 作業
若要 完成 I/O 作業,表示要停止處理作業,請指派最後的 NTSTATUS 值,並將其傳回至篩選管理員。
當迷你篩選驅動程式完成 I/O 作業時,篩選管理員會執行下列動作:
不會將作業傳送至目前迷你篩選驅動程式下方的迷你篩選驅動程式、舊版篩選或檔案系統。
在迷你篩選驅動程式實例堆疊中,呼叫目前迷你篩選驅動程式上方迷你篩選驅動程式的後置回呼 常式 。
如果作業存在,則不會針對作業呼叫目前迷你篩選驅動程式的後置回呼常式。
迷你篩選驅動程式 的預先操作回呼常式 會執行下列步驟來完成 I/O 作業:
將回呼資料結構的 [IoStatus.Status] 欄位設定為作業的最終 NTSTATUS 值。
傳回FLT_PREOP_COMPLETE。
完成 I/O 作業的預先操作回呼常式無法在 CompletionCoNtext 輸出參數) 中設定非 Null 完成內容 (。
迷你篩選驅動程式也可以藉由執行下列步驟,在先前所畫筆 I/O 作業的工作常式中完成作業:
將回呼資料結構的 [IoStatus.Status] 欄位設定為作業的最終 NTSTATUS 值。
當工作常式呼叫FltCompletePendedPreOperation時,在CallbackStatus參數中傳遞FLT_PREOP_COMPLETE。
完成 I/O 作業時,迷你篩選驅動程式必須將回呼資料結構的 IoStatus.Status 欄位設定為作業的最終 NTSTATUS 值,但此 NTSTATUS 值無法STATUS_PENDING或STATUS_FLT_DISALLOW_FAST_IO。 若要進行清除或關閉作業,欄位必須STATUS_SUCCESS。 這些作業無法使用任何其他 NTSTATUS 值來完成。
根據 NTSTATUS 值,完成 I/O 作業通常稱為作業成功或失敗:
若要 成功 I/O 作業,表示使用成功或參考 NTSTATUS 值來完成它,例如STATUS_SUCCESS。
若要 讓 I/O 作業失敗,表示以錯誤或警告 NTSTATUS 值完成,例如STATUS_INVALID_DEVICE_REQUEST或STATUS_BUFFER_OVERFLOW。
NTSTATUS 值是在 ntstatus.h 中定義。 這些值分為四個類別:成功、資訊、警告和錯誤。 如需這些值的詳細資訊,請參閱 使用 NTSTATUS 值。