estrutura WNODE_ALL_DATA (wmistr.h)
A estrutura WNODE_ALL_DATA contém dados para todas as instâncias de um bloco de dados ou bloco de eventos.
Sintaxe
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;
Membros
WnodeHeader
Especifica uma estrutura de WNODE_HEADER que contém informações comuns a todas as estruturas deXXX WNODE_, como o tamanho do buffer, o GUID que representa um bloco de dados associado a uma solicitação e sinalizadores que fornecem informações sobre o WNODE_XXX dados que estão sendo passados ou retornados.
DataBlockOffset
Indica o deslocamento em bytes desde o início da estrutura de WNODE_ALL_DATA até o início dos dados da primeira instância.
InstanceCount
Indica o número de instâncias cujos dados seguem os membros fixos do WNODE_ALL_DATA no buffer em >Parameters.WMI.Buffer.
OffsetInstanceNameOffsets
Indica o deslocamento em bytes desde o início do WNODE_ALL_DATA até uma matriz de deslocamentos para nomes de instância dinâmica. Cada nome de instância deve ser alinhado em um limite USHORT. Se todas as instâncias a serem retornadas tiverem nomes de instância estática, o WMI ignorará OffsetInstanceNameOffsets.
DUMMYUNIONNAME
DUMMYUNIONNAME.FixedInstanceSize
Indica o tamanho de cada instância a ser retornada se todas essas instâncias tiverem o mesmo tamanho. Esse membro só será válido se o driver definir WNODE_FLAG_FIXED_INSTANCE_SIZE em WnodeHeader.Flags.
DUMMYUNIONNAME.OffsetInstanceDataAndLength
Se as instâncias a serem retornadas variarem de tamanho, OffsetInstanceDataAndLength é uma matriz de estruturas InstanceCount OFFSETINSTANCEDATAANDLENGTH que especificam o deslocamento em bytes desde o início do WNODE_ALL_DATA até o início de cada instância e seu comprimento. OFFSETINSTANCEDATAANDLENGTH é definido da seguinte maneira:
typedef struct {
ULONG OffsetInstanceData;
ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;
Cada instância deve ser alinhada em um limite USHORT. O membro OffsetInstanceDataAndLength é válido somente se o driver limpar WNODE_FLAG_FIXED_INSTANCE_SIZE em WnodeHeader.Flags.
Observações
Um driver preenche uma estrutura WNODE_ALL_DATA em resposta a uma solicitação de IRP_MN_QUERY_ALL_DATA. Um driver também pode gerar um WNODE_ALL_DATA como um evento.
Depois de preencher os membros fixos da estrutura, um driver grava dados de instância e nomes de instância dinâmica (se houver) em dataBlockOffset e OffsetInstanceNameOffsets, respectivamente, no buffer em IrpStack->Parameters.WMI.Buffer. Se WNODE_FLAG_FIXED_INSTANCE_SIZE estiver claro, o primeiro deslocamento seguirá o último elemento da matriz OffsetInstanceDataAndLength, além do preenchimento para que os dados comecem em um limite de 8 bytes.
Os nomes de instância devem estar alinhados ao USHORT. Os dados da instância devem estar alinhados ao QUADWORD.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | wmistr.h (inclua Wmistr.h) |