EVENT_TRACE_PROPERTIES_V2-Struktur (evntrace.h)
Die EVENT_TRACE_PROPERTIES_V2-Struktur enthält Informationen zu einer Ereignisablaufverfolgungssitzung. Sie verwenden diese Struktur mit APIs wie StartTrace und ControlTrace , wenn Sie die Eigenschaften einer Sitzung definieren, aktualisieren oder abfragen.
Hinweis
Dies ist eine Struktur der Version 2, die von der EVENT_TRACE_PROPERTIES-Struktur erweitert wird. Diese Struktur wird ab Windows 10 Version 1703 unterstützt. Bei Verwendung mit früheren Versionen von Windows werden die zusätzlichen Felder (z. B. FilterDesc und V2Options) ignoriert.
Syntax
typedef struct _EVENT_TRACE_PROPERTIES_V2 {
WNODE_HEADER Wnode;
ULONG BufferSize;
ULONG MinimumBuffers;
ULONG MaximumBuffers;
ULONG MaximumFileSize;
ULONG LogFileMode;
ULONG FlushTimer;
ULONG EnableFlags;
union {
LONG AgeLimit;
LONG FlushThreshold;
} DUMMYUNIONNAME;
ULONG NumberOfBuffers;
ULONG FreeBuffers;
ULONG EventsLost;
ULONG BuffersWritten;
ULONG LogBuffersLost;
ULONG RealTimeBuffersLost;
HANDLE LoggerThreadId;
ULONG LogFileNameOffset;
ULONG LoggerNameOffset;
union {
struct {
ULONG VersionNumber : 8;
} DUMMYSTRUCTNAME;
ULONG V2Control;
} DUMMYUNIONNAME2;
ULONG FilterDescCount;
PEVENT_FILTER_DESCRIPTOR FilterDesc;
union {
struct {
ULONG Wow : 1;
ULONG QpcDeltaTracking : 1;
ULONG LargeMdlPages : 1;
ULONG ExcludeKernelStack : 1;
} DUMMYSTRUCTNAME;
ULONG64 V2Options;
} DUMMYUNIONNAME3;
} EVENT_TRACE_PROPERTIES_V2, *PEVENT_TRACE_PROPERTIES_V2;
Member
Wnode
Eine WNODE_HEADER-Struktur . Sie müssen die Elemente BufferSize, Flags und Guid angeben. Optional können Sie den ClientContext-Member angeben.
Wichtig
Damit die Felder der Version 2 (z. B. FilterDesc und V2Options) erkannt werden, müssen Sie das WNODE_FLAG_VERSIONED_PROPERTIES
Flag in Wnode.Flags
festlegen.
BufferSize
Für jeden Ereignisablaufverfolgungssitzungspuffer zugeordneter Arbeitsspeicher in Kilobytes. Die mindeste Puffergröße beträgt 4 (4 KB). Die maximale Puffergröße beträgt 16384 (16 MB). Die meisten Ablaufverfolgungssitzungen sollten eine Puffergröße von 64 KB oder weniger verwenden, um zu vermeiden, dass Arbeitsspeicher und Speicherplatz auf dem Datenträger ungenutzt werden. Vor Windows 8: Die maximale Puffergröße beträgt 1024 (1 MB).
Kleinere Puffergrößen reduzieren die Sitzungsspeicherauslastung. Größere Puffergrößen (bis zu 64 KB) unterstützen die Sammlung größerer Ereignisse– ETW kann keine Ereignisse sammeln, die größer als die Puffergröße sind, und können unabhängig von der Puffergröße keine Ereignisse sammeln, die größer als 64 KB sind. In Szenarien mit extrem hohem Datendurchsatz können größere Puffergrößen den CPU-Mehraufwand reduzieren.
- Eine Sitzung mit kleinen Ereignissen und einer niedrigen Ereignisrate (einige KB/s) sollte eine kleine Puffergröße (4 KB bis 16 KB) verwenden.
- Eine Sitzung mit kleinen Ereignissen und einer moderaten Ereignisrate sollte eine mittlere Puffergröße (16 KB bis 32 KB) verwenden.
- Eine Sitzung mit großen Ereignissen oder einer hohen Ereignisrate (einige MB/s) sollte eine große Puffergröße (64 KB bis 128 KB) verwenden.
- In seltenen Fällen, in denen eine große Arbeitsspeichermenge für eine Diagnoseablaufverfolgung mit Hunderten megabyte Daten pro Sekunde reserviert werden sollte, kann eine große Puffergröße (256 KB bis 1024 KB) den CPU-Aufwand reduzieren.
ETW kann die angeforderte BufferSize in bestimmten Szenarien nach oben anpassen. Wenn Sie beispielsweise eine Ablaufverfolgungsdatei auf einen Datenträger schreiben, kann ETW die Puffergröße auf ein Vielfaches der physischen Blockgröße des Datenträgers erhöhen.
Wichtig
BufferSize ist einer der wichtigsten Parameter für eine Ablaufverfolgungssitzung. Große Puffer verschwenden in der Regel Arbeitsspeicher und Speicherplatz. Ablaufverfolgungssitzungen mit großen Puffern (256 KB oder größer) sollten nur für Diagnoseuntersuchungen oder Tests verwendet werden, nicht für die Produktionsablaufverfolgung.
Tipp
Verwenden Sie BufferSize nicht, um die Speicherauslastung der Ablaufverfolgungssitzung zu steuern. Wählen Sie stattdessen die Puffergröße basierend auf der Ereignisgröße und Ereignisrate Ihrer Sitzung aus, und verwenden Sie dann die Parameter MinimumBuffers und MaximumBuffers , um die Sitzungsspeicherauslastung anzupassen.
MinimumBuffers
Mindestanzahl von Puffern, die für den Pufferpool der Ablaufverfolgungssitzung reserviert sind.
ETW kann diesen Wert in bestimmten Szenarien anpassen.
- Wenn der Protokollierungsmodus das
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING
Flag enthält, reserviert ETW mindestens 2 Puffer. - Wenn der Protokollierungsmodus das
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING
Flag nicht enthält, reserviert ETW mindestens 2 Puffer für jeden logischen Prozessor. - Wenn dieser Wert größer als ein ETW-festgelegter Grenzwert ist, kann ETW ihn auf den Grenzwert reduzieren, um eine übermäßige Speicherauslastung zu vermeiden.
Für Dateimodus- und Echtzeitablaufverfolgungen mit moderaten Ereignisraten sollten die meisten Benutzer die Speicherauslastung minimieren, indem Sie MinimumBuffers auf 0 oder auf ein kleines Minimum (z. B. 4 oder 8) festlegen, sodass ETW den Wert basierend auf der Anzahl der Prozessoren nach oben anpassen kann. ETW reserviert die (angepasste) Mindestanzahl von Puffern, wenn die Ablaufverfolgung gestartet wird. Wenn die Puffer schneller gefüllt werden, als sie verarbeitet werden können, ordnet ETW Zusätzliche Puffer bis zu der von MaximumBuffers angegebenen Anzahl zu.
Bei Ablaufverfolgungen im Puffermodus (kreisförmiger Speicher) sollten Benutzer den Parameter MinimumBuffers entsprechend der Gesamtmenge des Arbeitsspeichers festlegen, den ETW für die Sitzung reservieren soll. Dies wird in der Regel basierend auf der erwarteten Ereignisrate und der Zeitspanne berechnet, die von der Ablaufverfolgung abgedeckt werden soll. Wenn Sie beispielsweise eine Datenrate von 16 KB pro Sekunde erwarten und ihre Ablaufverfolgung mindestens 60 Sekunden Daten aufzeichnen soll, benötigen Sie 960 KB. Bei einer Puffergröße von 32 KB würden Sie MinimumBuffers auf 30 festlegen (960 KB gesamt / 32 KB pro Puffer = 30 Puffer). ETW reserviert die (angepasste) Mindestanzahl von Puffern, wenn die Ablaufverfolgung gestartet wird. Wenn alle Puffer gefüllt sind, verwendet ETW den ältesten gefüllten Puffer für neue Ereignisse. Beachten Sie, dass ETW keine zusätzlichen Puffer ordnet (ETW ignoriert MaximumBuffers für Puffermodusablaufverfolgungen).
MaximumBuffers
Maximale Anzahl von Puffern, die für den Pufferpool der Ablaufverfolgungssitzung zugeordnet werden sollen.
ETW kann diesen Wert in bestimmten Szenarien anpassen.
- Wenn dieser Wert kleiner als der angepasste Wert von MinimumBuffers ist, kann ETW ihn auf einen geeigneten Wert erhöhen, der gleich oder größer als MinimumBuffers ist.
- Wenn dieser Wert größer als ein ETW-festgelegter Grenzwert ist, kann ETW ihn auf den Grenzwert reduzieren.
Die meisten Benutzer sollten mit der Optimierung ihrer Sitzung beginnen, indem Sie MinimumBuffers und MaximumBuffers auf den gleichen Wert festlegen. Sie können dann den Wert von MaximumBuffers erhöhen, wenn die Ablaufverfolgung Ereignisse während Spitzen der Ereignisrate abwirft.
Hinweis
ETW ignoriert dieses Feld für Puffermodussitzungen (Sitzungen, die den Protokollierungsmodus EVENT_TRACE_BUFFERING_MODE
enthalten). Puffermodussitzungen weisen immer MinimumBuffers am Anfang der Ablaufverfolgungssammlung zu und weisen niemals zusätzliche Puffer zu.
MaximumFileSize
Maximale Größe der Datei, die zum Protokollieren von Ereignissen verwendet wird, in Megabyte oder null für keine Größenbeschränkung. In der Regel verwenden Sie diesen Member, um die Größe einer kreisförmigen Protokolldatei einzuschränken, wenn Sie LogFileMode auf EVENT_TRACE_FILE_MODE_CIRCULAR
festlegen. Dieser Member muss auf einen Wert ungleich null festgelegt werden, wenn LogFileMode oder EVENT_TRACE_FILE_MODE_CIRCULAR
EVENT_TRACE_FILE_MODE_NEWFILE
enthältEVENT_TRACE_FILE_MODE_PREALLOCATE
.
Wenn Sie das Systemlaufwerk (das Laufwerk, das das Betriebssystem enthält) für die Protokollierung verwenden, sucht ETW nach zusätzlichem Speicherplatz von 200 MB, unabhängig davon, ob Sie den Parameter für die maximale Dateigröße verwenden. Wenn Sie daher 100 MB als maximale Dateigröße für die Ablaufverfolgungsdatei auf dem Systemlaufwerk angeben, müssen Sie 300 MB freien Speicherplatz auf dem Laufwerk haben.
LogFileMode
Protokollierungsflags für die Ereignisablaufverfolgungssitzung. Sie verwenden diesen Member, um anzugeben, ob Ereignisse in einen In-Memory-Zirkelpuffer, eine Protokolldatei oder einen Echtzeitconsumer geschrieben werden sollen. Sie können diesen Member auch verwenden, um andere Sitzungsmerkmale anzugeben, z. B. dass es sich bei der Sitzung um eine private Protokollierungssitzung handelt. Eine Liste der möglichen Flags finden Sie unter Protokollierungsmoduskonstanten.
Geben Sie keine Echtzeitprotokollierung an, es sei denn, ein Echtzeitconsumer ist bereit, die Ereignisse zu nutzen. ETW puffert Ereignisse für Echtzeitsitzungen, wenn keine Echtzeitconsumer vorhanden sind. für die Sitzung. Eine Echtzeitsitzung ohne Consumer verschwendet Systemressourcen. Beachten Sie, dass diese Pufferung begrenzt ist. Wenn der Grenzwert erreicht wird, werden neue Ereignisse ignoriert, und die Protokollierungsfunktionen schlagen mit STATUS_LOG_FILE_FULL
fehl. Vor Windows Vista: Wenn kein Echtzeitconsumer vorhanden ist, werden Ereignisse verworfen, und die Protokollierung wird fortgesetzt.
Wenn ein Consumer mit der Verarbeitung von Echtzeitereignissen beginnt, werden zuerst die Ereignisse in der Wiedergabedatei verwendet. Nachdem alle Ereignisse in der Wiedergabedatei verwendet wurden, beginnt die Sitzung mit der Meldung neuer Ereignisse.
FlushTimer
Gibt an, wie oft in Sekunden ein nicht leerer Ablaufverfolgungspuffer geleert wird.
- Bei Sitzungen im Dateimodus beträgt die mindeste Leerungszeit 1 Sekunde. Wenn FlushTimer auf 0 festgelegt wird, werden zeitbasierte Leerungen deaktiviert (leert sich, wenn der Puffer gefüllt wird, wenn die Sitzung beendet wird oder wenn die Sitzung explizit geleert wird). Die meisten Ablaufverfolgungen im Dateimodus sollten FlushTimer auf 0 festlegen, um verschwendeten Speicherplatz in der Ablaufverfolgungsdatei zu vermeiden. Sie können den Timer auf einen Wert ungleich 0 festlegen, wenn die Ablaufverfolgung möglicherweise nicht geschlossen wird (z. B. wenn Sie sicher sein möchten, dass Ereignisse auch dann abgerufen werden, wenn das System abstürzt).
- Bei Echtzeitsitzungen beträgt die minimale Leerungszeit 1 Sekunde. Wenn FlushTimer auf 0 festgelegt ist, wird ein Standardtimeout von 1 Sekunde verwendet. In Echtzeitsitzungen sollte der Leerungstimer basierend darauf festgelegt werden, wie schnell die Daten empfangen werden müssen. Beachten Sie, dass ein höherer Timerwert den CPU-Aufwand für die Ablaufverfolgung reduziert. Die meisten Echtzeitüberwachungen sollten mit einem Timer von 5 oder 10 Sekunden beginnen und den Timer je nach Bedarf optimieren.
- Für gepufferte Sitzungen (kreisförmig im Arbeitsspeicher) wird FlushTimer nicht verwendet. Die Ablaufverfolgungsdaten werden nur bei Bedarf geleert (d. h. über ControlTrace in eine Datei geleert).
EnableFlags
Eine Systemprotokollierungssitzung kann EnableFlags festlegen, um anzugeben, welche SystemTraceProvider-Ereignisse in die Ablaufverfolgung einbezogen werden sollen.
Hinweis
EnableFlags ist nur für Systemprotokollierungen gültig, d. h. Für Ablaufverfolgungssitzungen, die mit dem Flag für den EVENT_TRACE_SYSTEM_LOGGER_MODE
Protokollierungsmodus, dem KERNEL_LOGGER_NAME
Sitzungsnamen, der SystemTraceControlGuid
Sitzungs-GUID oder der GlobalLoggerGuid
Sitzungs-GUID gestartet werden.
Dieser Member kann einen oder mehrere der folgenden Werte enthalten. Zusätzlich zu den von Ihnen angegebenen Ereignissen zeichnet die Protokollierung, sofern Sie nicht angeben EVENT_TRACE_FLAG_NO_SYSCONFIG
, auch Hardwarekonfigurationsereignisse unter Windows XP und Systemkonfigurationsereignisse unter Windows Server 2003 oder höher auf.
EVENT_TRACE_FLAG_ALPC (0x00100000)
Aktiviert die ALPC-Ereignistypen .
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_CSWITCH (0x00000010)
Aktiviert den folgenden Threadereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_DBGPRINT (0x00040000)
Ermöglicht die Konvertierung der DbgPrint- und DbgPrintEx-Aufrufe in ETW-Ereignisse.
EVENT_TRACE_FLAG_DISK_FILE_IO (0x00000200)
Aktiviert den folgenden FileIo-Ereignistyp (Sie müssen auch EVENT_TRACE_FLAG_DISK_IO aktivieren):
EVENT_TRACE_FLAG_DISK_IO (0x00000100)
Aktiviert die folgenden DiskIo-Ereignistypen :
EVENT_TRACE_FLAG_DISK_IO_INIT (0x00000400)
Aktiviert den folgenden DiskIo-Ereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_DISPATCHER (0x00000800)
Aktiviert den folgenden Threadereignistyp :
Dieser Wert wird unter Windows 7, Windows Server 2008 R2 und höher unterstützt.
EVENT_TRACE_FLAG_DPC (0x00000020)
Aktiviert den folgenden PerfInfo-Ereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_DRIVER (0x00800000)
Aktiviert die folgenden DiskIo-Ereignistypen :
- DriverCompleteRequest
- DriverCompleteRequestReturn
- DriverCompletionRoutine
- DriverMajorFunctionCall
- DriverMajorFunctionReturn
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_FILE_IO (0x02000000)
Aktiviert die folgenden FileIo-Ereignistypen :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_FILE_IO_INIT (0x04000000)
Aktiviert den folgenden FileIo-Ereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_IMAGE_LOAD (0x00000004)
Aktiviert den folgenden Image-Ereignistyp :
EVENT_TRACE_FLAG_INTERRUPT (0x00000040)
Aktiviert den folgenden PerfInfo-Ereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_JOB (0x00080000)
Dieser Wert wird auf Windows 10 unterstützt.
EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS (0x00002000)
Aktiviert den folgenden PageFault_V2 Ereignistyp:
EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS (0x00001000)
Aktiviert den folgenden PageFault_V2 Ereignistyp:
EVENT_TRACE_FLAG_NETWORK_TCPIP (0x00010000)
Aktiviert die Ereignistypen TcpIp und UdpIp .
EVENT_TRACE_FLAG_NO_SYSCONFIG (0x10000000)
Führen Sie keinen Rundown für die Systemkonfiguration durch.
Dieser Wert wird auf Windows 8, Windows Server 2012 und höher unterstützt.
EVENT_TRACE_FLAG_PROCESS (0x00000001)
Aktiviert den folgenden Process-Ereignistyp :
EVENT_TRACE_FLAG_PROCESS_COUNTERS (0x00000008)
Aktiviert den folgenden Process_V2 Ereignistyp:
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_PROFILE (0x01000000)
Aktiviert den folgenden PerfInfo-Ereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_REGISTRY (0x00020000)
Aktiviert die Registrierungsereignistypen .
EVENT_TRACE_FLAG_SPLIT_IO (0x00200000)
Aktiviert die SplitIo-Ereignistypen .
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_SYSTEMCALL (0x00000080)
Aktiviert den folgenden PerfInfo-Ereignistyp :
Dieser Wert wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_FLAG_THREAD (0x00000002)
Aktiviert den folgenden Threadereignistyp :
EVENT_TRACE_FLAG_VAMAP (0x00008000)
Aktiviert den Ereignistyp map und unmap (mit Ausnahme von Bilddateien).
Dieser Wert wird auf Windows 8, Windows Server 2012 und höher unterstützt.
EVENT_TRACE_FLAG_VIRTUAL_ALLOC (0x00004000)
Aktiviert den folgenden PageFault_V2 Ereignistyp:
Dieser Wert wird unter Windows 7, Windows Server 2008 R2 und höher unterstützt.
DUMMYUNIONNAME
Nicht verwendet.
DUMMYUNIONNAME.AgeLimit
Nicht verwendet.
Windows 2000: Zeitverzögerung, bevor nicht verwendete Puffer freigegeben werden( in Minuten). Der Standardwert ist 15 Minuten.
DUMMYUNIONNAME.FlushThreshold
NumberOfBuffers
Bei der Ausgabe die Anzahl der Puffer, die dem Pufferpool der Ereignisablaufverfolgungssitzung zugeordnet sind.
FreeBuffers
Bei der Ausgabe die Anzahl der Puffer, die zugewiesen, aber im Pufferpool der Ereignisablaufverfolgungssitzung nicht verwendet werden.
EventsLost
Bei der Ausgabe die Anzahl der Ereignisse, die nicht aufgezeichnet wurden.
BuffersWritten
Bei der Ausgabe die Anzahl der geschriebenen Puffer.
LogBuffersLost
Bei der Ausgabe die Anzahl der Puffer, die nicht in die Protokolldatei geschrieben werden konnten.
RealTimeBuffersLost
Bei der Ausgabe die Anzahl der Puffer, die nicht in Echtzeit an den Consumer übermittelt werden konnten.
LoggerThreadId
Bei der Ausgabe der Threadbezeichner für die Ereignisablaufverfolgungssitzung.
LogFileNameOffset
Offset (in Bytes) vom Anfang des zugeordneten Arbeitsspeichers dieser Struktur bis zum Anfang der nul-terminierten Zeichenfolge, die den Namen der Protokolldatei enthält.
Der Dateiname hat normalerweise eine .etl
Erweiterung. Alle Ordner im Pfad müssen bereits vorhanden sein (ETW erstellt keine Ordner für Sie). Der Pfad kann relativ, absolut, lokal oder remote sein. Umgebungsvariablen im Pfad werden nicht erweitert. Der Benutzer muss über die Berechtigung zum Schreiben in den Ordner verfügen.
Der Name der Protokolldatei ist auf 1.024 Zeichen beschränkt. Wenn Sie LogFileMode auf EVENT_TRACE_PRIVATE_LOGGER_MODE oder EVENT_TRACE_FILE_MODE_NEWFILE festlegen, achten Sie darauf, dass Sie genügend Arbeitsspeicher reservieren, um den Prozessbezeichner einzuschließen, der an den Dateinamen für private Protokollierungssitzungen angefügt wird, und die sequenzielle Nummer, die Protokolldateien hinzugefügt wird, die im neuen Dateiprotokollmodus erstellt wurden.
Wenn Sie keine Ereignisse in einer Protokolldatei protokollieren möchten (z. B. wenn Sie nur EVENT_TRACE_REAL_TIME_MODE angeben), legen Sie LogFileNameOffset auf 0 fest. Wenn Sie nur die Echtzeitprotokollierung angeben und auch einen Offset mit einem gültigen Namen der Protokolldatei angeben, verwendet ETW den Namen der Protokolldatei, um eine sequenzielle Protokolldatei und Protokollereignisse an die Protokolldatei zu erstellen, zusätzlich zum Senden der Ereignisse an Echtzeitverbraucher. ETW erstellt auch die sequenzielle Protokolldatei, wenn LogFileMode 0 ist und Sie einen Offset mit einem gültigen Protokolldateinamen bereitstellen.
Wenn Sie Ereignisse in einer Protokolldatei protokollieren möchten, müssen Sie genügend Arbeitsspeicher reservieren, damit diese Struktur den Namen der Protokolldatei und den Sitzungsnamen nach der Struktur enthält. Der Protokolldateiname muss dem Sitzungsnamen im Arbeitsspeicher folgen. Ein Beispiel finden Sie in den Anmerkungen.
Ablaufverfolgungsdateien werden mithilfe des Standardsicherheitsdeskriptors erstellt, d. h. die Protokolldatei verfügt über dieselbe ACL wie das übergeordnete Verzeichnis. Wenn Der Zugriff auf die Dateien eingeschränkt sein soll, erstellen Sie ein übergeordnetes Verzeichnis mit den entsprechenden ACLs.
LoggerNameOffset
Offset (in Bytes) vom Anfang des zugewiesenen Arbeitsspeichers der Struktur bis zum Anfang der nul-terminated-Zeichenfolge, die den Sitzungsnamen enthält.
Wichtig
Verwenden Sie einen aussagekräftigen Namen für Ihre Sitzung, damit der Besitz und die Nutzung der Sitzung anhand des Sitzungsnamens bestimmt werden können. Verwenden Sie keine GUID oder einen anderen nicht beschreibenden Wert. Fügen Sie keine zufälligen Ziffern an, um Ihren Sitzungsnamen eindeutig zu machen. ETW-Sitzungen sind eine begrenzte Ressource, sodass Ihre Komponente nicht mehrere Sitzungen starten sollte. Wenn die Sitzung Ihrer Komponente bereits ausgeführt wird, wenn Ihre Komponente startet, sollte Ihre Komponente die verwaiste Sitzung sauber, anstatt eine zweite Sitzung zu erstellen.
Der Sitzungsname ist auf 1.024 Zeichen beschränkt. Beim Sitzungsnamen wird die Groß-/Kleinschreibung nicht beachtet. Das System startet keine neue Sitzung, wenn bereits eine andere Sitzung mit demselben Namen ausgeführt wird.
Windows 2000: Bei Sitzungsnamen wird die Groß-/Kleinschreibung beachtet. Daher sind Sitzungen, deren Namen nur für den Fall abweichen, dass sie zulässig sind. Um Verwirrung zu vermeiden, sollten Sie jedoch sicherstellen, dass Ihre Sitzungsnamen eindeutig sind.
DUMMYUNIONNAME2
Nicht verwendet.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME
Nicht verwendet.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME.VersionNumber
Die Version der Struktur. Dies sollte auf "2" festgelegt werden.
Hinweis
Dieses Feld und alle nachfolgenden Felder werden nur erkannt, wenn das Wnode.Flags-Feld das WNODE_FLAG_VERSIONED_PROPERTIES
Flag enthält und die zugrunde liegende ETW-Runtime die neue Strukturversion (Windows 10 Version 1703 und höher) erkennt.
DUMMYUNIONNAME2.V2Control
Wird nicht verwendet.
FilterDescCount
Die Anzahl der Filter, auf die filterDesc verweist. Dies sollte null sein, es sei denn, es wird eine systemweite private Protokollierung konfiguriert.
FilterDesc
Unterstützte EVENT_FILTER_DESCRIPTOR Filtertypen für systemweite private Protokollierungen: EVENT_FILTER_TYPE_EXECUTABLE_NAME und EVENT_FILTER_TYPE_PID
Ein Zeiger auf ein Array von EVENT_FILTER_DESCRIPTOR Strukturen, das auf die Filterdaten zeigt. Die Anzahl der Elemente im Array wird im Element FilterDescCount angegeben. Es kann nur einen Filter für einen bestimmten Filtertyp geben, der vom Typelement der EVENT_FILTER_DESCRIPTOR-Struktur angegeben wird.
Dies sollte NULL sein, es sei denn, es wird eine systemweite private Protokollierung konfiguriert.
DUMMYUNIONNAME3
Nicht verwendet.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
Nicht verwendet.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.Wow
Nicht verwendet.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.QpcDeltaTracking
Nicht verwendet.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.LargeMdlPages
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ExcludeKernelStack
DUMMYUNIONNAME3.V2Options
Nicht verwendet.
Bemerkungen
Diese Struktur verhält sich mit wenigen Ausnahmen ähnlich wie EVENT_TRACE_PROPERTIES .
Der Anfang der Struktur ist genau als EVENT_TRACE_PROPERTIES definiert, damit diese neue Struktur mit Systemen kompatibel ist, auf denen Windows-Versionen vor Windows 10, Version 1703 ausgeführt werden, und wird als EVENT_TRACE_PROPERTIES behandelt.
Wenn Sie diese Struktur verwenden, stellen Sie sicher, dass Sie in Wnode.Flags einschließen WNODE_FLAG_VERSIONED_PROPERTIES
, um anzugeben, dass dies die Struktur der Version 2 ist.
Beachten Sie, dass die Filter, die über diese Struktur an StartTrace und ControlTrace übergeben werden, dieselbe Semantik aufweisen wie filter, die von der EnableTraceEx2-Funktion verwendet werden.
Wenn Sie den Arbeitsspeicher für diese Struktur zuweisen, müssen Sie genügend Arbeitsspeicher zuweisen, um den Sitzungsnamen und den Namen der Protokolldatei nach der Struktur aufzunehmen. Der Sitzungsname muss vor dem Protokolldateinamen im Arbeitsspeicher kommen. Sie müssen den Namen der Protokolldatei in den Offset kopieren, aber den Sitzungsnamen nicht in den Offset kopieren. Die StartTrace-Funktion kopiert den Namen für Sie.
Stellen Sie sicher, dass Sie den Arbeitsspeicher für diese Struktur auf Null initialisieren, bevor Sie Elemente festlegen. Beispiel:
typedef struct EventTracePropertyData2 {
EVENT_TRACE_PROPERTIES_V2 Props;
WCHAR LoggerName[128];
WCHAR LogFileName[1024];
} EventTracePropertyData2;
EventTracePropertyData2 data = { 0 };
data.Props.Wnode.BufferSize = sizeof(data);
data.Props.Wnode.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_VERSIONED_PROPERTIES;
data.Props.LogFileNameOffset = offsetof(EventTracePropertyData2, LogFileName);
data.Props.LoggerNameOffset = offsetof(EventTracePropertyData2, LoggerName);
Ereignisse von Anbietern werden in die Puffer einer Sitzung geschrieben. Wenn ein Puffer in einer Datei oder Echtzeitsitzung voll ist (oder wenn der FlushTimer abläuft), löscht die Sitzung den Puffer, indem die Ereignisse entweder in eine Protokolldatei geschrieben und an einen Echtzeit-Consumer gesendet werden, oder beides. Wenn die Puffer einer Sitzung schneller gefüllt werden, als sie geleert werden können, werden neue Puffer zugeordnet und dem Pufferpool der Sitzung bis zu MaximumBuffers hinzugefügt. Über diesen Grenzwert hinaus verwirft die Sitzung eingehende Ereignisse, bis ein Puffer verfügbar ist. Jede Sitzung speichert die Anzahl der verworfenen Ereignisse (siehe EventLost-Member ).
ETW gibt nicht verwendete Puffer nicht frei.
Windows 2000: ETW gibt nicht verwendete Puffer basierend auf dem AgeLimit-Memberwert frei.
Um Sitzungsstatistiken anzuzeigen, z. B. EventsLost , während die Sitzung ausgeführt wird, rufen Sie die ControlTrace-Funktion auf, und legen Sie den ControlCode-Parameter auf fest EVENT_TRACE_CONTROL_QUERY
.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 10 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2016 [nur Desktop-Apps] |
Kopfzeile | evntrace.h |