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 WNODE_HEADER que contém informações comuns a todas as estruturas WNODE_XXX , 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 os dados WNODE_XXX que estão sendo passados ou retornados.
DataBlockOffset
Indica o deslocamento em bytes desde o início da estrutura 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 IrpStack-Parameters.WMI.Buffer>.
OffsetInstanceNameOffsets
Indica o deslocamento em bytes do início do WNODE_ALL_DATA para uma matriz de deslocamentos para nomes de instância dinâmica. Cada nome de instância deve ser alinhado em um limite do 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 será uma matriz de estruturas OFFSETINSTANCEDATAANDLENGTHde InstanceCount 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 do USHORT. O membro OffsetInstanceDataAndLength só será válido se o driver limpar WNODE_FLAG_FIXED_INSTANCE_SIZE em WnodeHeader.Flags.
Comentários
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 de 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 ser alinhados quadword.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | wmistr.h (inclua Wmistr.h) |