EVENT_TRACE_LOGFILEW-Struktur (evntrace.h)

Die EVENT_TRACE_LOGFILE-Struktur speichert Informationen zu einer Ablaufverfolgungsdatenquelle.

Die EVENT_TRACE_LOGFILE-Struktur wird beim Aufrufen von OpenTrace verwendet. Der Benutzer stellt eine EVENT_TRACE_LOGFILE Struktur mit Informationen zur Ablaufverfolgungsdatenquelle (entweder den Namen einer ETL-Datei oder den Namen einer aktiven Echtzeitprotokollierungssitzung), Ablaufverfolgungsverarbeitungsflags und die Rückruffunktionen bereit, die Ablaufverfolgungsdaten empfangen. Bei Erfolg füllt OpenTrace die verbleibenden Felder der -Struktur aus, um Details zur Ablaufverfolgungsdatenquelle zurückzugeben.

Wenn ProcessTrace einen Puffer verarbeitet, ruft er den benutzerdefinierten BufferCallback mit einer EVENT_TRACE_LOGFILE-Struktur auf, um Informationen über die Ereignisverarbeitungssitzung und den Puffer bereitzustellen.

Syntax

typedef struct _EVENT_TRACE_LOGFILEW {
  LPWSTR                        LogFileName;
  LPWSTR                        LoggerName;
  LONGLONG                      CurrentTime;
  ULONG                         BuffersRead;
  union {
    ULONG LogFileMode;
    ULONG ProcessTraceMode;
  } DUMMYUNIONNAME;
  EVENT_TRACE                   CurrentEvent;
  TRACE_LOGFILE_HEADER          LogfileHeader;
  PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback;
  ULONG                         BufferSize;
  ULONG                         Filled;
  ULONG                         EventsLost;
  union {
    PEVENT_CALLBACK        EventCallback;
    PEVENT_RECORD_CALLBACK EventRecordCallback;
  } DUMMYUNIONNAME2;
  ULONG                         IsKernelTrace;
  PVOID                         Context;
} EVENT_TRACE_LOGFILEW, *PEVENT_TRACE_LOGFILEW;

Member

LogFileName

Name der zu verarbeitenden Protokolldatei oder NULL , wenn Daten aus einer Echtzeitablaufverfolgungssitzung verarbeitet werden. Geben Sie einen Wert für dieses Element an, wenn Sie OpenTrace aufrufen, um Daten aus einer Protokolldatei zu nutzen.

Wenn LoggerName beim Aufrufen von OpenTrace ungleich NULL ist, muss LogFileNameNULL sein.

Beim Aufrufen von OpenTrace muss der Benutzer, der die Ereignisse nutzt, über Berechtigungen zum Lesen der Datei verfügen.

Hinweis

Der für OpenTrace über das Feld LogFileName bereitgestellte Dateiname muss der vollständige Dateiname sein, einschließlich aller Suffixe. Einige ERSTELLUNGs-APIs für Ablaufverfolgungsdateien können dem vom Benutzer angegebenen Dateinamen automatisch ein Suffix hinzufügen. Wenn der Controller beispielsweise Ereignisse in einer privaten Sitzung protokolliert hat (der Controller legt das LogFileMode-Element von EVENT_TRACE_PROPERTIES beim Aufrufen von StartTrace auf EVENT_TRACE_PRIVATE_LOGGER_MODE fest), enthält die generierte ETL-Datei ein Prozess-ID-Suffix, z. B. mytrace.etl_123. Dies kann auch der Fall sein, wenn die Datei mit dem EVENT_TRACE_FILE_MODE_NEWFILE-Modus erstellt wurde. In diesem Fall enthält die generierte ETL-Datei eine Sequenznummer.

LoggerName

Name der Echtzeitereignisablaufverfolgungssitzung oder NULL , wenn Daten aus einer Protokolldatei verarbeitet werden. Geben Sie einen Wert für diesen Member an, wenn Sie OpenTrace aufrufen, um Daten aus einer Echtzeitsitzung zu nutzen.

Wenn LogFileName beim Aufrufen von OpenTrace ungleich NULL ist, muss LoggerNameNULL sein.

Sie können Ereignisse nur in Echtzeit nutzen, wenn der Ablaufverfolgungscontroller das LogFileMode-Element von EVENT_TRACE_PROPERTIES so festgelegt hat, dass das flag EVENT_TRACE_REAL_TIME_MODE enthalten ist.

