Konstanten im Protokollierungsmodus

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

Die Konstanten werden in den LogFileMode-Membern der 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, für die keine maximale Dateigröße angegeben ist.
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 zirkulären Protokolldatei auf Multiprozessorcomputern möglicherweise nicht in der Reihenfolge angezeigt wird.
Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_APPEND, EVENT_TRACE_FILE_MODE_NEWFILEoder 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 EVENT_TRACE_FILE_MODE_APPENDmüssen die Werte für BufferSize, NumberOfProcessorsund ClockType explizit angegeben werden und 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_NEWFILEoder 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. Der MaximumFileSize-Member EVENT_TRACE_PROPERTIES muss festgelegt werden. Der angegebene Dateiname muss eine formatierte Zeichenfolge sein (z. B. enthält die Zeichenfolge ein %d, z.B. c:\test%d.etl). Jedes Mal, wenn eine neue Datei erstellt wird, wird ein Zähler inkrementiert, und sein Wert wird verwendet, die formatierte Zeichenfolge wird aktualisiert, und die resultierende Zeichenfolge wird als Dateiname 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) Reserviert EVENT_TRACE_PROPERTIES. MaximumFileSize Bytes des Speicherplatzes für die Protokolldatei im Voraus. Die Datei belegt während der Protokollierung den gesamten Speicherplatz für kreisförmige und sequenzielle Protokolldateien. Wenn Sie die Sitzung beenden, wird die Protokolldatei auf die benötigte Größe reduziert. Sie müssen die EVENT_TRACE_PROPERTIES. 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 der Autologger unterstützt. Diese Option wird auf 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 zur Verfügung. 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 Benutzer zum Nutzen der Ereignisse verfügbar sind, da Aufrufe von Protokollereignissen letztendlich fehlschlagen, wenn die Puffer voll werden. Vor der Windows Vista wurden die Ereignisse verworfen, wenn die Ereignisse nicht verwendet wurden. Geben Sie nicht mehr als einen Echtzeitverbraucher in einem Prozess auf Windows XP oderWindows Server 2003 an. Lassen Sie stattdessen einen Thread Ereignisse nutzen und die Ereignisse an andere verteilen.
Vor der Windows Vista: Sie sollten den Echtzeitmodus nicht verwenden, da die unterstützte Ereignisrate wesentlich niedriger ist als das Lesen aus der Protokolldatei (Ereignisse können gelöscht werden). Außerdem ist die Ereignis reihenfolge auf Computern mit mehreren Prozessoren nicht garantiert. Der Echtzeitmodus eignet sich besser für Benachrichtigungstypereignisse mit geringem Datenverkehr.

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 z. B. 64.000 Puffer verwenden und ihre Protokollierungsrate 1 Ereignis pro Sekunde beträgt, schreibt der Dienst 64.000/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:
Auf Windows Vista oder höher sollte dieser Modus nicht anwendbar sein.

EVENT_TRACE_BUFFERING_MODE (0x00000400) Dieser Modus schreibt Ereignisse in einen zirkulären Speicherpuffer. Ereignisse, die über die Gesamtgröße des Puffers hinaus geschrieben wurden, geben die ältesten Im Puffer verbleibenden Ereignisse zurück. Die Größe dieses Speicherpuffers ist das Produkt von MinimumBuffers und BufferSize (siehe EVENT_TRACE_PROPERTIES). Infolge dieser Formel ignoriert jeder Puffer, der EVENT_TRACE_BUFFERING_MODE, den MaximumBuffers-Wert.
Ereignisse werden nicht in eine Protokolldatei geschrieben oder in Echtzeit übermittelt, und ETW leert die Puffer nicht. Um eine Momentaufnahme des Puffers zu erhalten, 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 WMITrace-Kerneldebuggererweiterung anzuzeigen.
Verwenden Sie nicht mit EVENT_TRACE_FILE_MODE_SEQUENTIAL, EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_APPEND, EVENT_TRACE_FILE_MODE_NEWFILEoder EVENT_TRACE_REAL_TIME_MODE.
EVENT_TRACE_PRIVATE_LOGGER_MODE (0x00000800) Erstellt eine Ereignisablaufverfolgungssitzung im Benutzermodus, die im gleichen Prozess wie der Ereignisablaufverfolgungsanbieter ausgeführt wird. Der Arbeitsspeicher für Puffer stammt aus dem Arbeitsspeicher des Prozesses. Prozesse, für die keine Daten aus dem Kernel erforderlich sind, können den Mehraufwand im Zusammenhang mit Kernelmodusübergängen mithilfe einer privaten Ereignisablaufverfolgungssitzung beseitigen.
Wenn der Anbieter von mehreren Prozessen registriert wird, fügt ETW den Prozessbezeichner an den Protokolldateinamen an, um einen eindeutigen Protokolldateinamen 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.
Für Private Ereignisablaufverfolgungssitzungen gelten die folgenden Einschränkungen:
  • 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 der Echtzeitbereitstellung 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 Filter für ausführbare Namen können jetzt an Sitzungssteuerungs-APIs übergeben werden, wenn systemweite private Protokollierungen gestartet werden. Für die besten Ergebnisse in prozessübergreifenden Szenarien sollten dieselben Filter an jeden Steuerungsvorgang während der Sitzung übergeben werden, einschließlich Anbieter-Aktivierungs-/Diasbleaufrufe. Beachten Sie, dass die Filter das gleiche Format wie die von EnableTraceEx2 verwenden.
