DataDefinitionType 复杂类型

定义要与事件一起包含的数据项。

<xs:complexType name="DataDefinitionType"
    mixed="true"
>
    <xs:simpleContent>
        <xs:extension
            base="string"
        >
            <xs:attribute name="name"
                type="string"
                use="required"
             />
            <xs:attribute name="inType"
                type="QName"
                use="required"
             />
            <xs:attribute name="outType"
                type="QName"
                use="optional"
             />
            <xs:attribute name="map"
                type="string"
                use="optional"
             />
            <xs:attribute name="length"
                type="LengthType"
                use="optional"
             />
            <xs:attribute name="count"
                type="CountType"
                use="optional"
             />
            <xs:anyAttribute
                processContents="lax"
                namespace="##other"
             />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

属性

名称 类型 说明
count CountType 如果数据项是数组,则数组中的元素数。 可以指定包含该计数的其他数据项的实际计数或名称。
inType QName 此数据项的数据类型。 有关预定义输入数据类型的列表,请参阅 InputType 复杂类型。
length LengthType 可变长度数据项(如二进制 Blob)的长度。 对于二进制数据,请指定长度(以字节为单位),对于字符串数据,指定长度(以字符为单位)。 可以指定实际长度或包含该长度的另一个数据项的名称。
如果使用 length 属性指定固定长度字符串,则必须将字符串填充到其固定长度,允许在末尾使用 null 终止符字符 (例如,如果长度为 5,则必须将字符串“abc”填充为“abc”。 字符串长度必须包含 null 终止符字符。
映射 字符串 用于将整数值映射到字符串的名称/值映射的名称。 数据项的数据类型必须是以下类型之一:
  • win:UInt8
  • win:UInt16
  • win:UInt32
name 字符串 数据项的名称。 如果在模板中指定 UserData 节,则可以使用该名称在 XML 片段中引用此数据项。 如果此数据项包含其长度或计数值,还可以在另一个数据项的 length 或 count 属性中引用此名称。
Windows Vista: 此属性是可选的。
outType QName 呈现此数据项时要使用的数据类型。 有关预定义输出数据类型的列表,请参阅 OutputType 复杂类型。
Windows Vista: 忽略输出类型,服务根据输入类型确定类型。

备注

对于可变长度输入类型(如二进制 Blob),必须使用 length 属性显式指定数据的大小。 对于字符串,仅当字符串的长度固定时,才指定 length 属性。

示例

下面是数据项定义的一些示例。

<!-- The data item is an 8-bit integer -->
<data name="binaryChar" inType="win:UInt8">
 
<!-- The data item is a single ANSI character -->
<data name="ansiChar" inType="win:UInt8" outtype="xs:string">
 
<!-- The data item is a single Unicode character -->
<data name="unicodeChar" inType="win:UInt16" outtype="xs:string">
 
<!-- The data item is an IP address that is rendered as a dot separated list of interger values -->
<data name="ipAddress" inType="win:UInt32" outtype="win:IPv4">
 
<!-- The data item is a Boolean value -->
<data name="success" inType="win:boolean">
 
<!-- The data item is a null-terminated ANSI string -->
<data name="string" inType="win:AnsiString"> 

<!-- The data item is a fixed length ANSI string -->
<data name="string" inType="win:AnsiString" length="42"> 
 
<!-- The data item is a fixed length array of null-terminated ANSI strings -->
<data name="strings" inType="win:AnsiString" count="20">
 
<!-- The data item is a fixed length array of fixed length ANSI strings -->
<data name="strings" inType="win:AnsiString" length="42" count="20">
 
<!-- The data item is a variable length array of same sized ANSI strings -->
<data name="stringLength" inType="win:UInt16">
<data name="arrayCount" inType="win:Uint16">
<data name="strings" inType="win:AnsiString" length="stringLength" count="arrayCount"> 
 
<!-- For binary data, you must specify the size.
<!-- The data item is a fixed length array of fixed length binary blobs -->
<data name="blobs" inType="win:Binary" length="42" count="20">

<!-- The data item is a fixed length binary blob -->
<data name="blob" inType="win:Binary" length="42">

<!-- The following are illegal binary data definitions -->
<!-- This definition is illegal because no length is specified -->
<data name="blob" inType="win:Binary"> 
 
<!-- This definition is illegal because you cannot determine the length of each binary blob -->
<data name="blob" inType="win:Binary" count="20"> 
 
<!-- The data item is a variable length array of structures. Each structure -->
<!-- contains an array of same sized ANSI strings --> 
<data name="arrayStructCount" inType="win:UInt16">
<struct name="countedStrings" count="arrayStructCount">
      <data name="stringLength" inType="win:UInt16">
      <data name="string" inType="win:AnsiString" length="stringLength">
</struct>
 
<!-- The data item is a time stamp that is rendered in 100ns units -->
<data name="timestamp" inType="win:UInt32" outType="win:ETWTIME">

<!-- The data item is a fixed length array of integers --> 
<data name="integers" inType="win:UInt32" count="20">

<!-- The data item is a variable length array of integers -->
<data name="arrayCount" inType="win:UInt16"> 
<data name="integers" inType="win:UInt32" count="arrayCount"> 

<!-- The following is illegal because you cannot assign a length value to a data type of a known size -->
<data name="integer" inType="win:UInt32" length="42">

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]