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
事件的字节总数。 大小 必须包括 EVENT_INSTANCE_HEADER 结构的大小,以及追加到此结构的任何特定于事件的数据的大小。 大小必须小于事件跟踪会话缓冲区的大小减去 72 (0x48) 。
DUMMYUNIONNAME
各种结构和成员的联合。
DUMMYUNIONNAME.FieldTypeFlags
保留。
DUMMYUNIONNAME.DUMMYSTRUCTNAME
保留。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType
保留。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags
保留。
DUMMYUNIONNAME2
两种形式的类的联合。
DUMMYUNIONNAME2.Version
这是 类成员的汇总。 低序字节包含 Type,下一个字节包含 Level,最后两个字节包含版本。
DUMMYUNIONNAME2.Class
类结构。
DUMMYUNIONNAME2.Class.Type
事件类型。 提供程序可以定义自己的事件类型,也可以使用下表中列出的预定义事件类型。
EVENT_TRACE_TYPE_CHECKPOINT
检查点事件。 用于不在活动开始或结束时的事件。
EVENT_TRACE_TYPE_DC_END
数据收集结束事件。
EVENT_TRACE_TYPE_DC_START
数据收集启动事件。
EVENT_TRACE_TYPE_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
输出时,包含事件发生的时间,以 1601 年 1 月 1 日午夜以来的 100 纳秒间隔。
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 |