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)

Confira também

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER