EVENT_HEADER-Struktur (relogger.h)

Definiert Informationen zum Ereignis.

Syntax

typedef struct _EVENT_HEADER {
  USHORT           Size;
  USHORT           HeaderType;
  USHORT           Flags;
  USHORT           EventProperty;
  ULONG            ThreadId;
  ULONG            ProcessId;
  LARGE_INTEGER    TimeStamp;
  GUID             ProviderId;
  EVENT_DESCRIPTOR EventDescriptor;
  union {
    struct {
      ULONG KernelTime;
      ULONG UserTime;
    } DUMMYSTRUCTNAME;
    ULONG64 ProcessorTime;
  } DUMMYUNIONNAME;
  GUID             ActivityId;
} EVENT_HEADER, *PEVENT_HEADER;

Member

Size

Größe des Ereignisdatensatzes in Bytes.

HeaderType

Reserviert.

Flags

Flags, die Informationen zum Ereignis bereitstellen, z. B. den Typ der Sitzung, für die es protokolliert wurde, und ob das Ereignis erweiterte Daten enthält. Dieses Element kann mindestens eins der folgenden Flags enthalten.

Wert Bedeutung
EVENT_HEADER_FLAG_EXTENDED_INFO
Das ExtendedData-Element von EVENT_RECORD enthält Daten.
EVENT_HEADER_FLAG_PRIVATE_SESSION
Das Ereignis wurde in einer privaten Sitzung protokolliert. Verwenden Sie ProcessorTime für verstrichene Ausführungszeit.
EVENT_HEADER_FLAG_STRING_ONLY
Bei den Ereignisdaten handelt es sich um eine Unicode-Zeichenfolge mit Null-Beendigung. Sie benötigen kein Manifest, um das UserData-Element von EVENT_RECORD zu analysieren.
EVENT_HEADER_FLAG_TRACE_MESSAGE
Der Anbieter hat TraceMessage oder TraceMessageVa verwendet, um das Ereignis zu protokollieren. Die meisten Anbieter verwenden diese Funktionen nicht zum Schreiben von Ereignissen. Daher gibt dieses Flag in der Regel an, dass das Ereignis von Windows Software Trace Preprocessor (WPP) geschrieben wurde.
EVENT_HEADER_FLAG_NO_CPUTIME
Verwenden Sie ProcessorTime für verstrichene Ausführungszeit.
EVENT_HEADER_FLAG_32_BIT_HEADER
Gibt an, dass der Anbieter auf einem 32-Bit-Computer oder in einer WOW64-Sitzung ausgeführt wurde.
EVENT_HEADER_FLAG_64_BIT_HEADER
Gibt an, dass der Anbieter auf einem 64-Bit-Computer ausgeführt wurde.
EVENT_HEADER_FLAG_CLASSIC_HEADER
Gibt an, dass der Anbieter TraceEvent verwendet hat, um das Ereignis zu protokollieren.

EventProperty

Gibt die Quelle an, die zum Analysieren der Ereignisdaten verwendet werden soll.

Wert Bedeutung
EVENT_HEADER_PROPERTY_XML
Gibt an, dass Sie ein Manifest benötigen, um die Ereignisdaten zu analysieren.
EVENT_HEADER_PROPERTY_FORWARDED_XML
Gibt an, dass die Ereignisdaten eine vollständig gerenderte XML-Beschreibung der Daten enthalten, sodass Sie kein Manifest benötigen, um die Ereignisdaten zu analysieren.
EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG
Gibt an, dass Sie eine WMI MOF-Klasse benötigen, um die Ereignisdaten zu analysieren.

ThreadId

Gibt den Thread an, der das Ereignis generiert hat

ProcessId

Gibt den Prozess an, der das Ereignis generiert hat

TimeStamp

Enthält die Uhrzeit, zu der das Ereignis aufgetreten ist. Die Auflösung ist Systemzeit, es sei denn, das ProcessTraceMode-Element von EVENT_TRACE_LOGFILE enthält das PROCESS_TRACE_MODE_RAW_TIMESTAMP-Flag. In diesem Fall hängt die Auflösung vom Wert des Wnode.ClientContext-Members von EVENT_TRACE_PROPERTIES zum Zeitpunkt der Erstellung der Sitzung ab.

ProviderId

GUID, die den Anbieter eindeutig identifiziert, der das Ereignis protokolliert hat.

EventDescriptor

Definiert die Informationen zum Ereignis, z. B. den Ereignisbezeichner und den Schweregrad. Ausführliche Informationen finden Sie unter EVENT_DESCRIPTOR.

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.KernelTime

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

DUMMYUNIONNAME.DUMMYSTRUCTNAME.UserTime

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

DUMMYUNIONNAME.ProcessorTime

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

ActivityId

Bezeichner, der zwei Ereignisse in Beziehung setzt. Ausführliche Informationen finden Sie unter EventWriteTransfer.

Hinweise

Sie können die KernelTime - und UserTime-Member verwenden, um die CPU-Kosten in Einheiten für eine Reihe von Anweisungen zu ermitteln (die Werte geben die CPU-Auslastung an, die diesem Thread zum Zeitpunkt der Protokollierung in Rechnung gestellt wurde). Wenn beispielsweise Ereignis A und Ereignis B von demselben Thread nacheinander protokolliert werden und die CPU-Auslastungsnummern 150 und 175 aufweisen, kostet die Aktivität, die von diesem Thread zwischen den Ereignissen A und B ausgeführt wurde, 25 CPU-Zeiteinheiten (175 – 150).

Die TimerResolution der TRACE_LOGFILE_HEADER-Struktur enthält die Auflösung des CPU-Auslastungstimers in 100 Nanosekundeneinheiten. Sie können die Timerauflösung mit den Kernelzeit- und Benutzerzeitwerten verwenden, um die CPU-Zeit zu bestimmen, die der Satz von Anweisungen verwendet. Wenn die Timerauflösung beispielsweise 156.250 beträgt, sind 25 CPU-Zeiteinheiten 0,39 Sekunden (156.250 * 25 * 100 / 1.000.000.000). Dies ist die Menge der CPU-Zeit (nicht verstrichene Wanduhrzeit), die vom Satz von Anweisungen zwischen den Ereignissen A und B verwendet wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Kopfzeile relogger.h (include Evntcons.h)

Weitere Informationen

EVENT_RECORD