Nur Benutzer mit Administratorrechten, Benutzer in der Gruppe Leistungsprotokollbenutzer und Anwendungen, die als LocalSystem, LocalService und NetworkService ausgeführt werden, können Ereignisse in Echtzeit nutzen. Um einem eingeschränkten Benutzer die Möglichkeit zu geben, Ereignisse in Echtzeit zu nutzen, fügen Sie sie der Gruppe Leistungsprotokollbenutzer hinzu, oder rufen Sie EventAccessControl auf.

Windows XP und Windows 2000: Jeder kann Echtzeitereignisse nutzen.

CurrentTime

Bei der Ausgabe, die aktuelle Zeit, in Intervallen von 100 Nanosekunden seit Mitternacht, 1. Januar 1601.

BuffersRead

Bei der Ausgabe die Anzahl der verarbeiteten Puffer.

DUMMYUNIONNAME

DUMMYUNIONNAME.LogFileMode

Reserviert. Darf nicht verwendet werden.

DUMMYUNIONNAME.ProcessTraceMode

Modi für die Verarbeitung von Ereignissen. Die Modi werden in der evntcons.h Headerdatei definiert. Sie können einen oder mehrere der folgenden Modi angeben:

  • PROCESS_TRACE_MODE_EVENT_RECORD

    Geben Sie diesen Modus an, wenn Sie Ereignisse im neuen EVENT_RECORD-Format empfangen möchten (dringend empfohlen). Um Ereignisse im neuen Format zu empfangen, müssen Sie einen Rückruf im EventRecordCallback-Element angeben. Wenn Sie diesen Modus nicht angeben, erhalten Sie Ereignisse im alten Format über den im EventCallback-Member angegebenen Rückruf.

    Vor Windows Vista: Nicht unterstützt.

  • PROCESS_TRACE_MODE_RAW_TIMESTAMP

    Standardmäßig konvertiert ProcessTrace den TimeStamp des Ereignisses aus dem ursprünglichen Rohformat (Systemzeit, QPC-Zeit oder CPU-Zykluszähler) in Systemzeit (Intervalle von 100 Nanosekunden seit Mitternacht, 1. Januar 1601).

    Geben Sie das flag PROCESS_TRACE_MODE_RAW_TIMESTAMP an, wenn der Zeitstempelwert im TimeStamp-Element von EVENT_HEADER nicht in die Systemzeit konvertiert EVENT_TRACE_HEADER . Wenn dieses Flag angegeben wird, belässt ProcessTrace den Zeitstempelwert in dem ursprünglichen Format, das der Controller im Wnode.ClientContext-Membervon EVENT_TRACE_PROPERTIES angegeben hat.

    Vor Windows Vista: Nicht unterstützt.

  • PROCESS_TRACE_MODE_REAL_TIME

    Geben Sie diesen Modus an, um Ereignisse in Echtzeit zu empfangen. Sie müssen diesen Modus angeben, wenn LoggerName nicht NULL ist.

CurrentEvent

Bei der Ausgabe wird eine EVENT_TRACE Struktur, die das zuletzt verarbeitete Ereignis enthält.

LogfileHeader

Bei der Ausgabe wird eine TRACE_LOGFILE_HEADER Struktur, die allgemeine Informationen über die Sitzung und den Computer enthält, auf dem die Sitzung ausgeführt wurde.

BufferCallback

Zeiger auf die BufferCallback-Funktion , die pufferbezogene Statistiken für jede Puffer-ETW-Leerung empfängt. ETW ruft diesen Rückruf auf, nachdem alle Ereignisse im Puffer übermittelt wurden. Dieser Rückruf ist optional.

BufferSize

Enthält bei der Ausgabe die Größe jedes Puffers in Byte.

Filled

Enthält bei der Ausgabe die Anzahl der Bytes im Puffer, die gültige Informationen enthalten.

EventsLost

Wird nicht verwendet.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.EventCallback

Zeiger auf die EventCallback-Funktion , die ETW für jedes Ereignis im Puffer aufruft. Dieses Feld wird nur verwendet, wenn das Feld ProcessTraceMode das Flag nicht enthält PROCESS_TRACE_MODE_EVENT_RECORD .

Hinweis

Das EventCallback-Feld wird als EventRecordCallback behandelt, wenn das Feld ProcessTraceMode das PROCESS_TRACE_MODE_EVENT_RECORD Flag enthält. Wenn Ihr EventCallback unzutreffende Daten von ProcessTrace empfängt, überprüfen Sie, ob das Feld ProcessTraceMode das PROCESS_TRACE_MODE_EVENT_RECORD Flag nicht enthält.

