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 是從包含這個 WMIREGGUID 連續 InstanceCount 計算 Unicode 字串之 WMIREGINFO 結構的位元組位移。
WMIREG_FLAG_INSTANCE_BASENAME
在 IrpStack->Parameters.WMI.Buffer 之後,要求 WMI 從驅動程式所提供的基底名稱產生靜態實例名稱,WMIREGINFO結構。 WMI 會將計數器附加至基底名稱,藉以產生實例名稱。 如果已設定此旗標,BaseNameOffset 是包含此 WMIREGGUID 單一計數 Unicode 字元串,以位元組為單位從 WMIREGINFO 結構開始的位移。
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 或 IRP_MN_REGINFO_EX參數.WMI.DataPath 設定為 WMIUPDATE)。
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
表示從包含此 WMIREGGUI D 結構 WMIREGINFO 開頭到連續 InstanceCount 計算 Unicode 字元串數列的位元組位移。 只有在 Flags中設定WMIREG_FLAG_INSTANCE_LIST時,這個成員才有效。 如果區塊正向動態實體名稱註冊,WMI 會忽略 InstanceNameList。
DUMMYUNIONNAME.BaseNameOffset
會指出從 WMIREGINFO 開頭的位移 結構,其中包含此 WMIREGGUID 為單一計數的 Unicode 字元串,做為 WMI 產生靜態實例名稱的基底。 只有在 Flags中設定WMIREG_FLAG_INSTANCE_BASENAME時,這個成員才有效。 如果區塊正向動態實體名稱註冊,則 WMI 會忽略 BaseNameOffset。
DUMMYUNIONNAME.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) |