WNODE_ALL_DATA結構 (wmistr.h)

WNODE_ALL_DATA結構包含數據區塊或事件區塊之所有實例的數據。

語法

typedef struct tagWNODE_ALL_DATA {
  struct _WNODE_HEADER WnodeHeader;
  ULONG                DataBlockOffset;
  ULONG                InstanceCount;
  ULONG                OffsetInstanceNameOffsets;
  union {
    ULONG                       FixedInstanceSize;
    OFFSETINSTANCEDATAANDLENGTH OffsetInstanceDataAndLength[];
  } DUMMYUNIONNAME;
} WNODE_ALL_DATA, *PWNODE_ALL_DATA;

成員

WnodeHeader

指定 WNODE_HEADER 結構,其中包含所有 WNODE_XXX 結構通用的資訊,例如緩衝區大小、代表與要求相關聯之數據區塊的 GUID,以及提供所傳遞或傳回 WNODE_XXX 數據相關信息的旗標。

DataBlockOffset

指出從 WNODE_ALL_DATA 結構的開頭到第一個實例數據開頭的位元移。

InstanceCount

指出其數據遵循 IrpStack-Parameters.WMI.Buffer> 之緩衝區中WNODE_ALL_DATA固定成員的實例數目。

OffsetInstanceNameOffsets

指出從 WNODE_ALL_DATA 開頭到動態實例名稱之位移陣列的位元組位移。 每個實例名稱都必須對齊 USHORT 界限。 如果要傳回的所有實例都有靜態實例名稱,WMI 會忽略 OffsetInstanceNameOffsets

DUMMYUNIONNAME

DUMMYUNIONNAME.FixedInstanceSize

指出如果所有這類實例的大小都相同,則表示要傳回的每個實例大小。 只有當驅動程式在 WnodeHeader.Flags 中設定WNODE_FLAG_FIXED_INSTANCE_SIZE時,此成員才有效。

DUMMYUNIONNAME.OffsetInstanceDataAndLength

如果要傳回的實例大小不同, OffsetInstanceDataAndLengthInstanceCount OFFSETINSTANCEDATAANDLENGTH 結構的陣列,以位元組為單位指定從 WNODE_ALL_DATA 開頭到每個實例的開頭及其長度的位移。 OFFSETINSTANCEDATAANDLENGTH 的定義如下:

typedef struct {
  ULONG  OffsetInstanceData;
  ULONG  LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;

每個實例都必須對齊 USHORT 界限。 只有在驅動程式清除 WnodeHeader.Flags 中的WNODE_FLAG_FIXED_INSTANCE_SIZE時,OffsetInstanceDataAndLength 成員才有效。

備註

驅動程式會填入 WNODE_ALL_DATA 結構,以回應 IRP_MN_QUERY_ALL_DATA 要求。 驅動程式也可能產生 WNODE_ALL_DATA 做為事件。

填入結構的固定成員之後,驅動程式會在 IrpStack-Parameters.WMI.Buffer> 的緩衝區中,分別在 DataBlockOffsetOffsetInstanceNameOffsets 上) 寫入實例數據和動態實例名稱 (。 如果WNODE_FLAG_FIXED_INSTANCE_SIZE清楚,則第一個位移會遵循 OffsetInstanceDataAndLength 陣列的最後一個專案,加上填補,讓數據在 8 位元組界限上開始。

實例名稱必須對齊 USHORT。 實例數據必須對齊 QUADWORD。

規格需求

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

另請參閱

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER