共用方式為


處理清除和關閉作業中的錯誤

某些驅動程式無法區分 DispatchCleanupDispatchClose 常式中所需的工作。 I/O 管理員會在關閉檔案物件的最後一個控制碼時呼叫驅動程式的 DispatchCleanup 常式。 當從檔案物件釋放最後一個參照時,會呼叫 DispatchClose 常式。 驅動程式不應該嘗試釋放其 DispatchCleanup 常式中附加至檔案物件的資源,或可能由其他 DispatchXxx 常式使用的資源。

當呼叫分派例程時,I/O 管理員會維持對於一般 I/O 呼叫的檔案物件的參考。 因此,驅動程式可以在呼叫其 DispatchCleanup 常式之後,但在呼叫其 DispatchClose 常式之前,接收檔案物件的 I/O 要求。 例如,用戶模式下的調用者可能會在另一個執行緒正在進行 I/O 管理員請求時關閉檔案控制碼。 如果驅動程式在 I/O 管理員呼叫其 DispatchClose 常式之前刪除或釋放必要的資源,則可能會發生無效的指標參考和其他問題。