共用方式為


WMI 註冊旗標

驅動程式會指出區塊是否使用靜態或動態實例名稱,並藉由在 WMIGUIDREGINFOWMIREGGUID 結構中設定旗標來指定區塊的其他特性,而該結構會傳遞至 WMI 來註冊區塊。

驅動程式指出區塊會藉由設定下列其中一個旗標來使用靜態實例名稱:

  • WMIREG_FLAG_INSTANCE_LIST表示驅動程式會在靜態清單中提供所有實例名稱。

    只有在驅動程式藉由處理 IRP_MN_REGINFOIRP_MN_REGINFO_EX 要求來註冊區塊時,驅動程式才能設定此旗標,而不是藉由呼叫 WmiSystemControl。 驅動程式會在區塊的 WMIREGGUID結構中,以 InstanceNameList所指示的位元組位移寫入實例名稱字串。

  • WMIREG_FLAG_INSTANCE_BASENAME指示 WMI 從驅動程式定義的基底名稱字串產生靜態實例名稱。

    處理IRP_MN_REGINFOIRP_MN_REGINFO_EX要求的驅動程式會在區塊WMIREGGUID結構中 BaseNameOffset所指示的位移寫入基底名稱字串。

    呼叫WmiSystemControl的驅動程式會在其 DpWmiQueryReginfo常式的InstanceName參數中指定基底名稱字串。

  • WMIREG_FLAG_INSTANCE_PDO指示 WMI 從驅動程式 PDO 的裝置實例識別碼產生靜態實例名稱。

    處理IRP_MN_REGINFOIRP_MN_REGINFO_EX要求的驅動程式會將指標寫入區塊WMIREGGUID結構的Pdo 成員上的 PDO。 如果要求 IRP_MN_REGINFO_EX,則驅動程式必須呼叫 ObReferenceObject 常式來增加每個 PDO 的參考計數。 (系統會稍後取值每個 PDO。)

    呼叫WmiSystemControl的驅動程式會在其 DpWmiQueryReginfo常式的 Pdo 參數中寫入PDO的指標。

若要指出區塊使用動態實例名稱,驅動程式不得設定下列任何旗標:WMIREG_FLAG_INSTANCE_LIST、WMIREG_FLAG_INSTANCE_PDO或WMIREG_FLAG_INSTANCE_BASENAME。

驅動程式表示藉由設定WMIREG_FLAG_EXPENSIVE來收集資料區塊的成本很高。 這會指示 WMI 在第一次開啟資料區塊時傳送 IRP_MN_ENABLE_COLLECTION 要求,並在最後一個 WMI 用戶端關閉區塊時 傳送IRP_MN_DISABLE_COLLECTION 要求。 驅動程式在收到 IRP_MN_ENABLE_COLLECTION 要求之前,不需要收集這類區塊的資料。

驅動程式會藉由設定WMIREG_FLAG_EVENT_ONLY_GUID來指出事件區塊。 這表示區塊只能啟用或停用為事件,而且無法查詢或設定。

驅動程式會指示 WMI 藉由設定WMIREG_FLAG_REMOVE_GUID來移除先前註冊的區塊。 此旗標只有在回應使用 WMIUPDATE) 更新註冊資訊的要求 (IRP_MN_REGINFOIRP_MN_REGINFO_EX 時才有效。 如需詳細資訊,請參閱 更新 WMI 註冊資訊