EVENT_INSTANCE_HEADER structure (evntrace.h)

The EVENT_INSTANCE_HEADER structure contains standard event tracing information common to all events written by TraceEventInstance. The structure also contains registration handles for the event trace class and related parent event, which you use to trace instances of a transaction or hierarchical relationships between related events.

Syntax

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;

Members

Size

Total number of bytes of the event. Size must include the size of the EVENT_INSTANCE_HEADER structure, plus the size of any event-specific data appended to this structure. The size must be less than the size of the event tracing session's buffer minus 72 (0x48).

DUMMYUNIONNAME

A union of various structures and members.

DUMMYUNIONNAME.FieldTypeFlags

Reserved.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

Reserved.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType

Reserved.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags

Reserved.

DUMMYUNIONNAME2

A union of Class in two forms.

DUMMYUNIONNAME2.Version

This is a roll-up of the members of Class. The low-order byte contains the Type, the next byte contains the Level, and the last two bytes contain the version.

DUMMYUNIONNAME2.Class

The Class structure.

DUMMYUNIONNAME2.Class.Type

Type of event. A provider can define their own event types or use the predefined event types listed in the following table.

  • EVENT_TRACE_TYPE_CHECKPOINT

    Checkpoint event. Use for an event that is not at the start or end of an activity.

  • EVENT_TRACE_TYPE_DC_END

    Data collection end event.

  • EVENT_TRACE_TYPE_DC_START

    Data collection start event.

  • EVENT_TRACE_TYPE_DEQUEUE

    Dequeue event. Use when an activity is queued before it begins. Use EVENT_TRACE_TYPE_START to mark the time when a work item is queued. Use the dequeue event type to mark the time when work on the item actually begins. Use EVENT_TRACE_TYPE_END to mark the time when work on the item completes.

  • EVENT_TRACE_TYPE_END

    End event. Use to trace the final state of a multi-step event.

  • EVENT_TRACE_TYPE_EXTENSION

    Extension event. Use for an event that is a continuation of a previous event. For example, use the extension event type when an event trace records more data than can fit in a session buffer.

  • EVENT_TRACE_TYPE_INFO

    Informational event. This is the default event type.

  • EVENT_TRACE_TYPE_REPLY

    Reply event. Use when an application that requests resources can receive multiple responses. For example, if a client application requests a URL, and the web server replies by sending several files, each file received can be marked as a reply event.

  • EVENT_TRACE_TYPE_START

    Start event. Use to trace the initial state of a multi-step event.

If your event trace class GUID supports multiple event types, consumers will use the event type to determine the event and how to interpret its contents.

DUMMYUNIONNAME2.Class.Level

Provider-defined value that defines the severity level used to generate the event. The value ranges from 0 to 255. The controller specifies the severity level when it calls the EnableTraceEx2 function. The provider retrieves the severity level by calling the GetTraceEnableLevel function from its ControlCallback implementation. The provider uses the value to set this member.

ETW defines the following severity levels. Selecting a level higher than 1 will also include events for lower levels. For example, if the controller specifies TRACE_LEVEL_WARNING (3), the provider also generates TRACE_LEVEL_FATAL (1) and TRACE_LEVEL_ERROR (2) events.

Value Meaning
TRACE_LEVEL_CRITICAL (1) Abnormal exit or termination events
TRACE_LEVEL_ERROR (2) Severe error events
TRACE_LEVEL_WARNING (3) Warning events such as allocation failures
TRACE_LEVEL_INFORMATION (4) Non-error events such as entry or exit events
TRACE_LEVEL_VERBOSE (5) Detailed trace events

DUMMYUNIONNAME2.Class.Version

Indicates the version of the event trace class that you are using to log the event. Specify zero if there is only one version of your event trace class. The version tells the consumer which MOF class to use to decipher the event data.

ThreadId

On output, identifies the thread that generated the event.

Note that on Windows 2000, ThreadId was a ULONGLONG value.

ProcessId

On output, identifies the process that generated the event.

Windows 2000: This member is not supported.

TimeStamp

On output, contains the time the event occurred, in 100-nanosecond intervals since midnight, January 1, 1601.

RegHandle

Handle to a registered event trace class. Set this property before calling the TraceEventInstance function.

The RegisterTraceGuids function creates this handle (see the TraceGuidReg parameter).

InstanceId

On output, contains the event trace instance identifier associated with RegHandle.

ParentInstanceId

On output, contains the event trace instance identifier associated with ParentRegHandle.

DUMMYUNIONNAME3

A union of structs and members.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

A structure containing the following members.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.KernelTime

Elapsed execution time for kernel-mode instructions, in CPU ticks. If you are using a private session, use the value in the ProcessorTime member instead.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.UserTime

Elapsed execution time for user-mode instructions, in CPU ticks. If you are using a private session, use the value in the ProcessorTime member instead.

DUMMYUNIONNAME3.ProcessorTime

For private sessions, the elapsed execution time for user-mode instructions, in CPU ticks.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2

A union of structs and members.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.EventId

The event identifier.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.Flags

Must contain WNODE_FLAG_TRACED_GUID, and may also contain any combination of the following.

  • WNODE_FLAG_USE_GUID_PTR

    Specify if the GuidPtr member contains the class GUID.

  • WNODE_FLAG_USE_MOF_PTR

    Specify if an array of MOF_FIELD structures contains the event data appended to this structure. The number of elements in the array is limited to MAX_MOF_FIELDS.

ParentRegHandle

Handle to a registered event trace class of a parent event. Set this property before calling the TraceEventInstance function if you want to trace a hierarchical relationship (parent element/child element) between related events.

The RegisterTraceGuids function creates this handle (see the TraceGuidReg parameter).

Remarks

Be sure to initialize the memory for this structure to zero before setting any members.

Requirements

Requirement Value
Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Header evntrace.h

See also

TraceEventInstance