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)

Consulte también

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER