EVENT_HEADER 结构 (relogger.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_LOGFILEProcessTraceMode 成员包含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 包含 CPU 使用率计时器的分辨率(以 100 纳秒为单位)。 可以使用具有内核时间和用户时间值的计时器分辨率来确定指令集使用的 CPU 时间量。 例如,如果计时器分辨率为 156,250,则 25 个 CPU 时间单位为 0.39 秒, (156,250 * 25 * 100 / 1,000,000,000) 。 这是事件 A 和 B 之间的指令集使用的 CPU 时间 (未经过的时钟时间) 量。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 relogger.h (包括 Evntcons.h)

另请参阅

EVENT_RECORD