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
如果要傳回的實例大小不同, OffsetInstanceDataAndLength 是 InstanceCount 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> 的緩衝區中,分別在 DataBlockOffset 和 OffsetInstanceNameOffsets 上) 寫入實例數據和動態實例名稱 (。 如果WNODE_FLAG_FIXED_INSTANCE_SIZE清楚,則第一個位移會遵循 OffsetInstanceDataAndLength 陣列的最後一個專案,加上填補,讓數據在 8 位元組界限上開始。
實例名稱必須對齊 USHORT。 實例數據必須對齊 QUADWORD。
規格需求
需求 | 值 |
---|---|
標頭 | wmistr.h (包含 Wmistr.h) |