Verwenden von Ereignissen (Ereignisablaufverfolgung)

Ereignisablaufverfolgungsempfänger können Ereignisse aus einem oder mehreren Anbietern verarbeiten. Verbraucher können Ereignisse aus einer Protokolldatei oder in Echtzeit verarbeiten. Sie können Ereignisse nur in Echtzeit verwenden, wenn der Controller den Echtzeitprotokollierungsmodus für die Sitzung angibt. Aus Leistungsgründen wird die Echtzeitverarbeitung vor Windows Vista nicht empfohlen.

Um die Ablaufverfolgungssitzung anzugeben, von der Sie Ereignisse verarbeiten möchten, verwenden Sie die EVENT_TRACE_LOGFILE Struktur. Sie müssen eine Kopie dieser Struktur für jede Protokolldatei oder Echtzeitsitzung initialisieren, die Sie verarbeiten möchten.

Um Ereignisse aus einer Protokolldatei zu nutzen, legen Sie das LogFileName-Element auf den Namen der Protokolldatei fest. Um Ereignisse aus Echtzeitsitzung zu nutzen, legen Sie das LoggerName-Element auf den Sitzungsnamen fest. Sie verwenden diese Struktur auch, um den BufferCallback-Rückruf und denEventRecordCallback-Rückruf anzugeben, der zum Verarbeiten der Ereignisse verwendet wird.

  • EventRecordCallback– Empfängt und verarbeitet alle Ereignisse (einschließlich des Headerereigniss) aus einer oder mehreren Protokolldateien und einer Echtzeitsitzung. Sie implementieren diesen Rückruf, wenn Sie die Ablaufverfolgungsdatenhilfefunktionen verwenden, um die Ereignisdaten zu analysieren oder Metadaten zum Ereignis abzurufen.
  • EventCallback– Empfängt und verarbeitet alle Ereignisse (einschließlich des Headerereigniss) aus einer oder mehreren Protokolldateien und einer Echtzeitsitzung.
  • BufferCallback – Empfängt und verarbeitet Zusammenfassungsinformationen zum aktuellen Puffer, z. B. ereignisse, die verloren gegangen sind. ETW ruft den Rückruf nach der Übermittlung aller Ereignisse im Puffer an den Verbraucher auf. Der Verbraucher kann diesen Rückruf auch verwenden, um die Ereignisverarbeitung abzubrechen; Wenn Sie jedoch Ereignisse in Echtzeit verwenden, liefert ETW Ereignisse, bis der Controller die Sitzung beendet.

Rufen Sie nach dem Definieren einer oder mehrerer Ablaufverfolgungssitzungen die OpenTrace-Funktion für jede Ablaufverfolgungssitzung auf, die Sie verarbeiten möchten; Sie können Ereignisse aus einer oder mehreren Protokolldateien verarbeiten, aber nur aus einer Echtzeitsitzung. Anschließend übergeben Sie die Liste der Ablaufverfolgungssitzungshandpunkte, die OpenTrace an die ProcessTrace-Funktion zurückgibt. Die ProcessTrace-Funktion kombiniert die Ereignisse, sortiert sie in chronologische Reihenfolge und liefert sie dann jeweils an die Rückrufe. Die Ereignisse können gefiltert werden, um nur diejenigen einzuschließen, die mithilfe der Parameter "StartTime " und "EndTime " in einen bestimmten Zeitrahmen fallen. Die ProcessTrace-Funktion blockiert den Thread, bis Der Verbraucher alle Ereignisse in den Ablaufverfolgungssitzungen verarbeitet, der BufferCallbackGIBT FALSE zurück, oder Sie rufen CloseTrace auf.

Vor Windows Vista: Sie können CloseTrace nur aufrufen, nachdem ProcessTrace zurückgegeben wird.

Ein Beispiel, das zeigt, wie Ereignisse verwendet werden, die mithilfe eines Manifests, MOF oder TMF-Dateien veröffentlicht werden, finden Sie unter Abrufen von Ereignisdaten mithilfe von TDH. Beachten Sie, dass Sie ab Windows Vista die Ablaufverfolgungsdatenhilfe (TDH) verwenden sollten, um Ereignisse zu nutzen.

Ein Beispiel, das zeigt, wie Ereignisse verwendet werden, die mithilfe von MOF veröffentlicht werden, finden Sie unter Abrufen von Ereignisdaten mithilfe von MOF.