共用方式為


PnP 通知概觀

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

  • EventCategoryDeviceInterfaceChange

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

    GUID_DEVICE_INTERFACE_ARRIVAL
    表示已啟用指定類別的裝置介面。 例如,使用者已將新的磁片新增至電腦,而磁片區管理員已啟用新的磁片區, (類別 「磁片區」) 的裝置介面。

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

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

  • EventCategoryTargetDeviceChange

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

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

    GUID_TARGET_DEVICE_REMOVE_COMPLETE
    指出指定的裝置已從電腦中移除,或使用者正在變更裝置的驅動程式 () 。

    GUID_TARGET_DEVICE_REMOVE_CANCELLED
    表示指定的裝置上即將移除作業已取消。

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

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

    不同于註冊裝置介面變更,這可以視為介面的「被動」興趣,註冊目標裝置變更表示裝置的「主動」興趣。

  • EventCategoryHardwareProfileChange

    此類別包含下列事件:

    GUID_HWPROFILE_QUERY_CHANGE
    指出使用者已要求變更電腦的硬體設定檔。 PnP 管理員會使用此通知來要求已註冊的元件是否可以變更硬體設定檔,而不會中斷系統作業。 已註冊的元件通常會成功這些查詢要求。

    GUID_HWPROFILE_CHANGE_COMPLETE
    指出電腦的硬體設定檔已變更。 如果驅動程式維護設定檔特定的設定,這類驅動程式應該在硬體設定檔變更之後重新整理這些設定。

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

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

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

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

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

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

驅動程式不得產生同步事件,或等候非同步事件在關閉處理期間發生。

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

撰寫 PnP 通知回呼常式的指導方針

使用 PnP 裝置介面變更通知

使用 PnP 目標裝置變更通知

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

使用 PnP 自訂通知