共用方式為


處理 GUID_TARGET_DEVICE_QUERY_REMOVE 事件

在 PnP 管理員將 IRP_MN_QUERY_REMOVE_DEVICE IRP 傳送給裝置的驅動程式之前,它會先呼叫在裝置上註冊 EventCategoryTargetDeviceChange 的任何通知回呼例程。 PnP 管理員會指定 NotificationStructure事件 GUID_TARGET_DEVICE_QUERY_REMOVE。

為了回應這類通知,回呼例程會判斷是否可以移除裝置,而不會中斷系統。

如果不應該移除裝置,回呼例程會傳回 STATUS_UNSUCCESSFUL。 為了回應此狀態,PnP 管理員會中止查詢移除處理,且不會移除裝置。

如果可以移除裝置,回呼例程應該執行任何適當的作業來準備移除裝置,例如關閉裝置上開啟的任何句柄(可能的話)。 如果裝置上的控制代碼保持開啟狀態,則 PnP 管理員無法移除裝置,並且 PnP 管理員將中止查詢移除的處理。

成功處理GUID_TARGET_DEVICE_QUERY_REMOVE事件時,通知回呼例程應該:

  • 關閉裝置的任何開啟句柄。

  • 如果驅動程式在檔案物件上有未完成的參考,則取值檔案物件。

  • 請保持註冊以接收未來 EventCategoryTargetDeviceChange 的通知。 這很重要,因為即將開始的移除作業可能會取消。

關閉裝置的句柄並不會取消 PnP 目標裝置變更通知的驅動程序註冊。 PnP 管理員仍然可以呼叫驅動程式的通知回呼例程,但在這類呼叫中,NotificationStructure 中的檔案對象無效。