Verwenden von Ereignissen (Ereignisablaufverfolgung)

Ereignisablaufverfolgungs-Consumer können Ereignisse von einem oder mehreren Anbietern verarbeiten. Consumer können Ereignisse aus einer Protokolldatei oder in Echtzeit verarbeiten. Sie können Ereignisse nur in Echtzeit nutzen, 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, aus der Ereignisse verarbeitet werden sollen, 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 Echtzeitsitzungen zu nutzen, legen Sie den LoggerName-Member auf den Sitzungsnamen fest. Sie verwenden diese Struktur auch, um den BufferCallback-Rückruf und den EventCallback - oder EventRecordCallback-Rückruf anzugeben, der zum Verarbeiten der Ereignisse verwendet wird.

  • EventRecordCallback– Empfängt und verarbeitet alle Ereignisse (einschließlich des Headerereignisses) aus einer oder mehreren Protokolldateien und einer Echtzeitsitzung. Sie implementieren diesen Rückruf, wenn Sie die Hilfsfunktionen für Ablaufverfolgungsdaten verwenden, um die Ereignisdaten zu analysieren oder Metadaten zum Ereignis abzurufen.
  • EventCallback: Empfängt und verarbeitet alle Ereignisse (einschließlich des Headerereignisses) aus einer oder mehreren Protokolldateien und einer Echtzeitsitzung.
  • BufferCallback: Empfängt und verarbeitet Zusammenfassungsinformationen zum aktuellen Puffer, z. B. verlorene Ereignisse. ETW ruft den Rückruf auf, nachdem alle Ereignisse im Puffer an den Consumer gesendet wurden. Der Consumer kann diesen Rückruf auch verwenden, um die Ereignisverarbeitung abzubrechen. Wenn Sie Jedoch Ereignisse in Echtzeit verbrauchen, übermittelt 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 Ablaufverfolgungssitzungshandles, die OpenTrace zurückgibt, an die ProcessTrace-Funktion . Die ProcessTrace-Funktion kombiniert die Ereignisse, sortiert sie in chronologischer Reihenfolge und übermittelt sie dann nacheinander an die Rückrufe. Die Ereignisse können mithilfe der Parameter StartTime und EndTime so gefiltert werden, dass sie nur diejenigen einschließen, die in einen bestimmten Zeitrahmen fallen. Die ProcessTrace-Funktion blockiert den Thread, bis Ihr Consumer alle Ereignisse in den Ablaufverfolgungssitzungen verarbeitet, der BufferCallbackFALSE zurückgibt oder Sie CloseTrace aufrufen.

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

Ein Beispiel, das zeigt, wie Ereignisse genutzt werden, die mit einem Manifest, MOF oder TMF-Dateien veröffentlicht wurden, finden Sie unter Abrufen von Ereignisdaten mithilfe von TDH. Beachten Sie, dass Sie ab Windows Vista die TDH-Funktionen (Ablaufverfolgungsdatenhilfsprogramm) verwenden sollten, um Ereignisse zu nutzen.

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