WMIREGGUIDW 結構 (wmistr.h)

WMIREGGUID 結構包含數據區塊或事件區塊的新或更新註冊資訊。

語法

typedef struct {
  GUID  Guid;
  ULONG Flags;
  ULONG InstanceCount;
  union {
    ULONG     InstanceNameList;
    ULONG     BaseNameOffset;
    ULONG_PTR Pdo;
    ULONG_PTR InstanceInfo;
  } DUMMYUNIONNAME;
} WMIREGGUIDW, *PWMIREGGUIDW;

成員

Guid

指定要註冊或更新之區塊的 GUID。

Flags

表示要註冊或更新之區塊的特性。

如果區塊正以靜態實例名稱註冊,驅動程式會設定下列其中一個旗標:

WMIREG_FLAG_INSTANCE_LIST

指出驅動程式會在 IrpStack-Parameters.WMI.Buffer> 緩衝區中的 WMIREGINFO 結構之後,於靜態清單中提供此區塊的靜態實例名稱。 如果設定此旗標, InstanceNameListWMIREGINFO 結構開頭的位元組位移,其中包含此 WMIREGGUID 到連續的 InstanceCount 計數 Unicode 字元串序列。

WMIREG_FLAG_INSTANCE_BASENAME

要求 WMI 從驅動程式在 IrpStack-Parameters.WMI.Buffer> 緩衝區中的 WMIREGINFO 結構之後所提供的基底名稱產生靜態實例名稱。 WMI 會將計數器附加至基底名稱,以產生實例名稱。 如果設定此旗標, BaseNameOffsetWMIREGINFO 結構開頭的位元組位移,其中包含此 WMIREGGUID 到做為基底名稱的單一計算 Unicode 字元串。

WMIREG_FLAG_INSTANCE_PDO

要求 WMI 從 PDO 的裝置實例標識碼產生靜態實例名稱。 如果設定此旗標, InstanceInfo 會指向傳遞給驅動程式 AddDevice 例程的 PDO。 WMI 會從 PDO 的裝置實例路徑產生實例名稱。 使用裝置實例路徑作為靜態實例名稱的基底是有效率的,因為這類名稱保證是唯一的。 WMI 會自動提供實例的「易記」名稱,做為數據取用者可查詢之數據區塊中的專案。

如果區塊正以動態實例名稱註冊,則必須清楚WMIREG_FLAG_INSTANCE_LIST、WMIREG_FLAG_INSTANCE_BASENAME和WMIREG_FLAG_INSTANCE_PDO。

驅動程式也可能設定下列一或多個旗標:

WMIREG_FLAG_EVENT_ONLY_GUID

區塊只能啟用或停用為事件,而且無法查詢或設定。 如果此旗標清楚,也可以查詢或設定區塊。

WMIREG_FLAG_EXPENSIVE

要求WMI 在數據取用者第一次開啟數據區塊時傳送 IRP_MN_ENABLE_COLLECTION 要求,並在最後一個數據取用者關閉數據區塊時 提出IRP_MN_DISABLE_COLLECTION 要求。 如果收集這類數據會影響效能,建議這麼做,因為驅動程式必須等到數據取用者藉由開啟 區塊明確要求數據之後,才需要收集數據。

WMIREG_FLAG_REMOVE_GUID

要求 WMI 移除此區塊的支援。 此旗標只有在回應要求以更新 (IRP_MN_REGINFO 或參數.WMI.DataPath 設定為 WMIUPDATE ) IRP_MN_REGINFO_EX時有效。

WMIREG_FLAG_TRACED_GUID

區塊只能寫入記錄檔,而且只能透過 evntrace.h 中宣告的使用者模式例程來存取。 只有 NT 核心模式數據提供者會設定此旗標。

WMIREG_FLAG_TRACE_CONTROL_GUID

GUID 可作為控件 GUID,以在 MOF 檔案中啟用或停用與其相關聯的追蹤 GUID。 只有在同時設定WMIREG_FLAG_TRACED_GUID時,此旗標才有效。 只有 NT 核心模式數據提供者會設定此旗標。

InstanceCount

指定要為此區塊定義的靜態實例名稱數目。 如果區塊正以動態實例名稱註冊,WMI 會忽略 InstanceCount

DUMMYUNIONNAME

DUMMYUNIONNAME.InstanceNameList

指出 WMIREGINFO 結構開頭的位元組位移,此結構包含此 WMIREGGUID 到連續的 InstanceCount 計數Unicode字元串序列。 只有在 Flags 中設定WMIREG_FLAG_INSTANCE_LIST時,此成員才有效。 如果區塊正以動態實例名稱註冊,WMI 會忽略 InstanceNameList

DUMMYUNIONNAME.BaseNameOffset

指出 WMIREGINFO 結構開頭的位元組位移,此結構包含此 WMIREGGUID 到單一計數的 Unicode 字串,做為 WMI 的基底,以產生靜態實例名稱。 只有在 Flags 中設定WMIREG_FLAG_INSTANCE_BASENAME時,此成員才有效。 如果區塊正以動態實例名稱註冊,WMI 會忽略 BaseNameOffset

DUMMYUNIONNAME.Pdo

實體裝置物件的指標, (PDO) 傳遞至驅動程式的 AddDevice 例程。 WMI 會使用此 PDO 的裝置實例路徑做為基底,以產生靜態實例名稱。 只有在 Flags 中設定WMIREG_FLAG_INSTANCE_PDO時,此成員才有效。 如果區塊正以動態實例名稱註冊,WMI 會忽略 Pdo

DUMMYUNIONNAME.InstanceInfo

保留供 WMI 使用。

備註

驅動程式會建置一或多個 WMIREGGUID 結構,以回應註冊或更新其區塊 的IRP_MN_REGINFOIRP_MN_REGINFO_EX 要求。 驅動程式會在 WMIREGINFO 結構的 WmiRegGuid 成員上傳遞這類結構的數位,驅動程式會在 IrpStack-Parameters.WMI.Buffer> 寫入緩衝區。

驅動程式可以使用靜態或動態實例名稱來註冊或更新區塊。 靜態實例名稱提供最佳效能;不過,如果實例或實例名稱經常變更,則動態實例名稱是數據區塊的慣用名稱。 如需實例名稱的詳細資訊,請參閱 定義 WMI 實例名稱

規格需求

需求
標頭 wmistr.h (包含 Wmistr.h)

另請參閱

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

WMIREGINFO