Previous Next

WNODE_ALL_DATA

The WNODE_ALL_DATA structure contains data for all instances of a data block or event block.

typedef struct tagWNODE_ALL_DATA {
  struct _WNODE_HEADER  WnodeHeader;
  ULONG  DataBlockOffset;
  ULONG  InstanceCount;
  ULONG  OffsetInstanceNameOffsets;
  union {
    ULONG  FixedInstanceSize;
    OFFSETINSTANCEDATAANDLENGTH  OffsetInstanceDataAndLength[];
  };
} WNODE_ALL_DATA, *PWNODE_ALL_DATA;

Members

WnodeHeader
Specifies a WNODE_HEADER structure that contains information common to all WNODE_XXX structures, such as the buffer size, the GUID that represents a data block associated with a request, and flags that provide information about the WNODE_XXX data being passed or returned.
DataBlockOffset
Indicates the offset in bytes from the beginning of the WNODE_ALL_DATA structure to the beginning of data for the first instance.
InstanceCount
Indicates the number of instances whose data follows the fixed members of the WNODE_ALL_DATA in the buffer at IrpStack->Parameters.WMI.Buffer.
OffsetInstanceNameOffsets
Indicates the offset in bytes from the beginning of the WNODE_ALL_DATA to an array of offsets to dynamic instance names. Each instance name must be aligned on a USHORT boundary. If all instances to be returned have static instance names, WMI ignores OffsetInstanceNameOffsets.
FixedInstanceSize
Indicates the size of each instance to be returned if all such instances are the same size. This member is valid only if the driver sets WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags.
OffsetInstanceDataAndLength
If instances to be returned vary in size, OffsetInstanceDataAndLength is an array of InstanceCount OFFSETINSTANCEDATAANDLENGTH structures that specify the offset in bytes from the beginning of the WNODE_ALL_DATA to the beginning of each instance and its length. OFFSETINSTANCEDATAANDLENGTH is defined as follows:
typedef struct {
    ULONG OffsetInstanceData;
    ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH
OffsetInstanceData
Indicates the offset in bytes from the beginning of the WNODE_ALL_DATA to the instance data.
LengthInstanceData
Indicates the length in bytes of the instance data.

Each instance must be aligned on a USHORT boundary. The OffsetInstanceDataAndLength member is valid only if the driver clears WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags.

Headers

Defined in wmistr.h. Include wmistr.h.

Comments

A driver fills in a WNODE_ALL_DATA structure in response to an IRP_MN_QUERY_ALL_DATA request. A driver might also generate a WNODE_ALL_DATA as an event.

After filling in the fixed members of the structure, a driver writes instance data and dynamic instance names (if any) at DataBlockOffset and OffsetInstanceNameOffsets, respectively, in the buffer at IrpStack->Parameters.WMI.Buffer. If WNODE_FLAG_FIXED_INSTANCE_SIZE is clear, the first offset follows the last element of the OffsetInstanceDataAndLength array, plus padding so the data begins on an 8-byte boundary.

Instance names must be USHORT aligned. Instance data must be QUADWORD aligned.

See Also

IRP_MN_QUERY_ALL_DATA, WNODE_EVENT_ITEM, WNODE_HEADER