Protokollierungsmoduskonstanten

Die folgenden Konstanten stellen die möglichen Protokollierungsmodi für eine Ereignisablaufverfolgungssitzung dar.

Die Konstanten werden in den LogFileMode-Membern von EVENT_TRACE_LOGFILE-, EVENT_TRACE_PROPERTIES - und TRACE_LOGFILE_HEADER-Strukturen verwendet. Diese Konstanten werden in der Headerdatei Evntrace.h definiert.

Mode BESCHREIBUNG
EVENT_TRACE_FILE_MODE_NONE (0x00000000) Identisch mit EVENT_TRACE_FILE_MODE_SEQUENTIAL ohne angegebene maximale Dateigröße.
EVENT_TRACE_FILE_MODE_SEQUENTIAL (0x00000001) Schreibt Ereignisse sequenziell in eine Protokolldatei. wird beendet, wenn die Datei ihre maximale Größe erreicht. Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_CIRCULAR oder EVENT_TRACE_FILE_MODE_NEWFILE.
EVENT_TRACE_FILE_MODE_CIRCULAR (0x00000002) Schreibt Ereignisse in eine Protokolldatei. Nachdem die Datei die maximale Größe erreicht hat, werden die ältesten Ereignisse durch eingehende Ereignisse ersetzt. Beachten Sie, dass der Inhalt der Rundprotokolldatei auf Multiprozessorcomputern möglicherweise in ungeordneter Reihenfolge angezeigt wird.
Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_APPEND, EVENT_TRACE_FILE_MODE_NEWFILE oder EVENT_TRACE_FILE_MODE_SEQUENTIAL.
EVENT_TRACE_FILE_MODE_APPEND (0x00000004) Fügt Ereignisse an eine vorhandene sequenzielle Protokolldatei an. Wenn die Datei nicht vorhanden ist, wird sie erstellt. Verwenden Sie nur, wenn Sie die Systemzeit für die Uhrauflösung angeben, andernfalls gibt ProcessTrace Ereignisse mit falschen Zeitstempeln zurück. Bei Verwendung von EVENT_TRACE_FILE_MODE_APPEND müssen die Werte für BufferSize, NumberOfProcessors und ClockType explizit angegeben werden und müssen sowohl in der Protokollierung als auch in der angefügten Datei identisch sein.
Verwenden Sie nicht mit EVENT_TRACE_REAL_TIME_MODE, EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_NEWFILE oder EVENT_TRACE_PRIVATE_LOGGER_MODE.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_FILE_MODE_NEWFILE (0x00000008) Wechselt automatisch zu einer neuen Protokolldatei, wenn die Datei die maximale Größe erreicht. Das MaximumFileSize-Element von EVENT_TRACE_PROPERTIES muss festgelegt werden. Der angegebene Dateiname muss eine formatierte Zeichenfolge sein (z. B. enthält die Zeichenfolge eine %d, z. B. c:\test%d.etl). Jedes Mal, wenn eine neue Datei erstellt wird, wird ein Indikator erhöht und sein Wert verwendet, die formatierte Zeichenfolge wird aktualisiert, und die resultierende Zeichenfolge wird als Dateinamen verwendet.
Diese Option ist für private Ereignisablaufverfolgungssitzungen nicht zulässig und sollte nicht für NT-Kernelprotokollierungssitzungen verwendet werden.
Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_APPEND oder EVENT_TRACE_FILE_MODE_SEQUENTIAL.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_FILE_MODE_PREALLOCATE(0x00000020) Reserven EVENT_TRACE_PROPERTIES. MaximumFileSize bytes of disk space for the log file im voraus. Die Datei belegt den gesamten Speicherplatz während der Protokollierung, sowohl für kreisförmige als auch für sequenzielle Protokolldateien. Wenn Sie die Sitzung beenden, wird die Protokolldatei auf die erforderliche Größe reduziert. Sie müssen EVENT_TRACE_PROPERTIES festlegen. MaximumFileSize.
Sie können den Modus nicht für private Ereignisablaufverfolgungssitzungen verwenden.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_NONSTOPPABLE_MODE(0x00000040) Die Protokollierungssitzung kann nicht beendet werden. Dieser Modus wird nur von autologger unterstützt. Diese Option wird unter Windows Vista und höher unterstützt.
.
EVENT_TRACE_SECURE_MODE (0X00000080) Schränkt ein, wer Ereignisse in der Sitzung protokollieren kann, auf diejenigen mit TRACELOG_LOG_EVENT Berechtigung. Diese Option wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_REAL_TIME_MODE (0x00000100) Stellt die Ereignisse in Echtzeit an Verbraucher bereit. Ereignisse werden übermittelt, wenn die Puffer geleert werden, nicht zu dem Zeitpunkt, zu dem der Anbieter das Ereignis schreibt. Sie sollten den Echtzeitmodus nicht aktivieren, wenn keine Consumer zur Nutzung der Ereignisse vorhanden sind, da Aufrufe von Protokollereignissen schließlich fehlschlagen, wenn die Puffer voll werden. Vor Windows Vista wurden die Ereignisse verworfen, wenn die Ereignisse nicht genutzt wurden. Geben Sie nicht mehr als einen Echtzeit-Consumer in einem Prozess unter Windows XP oderWindows Server 2003 an. Lassen Sie stattdessen einen Thread Ereignisse nutzen und die Ereignisse an andere verteilen.
Vor Windows Vista: Sie sollten den Echtzeitmodus nicht verwenden, da die unterstützte Ereignisrate viel niedriger ist als das Lesen aus der Protokolldatei (Ereignisse können gelöscht werden). Außerdem ist die Ereignisreihenfolge auf Computern mit mehreren Prozessoren nicht garantiert. Der Echtzeitmodus eignet sich besser für Ereignisse mit geringem Datenverkehr und Benachrichtigungstyp.

