共用方式為


更新 WMI 註冊資訊

在 WMI 的初始註冊之後,驅動程式會呼叫 IoWMIRegistrationControl 並執行下列其中一個動作來變更其註冊資訊:

  • WMIREG_ACTION_REREGISTER以新資訊取代驅動程式先前提供的所有註冊資訊。

    為了回應,WMI 會將 IRP_MN_REGINFO 要求或 IRP_MN_REGINFO_EX 要求傳送至驅動程式, 並將 Parameters.WMI.DataPath 設定為 WMIREGISTER 。 (Windows 98 和 Windows 2000 上,系統會傳送 IRP_MN_REGINFO 要求。在 Windows XP 和更新版本上,系統會傳送 IRP_MN_REGINFO_EX request.)

    驅動程式會針對它支援的所有區塊提供新的註冊資訊,如 使用 WMI 程式庫來註冊區塊處理IRP_MN_REGINFO和IRP_MN_REGINFO_EX註冊區塊中所述。

  • WMIREG_ACTION_UPDATE_GUIDS新增或移除區塊的支援,或變更已註冊區塊的靜態實例名稱。

    為了回應,WMI 會將 IRP_MN_REGINFOIRP_MN_REGINFO_EX 要求傳送至驅動程式, 並將 Parameters.Wmi.DataPath 設定為 WMIUPDATE

    驅動程式會提供 WMI 的更新註冊資訊,其中:

    • 驅動程式會設定WMIREG_FLAG_REMOVE_GUID移除該區塊的支援。

    • 驅動程式會清除WMIREG_FLAG_REMOVE_GUID,以新增區塊或更新現有的區塊。

    • 驅動程式會設定或清除WMIREG_FLAG_INSTANCE_XXX ,並提供任何必要的實例名稱資訊來變更區塊的靜態實例名稱,或將其變更為使用動態實例名稱。

  • WMIREG_ACTION_DEREGISTER指示 WMI,驅動程式將不再提供 WMI 資訊。

    WMI 不會傳送 IRP_MN_REGINFOIRP_MN_REGINFO_EX 要求來回應此呼叫,因為它不需要驅動程式的進一步資訊。 驅動程式通常會取消註冊其區塊,以回應 IRP_MN_REMOVE_DEVICE 要求。 請注意,取消註冊呼叫將會封鎖,直到裝置的所有 WMI IRP 都完成為止。 如果驅動程式將 WMI IRP 排入佇列,則必須先取消它們,再呼叫 IoWMIRegistrationControl 以取消註冊。