структура 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
Если возвращаемые экземпляры зависят от размера, OffsetInstanceDataAndLeng th является массивом 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 (include Wmistr.h) |