EVENT_INSTANCE_HEADER結構 (evntrace.h)
EVENT_INSTANCE_HEADER 結構包含由 TraceEventInstance 所撰寫之所有事件通用的標準事件追蹤資訊。 結構也包含事件追蹤類別和相關父事件的註冊句柄,可用來追蹤相關事件之間的交易實例或階層式關聯性。
語法
typedef struct _EVENT_INSTANCE_HEADER {
USHORT Size;
union {
USHORT FieldTypeFlags;
struct {
UCHAR HeaderType;
UCHAR MarkerFlags;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
union {
ULONG Version;
struct {
UCHAR Type;
UCHAR Level;
USHORT Version;
} Class;
} DUMMYUNIONNAME2;
ULONG ThreadId;
ULONG ProcessId;
LARGE_INTEGER TimeStamp;
ULONGLONG RegHandle;
ULONG InstanceId;
ULONG ParentInstanceId;
union {
struct {
ULONG KernelTime;
ULONG UserTime;
} DUMMYSTRUCTNAME;
ULONG64 ProcessorTime;
struct {
ULONG EventId;
ULONG Flags;
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME3;
ULONGLONG ParentRegHandle;
} EVENT_INSTANCE_HEADER, *PEVENT_INSTANCE_HEADER;
成員
Size
事件的位元組總數。 Size 必須包含 EVENT_INSTANCE_HEADER 結構的大小,加上附加至此結構之任何事件特定數據的大小。 大小必須小於事件追蹤會話緩衝區的大小減去 72 (0x48) 。
DUMMYUNIONNAME
各種結構和成員的聯集。
DUMMYUNIONNAME.FieldTypeFlags
保留的。
DUMMYUNIONNAME.DUMMYSTRUCTNAME
保留的。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType
保留的。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags
保留的。
DUMMYUNIONNAME2
類別的聯集,以兩種形式表示。
DUMMYUNIONNAME2.Version
這是 Class 成員的匯總。 低序位元組包含 Type、下一個字節包含 Level,最後兩個字節包含版本。
DUMMYUNIONNAME2.Class
類別結構。
DUMMYUNIONNAME2.Class.Type
事件類別。 提供者可以定義自己的事件類型,或使用下表所列的預先定義事件類型。
EVENT_TRACE_TYPE_CHECKPOINT
Checkpoint 事件。 用於不在活動開頭或結尾的事件。
EVENT_TRACE_TYPE_DC_END
數據收集結束事件。
EVENT_TRACE_TYPE_DC_START
數據收集開始事件。
EVENT_TRACE_TYPE_DEQUEUE
Dequeue 事件。 活動在開始之前排入佇列時使用。 使用EVENT_TRACE_TYPE_START標記工作專案排入佇列的時間。 使用清除佇列事件類型來標記專案實際開始工作時的時間。 使用EVENT_TRACE_TYPE_END來標記專案完成工作時的時間。
EVENT_TRACE_TYPE_END
結束事件。 使用 來追蹤多步驟事件的最終狀態。
EVENT_TRACE_TYPE_EXTENSION
擴充事件。 用於屬於上一個事件接續的事件。 例如,當事件追蹤記錄的數據超過會話緩衝區可以容納的數據時,請使用擴充事件類型。
EVENT_TRACE_TYPE_INFO
資訊事件。 這是預設事件類型。
EVENT_TRACE_TYPE_REPLY
回復事件。 當要求資源的應用程式可以接收多個回應時使用。 例如,如果用戶端應用程式要求 URL,而 Web 伺服器會藉由傳送數個檔案來回復,則收到的每個檔案都可以標示為回復事件。
EVENT_TRACE_TYPE_START
啟動事件。 使用 來追蹤多步驟事件的初始狀態。
如果您的事件追蹤類別 GUID 支援多個事件類型,取用者會使用事件類型來判斷事件以及如何解譯其內容。
DUMMYUNIONNAME2.Class.Level
提供者定義的值,定義用來產生事件的嚴重性層級。 值的範圍從 0 到 255。 控制器會在呼叫 EnableTraceEx2 函式時指定嚴重性層級。 提供者會從其 ControlCallback 實作呼叫 GetTraceEnableLevel 函式,以擷取嚴重性層級。 提供者會使用 值來設定這個成員。
ETW 定義下列嚴重性層級。 選取高於 1 的層級也會包含較低層級的事件。 例如,如果控制器指定TRACE_LEVEL_WARNING (3) ,提供者也會產生TRACE_LEVEL_FATAL (1) ,TRACE_LEVEL_ERROR (2) 事件。
值 | 意義 |
---|---|
TRACE_LEVEL_CRITICAL (1) | 異常結束或終止事件 |
TRACE_LEVEL_ERROR (2) | 嚴重錯誤事件 |
TRACE_LEVEL_WARNING (3) | 警告事件,例如配置失敗 |
TRACE_LEVEL_INFORMATION (4) | 非錯誤事件,例如進入或結束事件 |
TRACE_LEVEL_VERBOSE (5) | 詳細的追蹤事件 |
DUMMYUNIONNAME2.Class.Version
指出您用來記錄事件的事件追蹤類別版本。 如果事件追蹤類別只有一個版本,請指定零。 版本會告知取用者要用來譯碼事件數據的MOF類別。
ThreadId
在輸出中,識別產生事件的線程。
請注意,在 Windows 2000 上, ThreadId 是 ULONGLONG 值。
ProcessId
在輸出中,識別產生事件的進程。
Windows 2000: 不支援此成員。
TimeStamp
在輸出中,包含事件發生的時間,以100奈秒間隔為單位,自1601年1月1日午夜起。
RegHandle
已註冊事件追蹤類別的句柄。 在呼叫 TraceEventInstance 函式之前設定此屬性。
RegisterTraceGuids 函式會建立此句柄 (請參閱 TraceGuidReg 參數) 。
InstanceId
在輸出中,包含與 RegHandle 相關聯的事件追蹤實例識別碼。
ParentInstanceId
在輸出中,包含與 ParentRegHandle 相關聯的事件追蹤實例識別碼。
DUMMYUNIONNAME3
結構與成員的聯集。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
結構,包含下列成員。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.KernelTime
核心模式指令的經過運行時間,以 CPU 刻度為單位。 如果您使用私人會話,請改用 ProcessorTime 成員中的值。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.UserTime
在 CPU 刻度中,使用者模式指示的經過運行時間。 如果您使用私人會話,請改用 ProcessorTime 成員中的值。
DUMMYUNIONNAME3.ProcessorTime
針對私人會話,CPU 刻度表示使用者模式指示的經過運行時間。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME2
結構與成員的聯集。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.EventId
事件識別項。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.Flags
必須包含 WNODE_FLAG_TRACED_GUID,也可能包含下列任何組合。
WNODE_FLAG_USE_GUID_PTR
指定 GuidPtr 成員是否包含類別 GUID。
WNODE_FLAG_USE_MOF_PTR
指定 MOF_FIELD 結構的數位是否包含附加至這個 結構的事件數據。 陣列中的元素數目限制為 MAX_MOF_FIELDS。
ParentRegHandle
父事件的已註冊事件追蹤類別的句柄。 如果您想要追蹤 (相關事件之間的父元素/子元素) 階層式關聯性,請在呼叫 TraceEventInstance 函式之前設定此屬性。
RegisterTraceGuids 函式會建立此句柄 (請參閱 TraceGuidReg 參數) 。
備註
設定任何成員之前,請務必將此結構的記憶體初始化為零。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
標頭 | evntrace.h |