記錄模式常數

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

常數會用於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_CIRCULAREVENT_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支援此選項。