StructDefinitionType Complex Type

Defines a structure that includes one or more data items that you want to include with the event.

<xs:complexType name="StructDefinitionType"
    mixed="true"
>
    <xs:sequence>
        <xs:element name="data"
            type="DataDefinitionType"
            maxOccurs="unbounded"
         />
    </xs:sequence>
    <xs:attribute name="name"
        type="string"
        use="required"
     />
    <xs:attribute name="length"
        type="LengthType"
        use="optional"
     />
    <xs:attribute name="count"
        type="CountType"
        use="optional"
     />
    <xs:anyAttribute
        processContents="lax"
        namespace="##other"
     />
</xs:complexType>

Child elements

Element Type Description
data DataDefinitionType Defines a data item that you want to include in the structure.

Attributes

Name Type Description
count CountType The number of elements in an array of structures. This attribute indicates that the structure is defining an array of structures. You can specify the actual count or the name of a data item outside of the structure that contains the count.
length LengthType Not available.
Windows Server 2008 and Windows Vista: The length of this structure, in bytes. Not available starting with Windows 7.
name string The name to the structure. You can use the name to reference the data item in your XML fragment if you specify a UserData section in your template.
Windows Vista: This attribute is optional.

Remarks

Providers write the structure as a blob and not as individual members of the structure. If the C structure that you are writing contains pointers (for example, a pointer of type LPWSTR), the event data will contain the pointer value, not the dereferenced data.

You should not use structures but instead should define data items for each member and write them separately. If you decide to use structure, the structure should contain only integral types and you must ensure that the members of the structure align to an 8-byte boundary. If you do not, you will likely receive alignment errors when you try to access the data. Consider using the #pragma pack() directive to force alignment on an 8-byte boundary.

Requirements

Requirement Value
Minimum supported client
Windows Vista [desktop apps only]
Minimum supported server
Windows Server 2008 [desktop apps only]