EnableTrace 函式 (evntrace.h)

追蹤會話控制器會呼叫 EnableTrace ,以設定 ETW 事件提供者如何將事件記錄到追蹤會話。

此函式已過時。 EnableTraceEx2函式會取代此函式。

語法

ULONG WMIAPI EnableTrace(
  [in] ULONG       Enable,
  [in] ULONG       EnableFlag,
  [in] ULONG       EnableLevel,
  [in] LPCGUID     ControlGuid,
  [in] TRACEHANDLE TraceHandle
);

參數

[in] Enable

設定為 1,以啟用從提供者接收事件,或調整從提供者接收事件時所使用的設定 (,例如變更層級和關鍵字) 。 設定為 0,以停用來自提供者的接收事件。

[in] EnableFlag

32 位的關鍵字遮罩,決定您想要提供者寫入的事件類別。 除了符合EnableLevel critera 之外,提供者通常會寫入事件,如果事件的關鍵字位符合此值中設定的任何位,或事件沒有設定任何關鍵字位,則此事件通常會寫入事件。

注意

EventRegister 型提供者支援 64 位關鍵字。 使用 EnableTraceEx2 來啟用使用 64 位 MatchAnyKeyword 遮罩 的提供者。

[in] EnableLevel

值,表示您想要提供者寫入的事件層級上限。 除了符合 EnableFlag 準則之外,提供者通常會在事件層級小於或等於此值時寫入事件。

此值的範圍應該是 1 到 255。 Microsoft 定義層級 1-5 的語意,如下所示。 較低的值表示更嚴重的事件。 EnableLevel的每個值都會啟用指定的層級和更嚴重層級。 例如,如果您指定 TRACE_LEVEL_WARNING ,則取用者會收到警告、錯誤和重大事件。

意義
TRACE_LEVEL_CRITICAL (1) 異常結束或終止事件
TRACE_LEVEL_ERROR (2) 嚴重錯誤事件
TRACE_LEVEL_WARNING (3) 配置失敗等警告事件
TRACE_LEVEL_INFORMATION (4) 非錯誤資訊事件
TRACE_LEVEL_VERBOSE (5) 詳細的診斷事件

TRACE_LEVEL常數定義于evntrace.h中。 對等 WINMETA_LEVEL 常數定義于 winmeta.h中。

[in] ControlGuid

您想要啟用或停用之事件提供者的控制項 GUID (提供者識別碼) 。

[in] TraceHandle

您要設定提供者的事件追蹤會話控制碼。 StartTrace函式會在啟動新的追蹤時傳回此控制碼。 若要取得現有追蹤的控制碼,請使用ControlTrace根據追蹤的名稱查詢追蹤屬性,然後從傳 EVENT_TRACE_PROPERTIES 回資料的Wnode.HistoricalCoNtext欄位取得控制碼。

傳回值

如果函式成功,傳回值會ERROR_SUCCESS。

如果函式失敗,傳回值就是其中一個 系統錯誤碼。 以下是一些常見的錯誤及其原因。

  • ERROR_INVALID_PARAMETER

    以下其中一項為正確:

    • ControlGuidNull
    • TraceHandleNull
  • ERROR_INVALID_FUNCTION

    當提供者未註冊時,您無法變更啟用旗標和層級。

  • ERROR_WMI_GUID_NOT_FOUND

    未註冊提供者。 發生于安裝 KB307331 或 Windows 2000 Service Pack 4 且未註冊提供者時。 若要避免此錯誤,必須先註冊提供者。

  • ERROR_NO_SYSTEM_RESOURCES

    超過可啟用提供者的追蹤會話數目。

  • ERROR_ACCESS_DENIED

    只有具有系統管理許可權、群組中的 Performance Log Users 使用者,以及以 LocalSystemLocalService 執行的服務,或 NetworkService 可以啟用跨進程會話的事件提供者。 若要授與受限制的使用者啟用事件提供者的能力,請將他們新增至 Performance Log Users 群組或查看 EventAccessControl

    Windows XP 和 Windows 2000: 任何人都可以啟用事件提供者。

備註

事件追蹤控制器會呼叫此函式,以設定將事件寫入會話的事件提供者。 例如,控制器可能會呼叫此函式以開始從提供者收集事件、調整從提供者收集之事件的層級或關鍵字,或停止從提供者收集事件。

此函式已過時。 如需其他功能,新的程式碼應該使用 EnableTraceEx2

下列兩個函式呼叫相等:

// Obsolete:
Status = EnableTrace(
    Enable,
    EnableFlag,
    EnableLevel,
    ControlGuid,
    TraceHandle);

// Updated equivalent code:
Status = EnableTraceEx2(
    TraceHandle,
    ControlGuid,
    Enable,      // ControlCode
    EnableLevel,
    EnableFlag,  // MatchAnyKeyword
    0,           // MatchAllKeyword
    0,           // Timeout
    NULL);       // EnableParameters

如需設定會話提供者語意的其他詳細資料,請參閱 EnableTraceEx2的檔。

需求

   
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 evntrace.h
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

StartTrace

EnableTraceEx2