卸載常式環境
當驅動程式被取代或驅動程式服務已移除的所有裝置時,作業系統就會卸載驅動程式。 如果驅動程式在處理IRP_MN_REMOVE_DEVICE要求之後,PnP 管理員不會再呼叫 PnP 驅動程式的Unload常式。
在卸載序列開始時,I/O 管理員或 PnP 管理員會將驅動程式物件及其裝置物件標示為「卸載擱置中」。 驅動程式標示為「卸載擱置」之後,沒有任何額外的驅動程式可以附加至該驅動程式,也無法對驅動程式的裝置物件進行任何其他參考。 驅動程式可以完成未完成的 IRP,但系統不會將任何新的 IRP 傳送給驅動程式。
當下列所有情況都成立時,I/O 管理員會呼叫驅動程式的 Unload 常式:
驅動程式所建立的任何裝置物件都沒有任何參考。 換句話說,任何與基礎裝置相關聯的檔案都無法開啟,也無法針對任何驅動程式的裝置物件未完成任何 IRP。
沒有其他驅動程式會附加至此驅動程式。
驅動程式已呼叫 IoUnregisterPlugPlayNotification ,以取消註冊先前註冊的所有 PnP 通知。
請注意,如果驅動程式的DriverEntry常式傳回失敗狀態,則不會呼叫Unload常式。 在此情況下,I/O 管理員只會釋放驅動程式佔用的記憶體空間。
PnP 管理員和 I/O 管理員都不會在系統關機時呼叫 Unload 常式。 必須執行關機處理的驅動程式應該註冊 DispatchShutdown 常式。