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 上, ThreadIdULONGLONG 值。

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

另请参阅

TraceEventInstance