Sie können diesen Modus mit anderen Protokolldateimodi kombinieren. Verwenden Sie diesen Modus jedoch nicht mit EVENT_TRACE_PRIVATE_LOGGER_MODE. Wenn Sie diesen Modus mit anderen Protokolldateimodi kombinieren, werden Puffer einmal pro Sekunde geleert, was dazu führt, dass teilweise gefüllte Puffer in Ihre Protokolldatei geschrieben werden. Wenn Sie beispielsweise 64.000 Puffer verwenden und die Protokollierungsrate 1 Ereignis pro Sekunde beträgt, schreibt der Dienst 64k/Sekunde in Ihre Protokolldatei.
EVENT_TRACE_DELAY_OPEN_FILE_MODE(0x00000200) Dieser Modus wird verwendet, um das Öffnen der Protokolldatei zu verzögern, bis ein Ereignis auftritt.
Hinweis:
Unter Windows Vista oder höher ist dieser Modus nicht anwendbar und sollte nicht verwendet werden.
EVENT_TRACE_BUFFERING_MODE (0x00000400) Dieser Modus schreibt Ereignisse in einen Kreisspeicherpuffer. Ereignisse, die über die Gesamtgröße des Puffers hinaus geschrieben wurden, entfernen die ältesten Ereignisse, die noch im Puffer verbleiben. Die Größe dieses Speicherpuffers ist das Produkt von MinimumBuffers und BufferSize (siehe EVENT_TRACE_PROPERTIES). Als Folge dieser Formel ignoriert jeder Puffer, der EVENT_TRACE_BUFFERING_MODE verwendet, den MaximumBuffers-Wert .
Ereignisse werden nicht in eine Protokolldatei geschrieben oder in Echtzeit übermittelt, und ETW löscht die Puffer nicht. Um eine Momentaufnahme des Puffers abzurufen, rufen Sie die FlushTrace-Funktion auf.
Dieser Modus ist besonders nützlich für das Debuggen von Gerätetreibern in Verbindung mit der Möglichkeit, den Inhalt von In-Memory-Puffern mit der Kerneldebuggererweiterung WMITrace anzuzeigen.
Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_SEQUENTIAL, EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_APPEND, EVENT_TRACE_FILE_MODE_NEWFILE oder EVENT_TRACE_REAL_TIME_MODE.
EVENT_TRACE_PRIVATE_LOGGER_MODE (0x00000800) Erstellt eine Ereignisablaufverfolgungssitzung im Benutzermodus, die im selben Prozess wie der Ereignisablaufverfolgungsanbieter ausgeführt wird. Der Arbeitsspeicher für Puffer stammt aus dem Arbeitsspeicher des Prozesses. Prozesse, die keine Daten aus dem Kernel erfordern, können den mit Kernelmodusübergängen verbundenen Mehraufwand beseitigen, indem sie eine private Ereignisablaufverfolgungssitzung verwenden.
Wenn der Anbieter von mehreren Prozessen registriert ist, fügt ETW den Prozessbezeichner an den Namen der Protokolldatei an, um einen eindeutigen Namen der Protokolldatei zu erstellen. Wenn der Controller beispielsweise die Protokolldateinamen als c:\mylogs\myprivatelog.etl angibt, erstellt ETW die Protokolldatei als c:\mylogs\myprivatelog.etl_nnnn, wobei nnnn der Prozessbezeichner ist. Der Prozessbezeichner wird nicht an den ersten Prozess angefügt, der den Anbieter registriert, er wird nur an die nachfolgenden Prozesse angefügt, die den Anbieter registrieren.
Private Ereignisablaufverfolgungssitzungen weisen die folgenden Einschränkungen auf:
  • Eine private Sitzung kann Ereignisse nur für die Threads des Prozesses aufzeichnen, in dem sie ausgeführt wird.
  • Pro Prozess kann es bis zu acht private Sitzungen geben.
  • Private Sitzungen können nicht mit echtzeitbasierter Übermittlung verwendet werden.
  • Ereignisse, die von einer privaten Sitzung generiert werden, enthalten keine Ausführungszeit für Kernelmodus- und Benutzermodusanweisungen oder Details der verwendeten CPU-Zeit auf Threadebene.
