設定和啟動事件追蹤會話

若要設定事件追蹤會話,請使用 EVENT_TRACE_PROPERTIES 結構來指定會話的屬性。 您配置給 EVENT_TRACE_PROPERTIES 結構的記憶體必須夠大,才能包含記憶體中結構後面的會話和記錄檔名稱。

指定工作階段的屬性之後,請呼叫 StartTrace 函 式來啟動工作階段。 如果函式成功, SessionHandle 參數會包含會話句柄,而 LoggerNameOffset 屬性會包含會話名稱的位移。

若要啟用您想要將事件記錄至會話的提供者,請呼叫 EnableTrace 函式以啟用傳統提供者和 EnableTraceEx 函式,以啟用 以指令清單為基礎的 提供者。 若要啟用您想要將事件記錄至會話篩選 Windows 8.1、Windows Server 2012 R2 及更新版本的特定條件的提供者,請呼叫 EnableTraceEx2 函式。

此外,您也可以使用對 TraceSetInformation 函式的呼叫來追蹤事件的其他資訊。 TraceSetInformation 會將其他追蹤資訊放入事件的擴充數據區段中,並可包含追蹤版本資訊等資訊,或系統上目前註冊的提供者。 如需詳細資訊,請參閱 擷取其他事件追蹤數據

最多八個追蹤會話可以啟用和接收來自相同 指令清單型 提供者的事件。 不過,只有一個 追蹤會話可以啟用傳統 提供者。 如果多個追蹤會話嘗試啟用傳統提供者,第一個會話會在第二個會話啟用提供者時停止接收事件。 例如,如果已啟用會話 A 的提供者 1,然後啟用工作階段 B 的提供者 1,則只有會話 B 會收到來自提供者 1 的事件。

您可以使用這三個函式中的任何一個來啟用提供者,但如果您使用 EnableTrace 來啟用指令清單型提供者,可能會遺失功能,因為您將無法提供 MatchAllKeyword 值、指定要包含在事件中的擴充數據項,或提供提供者定義的篩選數據。 如需詳細資訊,請參閱每個函式的一節。

在 Windows 8.1、Windows Server 2012 R2 和更新版本上,EnableTraceEx2 函式和ENABLE_TRACE_PARAMETERSEVENT_FILTER_DESCRIPTOR結構可以使用事件承載、範圍和堆疊逐步解說篩選器,以篩選記錄器會話中的特定條件。 如需事件承載篩選的詳細資訊,請參閱 TdhCreatePayloadFilter 和 TdhAggregatePayloadFilters 函式和ENABLE_TRACE_PARAMETERSEVENT_FILTER_DESCRIPTORPAYLOAD_FILTER_PREDICATE結構。

若要判斷用來啟用指令清單型提供者的層級和關鍵詞,請使用下列其中一個命令:

  • Logman 查詢提供者名稱
  • Wevtutil gp provider-name

命令只會列出層級和關鍵詞,提供者必須記錄潛在控制器的任何篩選數據需求。

若要列舉以指令清單為基礎的提供者,請使用Wevtutilep

對於傳統提供者,由提供者提供檔,並提供給潛在的控制器嚴重性層級,或啟用其支援的旗標。 如果提供者想要由任何控制器啟用,提供者應該接受 0 作為嚴重性層級的 0,並啟用旗標,並將 0 解譯為執行默認記錄的要求(可能的話)。

您可以在提供者註冊本身之前或之後啟用提供者。 啟用提供者之後,ETW 會接著呼叫提供者的回調函式。 如果未註冊提供者,ETW 會在註冊本身之後呼叫提供者的回呼函式。

您也可以使用 EnableTrace 函 式來停用提供者(停止將事件記錄到您的工作階段),或更新記錄層級或啟用提供者的旗標。 使用 EnableTraceEx 函式,您可以停用提供者或更新層級、關鍵詞、擴充數據和篩選數據。 每次呼叫 EnableTraceEnableTraceEx 函式時,ETW 都會呼叫提供者的回呼函式。 在會話停用提供者之前,會話仍會啟用提供者。

若要在收集事件之後停止追蹤會話,請呼叫 ControlTrace 函式,並傳遞EVENT_TRACE_CONTROL_STOP作為控件程序代碼。 若要指定要停止的會話,您可以將從先前呼叫 StartTrace 函式取得的事件追蹤會話句柄,或傳遞先前啟動的會話名稱。 在停止會話之前,請務必停用所有提供者。 如果您在第一次停用提供者之前停止會話,ETW 會停用提供者,並嘗試呼叫提供者的控件回呼函式。 如果啟動工作階段的應用程式在未停用提供者或呼叫 ControlTrace 函 式的情況下結束,提供者會保持啟用狀態。

如果 ControlTrace 成功,會話屬性會更新,以反映最終屬性值,並執行事件追蹤會話的統計數據。

如需啟動事件追蹤會話的範例,請參閱下列各項:

如需啟動追蹤會話的詳細資訊,請參閱下列其中一項:

設定和啟動私人記錄器會話

設定和啟動 SystemTraceProvider 工作階段

設定和啟動自動記錄器會話

設定和啟動NT核心記錄器會話

ControlTrace

EnableTrace

EnableTraceEx

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

EVENT_TRACE_PROPERTIES

PAYLOAD_FILTER_PREDICATE

StartTrace

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

更新事件追蹤會話