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