Поделиться через


структура 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

Указывает количество экземпляров, данные которых следуют за фиксированными элементами WNODE_ALL_DATA в буфере irpStack-Parameters.WMI.Buffer>.

OffsetInstanceNameOffsets

Указывает смещение в байтах от начала WNODE_ALL_DATA до массива смещения динамических имен экземпляров. Каждое имя экземпляра должно быть выровнено по границе USHORT. Если все возвращаемые экземпляры имеют статические имена экземпляров, WMI игнорирует OffsetInstanceNameOffsets.

DUMMYUNIONNAME

DUMMYUNIONNAME.FixedInstanceSize

Указывает размер каждого возвращаемого экземпляра, если все такие экземпляры имеют одинаковый размер. Этот член действителен, только если драйвер задает WNODE_FLAG_FIXED_INSTANCE_SIZE в WnodeHeader.Flags.

DUMMYUNIONNAME.OffsetInstanceDataAndLength

Если возвращаемые экземпляры различаются по размеру, OffsetInstanceDataAndLength представляет собой массив структур InstanceCount OFFSETINSTANCEDATAANDLENGTH , определяющих смещение в байтах от начала WNODE_ALL_DATA до начала каждого экземпляра и его длину. OFFSETINSTANCEDATAANDLENGTH определяется следующим образом:

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

Каждый экземпляр должен быть выровнен по границе USHORT. Член OffsetInstanceDataAndLength действителен, только если драйвер очищает WNODE_FLAG_FIXED_INSTANCE_SIZE в WnodeHeader.Flags.

Комментарии

Драйвер заполняет структуру WNODE_ALL_DATA в ответ на запрос IRP_MN_QUERY_ALL_DATA . Драйвер также может создать WNODE_ALL_DATA в качестве события.

После заполнения фиксированных элементов структуры драйвер записывает данные экземпляра и динамические имена экземпляров (если таковые есть) в DataBlockOffset и OffsetInstanceNameOffsets соответственно в буфер 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