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.Flagsfestlegen.

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_MODEenthalten). 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_CIRCULARfestlegen. Dieser Member muss auf einen Wert ungleich null festgelegt werden, wenn LogFileMode oder EVENT_TRACE_FILE_MODE_CIRCULAREVENT_TRACE_FILE_MODE_NEWFILEenthä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_FULLfehl. 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.

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

Weitere Informationen

StartTrace

ControlTrace

QueryAllTraces

Protokollierungsmoduskonstanten

EVENT_TRACE_PROPERTIES_V2

WNODE_HEADER