在 PnP 管理員將 IRP_MN_REMOVE_DEVICE IRP 傳送給裝置的驅動程式之前,PnP 管理員會呼叫裝置上為 EventCategoryTargetDeviceChange 註冊的任何內核模式通知回呼例程。 PnP 管理員會指定 NotificationStructure 的 GUID_TARGET_DEVICE_REMOVE_COMPLETE事件。
處理 GUID_TARGET_DEVICE_REMOVE_COMPLETE 事件時,通知回呼例行程序應該:
拿掉裝置上的通知註冊。
裝置已移除,因此驅動程式會呼叫 IoUnregisterPlugPlayNotification 來移除通知註冊。
裝置可能仍然存在於機器上,但所有裝置物件都已刪除,且裝置無法使用。
如果驅動程式未收到先前的查詢移除通知,請執行意外移除處理。
如果裝置遭到意外移除,PnP 管理員會將已註冊的驅動程式傳送移除完成的通知,而不需要先前的查詢移除通知。 在此情況下,驅動程式必須執行任何必要的清除,例如關閉裝置的任何句柄,以及移除檔案物件的任何未完成參考。