Prozess-ID-Filter und ausführbare Namensfilter können jetzt an Sitzungssteuerungs-APIs übergeben werden, wenn systemweite private Protokollierungen gestartet werden. Um die besten Ergebnisse in prozessübergreifenden Szenarien zu erzielen, sollten dieselben Filter während der Sitzung an jeden Steuerungsvorgang übergeben werden, einschließlich Aufrufe zum Aktivieren/Durchlauf des Anbieters. Beachten Sie, dass die Filter das gleiche Format haben wie die filter, die von EnableTraceEx2 verwendet werden.
Sie können diesen Modus in Verbindung mit dem EVENT_TRACE_PRIVATE_IN_PROC-Modus verwenden.
Vor Windows 10 Version 1703: Nur LocalSystem, der Administrator und Benutzer in der Administratorgruppe, die in einem Prozess mit erhöhten Rechten ausgeführt werden, können eine private Sitzung erstellen. Wenn Sie das EVENT_TRACE_PRIVATE_IN_PROC-Flag einschließen, kann jeder Benutzer eine während des Prozesses erstellte private Sitzung erstellen. Außerdem kann es in früheren Versionen von Windows nur eine private Sitzung pro Prozess geben (es sei denn, der EVENT_TRACE_PRIVATE_IN_PROC Modus ist ebenfalls angegeben. In diesem Fall können Sie bis zu drei private Sitzungen in Prozessen erstellen).
Vor Windows Vista: Benutzer in der Gruppe Leistungsprotokollbenutzer können auch eine private Sitzung erstellen.

