StructDefinitionType 複合型
イベントに含める 1 つ以上のデータ項目を含む構造体を定義します。
<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>
子要素
要素 | Type | Description |
---|---|---|
データ | DataDefinitionType | 構造体に含めるデータ項目を定義します。 |
属性
名前 | 型 | 説明 |
---|---|---|
count | CountType | 構造体の配列内の要素の数。 この属性は、構造体が構造体の配列を定義していることを示します。 カウントを含む構造体の外部で、実際のカウントまたはデータ項目の名前を指定できます。 |
length | LengthType | 使用できません。 Windows Server 2008 と Windows Vista: この構造体の長さ (バイト単位)。 Windows 7 以降では使用できません。 |
name | string | 構造体の名前。 テンプレートで UserData セクションを指定する場合は、 という名前を使用して XML フラグメント内のデータ項目を参照できます。 Windows Vista: この属性は省略可能です。 |
解説
プロバイダーは、構造体を BLOB として書き込み、構造体の個々のメンバーとして書き込むわけではありません。 書き込んでいる C 構造体にポインター (LPWSTR 型のポインターなど) が含まれている場合、イベント データには逆参照されたデータではなくポインター値が含まれます。
構造体を使用するのではなく、メンバーごとにデータ項目を定義し、個別に書き込む必要があります。 構造体を使用する場合、構造体には整数型のみを含める必要があり、構造体のメンバーが 8 バイトの境界に揃っていることを確認する必要があります。 そうでない場合は、データにアクセスしようとすると、配置エラーが発生する可能性があります。 #pragma pack() ディレクティブを使用して、8 バイト境界に強制的に配置することを検討してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2008 [デスクトップ アプリのみ] |