共用方式為


卸除例程環境

當取代驅動程式或移除驅動程式服務的所有裝置時,作業系統會卸載驅動程式。 如果驅動程式在處理 IRP_MN_REMOVE_DEVICE 要求之後,如果驅動程式沒有其他裝置物件,則 PnP 管理員會呼叫 PnP 驅動程式的卸載常式。

在卸載順序開始時,I/O 管理員或 PnP 管理員會將驅動程式物件及其裝置物件標示為「卸載擱置中」。 驅動程式標示為「卸載擱置」之後,其他驅動程式無法附加至該驅動程式,也無法對驅動程式的裝置物件進行任何其他參考。 驅動程式可以完成未完成的 IRP,但系統不會將任何新的 IRP 傳送至驅動程式。

當下列所有情況都成立時,I/O 管理員會呼叫驅動程式的 Unload 常式:

  • 驅動程式所建立的所有裝置物件已經沒有任何參考存在。 換句話說,不能開啟與底層裝置相關聯的檔案,也不能有任何驅動程式的裝置物件上有待處理的 IRP。

  • 沒有其他驅動程式與此驅動程式相連。

  • 驅動程式已呼叫 IoUnregisterPlugPlayNotification 來取消註冊先前註冊的所有 PnP 通知。

請注意,如果驅動程式的 DriverEntry 常式傳回失敗狀態,則不會呼叫 Unload 常式。 在此情況下,I/O 管理員只會釋放驅動程式所佔用的記憶體空間。

PnP 管理員和 I/O 管理員都不會在系統關機時呼叫 Unload 常式。 必須執行關機處理的驅動程式應該註冊 DispatchShutdown 常式。