共用方式為


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_REGINFOIRP_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_REGINFOIRP_MN_REGINFO_EX 要求。 驅動程式會將這類結構的數位傳遞至 WMIREGINFO 結構的 WmiRegGuid 成員,驅動程式會在 IrpStack->Parameters.WMI.Buffer 寫入緩衝區。

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

要求

要求 價值
標頭 wmistr.h (包括 Wmistr.h)

另請參閱

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

WMIREGINFO