PnP 通知概觀

PnP 管理員會提供一種機制,讓驅動程式和應用程式在特定裝置或一般系統上發生特定事件時收到通知。 驅動程式可以註冊接收下列事件類別的通知:

  • 事件類別設備介面變化

    當驅動程式在裝置介面上註冊此類別的事件時,PnP 管理員會通知驅動程式下列事件:

    GUID_DEVICE_INTERFACE_ARRIVAL
    表示指定類別的裝置介面已啟用。 例如,使用者已將新磁碟新增至計算機,而磁碟區管理員已啟用新的磁碟區(類別 “volume” 的裝置介面)。

    GUID_DEVICE_INTERFACE_REMOVAL
    表示已停用指定類別的裝置介面。

    如需裝置介面的詳細資訊,請參閱 IoRegisterDeviceInterface 和相關例程。

  • EventCategoryTargetDeviceChange

    當驅動程式在裝置上註冊此類別的事件時,PnP 管理員會在裝置上發生下列事件時通知驅動程式:

    GUID_TARGET_DEVICE_QUERY_REMOVE
    指出 PnP 管理員即將移除裝置的驅動程式。 數個動作可能會導致此事件,包括:使用者已要求從計算機移除指定的裝置,或使用者已發出裝置的更新驅動程式要求。 此通知會要求裝置的驅動程式核准或否決即將移除的作業。

    GUID_TARGET_DEVICE_REMOVE_COMPLETE
    指出指定的裝置已從計算機中移除,或使用者正在變更裝置的驅動程式。

    GUID_目標設備移除已取消
    表示指定的裝置即將移除作業已取消。

    GUID_XXX (自訂事件)
    指出指定的裝置上已發生自定義事件。

    驅動程式寫入器可以定義裝置的自定義事件。 當驅動程式(或其他相關元件)通知 PnP 管理員自定義事件已發生時,PnP 管理員會通知任何已註冊目標裝置變更通知的元件。

    與註冊裝置介面變更不同,這種註冊可被視為對介面的「被動涉入」,而註冊目標裝置的變更表示對裝置有「主動涉入」。

  • EventCategoryHardwareProfileChange

    此類別包含下列事件:

    GUID_HWPROFILE_QUERY_CHANGE
    指出使用者已要求變更計算機的硬體配置檔。 PnP 管理員會使用此通知來詢問已註冊的元件是否可以變更硬體配置檔,而不會中斷系統作業。 已註冊的元件通常能夠成功處理這些查詢請求。

    GUID_HWPROFILE_CHANGE_COMPLETE
    指出機器的硬體配置檔已變更。 如果一個驅動程式維護特定於配置檔的設定,那麼在硬體配置檔變更後,這個驅動程式應該重新整理這些設定。

    硬體設定檔變更已取消
    表示即將發生的硬體配置檔變更已取消。

PnP 通知的運作方式如下,適用於內核模式元件:

  1. 驅動程式透過呼叫 IoRegisterPlugPlayNotification來註冊某類別事件的通知。

    PnP 通知回呼例程會維持註冊狀態,直到驅動程式明確移除註冊為止。

  2. 當已註冊類別中的事件發生時,PnP 管理員會呼叫驅動程式的回呼例程。

  3. 驅動程式透過呼叫 IoUnregisterPlugPlayNotification來移除回呼註冊。

驅動程式不得在關閉操作期間產生同步事件或等候發生異步事件。

如需 PnP 通知的詳細資訊,請參閱下列各節:

撰寫 PnP 通知回呼例程的指導方針

使用 PnP 裝置介面變更通知

使用 PnP 目標裝置變更通知

使用 PnP 硬體設定檔變更通知

使用 PnP 自定義通知