EVENT_INSTANCE_HEADER-Struktur (evntrace.h)

Die EVENT_INSTANCE_HEADER-Struktur enthält Standardinformationen zur Ereignisablaufverfolgung, die allen von TraceEventInstance geschriebenen Ereignissen gemeinsam sind. Die Struktur enthält auch Registrierungshandles für die Ereignisablaufverfolgungsklasse und das zugehörige übergeordnete Ereignis, das Sie zum Nachverfolgen von Instanzen einer Transaktion oder hierarchischen Beziehungen zwischen verwandten Ereignissen verwenden.

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;

Member

Size

Gesamtanzahl der Bytes des Ereignisses. Die Größe muss die Größe der EVENT_INSTANCE_HEADER-Struktur sowie die Größe aller ereignisspezifischen Daten enthalten, die dieser Struktur angefügt werden. Die Größe muss kleiner sein als die Größe des Puffers der Ereignisablaufverfolgungssitzung minus 72 (0x48).

DUMMYUNIONNAME

Eine Vereinigung verschiedener Strukturen und Mitglieder.

DUMMYUNIONNAME.FieldTypeFlags

Reserviert.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

Reserviert.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.HeaderType

Reserviert.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MarkerFlags

Reserviert.

DUMMYUNIONNAME2

Eine Union der Klasse in zwei Formen.

DUMMYUNIONNAME2.Version

Dies ist ein Rollup der Member der Klasse. Das Byte mit niedriger Reihenfolge enthält den Typ, das nächste Byte die Ebene, und die letzten beiden Bytes enthalten die Version.

DUMMYUNIONNAME2.Class

Die Klassenstruktur.

DUMMYUNIONNAME2.Class.Type

Ereignistyp. Ein Anbieter kann eigene Ereignistypen definieren oder die vordefinierten Ereignistypen verwenden, die in der folgenden Tabelle aufgeführt sind.

  • EVENT_TRACE_TYPE_CHECKPOINT

    Prüfpunktereignis. Verwenden Sie für ein Ereignis, das sich nicht am Anfang oder Ende einer Aktivität befindet.

  • EVENT_TRACE_TYPE_DC_END

    Datensammlungsendereignis.

  • EVENT_TRACE_TYPE_DC_START

    Startereignis der Datensammlung.

  • EVENT_TRACE_TYPE_DEQUEUE

    Dequeue-Ereignis. Verwenden Sie, wenn eine Aktivität in die Warteschlange gestellt wird, bevor sie beginnt. Verwenden Sie EVENT_TRACE_TYPE_START, um die Uhrzeit zu markieren, zu der ein Arbeitselement in die Warteschlange gestellt wird. Verwenden Sie den Dequeue-Ereignistyp, um den Zeitpunkt zu markieren, zu dem die Arbeit am Element tatsächlich beginnt. Verwenden Sie EVENT_TRACE_TYPE_END, um den Zeitpunkt zu markieren, zu dem die Arbeit am Element abgeschlossen ist.

  • EVENT_TRACE_TYPE_END

    Endereignis. Verwenden Sie, um den enden Zustand eines mehrstufigen Ereignisses nachzuverfolgen.

  • EVENT_TRACE_TYPE_EXTENSION

    Erweiterungsereignis. Verwenden Sie für ein Ereignis, das eine Fortsetzung eines vorherigen Ereignisses darstellt. Verwenden Sie beispielsweise den Erweiterungsereignistyp, wenn eine Ereignisablaufverfolgung mehr Daten erfasst, als in einen Sitzungspuffer passen können.

  • EVENT_TRACE_TYPE_INFO

    Informationsereignis. Dies ist der Standardereignistyp.

  • EVENT_TRACE_TYPE_REPLY

    Antwortereignis. Verwenden Sie, wenn eine Anwendung, die Ressourcen anfordert, mehrere Antworten erhalten kann. Wenn beispielsweise eine Clientanwendung eine URL anfordert und der Webserver antwortet, indem mehrere Dateien gesendet werden, kann jede empfangene Datei als Antwortereignis markiert werden.

  • EVENT_TRACE_TYPE_START

    Startereignis. Verwenden Sie zum Nachverfolgen des Anfangszustands eines Ereignisses mit mehreren Schritten.

Wenn die GUID ihrer Ereignisablaufverfolgungsklasse mehrere Ereignistypen unterstützt, verwenden Consumer den Ereignistyp, um das Ereignis zu bestimmen und dessen Inhalt zu interpretieren.

DUMMYUNIONNAME2.Class.Level

Vom Anbieter definierter Wert, der den Schweregrad definiert, der zum Generieren des Ereignisses verwendet wird. Der Wert reicht von 0 bis 255. Der Controller gibt den Schweregrad an, wenn er die EnableTraceEx2-Funktion aufruft. Der Anbieter ruft den Schweregrad ab, indem er die GetTraceEnableLevel-Funktion aus seiner ControlCallback-Implementierung aufruft. Der Anbieter verwendet den Wert, um diesen Member festzulegen.

