共用方式為


取用事件 (事件追蹤)

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

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

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

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

定義一或多個追蹤會話之後,請針對您要處理的每個追蹤會話呼叫 OpenTrace 函式;您可以處理一或多個記錄檔的事件,但只能處理一個即時會話的事件。 接著,您會將 OpenTrace 所返回的追蹤會話句柄列表傳遞至 ProcessTrace 函式。 ProcessTrace 函式會結合事件,將它們按時間順序排序,然後逐一傳遞給回呼函數。 您可以使用 開始時間結束時間 參數篩選事件,以僅包含特定時間範圍內的事件。 ProcessTrace 函式會封鎖執行緒,直到消費者處理追蹤會話中的所有事件、BufferCallback 傳回 FALSE,或您呼叫 CloseTrace

在 Windows Vista 之前 只有在 ProcessTrace 傳回之後,您才能呼叫 CloseTrace

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

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