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 |