Condividi tramite


struttura WNODE_ALL_DATA (wmistr.h)

La struttura WNODE_ALL_DATA contiene dati per tutte le istanze di un blocco di dati o di un blocco di eventi.

Sintassi

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;

Membri

WnodeHeader

Specifica una struttura WNODE_HEADER che contiene informazioni comuni a tutte le strutture WNODE_XXX, ad esempio le dimensioni del buffer, il GUID che rappresenta un blocco di dati associato a una richiesta e i flag che forniscono informazioni sul WNODE_XXX dati passati o restituiti.

DataBlockOffset

Indica l'offset in byte dall'inizio della struttura WNODE_ALL_DATA all'inizio dei dati per la prima istanza.

InstanceCount

Indica il numero di istanze i cui dati seguono i membri fissi del WNODE_ALL_DATA nel buffer in IrpStack->Parameters.WMI.Buffer.

OffsetInstanceNameOffsets

Indica l'offset in byte dall'inizio del WNODE_ALL_DATA a una matrice di offset ai nomi di istanza dinamici. Ogni nome di istanza deve essere allineato su un limite di USHORT. Se tutte le istanze da restituire hanno nomi di istanza statici, WMI ignora OffsetInstanceNameOffsets.

DUMMYUNIONNAME

DUMMYUNIONNAME.FixedInstanceSize

Indica le dimensioni di ogni istanza da restituire se tutte queste istanze hanno le stesse dimensioni. Questo membro è valido solo se il driver imposta WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags.

DUMMYUNIONNAME.OffsetInstanceDataAndLength

Se le istanze da restituire variano in base alle dimensioni, offsetInstanceDataAndLength è una matrice di InstanceCount strutture offsetINSTANCEDATAANDLENG TH che specificano l'offset in byte dall'inizio del WNODE_ALL_DATA all'inizio di ogni istanza e la relativa lunghezza. OFFSETINSTANCEDATAANDLENGTH è definito come segue:

typedef struct {
  ULONG  OffsetInstanceData;
  ULONG  LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;

Ogni istanza deve essere allineata su un limite di USHORT. Il membro offsetInstanceDataAndLength è valido solo se il driver cancella WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags.

Osservazioni

Un driver compila una struttura WNODE_ALL_DATA in risposta a una richiesta di IRP_MN_QUERY_ALL_DATA. Un driver può anche generare un WNODE_ALL_DATA come evento.

Dopo aver compilato i membri fissi della struttura, un driver scrive rispettivamente i dati dell'istanza e i nomi delle istanze dinamiche (se presenti) in DataBlockOffset e OffsetInstanceNameOffsetsrispettivamente nel buffer in IrpStack->Parameters.WMI.Buffer. Se WNODE_FLAG_FIXED_INSTANCE_SIZE è chiaro, il primo offset segue l'ultimo elemento della matrice OffsetInstanceDataAndLength, più la spaziatura interna in modo che i dati inizino su un limite di 8 byte.

I nomi delle istanze devono essere allineati a USHORT. I dati dell'istanza devono essere allineati a QUADWORD.

Fabbisogno

Requisito Valore
intestazione wmistr.h (include Wmistr.h)

Vedere anche

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER