EVENT_HEADER結構 (evntcons.h)

定義事件的相關信息。

語法

typedef struct _EVENT_HEADER {
  USHORT           Size;
  USHORT           HeaderType;
  USHORT           Flags;
  USHORT           EventProperty;
  ULONG            ThreadId;
  ULONG            ProcessId;
  LARGE_INTEGER    TimeStamp;
  GUID             ProviderId;
  EVENT_DESCRIPTOR EventDescriptor;
  union {
    struct {
      ULONG KernelTime;
      ULONG UserTime;
    } DUMMYSTRUCTNAME;
    ULONG64 ProcessorTime;
  } DUMMYUNIONNAME;
  GUID             ActivityId;
} EVENT_HEADER, *PEVENT_HEADER;

成員

Size

事件記錄的大小,以位元組為單位。

HeaderType

保留的。

Flags

旗標,提供事件的相關信息,例如記錄的會話類型,以及事件是否包含擴充數據。 此成員可以包含下列一或多個旗標。

意義
EVENT_HEADER_FLAG_EXTENDED_INFO
EVENT_RECORDExtendedData 成員包含數據。
EVENT_HEADER_FLAG_PRIVATE_SESSION
事件已記錄至私人會話。 使用 ProcessorTime 進行經過的運行時間。
EVENT_HEADER_FLAG_STRING_ONLY
事件數據是 Null 終止的 Unicode 字串。 您不需要指令清單來剖析 EVENT_RECORDUserData 成員。
EVENT_HEADER_FLAG_TRACE_MESSAGE
提供者使用 TraceMessageTraceMessageVa 來記錄事件。 大部分的提供者不會使用這些函式來寫入事件,因此此旗標通常表示事件是由 Windows 軟體追蹤預處理器 所撰寫, (WPP) 。
EVENT_HEADER_FLAG_NO_CPUTIME
使用 ProcessorTime 進行經過的運行時間。
EVENT_HEADER_FLAG_32_BIT_HEADER
指出提供者是在 32 位電腦上或在 WOW64 工作階段中執行。
EVENT_HEADER_FLAG_64_BIT_HEADER
指出提供者是在64位電腦上執行。
EVENT_HEADER_FLAG_CLASSIC_HEADER
指出提供者使用 TraceEvent 來記錄事件。

EventProperty

指出用來剖析事件數據的來源。

意義
EVENT_HEADER_PROPERTY_XML
表示您需要指令清單來剖析事件數據。
EVENT_HEADER_PROPERTY_FORWARDED_XML
表示事件數據本身包含數據的完整轉譯 XML 描述,因此您不需要指令清單來剖析事件數據。
EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG
表示您需要 WMI MOF 類別來剖析事件數據。

ThreadId

識別已產生事件的執行緒。

ProcessId

識別已產生事件的處理序。

TimeStamp

包含事件發生的時間。 除非 EVENT_TRACE_LOGFILE 的 ProcessTraceMode 成員包含 PROCESS_TRACE_MODE_RAW_TIMESTAMP 旗標,否則解析是系統時間,在此情況下,解析取決於控制器建立會話時EVENT_TRACE_PROPERTIESWnode.ClientContext 成員值。

ProviderId

可唯一識別記錄事件的提供者的 GUID。

EventDescriptor

定義事件的相關信息,例如事件標識碼和嚴重性層級。 如需詳細資訊,請參閱 EVENT_DESCRIPTOR

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.KernelTime

核心模式指令的經過運行時間,以 CPU 時間單位為單位。 如果您使用私人會話,請改用 ProcessorTime 成員中的值。 如需詳細資訊,請參閱<備註>。

DUMMYUNIONNAME.DUMMYSTRUCTNAME.UserTime

使用者模式指令的經過運行時間,以 CPU 時間單位為單位。 如果您使用私人會話,請改用 ProcessorTime 成員中的值。 如需詳細資訊,請參閱<備註>。

DUMMYUNIONNAME.ProcessorTime

針對私人會話,CPU 刻度中使用者模式指示所耗用的運行時間。

ActivityId

與兩個事件相關的標識碼。 如需詳細資訊,請參閱 EventWriteTransfer

備註

您可以使用 KernelTimeUserTime 成員來判斷一組指令的 CPU 成本, (值表示記錄時該線程所收取的 CPU 使用量) 。 例如,如果事件 A 和事件 B 會由相同的線程連續記錄,而且其 CPU 使用量號碼為 150 和 175,則由事件 A 與 B 之間的該線程所執行的活動成本為 25 個 CPU 時間單位, (175 – 150) 。

TRACE_LOGFILE_HEADER 結構的 TimerResolution 包含以 100 奈秒為單位的 CPU 使用量定時器解析度。 您可以使用定時器解析度搭配核心時間和用戶時間值,以判斷所使用的指令集 CPU 時間量。 例如,如果定時器解析度為 156,250,則 25 個 CPU 時間單位為 0.39 秒, (156,250 * 25 * 100 / 1,000,000,000,000) 。 這是一組事件 A 與 B 之間指令所使用的 CPU 時間 (未經過的時鐘時間) 。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
標頭 evntcons.h (包括 Evntcons.h)

另請參閱

EVENT_RECORD