設定和啟動自動記錄器會話
AutoLogger 事件追蹤會話會記錄操作系統開機程式早期發生的事件。 應用程式和設備驅動器可以使用 AutoLogger 工作階段,在使用者登入之前擷取追蹤。 請注意,某些設備驅動器,例如磁碟設備驅動器,不會在 AutoLogger 作業階段開始時載入。
AutoLogger 與全域記錄器不同,方式如下:
- 您可以指定一或多個自動記錄器會話(全域記錄器是每個人記錄事件的單一會話)。
- 當會話啟動時,AutoLogger 會將啟用通知傳送給提供者(全域記錄器未傳送啟用通知給提供者,因此提供者必須依賴其他方法來知道是否啟動全域記錄器會話,才能開始記錄事件)。
- AutoLogger 不支持記錄 NT 核心記錄器事件(請參閱 EVENT_TRACE_PROPERTIES 的 EnableFlags 成員)。 若要記錄NT核心記錄器事件,您必須使用 全域記錄器。
如需全域記錄器檢視的詳細資訊,請參閱 設定和啟動全域記錄器會話。
注意
ETW 支援 Windows Vista 和更新版本的 AutoLogger。 在 舊版操作系統上使用全域記錄器 。
您可以使用登錄來設定 AutoLogger 工作階段。 如果登錄機碼不存在,請新增下列登錄機碼:
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\WMI
\Autologger
在 [ 自動記錄器 ] 密鑰底下,針對您想要設定的每個 AutoLogger 工作階段建立密鑰,如下列範例所示。
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\WMI
\Autologger
\Logger Session A
\Logger Session B
\Logger Session C
針對每個會話,為每個您想要啟用會話的提供者建立密鑰。 使用提供者的 GUID 作為金鑰。
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\WMI
\Autologger
\Logger Session A
\{ProviderGuid1}
\{ProviderGuid2}
\Logger Session B
\Logger Session C
下表描述您可以為每個 AutoLogger 工作階段定義的值。 您必須具有系統管理員許可權,才能指定這些登錄值。 Start 和 Guid 值是唯一啟動 AutoLogger 工作階段所需的值;如果登錄中沒有該值,所有其他值都會有預設設定。 一般而言,您應該使用預設值。 如果您指定 ETW 不支援的值,ETW 將會覆寫此值。
值 | 類型 | 描述 |
---|---|---|
BufferSize | REG_DWORD | 每個緩衝區的大小,以 KB 為單位。 應小於一 MB。 ETW 會使用物理記憶體的大小來計算此值。 |
ClockType | REG_DWORD | 記錄每個事件的時間戳時要使用的定時器。
Windows Vista 和更新版本的預設值為 1(性能計數器值)。 在 Windows Vista 之前,預設值為 2 (系統定時器)。 |
DisableRealtimePersistence | REG_DWORD | 若要停用即時持續性,請將此值設定為 1。 即時會話的預設值為 0(已啟用)。 如果已啟用即時持續性,則會保存電腦關機時未傳遞的即時事件。 然後,當取用者連接到會話時,事件就會傳遞給取用者。 |
FileCounter | REG_DWORD | 請勿設定或修改此值。 如果 指定 FileMax ,這個值是用來遞增記錄檔名稱的序號。 如果值無效,則會假設為1。 |
FileName | REG_SZ | 記錄檔的完整路徑。 此檔案的路徑必須存在。 記錄檔是循序記錄檔。 路徑限制為 1024 個字元。 如果未 指定 FileName ,事件會寫入 %SystemRoot%\System32\LogFiles\WMI |
FileMax | REG_DWORD | ETW 所建立之記錄檔的實例數目上限。 如果 FileName 中指定的記錄檔存在,ETW 會將 FileCounter 值附加至檔名。 例如,如果使用默認記錄檔名稱,則窗體為 %SystemRoot%\System32\LogFiles\WMI 支持的記錄檔實例數目上限為16。 請勿將此功能與EVENT_TRACE_FILE_MODE_NEWFILE記錄檔模式搭配使用。 |
FlushTimer | REG_DWORD | 以秒為單位,追蹤緩衝區的強制排清頻率。 排清時間下限為1秒。 這個強制排清除了當緩衝區已滿且追蹤會話停止時發生的自動排清之外。 針對實時記錄器的情況,零值(預設值)表示排清時間會設定為1秒。 實時記錄器是在 LogFileMode 設定為EVENT_TRACE_REAL_TIME_MODE時。 預設值是 0。 根據預設,只有在緩衝區已滿時,才會排清緩衝區。 |
GUID | REG_SZ | 字串,包含可唯一識別會話的 GUID。 數值是必要項。 |
LogFileMode | REG_DWORD | 指定一或多個記錄模式。 如需可能的值,請參閱 記錄模式常數。 預設值為 EVENT_TRACE_FILE_MODE_SEQUENTIAL。 您可以指定 EVENT_TRACE_BUFFERING_MODE 或 EVENT_TRACE_REAL_TIME_MODE,而不是寫入記錄檔。 指定 EVENT_TRACE_BUFFERING_MODE 可避免在檔案系統可用時將會話內容排清至磁碟的成本。 請注意,使用 EVENT_TRACE_BUFFERING_MODE會導致系統忽略 MaximumBuffers 值,因為緩衝區大小是 MinimumBuffers 和 BufferSize 的乘積。 AutoLogger 會話不支援 EVENT_TRACE_FILE_MODE_NEWFILE 記錄模式。 如果 指定EVENT_TRACE_FILE_MODE_APPEND , 則必須明確提供 BufferSize ,而且在記錄器和要附加的檔案中必須相同。 |
MaxFileSize | REG_DWORD | 記錄檔的檔案大小上限,以 MB 為單位。 除非您處於循環記錄檔模式,否則達到大小上限時,會話就會關閉。 若要指定沒有限制,請將值設定為 0。 如果未設定,則預設值為100 MB。 達到檔案大小上限時所發生的行為取決於 LogFileMode 的值。 |
MaximumBuffers | REG_DWORD | 要配置的緩衝區數目上限。 一般而言,此值是緩衝區數目下限加上 20。 ETW 會使用緩衝區大小和物理記憶體大小來計算此值。 此值必須大於或等於 MinimumBuffers 的值。 |
MinimumBuffers | REG_DWORD | 在啟動時配置的緩衝區數目下限。 您可以指定的緩衝區數目下限是每個處理器的兩個緩衝區。 例如,在單一處理器計算機上,緩衝區數目下限為兩個。 |
啟動 | REG_DWORD | 若要在下次重新啟動電腦時啟動 AutoLogger 工作階段,請將此值設定為 1;否則,請將此值設定為 0。 |
狀態 | REG_DWORD | AutoLogger 的啟動狀態。 如果 AutoLogger 無法啟動,則此機碼的值是適當的 Win32 錯誤碼。 如果 AutoLogger 已成功啟動,則此機碼的值會 ERROR_SUCCESS (0)。 |
引導 | REG_DWORD | 這項功能不應該在偵錯案例之外使用。 如果此登錄機碼設定為 1,則自動記錄器會在核心初始化期間早於正常啟動,以在初始化許多重要核心子系統期間擷取事件。 不過, 啟用此選項會對開機時間 產生負面影響,並對自動記錄器施加額外的限制。 如果啟用此功能,則必須填入自動記錄程式會話 GUID,而且許多其他自動記錄工具設定可能無法運作。 Windows Server 2022 和更新版本支援此密鑰。 |
下表描述您可以針對您想要啟用會話的每個提供者所定義的值。 您必須具有系統管理員許可權,才能指定這些登錄值。 如果您指定 ETW 不支援的值,ETW 將會覆寫此值。
值 | 類型 | 描述 |
---|---|---|
已啟用 | REG_DWORD | 判斷提供者是否已啟用。 若要啟用提供者,請將此值設定為 1。 若要停用提供者,請將此值設定為 0。 預設值是 0。 |
EnableFlags | REG_DWORD | 提供者定義的值,指定提供者產生事件的事件類別。 如需詳細資訊,請參閱 EnableTrace 函式的 EnableFlags 參數。 如果提供者不支援 MatchAnyKeyword 或 MatchAllKeyword,請指定這個值名稱。 |
EnableLevel | REG_DWORD | 提供者定義的值,指定事件中包含的詳細數據層級。 例如,您可以使用此值來指出提供者產生的事件嚴重性層級(資訊、警告、錯誤)。 如需預先定義的層級清單,請參閱 EnableTraceEx 函式的 level 參數。 |
EnableProperty | REG_DWORD | 使用此值在記錄檔中包含下列一或多個專案:
|
MatchAnyKeyword | REG_QWORD | 關鍵詞的位掩碼,可決定您想要提供者寫入的事件類別。 如果事件的任何關鍵詞位符合此遮罩中設定的任何位,提供者會寫入事件。 若要指定提供者寫入所有事件,請將此值設定為零。 如需範例,請參閱 EnableTraceEx 函式的一節。 |
MatchAllKeyword | REG_QWORD | 此位掩碼是選擇性的。 此遮罩會進一步限制您想要提供者寫入的事件類別。 如果事件的關鍵詞符合 MatchAnyKeyword 條件,則提供者只有在事件關鍵詞中存在此遮罩中的所有位時,才會寫入事件。 如果 MatchAnyKeyword 為零,則不會使用此遮罩。 如需範例,請參閱 EnableTraceEx 函式的一節。 |
修改登錄之後,下次重新啟動計算機時,就會啟動 AutoLogger 工作階段。 AutoLogger 會話會呼叫 EnableTraceEx 函式來啟用提供者。
AutoLogger 會話會增加系統開機時間,而且應該謹慎使用。 想要在開機程式期間擷取資訊的服務應考慮將控制器邏輯新增至本身,而不是使用 AutoLogger 會話。
若要停止 AutoLogger 工作階段,請呼叫 ControlTrace 函式。 您傳遞給函式的工作階段名稱是您用來在登入中定義工作階段的登入機碼名稱。
如需啟動事件追蹤會話的詳細資訊,請參閱 設定和啟動事件追蹤會話。
如需啟動私人記錄器會話的詳細資訊,請參閱 設定和啟動私人記錄器會話。
如需啟動NT核心記錄器會話的詳細資訊,請參閱 設定和啟動NT核心記錄器會話。