共用方式為


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 作為事件。

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

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

要求

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

另請參閱

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER