共用方式為


取用事件 (事件追蹤)

事件追蹤取用者可以處理來自一或多個提供者的事件。 取用者可以即時處理來自記錄檔的事件。 只有當控制器指定會話的即時記錄模式時,您才能即時取用事件。 基於效能考慮,不建議在 Windows Vista 之前進行即時處理。

若要指定您要處理事件的追蹤會話,請使用 EVENT_TRACE_LOGFILE 結構。 您必須針對要處理的每個記錄檔或即時會話,初始化這個結構的複本。

若要取用記錄檔中的事件,請將 LogFileName 成員設定為記錄檔的名稱。 若要從即時會話取用事件,請將 LoggerName 成員設定為會話名稱。 您也可以使用此結構來指定 BufferCallback 回 呼和用來處理事件的 EventCallbackEventRecordCallback 回 呼。

  • EventRecordCallback— 接收和處理所有事件 (包括來自一或多個記錄檔和即時會話的標頭事件) 。 如果您使用追蹤資料協助程式函式來剖析事件資料,或想要擷取事件的相關中繼資料,您可以實作此回呼。
  • EventCallback— 接收和處理所有事件, (包括來自一或多個記錄檔和即時會話的標頭事件) 。
  • BufferCallback— 接收和處理目前緩衝區的相關摘要資訊,例如事件遺失。 ETW 會在將緩衝區中的所有事件傳遞給取用者之後呼叫回呼。 取用者也可以使用此回呼來取消事件處理;不過,如果您要即時取用事件,ETW 會傳遞事件,直到控制器停止會話為止。

定義一或多個追蹤會話之後,請針對您要處理的每個追蹤會話呼叫 OpenTrace 函式;您可以從一或多個記錄檔處理事件,但只能處理來自一個即時會話的事件。 接著,您會傳遞 OpenTrace 傳回 至 ProcessTrace 函式的追蹤會話控制碼清單。 ProcessTrace函式會結合事件、將它們依時間順序排序,然後一次將它們傳遞給一個回呼。 您可以篩選事件,只包含使用 StartTimeEndTime 參數進入特定時間範圍的事件。 ProcessTrace函式會封鎖執行緒,直到取用者處理追蹤會話中的所有事件、BufferCallback會傳回FALSE,或您呼叫CloseTrace為止。

在 Windows Vista 之前: 您只能在 ProcessTrace 傳回之後呼叫 CloseTrace

如需示範如何使用資訊清單、MOF 或 TMF 檔案發佈的事件範例,請參閱 使用 TDH 擷取事件資料。 請注意,從 Windows Vista 開始,您應該使用追蹤資料協助程式 (TDH) 函式來取用事件。

如需示範如何使用 MOF 發行之事件的範例,請參閱 使用 MOF 擷取事件資料