Verwenden Sie nicht mit EVENT_TRACE_REAL_TIME_MODE.
Vor Windows 7 und Windows Server 2008 R2: Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_NEWFILE.
EVENT_TRACE_ADD_HEADER_MODE(0x00001000) Mit dieser Option wird der Protokolldatei ein Header hinzugefügt.
Hinweis:
Unter Windows Vista oder höher ist dieser Modus nicht anwendbar und sollte nicht verwendet werden.
EVENT_TRACE_USE_KBYTES_FOR_SIZE(0x00002000) Verwenden Sie Kilobytes als Maßeinheit, um die Größe einer Datei anzugeben. Die Standardmaßeinheit ist Megabyte. Dieser Modus gilt für den Registrierungswert MaxFileSize für eine AutoLogger-Sitzung und das MaximumFileSize-Elementvon EVENT_TRACE_PROPERTIES. Diese Option wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_USE_GLOBAL_SEQUENCE(0x00004000) Verwendet Sequenznummern, die für alle Ereignisablaufverfolgungssitzungen eindeutig sind. Dieser Modus gilt nur für Ereignisse, die mit der TraceMessage-Funktion protokolliert werden. Weitere Informationen finden Sie unter TraceMessage für Nutzungsdetails.
EVENT_TRACE_USE_GLOBAL_SEQUENCE und EVENT_TRACE_USE_LOCAL_SEQUENCE schließen sich gegenseitig aus.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_USE_LOCAL_SEQUENCE (0x00008000) Verwendet Sequenznummern, die nur für eine einzelne Ereignisablaufverfolgungssitzung eindeutig sind. Dieser Modus gilt nur für Ereignisse, die mit der TraceMessage-Funktion protokolliert werden. Weitere Informationen finden Sie unter TraceMessage für Nutzungsdetails.
EVENT_TRACE_USE_GLOBAL_SEQUENCE und EVENT_TRACE_USE_LOCAL_SEQUENCE schließen sich gegenseitig aus.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_RELOG_MODE (0x00010000) Protokolliert das Ereignis, ohne EVENT_TRACE_HEADER. Hinweis:
Dieser Modus sollte nicht verwendet werden. Sie ist für die interne Verwendung reserviert.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_PRIVATE_IN_PROC (0x00020000) Verwenden Sie in Verbindung mit dem EVENT_TRACE_PRIVATE_LOGGER_MODE Modus, um eine private Sitzung zu starten. Dieser Modus erzwingt, dass nur der Prozess, der die Anbieter-GUID registriert hat, die Protokollierungssitzung mit dieser GUID starten kann.
Sie können bis zu drei private Sitzungen pro Prozess erstellen.
Diese Option wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_MODE_RESERVED(0x00100000) Diese Option wird verwendet, um heap- und kritische Abschnittsablaufverfolgung zu signalisieren. Diese Option wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN(0x00400000) Mit dieser Option wird die Protokollierung beim hybriden Herunterfahren beendet. Wenn weder EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN noch EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN angegeben ist, wählt ETW eine Standardeinstellung aus, je nachdem, ob der Aufrufer aus Sitzung 0 stammt oder nicht. Diese Option wird unter Windows 8 und Windows Server 2012 unterstützt.
EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN(0x00800000) Diese Option setzt die Protokollierung beim hybriden Herunterfahren fort. Wenn weder EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN noch EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN angegeben ist, wählt ETW eine Standardeinstellung aus, je nachdem, ob der Aufrufer aus Sitzung 0 stammt oder nicht. Diese Option wird unter Windows 8 und Windows Server 2012 unterstützt.
EVENT_TRACE_USE_PAGED_MEMORY (0x01000000) Verwendet ausgelagerten Speicher. Diese Einstellung wird empfohlen, damit Ereignisse den nicht auslagerten Arbeitsspeicher nicht verbrauchen. Nicht auslagerte Puffer verwenden nicht auslagerten Arbeitsspeicher für Pufferspeicher. Da nicht ausgelagerte Puffer nie ausgelagert werden, funktioniert eine Protokollierungssitzung gut. Die Verwendung von auslagerungsfähigen Puffern ist weniger ressourcenintensiv.
Kernelmodusanbieter und Systemprotokollierer können keine Ereignisse in Sitzungen protokollieren, die diesen Protokollierungsmodus angeben.
Dieser Modus wird ignoriert, wenn EVENT_TRACE_PRIVATE_LOGGER_MODE festgelegt ist.
Sie können diesen Modus nicht mit der NT-Kernelprotokollierung verwenden.
Windows 2000: Dieser Wert wird nicht unterstützt.
EVENT_TRACE_SYSTEM_LOGGER_MODE(0x02000000) Diese Option empfängt Ereignisse von SystemTraceProvider. Wenn der StartTraceProperties-ParameterLogFileMode dieses Flag enthält, ist die Protokollierung eine Systemprotokollierung. Diese Option wird unter Windows 8 und Windows Server 2012 unterstützt.
EVENT_TRACE_INDEPENDENT_SESSION_MODE(0x08000000) Gibt an, dass eine Protokollierungssitzung nicht von EventWrite-Fehlern in anderen Sitzungen betroffen sein soll. Wenn ohne dieses Flag kein Ereignis in einer der Sitzungen veröffentlicht werden kann, für die ein Anbieter aktiviert ist, wird das Ereignis in keiner der Sitzungen veröffentlicht. Wenn dieses Flag festgelegt ist, führt ein Fehler beim Schreiben eines Ereignisses in eine Sitzung nicht dazu, dass die EventWrite-Funktion in anderen Sitzungen einen Fehlercode zurückgibt.
Verwenden Sie nicht mit EVENT_TRACE_PRIVATE_LOGGER_MODE.
Diese Option wird unter Windows 8.1, Windows Server 2012 R2 und höher unterstützt.
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING (0x10000000) Schreibt Ereignisse, die auf verschiedenen Prozessoren protokolliert wurden, in einen gemeinsamen Puffer. Die Verwendung dieses Modus kann das Problem vermeiden, dass Ereignisse in falscher Reihenfolge angezeigt werden, wenn Ereignisse unter Verwendung der Systemzeit auf verschiedenen Prozessoren veröffentlicht werden. Dieser Modus kann auch das Problem beheben, dass Zirkelprotokolle angezeigt werden, um Ereignisse auf mehreren Prozessorcomputern zu löschen.
Wenn Sie diesen Modus nicht verwenden und die Systemzeit verwenden, werden die Ereignisse möglicherweise auf mehreren Prozessorcomputern falsch angezeigt. Dies liegt daran, dass ETW-Puffer einem Prozessor und nicht einem Thread zugeordnet sind. Wenn also ein Thread von einer CPU zu einer anderen gewechselt wird, kann der der letzteren CPU zugeordnete Puffer auf den Datenträger geleert werden, bevor er der früheren CPU zugeordnet ist.
Wenn Sie eine hohe Anzahl von Ereignissen erwarten (z. B. mehr als 1.000 Ereignisse pro Sekunde), sollten Sie diesen Modus nicht verwenden.
Beachten Sie, dass die Prozessornummer nicht im Ereignis enthalten ist.
Diese Option wird unter Windows 7, Windows Server 2008 R2 und höher unterstützt.
EVENT_TRACE_ADDTO_TRIAGE_DUMP(0x80000000) Diese Option fügt ETW-Puffer zu Selektierungsdumps hinzu. Diese Option wird unter Windows 8 und Windows Server 2012 unterstützt.