共用方式為


FlushTraceW 函式 (evntrace.h)

FlushTrace 函式會導致事件追蹤會話立即傳遞指定會話的緩衝事件。 根據預設,事件追蹤會話會在緩衝區已滿、工作階段的 FlushTimer 到期或會話關閉時傳遞事件。

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

語法

ULONG WMIAPI FlushTraceW(
            CONTROLTRACE_ID         TraceId,
  [in]      LPCWSTR                 InstanceName,
  [in, out] PEVENT_TRACE_PROPERTIES Properties
);

參數

TraceId

[in] InstanceName

要排清的事件追蹤會話名稱,或 NULL。 如果 TraceHandle 為 0,您必須指定 InstanceName

若要指定NT核心記錄器會話,請將 InstanceName 設定為 KERNEL_LOGGER_NAME

[in, out] Properties

初始化 EVENT_TRACE_PROPERTIES 結構的指標。

如果您使用新初始化的結構,則只需要設定結構的 Wnode.BufferSizeWnode.GuidLoggerNameOffsetLogFileNameOffset 成員。 您可以使用最大會話名稱 (1024 個字元) 和最大記錄檔名稱 (1024 個字元,) 長度來計算緩衝區大小和位移。

在輸出上,結構會接收事件追蹤會話的屬性設定和會話統計數據,以反映排清之後的會話狀態。

傳回值

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

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

  • ERROR_INVALID_PARAMETER

    以下其中一項為正確:

    • 屬性NULL
    • InstanceNameTraceHandle 都是 NULL
    • InstanceNameNULL ,且 TraceHandle 不是有效的句柄。
  • ERROR_BAD_LENGTH

    以下其中一項為正確:

    • PropertiesWnode.BufferSize 成員會指定不正確的大小。
    • 屬性 沒有足夠的空間配置來保存會話名稱和記錄檔名稱的複本, (如果使用) 。
  • ERROR_ACCESS_DENIED

    只有具有系統管理許可權、效能記錄使用者群組中的使用者,以及以LocalSystem、LocalService、NetworkService 執行的服務,才能控制事件追蹤會話。 若要授與受限制的使用者控制追蹤會話的能力,請將它們新增至 [效能記錄使用者] 群組。

    Windows XP 和 Windows 2000: 任何人都可以控制追蹤會話。

備註

事件追蹤控制器會呼叫此函式。

此函式已過時。 請改用 ControlTrace 搭配 ControlCode 設定為 EVENT_TRACE_CONTROL_FLUSH

此函式可與記憶體內部會話搭配使用, (從 EVENT_TRACE_BUFFERING_MODE 旗標開始的會話) ,將數據從追蹤寫入檔案。

您通常不需要排清檔案型或即時會話,因為 ETW 會在緩衝區已滿 (時自動排清緩衝區,亦即當它沒有空間供下一個事件) 、追蹤會話的 FlushTimer 到期或追蹤工作階段關閉時。

請勿從 DllMain (呼叫 FlushTrace 可能會導致死結) 。

注意

evntrace.h 標頭會將 FlushTrace 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

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

另請參閱

ControlTrace