IRP_MJ_CLOSE

每個驅動程式都必須在 DispatchClose 常式中處理關閉要求,但無法停用或移除其裝置的驅動程式可能例外,而不會關閉系統。 磁片驅動程式,其裝置保存系統頁面檔案是這類驅動程式的範例。 請注意,這類裝置的驅動程式也無法動態卸載。

傳送時

收到此要求表示與目標裝置物件相關聯的檔案物件最後一個控制碼已經關閉並釋放。 所有未處理的 I/O 要求都已完成或取消。

輸入參數

輸出參數

作業

許多裝置和中繼驅動程式只會在 IRP 的 I/O 狀態欄塊中設定STATUS_SUCCESS,並完成關閉要求。 不過,給定驅動程式在收到關閉要求時所執行的動作取決於驅動程式的設計。 一般而言,驅動程式應該復原在收到 IRP_MJ_CREATE 要求時所採取的任何動作。 裝置驅動程式的裝置物件是獨佔的,例如序列驅動程式,也可以在收到關閉要求時重設硬體。

IRP_MJ_CLOSE要求不一定會在關閉檔案物件控制碼的進程內容中傳送。 如果驅動程式必須釋放程式特定的資源,例如使用者記憶體,該驅動程式先前已鎖定或對應,則必須執行此動作以回應 IRP_MJ_CLEANUP 要求。

IRP_MJ_CLOSE要求一律會在PASSIVE_LEVEL傳送。

規格需求

標頭

Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另請參閱

DispatchClose

IRP_MJ_CLEANUP

IRP_MJ_CREATE