Tipp

Neuer Code sollte EventRecordCallback anstelle von EventCallback verwenden. EventRecordCallback empfängt eine EVENT_RECORD die umfassendere Ereignisinformationen enthält, kann mit Decodierungs-APIs wie TdhGetEventInformation verwendet werden und verfügt über einen Kontextzeiger, der vom Rückruf verwendet werden kann.

DUMMYUNIONNAME2.EventRecordCallback

Zeiger auf die EventRecordCallback-Funktion , die ETW für jedes Ereignis im Puffer aufruft. Dieses Feld wird nur verwendet, wenn das Feld ProcessTraceMode das PROCESS_TRACE_MODE_EVENT_RECORD Flag enthält.

Hinweis

Das Feld EventRecordCallback wird als EventCallback behandelt, wenn das Feld ProcessTraceMode das PROCESS_TRACE_MODE_EVENT_RECORD Flag nicht enthält. Wenn Ihr EventRecordCallback unzutreffende Daten von ProcessTrace empfängt, überprüfen Sie, ob das Feld ProcessTraceMode das PROCESS_TRACE_MODE_EVENT_RECORD Flag enthält.

Vor Windows Vista: Nicht unterstützt.

IsKernelTrace

Wenn dieser Member bei der Ausgabe TRUE ist, ist die Ereignisablaufverfolgungssitzung die NT-Kernelprotokollierung. Andernfalls handelt es sich um eine weitere Ereignisablaufverfolgungssitzung.

Context

Kontextdaten, die ein Consumer beim Aufrufen von OpenTrace angeben kann. Wenn der Consumer EventRecordCallback verwendet, um Ereignisse zu nutzen, legt ETW den UserContext-Member der EVENT_RECORD-Struktur auf diesen Wert fest.

Vor Windows Vista: Nicht unterstützt.

Hinweise

Ereignisconsumer sollten:

  1. Initialisieren Sie den Arbeitsspeicher für diese Struktur auf Null.
  2. Wenn Sie aus einer ETL-Datei lesen, legen Sie LogFileName auf den Pfad zur Datei fest. Andernfalls (wenn Sie aus einer Echtzeitsitzung lesen), legen Sie LoggerName auf den Namen der Sitzung und ProcessTraceMode auf fest PROCESS_TRACE_MODE_REAL_TIME.
  3. Wenn Sie EventRecordCallback (empfohlen) verwenden, legen Sie EventRecordCallback auf die Adresse Ihrer Ereignisdatensatz-Rückruffunktion fest, legen Sie Context auf einen Wert fest, der ihrem Rückruf zur Verfügung gestellt werden soll, und fügen Sie ProcessTraceMode hinzuPROCESS_TRACE_MODE_EVENT_RECORD. Andernfalls (bei Verwendung von EventCallback) legen Sie EventCallback auf die Adresse Ihrer Ereignisrückruffunktion fest.
  4. Wenn Sie einen Rückruf benötigen, nachdem jeder Puffer verarbeitet wurde, legen Sie BufferCallback auf die Adresse Ihrer Pufferrückruffunktion fest.
  5. Wenn Sie die ursprünglichen rohen Zeitstempeldaten anstelle des verarbeiteten Zeitstempels verwenden möchten, fügen Sie ProcessTraceMode hinzuPROCESS_TRACE_MODE_RAW_TIMESTAMP.
  6. Rufen Sie OpenTrace auf. Beachten Sie, dass bei erfolgreicher Ausführung die OpenTrace-Funktion Elemente dieser Struktur mit Informationen aus der Ablaufverfolgungsdatenquelle ausfüllt.
  7. Rufen Sie ProcessTrace mit dem von OpenTrace zurückgegebenen Handle auf.
    • ProcessTrace ruft ihre Ereignisrückruffunktion für jedes Ereignis auf.
    • ProcessTrace ruft ihre Pufferrückruffunktion auf (sofern angegeben), nachdem die einzelnen Puffer abgeschlossen wurden, und schließt eine instance der EVENT_TRACE_LOGFILE-Struktur mit Ablaufverfolgungsverarbeitung status Informationen ein.
  8. Rufen Sie nach Abschluss der Ablaufverfolgungsverarbeitung CloseTrace auf, um das von OpenTrace zurückgegebene Handle zu schließen.

Hinweis

Der evntrace.h-Header definiert EVENT_TRACE_LOGFILE als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile evntrace.h

Weitere Informationen

BufferCallback

EventRecordCallback

OpenTrace