共用方式為


記錄模式常數

下列常數代表事件追蹤會話的可能記錄模式。

常數用於 LogFileMode 成員的 EVENT_TRACE_LOGFILEEVENT_TRACE_PROPERTIESTRACE_LOGFILE_HEADER 結構。 這些常數定義於 Evntrace.h 頭檔中。

模式 描述
EVENT_TRACE_FILE_MODE_NONE (0x00000000) EVENT_TRACE_FILE_MODE_SEQUENTIAL 相同,且未指定檔案大小上限。
EVENT_TRACE_FILE_MODE_SEQUENTIAL (0x00000001) 依序將事件寫入記錄檔案, 當檔案達到其最大大小時停止。請勿與 EVENT_TRACE_FILE_MODE_CIRCULAREVENT_TRACE_FILE_MODE_NEWFILE一起使用。
EVENT_TRACE_FILE_MODE_CIRCULAR (0x00000002) 將事件寫入記錄檔。 檔案到達最大大小後,最舊的事件會被新傳入的事件取代。請注意,在多處理器計算機上,循環記錄檔的內容可能會顯示為無序。
請勿搭配 EVENT_TRACE_FILE_MODE_APPENDEVENT_TRACE_FILE_MODE_NEWFILEEVENT_TRACE_FILE_MODE_SEQUENTIAL使用。
EVENT_TRACE_FILE_MODE_APPEND (0x00000004) 將事件附加至現有的循序記錄檔。 如果檔案不存在,則會建立它。 只有當您為時鐘解析指定 系統時間,否則 ProcessTrace 會傳回時間戳不正確的事件。 使用 EVENT_TRACE_FILE_MODE_APPEND時,必須明確提供 BufferSizeNumberOfProcessorsClockType 的值,而且必須在記錄器和附加的檔案中相同。
請勿搭配 EVENT_TRACE_REAL_TIME_MODEEVENT_TRACE_FILE_MODE_CIRCULAREVENT_TRACE_FILE_MODE_NEWFILEEVENT_TRACE_PRIVATE_LOGGER_MODE使用。
Windows 2000: 不支援此值。
EVENT_TRACE_FILE_MODE_NEWFILE (0x00000008) 當檔案達到大小上限時,自動切換至新的記錄檔。 必須設定 MaximumFileSize 成員,即 EVENT_TRACE_PROPERTIES。指定的檔名必須是格式化字串(例如,字串必須包含一個 %d,例如 c:\\test%d.etl)。 每次建立新檔案時,都會遞增計數器,並使用其值、更新格式化字串,並將產生的字串當做檔名使用。
私人事件追蹤會話不允許使用此選項,也不應該用於NT核心記錄器會話。
請勿搭配 EVENT_TRACE_FILE_MODE_CIRCULAREVENT_TRACE_FILE_MODE_APPENDEVENT_TRACE_FILE_MODE_SEQUENTIAL使用。
Windows 2000: 不支援此值。
EVENT_TRACE_FILE_MODE_PREALLOCATE(0x000020) 預留 EVENT_TRACE_PROPERTIES.MaximumFileSize 位元組的磁碟空間以供記錄檔使用。 檔案會在記錄期間佔用整個空間,用於迴圈和循序記錄檔。 當您停止會話時,記錄檔會縮減為所需的大小。 您必須設定 EVENT_TRACE_PROPERTIES。MaximumFileSize
您無法將該模式用於私人事件追蹤工作階段。
Windows 2000: 不支援此值。
EVENT_TRACE_NONSTOPPABLE_MODE(0x00000040) 無法停止記錄會話。 只有 Autologger 支援此模式。Windows Vista 和更新版本支援此選項。
.
EVENT_TRACE_SECURE_MODE(0X00000080) 限制只有具有 TRACELOG_LOG_EVENT 許可權的人才能將事件記錄到會話中。 Windows Vista 和更新版本支援此選項。
EVENT_TRACE_REAL_TIME_MODE (0x00000100) 即時將事件傳遞給取用者。 事件是在緩衝區排清時傳遞,而不是在提供者寫入事件時。 如果沒有取用者取用事件,就不應該啟用即時模式,因為對記錄事件的呼叫最終會在緩衝區滿時失敗。 在 Windows Vista 之前,如果未取用事件,則會捨棄事件。請勿在 Windows XP 或Windows Server 2003 的一個進程中指定多個實時取用者。 相反地,讓一個執行緒消耗事件,並將事件散發給其他執行緒。
Windows Vista 之前: 您不應該使用即時模式,因為支援的事件速率遠低於從記錄檔讀取(可能會卸除事件)。 此外,具有多個處理器的計算機上不保證事件順序。 即時模式更適合低流量的通知類型事件。

