EVENT_HEADER-Struktur (evntcons.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, in der es protokolliert wurde, und ob das Ereignis erweiterte Daten enthält. Dieses Element kann eines oder mehrere der folgenden Flags enthalten.
Wert | Bedeutung |
---|---|
|
Das ExtendedData-Element von EVENT_RECORD enthält Daten. |
|
Das Ereignis wurde in einer privaten Sitzung protokolliert. Verwenden Sie ProcessorTime für die verstrichene Ausführungszeit. |
|
Die Ereignisdaten sind eine Unicode-Zeichenfolge mit NULL-Beendigung. Sie benötigen kein Manifest, um das UserData-Element von EVENT_RECORD zu analysieren. |
|
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. |
|
Verwenden Sie ProcessorTime für die verstrichene Ausführungszeit. |
|
Gibt an, dass der Anbieter auf einem 32-Bit-Computer oder in einer WOW64-Sitzung ausgeführt wurde. |
|
Gibt an, dass der Anbieter auf einem 64-Bit-Computer ausgeführt wurde. |
|
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.
ThreadId
Gibt den Thread an, der das Ereignis generiert hat
ProcessId
Gibt den Prozess an, der das Ereignis generiert hat
TimeStamp
Enthält den Zeitpunkt, zu dem das Ereignis aufgetreten ist. Die Auflösung ist Systemzeit, es sei denn, das ProcessTraceMode-Element von EVENT_TRACE_LOGFILE enthält das flag PROCESS_TRACE_MODE_RAW_TIMESTAMP. In diesem Fall hängt die Auflösung vom Wert des Wnode.ClientContext-Elements von EVENT_TRACE_PROPERTIES zum Zeitpunkt der Erstellung der Sitzung durch den Controller ab.
ProviderId
GUID, die den Anbieter eindeutig identifiziert, der das Ereignis protokolliert hat.
EventDescriptor
Definiert die Informationen zum Ereignis, z. B. ereignisbezeichner und Schweregrad. Weitere 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 bezieht. Weitere 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 bestimmen (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 nacheinander vom gleichen Thread 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 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 | evntcons.h (evntcons.h einschließen) |