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_RECORD 的 ExtendedData 成员包含数据。 |
|
事件已记录到专用会话。 使用 ProcessorTime 表示已用执行时间。 |
|
事件数据是一个以 null 结尾的 Unicode 字符串。 无需清单即可分析 EVENT_RECORD 的 UserData 成员。 |
|
提供程序使用 TraceMessage 或 TraceMessageVa 记录事件。 大多数提供程序不使用这些函数来写入事件,因此此标志通常指示事件是由 Windows 软件跟踪预处理器 (WPP) 编写的。 |
|
使用 ProcessorTime 表示已用执行时间。 |
|
指示提供程序在 32 位计算机上或 WOW64 会话中运行。 |
|
指示提供程序在 64 位计算机上运行。 |
|
指示提供程序使用 TraceEvent 记录事件。 |
EventProperty
指示用于分析事件数据的源。
值 | 含义 |
---|---|
|
指示需要清单来分析事件数据。 |
|
指示事件数据本身包含数据的完全呈现 XML 说明,因此无需清单即可分析事件数据。 |
|
指示需要 WMI MOF 类来分析事件数据。 |
ThreadId
标识生成事件的线程。
ProcessId
标识生成事件的进程。
TimeStamp
包含事件发生的时间。 解析为系统时间,除非 EVENT_TRACE_LOGFILE 的 ProcessTraceMode 成员包含PROCESS_TRACE_MODE_RAW_TIMESTAMP标志,在这种情况下,解析取决于控制器创建会话时EVENT_TRACE_PROPERTIES的 Wnode.ClientContext 成员的值。
ProviderId
唯一标识记录事件的提供程序的 GUID。
EventDescriptor
定义有关事件的信息,例如事件标识符和严重性级别。 有关详细信息,请参阅 EVENT_DESCRIPTOR。
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.KernelTime
内核模式指令的已用执行时间(以 CPU 时间单位为单位)。 如果使用专用会话,请改用 ProcessorTime 成员中的 值。 有关详细信息,请参阅“备注”。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.UserTime
用户模式指令的已用执行时间(以 CPU 时间单位为单位)。 如果使用专用会话,请改用 ProcessorTime 成员中的 值。 有关详细信息,请参阅“备注”。
DUMMYUNIONNAME.ProcessorTime
对于专用会话,用户模式指令的已用执行时间(以 CPU 刻度为单位)。
ActivityId
与两个事件相关的标识符。 有关详细信息,请参阅 EventWriteTransfer。
注解
可以使用 KernelTime 和 UserTime 成员来确定一组指令的 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) |