Sie können diesen Modus in Verbindung mit dem EVENT_TRACE_PRIVATE_IN_PROC 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 flag EVENT_TRACE_PRIVATE_IN_PROC, kann jeder Benutzer eine private In-Process-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 In-Process-Sitzungen erstellen).
Vor der 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) Diese Option fügt der Protokolldatei einen Header hinzu.
Hinweis:
Auf Windows Vista oder höher sollte dieser Modus nicht anwendbar sein.

EVENT_TRACE_USE_KBYTES_FOR_SIZE(0x00002000) Verwenden Sie Kilobytes als Maßeinheit, um die Größe einer Datei anzugeben. Die Standardeinheit des Measure ist Megabyte. Dieser Modus gilt für den MaxFileSize-Registrierungswert für eine AutoLogger-Sitzung und das MaximumFileSize-Member von EVENT_TRACE_PROPERTIES. Diese Option wird unter Windows Vista und höher unterstützt.
EVENT_TRACE_USE_GLOBAL_SEQUENCE(0x00004000) Verwendet Sequenznummern, die über Ereignisablaufverfolgungssitzungen hinweg 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, 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 pro Prozess bis zu drei private In-Process-Sitzungen 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) Diese Option beendet die Protokollierung beim Hybrid-Herunterfahren. Wenn weder EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN noch EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN ist, wählt ETW einen Standardwert basierend darauf aus, ob der Aufrufer von Sitzung 0 kommt oder nicht. Diese Option wird für Windows 8 und Windows Server 2012.
EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN(0x00800000) Diese Option setzt die Protokollierung beim Hybrid-Herunterfahren fort. Wenn weder EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN noch EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN ist, wählt ETW einen Standardwert basierend darauf aus, ob der Aufrufer von Sitzung 0 kommt oder nicht. Diese Option wird für Windows 8 und Windows Server 2012.
EVENT_TRACE_USE_PAGED_MEMORY (0x01000000) Verwendet ausseitigen Speicher. Diese Einstellung wird empfohlen, damit Ereignisse den nicht auspageten Speicher nicht verwenden. Nicht auslagerte Puffer verwenden nicht auslagerten Arbeitsspeicher für Pufferspeicher. Da nicht auslagerte Puffer nie auslagert werden, funktioniert eine Protokollierungssitzung gut. Die Verwendung von aus pagebaren Puffern ist weniger ressourcenintensiv.
Kernelmodusanbieter und Systemprotokollierung können Ereignisse nicht 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 erhält Ereignisse von SystemTraceProvider. Wenn der StartTraceProperties-Parameter LogFileMode dieses Flag enthält, ist die Protokollierung eine Systemprotokollierung. Diese Option wird auf Windows 8 und Windows Server 2012.
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 ein Ereignis nicht in einer der Sitzungen veröffentlicht werden kann, für die ein Anbieter aktiviert ist, wird das Ereignis nicht in einer der Sitzungen veröffentlicht. Wenn dieses Flag festgelegt ist, wird bei einem Fehler beim Schreiben eines Ereignisses in eine Sitzung die EventWrite-Funktion nicht dazu führen, dass in anderen Sitzungen ein Fehlercode zurückgegeben wird.
Verwenden Sie nicht mit EVENT_TRACE_PRIVATE_LOGGER_MODE.
Diese Option wird für 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. Bei Verwendung dieses Modus kann das Problem beseitigt werden, dass Ereignisse nicht in der Reihenfolge angezeigt werden, wenn Ereignisse mithilfe der Systemzeit auf verschiedenen Prozessoren veröffentlicht werden. Dieser Modus kann auch das Problem mit kreisförmigen Protokollen beseitigen, die 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 nicht in der Reihenfolge angezeigt. Dies liegt daran, dass ETW-Puffer einem Prozessor und nicht einem Thread zugeordnet sind. Wenn ein Thread von einer CPU auf eine andere umgeschaltet wird, kann der puffer, der der letzten CPU zugeordnet ist, daher vor dem der früheren CPU zugeordneten Puffer auf den Datenträger geleert werden.
Wenn Sie eine große Menge 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 Selbdumps hinzu. Diese Option wird auf Windows 8 und Windows Server 2012.