確保完成處理是在安全 IRQL 上執行
如 撰寫 Postoperation Callback 例程中所述,IRP 型 I/O 作業的後置作業回呼 常式 可以在 IRQL = DISPATCH_LEVEL呼叫,除非迷你篩選驅動程式的預先操作回呼常式藉由傳回FLT_PREOP_SYNCHRONIZE或作業是固有同步的建立作業來同步作業。 (如需此傳回值的詳細資訊,請參閱 傳回 FLT_PREOP_SYNCHRONIZE.)
不過,對於尚未同步處理的 IRP 型 I/O 作業,迷你篩選驅動程式可以使用兩種技術來確保在 IRQL < = APC_LEVEL執行完成處理。
第一個技巧是讓後置回呼常式畫上 I/O 作業,直到可以在 IRQL < = APC_LEVEL 執行完成處理為止。 在 Postoperation 回呼常式中擱置 I/O 作業中會說明這項技術。
第二個技巧是讓迷你篩選驅動程式的後置回呼常式呼叫 FltDoCompletionProcessingWhenSafe。 FltDoCompletionProcessingWhenSafe 只有在目前的 IRQL 為 > = DISPATCH_LEVEL時,才會寫入 I/O 作業。 否則,此常式會立即執行迷你篩選驅動程式的 SafePostCallback 常式。 這項技術會在 FltDoCompletionProcessingWhenSafe中說明。