estructura WNODE_ALL_DATA (wmistr.h)
La estructura WNODE_ALL_DATA contiene datos para todas las instancias de un bloque de datos o bloque de eventos.
Sintaxis
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;
Miembros
WnodeHeader
Especifica una estructura de WNODE_HEADER que contiene información común a todas las estructuras WNODE_XXX , como el tamaño del búfer, el GUID que representa un bloque de datos asociado a una solicitud y marcas que proporcionan información sobre los datos WNODE_XXX que se pasan o devuelven.
DataBlockOffset
Indica el desplazamiento en bytes desde el principio de la estructura de WNODE_ALL_DATA hasta el principio de los datos de la primera instancia.
InstanceCount
Indica el número de instancias cuyos datos siguen a los miembros fijos del WNODE_ALL_DATA en el búfer en IrpStack-Parameters.WMI.Buffer>.
OffsetInstanceNameOffsets
Indica el desplazamiento en bytes desde el principio del WNODE_ALL_DATA a una matriz de desplazamientos a nombres de instancia dinámicos. Cada nombre de instancia debe alinearse en un límite de USHORT. Si todas las instancias que se van a devolver tienen nombres de instancia estáticos, WMI omite OffsetInstanceNameOffsets.
DUMMYUNIONNAME
DUMMYUNIONNAME.FixedInstanceSize
Indica el tamaño de cada instancia que se va a devolver si todas estas instancias tienen el mismo tamaño. Este miembro solo es válido si el controlador establece WNODE_FLAG_FIXED_INSTANCE_SIZE en WnodeHeader.Flags.
DUMMYUNIONNAME.OffsetInstanceDataAndLength
Si las instancias que se van a devolver varían en tamaño, OffsetInstanceDataAndLength es una matriz de estructuras InstanceCount OFFSETINSTANCEDATAANDLENGTH que especifican el desplazamiento en bytes desde el principio del WNODE_ALL_DATA hasta el principio de cada instancia y su longitud. OFFSETINSTANCEDATAANDLENGTH se define de la siguiente manera:
typedef struct {
ULONG OffsetInstanceData;
ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;
Cada instancia debe estar alineada en un límite de USHORT. El miembro OffsetInstanceDataAndLength solo es válido si el controlador borra WNODE_FLAG_FIXED_INSTANCE_SIZE en WnodeHeader.Flags.
Comentarios
Un controlador rellena una estructura de WNODE_ALL_DATA en respuesta a una solicitud de IRP_MN_QUERY_ALL_DATA . Un controlador también puede generar un WNODE_ALL_DATA como evento.
Después de rellenar los miembros fijos de la estructura, un controlador escribe los datos de instancia y los nombres de instancia dinámicos (si los hay) en DataBlockOffset y OffsetInstanceNameOffsets, respectivamente, en el búfer en IrpStack-Parameters.WMI.Buffer>. Si WNODE_FLAG_FIXED_INSTANCE_SIZE está claro, el primer desplazamiento sigue el último elemento de la matriz OffsetInstanceDataAndLength , más relleno para que los datos comiencen en un límite de 8 bytes.
Los nombres de instancia deben estar alineados con USHORT. Los datos de instancia deben estar alineados con QUADWORD.
Requisitos
Requisito | Valor |
---|---|
Header | wmistr.h (incluye Wmistr.h) |