ホーム › System.Diagnostics.Etw › EVENT_PROPERTY_INFO
EVENT_PROPERTY_INFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Flags | PROPERTY_FLAGS | 4 | +0 | +0 | プロパティが構造体または配列に含まれているかどうかを示すフラグです。指定できる値については、PROPERTY_FLAGS 列挙型を参照してください。 |
| NameOffset | DWORD | 4 | +4 | +4 | プロパティの名前を含む null 終端の Unicode 文字列へのオフセットです。これがイベントのプロパティの場合、オフセットは TRACE_EVENT_INFO 構造体の先頭からの値です。これがフィルターのプロパティの場合、オフセットは PROVIDER_FILTER_INFO 構造体の先頭からの値です。 |
| Anonymous1 | _Anonymous1_e__Union | 8/4 | +8 | +8 | InTypeまたは構造体メンバ情報を含む共用体。 |
| Anonymous2 | _Anonymous2_e__Union | 2 | +16 | +12 | OutTypeまたはMapNameOffset/カスタムスキーマを含む共用体。 |
| Anonymous3 | _Anonymous3_e__Union | 2 | +18 | +14 | 要素数(count)を直接値またはプロパティ参照で示す共用体。 |
| Anonymous4 | _Anonymous4_e__Union | 8/4 | +24 | +16 | 長さ(length)を直接値またはプロパティ参照で示す共用体。 |
共用体: _Anonymous1_e__Union x64 8B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| nonStructType | _nonStructType | 8/4 | +0 | +0 | Flags の PropertyStruct フラグが設定されていない場合は、これらのメンバーを使用します。設定されている場合は structType メンバーを使用します。 |
| structType | _structType | 8/4 | +0 | +0 | Flags の PropertyStruct フラグが設定されている場合は、これらのメンバーを使用します。設定されていない場合は nonStructType メンバーを使用します。 |
| customSchemaType | _customSchemaType | 8/4 | +0 | +0 | Flags の PropertyHasCustomSchema フラグが設定されている場合は、これらのメンバーを使用します。設定されていない場合は nonStructType メンバーを使用します。 |
共用体: _Anonymous2_e__Union x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| count | WORD | 2 | +0 | +0 | 配列内の要素数です。配列として定義されていないプロパティの場合、この値は 1 になります。 |
| countPropertyIndex | WORD | 2 | +0 | +0 | 配列内の要素数を含む、プロパティ配列の要素への 0 から始まるインデックスです。Flags の PropertyParamCount フラグが設定されている場合はこのメンバーを使用し、設定されていない場合は count メンバーを使用します。 |
共用体: _Anonymous3_e__Union x64 2B / x86 2B
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| length | WORD | 2 | +0 | +0 | プロパティのサイズ (バイト単位) です。文字列やバイナリデータなどの可変長の型では、実際の長さを明示する length 属性がプロパティに指定されていない限り、長さは 0 になります。構造体の長さは 0 です。 |
| lengthPropertyIndex | WORD | 2 | +0 | +0 | このプロパティのサイズの値を含む、プロパティ配列の要素への 0 から始まるインデックスです。Flags の PropertyParamLength フラグが設定されている場合はこのメンバーを使用し、設定されていない場合は length メンバーを使用します。 |
共用体: _Anonymous4_e__Union x64 8B / x86 4B
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Reserved | DWORD | 4 | +0 | +0 | 予約済みです。 |
| Anonymous | _Anonymous_e__Struct | 8/4 | +0 | +0 |
公式ドキュメント
イベントまたはフィルターの単一のプロパティに関する情報を提供します。
解説(Remarks)
フィルターはマップ、構造体、配列をサポートしません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// EVENT_PROPERTY_INFO (x64 32 / x86 20 バイト)
typedef struct EVENT_PROPERTY_INFO {
PROPERTY_FLAGS Flags;
DWORD NameOffset;
_Anonymous1_e__Union Anonymous1;
_Anonymous2_e__Union Anonymous2;
_Anonymous3_e__Union Anonymous3;
_Anonymous4_e__Union Anonymous4;
} EVENT_PROPERTY_INFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct EVENT_PROPERTY_INFO
{
public int Flags;
public uint NameOffset;
public _Anonymous1_e__Union Anonymous1;
public _Anonymous2_e__Union Anonymous2;
public _Anonymous3_e__Union Anonymous3;
public _Anonymous4_e__Union Anonymous4;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure EVENT_PROPERTY_INFO
Public Flags As Integer
Public NameOffset As UInteger
Public Anonymous1 As _Anonymous1_e__Union
Public Anonymous2 As _Anonymous2_e__Union
Public Anonymous3 As _Anonymous3_e__Union
Public Anonymous4 As _Anonymous4_e__Union
End Structureimport ctypes
from ctypes import wintypes
class EVENT_PROPERTY_INFO(ctypes.Structure):
_fields_ = [
("Flags", ctypes.c_int),
("NameOffset", wintypes.DWORD),
("Anonymous1", _Anonymous1_e__Union),
("Anonymous2", _Anonymous2_e__Union),
("Anonymous3", _Anonymous3_e__Union),
("Anonymous4", _Anonymous4_e__Union),
]#[repr(C)]
pub struct EVENT_PROPERTY_INFO {
pub Flags: i32,
pub NameOffset: u32,
pub Anonymous1: _Anonymous1_e__Union,
pub Anonymous2: _Anonymous2_e__Union,
pub Anonymous3: _Anonymous3_e__Union,
pub Anonymous4: _Anonymous4_e__Union,
}import "golang.org/x/sys/windows"
type EVENT_PROPERTY_INFO struct {
Flags int32
NameOffset uint32
Anonymous1 _Anonymous1_e__Union
Anonymous2 _Anonymous2_e__Union
Anonymous3 _Anonymous3_e__Union
Anonymous4 _Anonymous4_e__Union
}type
EVENT_PROPERTY_INFO = record
Flags: Integer;
NameOffset: DWORD;
Anonymous1: _Anonymous1_e__Union;
Anonymous2: _Anonymous2_e__Union;
Anonymous3: _Anonymous3_e__Union;
Anonymous4: _Anonymous4_e__Union;
end;const EVENT_PROPERTY_INFO = extern struct {
Flags: i32,
NameOffset: u32,
Anonymous1: _Anonymous1_e__Union,
Anonymous2: _Anonymous2_e__Union,
Anonymous3: _Anonymous3_e__Union,
Anonymous4: _Anonymous4_e__Union,
};type
EVENT_PROPERTY_INFO {.bycopy.} = object
Flags: int32
NameOffset: uint32
Anonymous1: _Anonymous1_e__Union
Anonymous2: _Anonymous2_e__Union
Anonymous3: _Anonymous3_e__Union
Anonymous4: _Anonymous4_e__Unionstruct EVENT_PROPERTY_INFO
{
int Flags;
uint NameOffset;
_Anonymous1_e__Union Anonymous1;
_Anonymous2_e__Union Anonymous2;
_Anonymous3_e__Union Anonymous3;
_Anonymous4_e__Union Anonymous4;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; EVENT_PROPERTY_INFO サイズ: 20 バイト(x86)
dim st, 5 ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; Flags : PROPERTY_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; NameOffset : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; Anonymous1 : _Anonymous1_e__Union (+8, 4byte) varptr(st)+8 を基点に操作(4byte:入れ子/配列)
; Anonymous2 : _Anonymous2_e__Union (+12, 2byte) varptr(st)+12 を基点に操作(2byte:入れ子/配列)
; Anonymous3 : _Anonymous3_e__Union (+14, 2byte) varptr(st)+14 を基点に操作(2byte:入れ子/配列)
; Anonymous4 : _Anonymous4_e__Union (+16, 4byte) varptr(st)+16 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; EVENT_PROPERTY_INFO サイズ: 32 バイト(x64)
dim st, 8 ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; Flags : PROPERTY_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; NameOffset : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; Anonymous1 : _Anonymous1_e__Union (+8, 8byte) varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; Anonymous2 : _Anonymous2_e__Union (+16, 2byte) varptr(st)+16 を基点に操作(2byte:入れ子/配列)
; Anonymous3 : _Anonymous3_e__Union (+18, 2byte) varptr(st)+18 を基点に操作(2byte:入れ子/配列)
; Anonymous4 : _Anonymous4_e__Union (+24, 8byte) varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global EVENT_PROPERTY_INFO
#field int Flags
#field int NameOffset
#field byte Anonymous1 8
#field byte Anonymous2 2
#field byte Anonymous3 2
#field byte Anonymous4 8
#endstruct
stdim st, EVENT_PROPERTY_INFO ; NSTRUCT 変数を確保
st->Flags = 100
mes "Flags=" + st->Flags
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。