記錄模式常數

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

常數會用於EVENT_TRACE_LOGFILEEVENT_TRACE_PROPERTIESTRACE_LOGFILE_HEADER結構的LogFileMode成員中。 這些常數定義于 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_PRI加值稅E_LOGGER_MODE使用。
Windows 2000: 不支援此值。
EVENT_TRACE_FILE_MODE_NEWFILE (0x00000008) 當檔案達到大小上限時,自動切換至新的記錄檔。 必須設定EVENT_TRACE_PROPERTIES的 MaximumFileSize成員。例如,指定的檔案名必須是格式化字串 (,字串包含 %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 (0x00000020) 保留 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_PRI加值稅E_LOGGER_MODE搭配使用。 請注意,如果您將此模式與其他記錄檔模式結合,則會每秒排清一次緩衝區,導致部分填滿的緩衝區寫入記錄檔。 例如,如果您使用 64k 緩衝區,而記錄速率是每秒 1 個事件,服務會將 64k/秒寫入記錄檔。
EVENT_TRACE_DELAY_OPEN_FILE_MODE (0x00000200) 此模式可用來延遲開啟記錄檔,直到事件發生為止。
注意:
在 Windows Vista 或更新版本上,此模式不適用,不應使用。
EVENT_TRACE_BUFFERING_MODE (0x00000400) 此模式會將事件寫入迴圈記憶體緩衝區。 寫入超過緩衝區大小總計的事件會收回緩衝區中剩餘的最舊事件。 此記憶體緩衝區的大小是 MinimumBuffersBufferSize 的乘積, (請參閱 EVENT_TRACE_PROPERTIES) .As 此公式的結果,任何使用 EVENT_TRACE_BUFFERING_MODE 的緩衝區都會忽略 MaximumBuffers 值。
事件不會寫入記錄檔或即時傳遞,且 ETW 不會排清緩衝區。 若要取得緩衝區的快照集,請呼叫 FlushTrace 函式。
此模式特別適用于偵錯設備磁碟機,以及使用 WMITrace 核心偵錯工具擴充功能檢視記憶體內部緩衝區的內容。
請勿搭配EVENT_TRACE_FILE_MODE_SEQUENTIALEVENT_TRACE_FILE_MODE_CIRCULAR、EVENT_TRACE_FILE_MODE_APPENDEVENT_TRACE_FILE_MODE_NEWFILEEVENT_TRACE_REAL_TIME_MODE使用。
EVENT_TRACE_PRI加值稅E_LOGGER_MODE (0x00000800) 建立與事件追蹤提供者相同的進程中執行的使用者模式事件追蹤會話。 緩衝區的記憶體來自進程的記憶體。 不需要核心資料的進程,可以使用私人事件追蹤會話來消除與核心模式轉換相關聯的額外負荷。
如果提供者是由多個進程註冊,ETW 會將進程識別碼附加至記錄檔名稱,以建立唯一的記錄檔名稱。 例如,如果控制器將記錄檔名稱指定為 c:\mylogs\myprivatelog.etl,ETW 會將記錄檔建立為 c:\mylogs\myprivatelog.etl_nnnn,其中 nnnn 是進程識別碼。 進程識別碼不會附加至註冊提供者的第一個進程,它只會附加至註冊提供者的後續進程。
私人事件追蹤會話有下列限制:
  • 私人會話只能記錄其執行所在進程的執行緒事件。
  • 每個進程最多可以有八個私人會話。
  • 私人會話無法與即時傳遞搭配使用。
  • 私人會話所產生的事件不包含核心模式與使用者模式指令的執行時間,或所用 CPU 時間的執行緒層級詳細資料。
當系統範圍私人記錄器啟動時,進程識別碼篩選和可執行檔名稱篩選現在可以傳入會話控制 API。 為了達到跨進程案例的最佳結果,會話期間應該將相同的篩選傳遞給每個控制作業,包括提供者啟用/診斷呼叫。 請注意,篩選準則的格式與 EnableTraceEx2所使用的格式相同。
您可以將此模式與 EVENT_TRACE_PRI加值稅E_IN_PROC 模式搭配使用。
在Windows 10 1703 版之前:只有 LocalSystem、系統管理員和系統管理員群組中執行提升許可權的程式使用者可以建立私人會話。 如果您包含 EVENT_TRACE_PRI加值稅E_IN_PROC 旗標,任何使用者都可以建立進程內私人會話。 此外,在舊版 Windows 中,除非同時指定EVENT_TRACE_PRI加值稅E_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_PROPERTIESMaximumFileSize成員。 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_PRI加值稅E_IN_PROC (0x00020000) EVENT_TRACE_PRI加值稅E_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_PRI加值稅E_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_PRI加值稅E_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 支援此選項。