您可以將此模式與其他記錄檔模式結合;不過,請勿搭配EVENT_TRACE_PRIVATE_LOGGER_MODE使用此模式。 請注意,如果您將此模式與其他記錄檔模式結合,則會每秒排清一次緩衝區,導致部分填滿的緩衝區寫入您的記錄檔。 例如,如果您使用 64k 緩衝區,而且記錄速率是每秒 1 個事件,服務會將 64k/秒寫入記錄檔。
EVENT_TRACE_DELAY_OPEN_FILE_MODE(0x00000200) 此模式用來延遲開啟記錄檔,直到事件發生為止。
附注:
在 Windows Vista 或更新版本上,此模式不適用,而且不應該使用。
EVENT_TRACE_BUFFERING_MODE (0x00000400) 此模式會將事件寫入迴圈記憶體緩衝區。 寫入超過緩衝區總容量的事件會移除緩衝區中仍保留的最舊事件。 此記憶體緩衝區的大小是 MinimumBuffersBufferSize 的乘積(請參閱 EVENT_TRACE_PROPERTIES)。由於此公式,任何使用 EVENT_TRACE_BUFFERING_MODE 的緩衝區都會忽略 MaximumBuffers 值。
事件不會寫入記錄檔或實時傳遞,而 ETW 不會排清緩衝區。 若要取得緩衝區的快照集,請呼叫 FlushTrace 函式。
此模式特別適用於偵錯設備驅動器,並搭配使用 WMITrace 核心調試程序擴充功能來檢視記憶體內部緩衝區的內容。
請勿搭配 EVENT_TRACE_FILE_MODE_SEQUENTIALEVENT_TRACE_FILE_MODE_CIRCULAREVENT_TRACE_FILE_MODE_APPENDEVENT_TRACE_FILE_MODE_NEWFILEEVENT_TRACE_REAL_TIME_MODE使用。
EVENT_TRACE_PRIVATE_LOGGER_MODE (0x00000800) 建立使用者模式事件追蹤會話,該會話會在與事件追蹤提供者相同的進程中執行。 緩衝區的記憶體來自程序的記憶體。 不需要來自核心之數據的處理程式,可以使用私人事件追蹤會話來消除與內核模式轉換相關聯的額外負荷。
如果提供者是由多個進程註冊,ETW 會將進程標識元附加至記錄檔名稱,以建立唯一的記錄檔名稱。 例如,如果控制器將記錄檔名稱指定為 c:\mylogs\myprivatelog.etl,ETW 會將記錄檔建立為 c:\mylogs\myprivatelog.etl_nnnn,其中 nnnn 是進程標識符。 進程標識碼不會附加至註冊提供者的第一個進程,它只會附加至註冊提供者的後續進程。
私有事件追蹤會話具有下列限制:
  • 私用會話只能記錄其執行中進程線程的事件。
  • 每個進程最多可以有八個私人工作階段。
  • 私人會話無法與即時傳遞搭配使用。
  • 私人工作階段所產生的事件不包含內核模式與使用者模式指示的運行時間,或所用 CPU 時間的線程層級詳細數據。
啟動整個系統的私人記錄器時,進程標識元篩選和可執行檔名稱篩選現在可以傳入會話控制 API。 為了在跨過程情境中取得最佳結果,會話期間應將相同的過濾器傳遞給每個控制操作,包括提供者的啟用/禁用呼叫。 請注意,篩選條件的格式與 EnableTraceEx2 所取用的格式相同,
您可以將此模式與 EVENT_TRACE_PRIVATE_IN_PROC 模式搭配使用。
在 Windows 10 版本 1703 之前: 只有 LocalSystem、系統管理員,以及在提升許可權進程執行之系統管理員群組中的使用者,可以建立私人會話。 如果您包含 EVENT_TRACE_PRIVATE_IN_PROC 旗標,則任何使用者可以建立進程內私人會話。 此外,在舊版的 Windows 中,每個進程只能有一個私人工作階段(除非同時指定EVENT_TRACE_PRIVATE_IN_PROC模式,在此情況下,您最多可以建立三個跨進程私人工作階段)。
在 Windows Vista 之前 :效能記錄使用者群組中的 使用者也可以建立私人會話。

