設定和啟動事件追蹤會話

若要設定事件追蹤會話,請使用 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結構都可以使用事件承載、範圍和堆疊逐步解說篩選準則,以篩選記錄器會話中的特定條件。 如需事件承載篩選的詳細資訊,請參閱 TdhCreatePayloadFilterTdhAggregatePayloadFilters 函式和 ENABLE_TRACE_PARAMETERSEVENT_FILTER_DESCRIPTORPAYLOAD_FILTER_PREDICATE 結構。

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

  • Logman查詢提供者名稱
  • Wevtutilgpprovider-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

更新事件追蹤會話