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) |