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 結構之後,於靜態清單中提供此區塊的靜態實例名稱。 如果設定此旗標, InstanceNameList 是 WMIREGINFO 結構開頭的位元組位移,其中包含此 WMIREGGUID 到連續的 InstanceCount 計數 Unicode 字元串序列。
WMIREG_FLAG_INSTANCE_BASENAME
要求 WMI 從驅動程式在 IrpStack-Parameters.WMI.Buffer> 緩衝區中的 WMIREGINFO 結構之後所提供的基底名稱產生靜態實例名稱。 WMI 會將計數器附加至基底名稱,以產生實例名稱。 如果設定此旗標, BaseNameOffset 是 WMIREGINFO 結構開頭的位元組位移,其中包含此 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_REGINFO 或 IRP_MN_REGINFO_EX 要求。 驅動程式會在 WMIREGINFO 結構的 WmiRegGuid 成員上傳遞這類結構的數位,驅動程式會在 IrpStack-Parameters.WMI.Buffer> 寫入緩衝區。
驅動程式可以使用靜態或動態實例名稱來註冊或更新區塊。 靜態實例名稱提供最佳效能;不過,如果實例或實例名稱經常變更,則動態實例名稱是數據區塊的慣用名稱。 如需實例名稱的詳細資訊,請參閱 定義 WMI 實例名稱。
規格需求
需求 | 值 |
---|---|
標頭 | wmistr.h (包含 Wmistr.h) |