請勿搭配EVENT_TRACE_REAL_TIME_MODE使用。
在 Windows 7 和 Windows Server 2008 R2 之前 請勿與EVENT_TRACE_FILE_MODE_NEWFILE搭配使用。
EVENT_TRACE_ADD_HEADER_MODE(0x00001000) 此選項會將標頭新增至記錄檔。
附注:
在 Windows Vista 或更新版本上,此模式不適用,而且不應該使用。
EVENT_TRACE_USE_KBYTES_FOR_SIZE(0x00002000) 使用 KB 作為量值單位來指定檔案的大小。 測量的預設單位為 MB。 此模式適用於 AutoLogger 工作階段的 MaxFileSize 登錄值,以及 EVENT_TRACE_PROPERTIES中的 MaximumFileSize 成員。 Windows Vista 和更新版本支援此選項。
EVENT_TRACE_USE_GLOBAL_SEQUENCE(0x00004000) 使用在所有事件追蹤會話中都唯一的序號。 此模式僅適用於使用 traceMessage函式記錄的事件。 如需詳細資訊,請參閱 TraceMessage 以取得使用量詳細數據。
EVENT_TRACE_USE_GLOBAL_SEQUENCEEVENT_TRACE_USE_LOCAL_SEQUENCE 互為排斥。
Windows 2000: 不支援此值。
EVENT_TRACE_USE_LOCAL_SEQUENCE (0x00008000) 針對單一事件追蹤會話使用獨特的序列號。 此模式僅適用於使用 traceMessage函式記錄的事件。 如需詳細資訊,請參閱 TraceMessage 以取得使用量詳細數據。
EVENT_TRACE_USE_GLOBAL_SEQUENCEEVENT_TRACE_USE_LOCAL_SEQUENCE 是互斥的。
Windows 2000: 不支援此值。
EVENT_TRACE_RELOG_MODE (0x00010000) 記錄事件,而不包括 EVENT_TRACE_HEADER附注:
不應該使用此模式。 保留供內部使用。
Windows 2000: 不支援此值。
EVENT_TRACE_PRIVATE_IN_PROC (0x00020000) EVENT_TRACE_PRIVATE_LOGGER_MODE 模式搭配使用,以啟動私人會話。 此模式會強制只有註冊提供者 GUID 的程序能以該 GUID 啟動記錄器會話。
每個進程最多可以建立三個進程內私人會話。
Windows Vista 和更新版本支援此選項。
EVENT_TRACE_MODE_RESERVED(0x00100000) 此選項可用來發出堆積和重要區段追蹤的訊號。 Windows Vista 和更新版本支援此選項。
EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN(0x00400000) 此選項會在混合式關機時停止記錄。 如果未指定 EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWNEVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN,ETW 會根據呼叫端是否來自會話 0 選擇預設值。Windows 8 和 Windows Server 2012 支援此選項。
EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN(0x00800000) 此選項會繼續記錄混合式關機。 如果未指定 EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWNEVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN,ETW 會根據呼叫端是否來自會話 0 選擇預設值。Windows 8 和 Windows Server 2012 支援此選項。
EVENT_TRACE_USE_PAGED_MEMORY (0x01000000) 使用分頁記憶體。 建議使用此設定,讓事件不會使用非分頁記憶體。非分頁緩衝區會針對緩衝區空間使用非分頁記憶體。 因為非分頁緩衝區從不會被分頁處理,因此記錄會話的執行效能良好。 使用可分頁緩衝區會耗用較少的資源。
內核模式提供者和系統記錄器無法將事件記錄到指定為此記錄模式的會話中。
如果已設定 EVENT_TRACE_PRIVATE_LOGGER_MODE,則會忽略此模式。
您無法搭配 NT 核心記錄器使用此模式。
Windows 2000: 不支援此值。
EVENT_TRACE_SYSTEM_LOGGER_MODE(0x02000000) 此選項會從 SystemTraceProvider 接收事件。 如果 StartTraceProperties 參數 LogFileMode 包含此旗標,記錄器將會是系統記錄器。Windows 8 和 Windows Server 2012 支援此選項。
EVENT_TRACE_INDEPENDENT_SESSION_MODE(0x08000000) 表示記錄會話不應因其他會話中的 EventWrite 失敗而受到影響。 如果沒有這個旗標,如果事件無法發佈至啟用提供者的其中一個會話,事件將不會發佈至任何會話。 設定此旗標時,若無法將事件寫入某個會話,EventWrite 函式在其他工作階段中不會傳回錯誤碼。
請勿搭配 EVENT_TRACE_PRIVATE_LOGGER_MODE使用。
Windows 8.1、Windows Server 2012 R2 和更新版本支援此選項。
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING (0x10000000) 將記錄在不同處理器上的事件寫入至一般緩衝區。 使用此模式可以消除在不同處理器上使用系統時間發佈事件時,事件顯示順序混亂的問題。 此模式也可以消除環狀日誌在多處理器電腦上遺失事件的問題。
如果您不使用此模式,而使用系統時間,則在多個處理器的電腦上,事件可能會出現順序紊亂的情況。 這是因為 ETW 緩衝區與處理器相關聯,而不是線程。 因此,如果線程從一個CPU切換到另一個CPU,則與後一個CPU相關聯的緩衝區可以在與先前CPU相關聯的緩衝區之前排清到磁碟。
如果您預期會有大量的事件(例如每秒超過1,000個事件),則不應該使用此模式。
請注意,處理器編號不包含在 事件中。
Windows 7、Windows Server 2008 R2 及更新版本支援此選項。
EVENT_TRACE_ADDTO_TRIAGE_DUMP(0x80000000) 此選項將 ETW 緩衝區新增至診斷傾印。 Windows 8 和 Windows Server 2012 支援此選項。