ETW definiert die folgenden Schweregrade. Wenn Sie eine Ebene höher als 1 auswählen, werden auch Ereignisse für niedrigere Ebenen enthalten. Wenn der Controller beispielsweise TRACE_LEVEL_WARNING (3) angibt, generiert der Anbieter auch TRACE_LEVEL_FATAL (1) und TRACE_LEVEL_ERROR (2) Ereignisse.

Wert Bedeutung
TRACE_LEVEL_CRITICAL (1) Ungewöhnliche Beendigungs- oder Beendigungsereignisse
TRACE_LEVEL_ERROR (2) Schwerwiegende Fehlerereignisse
TRACE_LEVEL_WARNING (3) Warnungsereignisse wie Zuordnungsfehler
TRACE_LEVEL_INFORMATION (4) Nicht-Fehlerereignisse wie Ein- oder Ausstiegsereignisse
TRACE_LEVEL_VERBOSE (5) Detaillierte Ablaufverfolgungsereignisse

DUMMYUNIONNAME2.Class.Version

Gibt die Version der Ereignisablaufverfolgungsklasse an, die Sie zum Protokollieren des Ereignisses verwenden. Geben Sie null an, wenn es nur eine Version Ihrer Ereignisablaufverfolgungsklasse gibt. Die Version teilt dem Consumer mit, welche MOF-Klasse zum Entschlüsseln der Ereignisdaten verwendet werden soll.

ThreadId

Identifiziert in der Ausgabe den Thread, der das Ereignis generiert hat.

Beachten Sie, dass ThreadId unter Windows 2000 ein ULONGLONGLONG-Wert war.

ProcessId

Identifiziert in der Ausgabe den Prozess, der das Ereignis generiert hat.

Windows 2000: Dieser Member wird nicht unterstützt.

TimeStamp

Enthält in der Ausgabe den Zeitpunkt, zu dem das Ereignis aufgetreten ist, in Intervallen von 100 Nanosekunden seit Mitternacht, 1. Januar 1601.

RegHandle

Behandeln sie eine registrierte Ereignisablaufverfolgungsklasse. Legen Sie diese Eigenschaft fest, bevor Sie die TraceEventInstance-Funktion aufrufen.

Die Funktion RegisterTraceGuids erstellt dieses Handle (siehe Den Parameter TraceGuidReg ).

InstanceId

Enthält in der Ausgabe die Ereignisablaufverfolgung instance Bezeichner, der RegHandle zugeordnet ist.

ParentInstanceId

Enthält in der Ausgabe die Ereignisablaufverfolgung instance Bezeichner, der ParentRegHandle zugeordnet ist.

DUMMYUNIONNAME3

Eine Vereinigung von Strukturen und Elementen.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Eine Struktur, die die folgenden Member enthält.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.KernelTime

Verstrichene Ausführungszeit für Kernelmodusanweisungen in CPU-Ticks. Wenn Sie eine private Sitzung verwenden, verwenden Sie stattdessen den Wert im ProcessorTime-Member .

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.UserTime

Verstrichene Ausführungszeit für Benutzermodusanweisungen in CPU-Ticks. Wenn Sie eine private Sitzung verwenden, verwenden Sie stattdessen den Wert im ProcessorTime-Member .

DUMMYUNIONNAME3.ProcessorTime

Bei privaten Sitzungen die verstrichene Ausführungszeit für Benutzermodusanweisungen in CPU-Ticks.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2

Eine Vereinigung von Strukturen und Elementen.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.EventId

Der Ereignisbezeichner.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME2.Flags

Muss WNODE_FLAG_TRACED_GUID enthalten und kann auch eine beliebige Kombination der folgenden Enthalten.

  • WNODE_FLAG_USE_GUID_PTR

    Geben Sie an, ob das GuidPtr-Element die Klassen-GUID enthält.

  • WNODE_FLAG_USE_MOF_PTR

    Geben Sie an, ob ein Array von MOF_FIELD Strukturen die an diese Struktur angefügten Ereignisdaten enthält. Die Anzahl der Elemente im Array ist auf MAX_MOF_FIELDS beschränkt.

ParentRegHandle

Behandeln einer registrierten Ereignisablaufverfolgungsklasse eines übergeordneten Ereignisses. Legen Sie diese Eigenschaft vor dem Aufrufen der TraceEventInstance-Funktion fest, wenn Sie eine hierarchische Beziehung (übergeordnetes Element/untergeordnetes Element) zwischen verwandten Ereignissen nachverfolgen möchten.

Die RegisterTraceGuids-Funktion erstellt dieses Handle (siehe TraceGuidReg-Parameter ).

Hinweise

Stellen Sie sicher, dass Sie den Arbeitsspeicher für diese Struktur auf 0 (null) initialisieren, bevor Sie Member festlegen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile evntrace.h

Weitere Informationen

TraceEventInstance