設定和啟動全域記錄器會話

全域記錄器事件追蹤會話會記錄在作業系統開機程式初期發生的事件。 應用程式和設備磁碟機可以使用全域記錄器會話,在使用者登入之前擷取追蹤。 請注意,當全域記錄器會話開始時,不會載入某些設備磁碟機,例如磁片設備磁碟機。

注意

如果您要在 Windows Vista 上建立全域記錄器會話,您應該考慮改為建立 自動記錄器會話

您可以使用登錄來設定全域記錄器會話。 如果尚未存在 ,請將 GlobalLogger 機碼新增至下列登錄機碼:

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI

下表描述您可以為 GlobalLogger 索引鍵定義的值。 您必須具有系統管理員許可權,才能指定這些登錄值。 登錄值會影響記錄事件至全域記錄器會話的所有提供者。 Start值是啟動全域記錄器會話所需的唯一值;所有其他值都有預設設定,如果登錄中沒有值,則會使用這些預設值。 一般而言,您應該使用預設值。 如果您指定 ETW 無法支援的值,ETW 將會覆寫值。

類型 描述
開始 REG_DWORD 在) 上將此值設定為 1 (,以在下一次系統啟動時啟動全域記錄器會話。 若要停止會話開始,請將此值設定為 0 (關閉) 。
BufferSize REG_DWORD 每個緩衝區的大小,以 KB 為單位。 這個值應該小於 1 MB。 ETW 會使用實體記憶體的大小來計算此值。
ClockType REG_DWORD 記錄每個事件的時間戳記時要使用的計時器。
  • 1 = 效能計數器值 (高解析度)
  • 2 = 系統計時器
  • 3 = CPU 週期計數器
如需每個時鐘類型的描述,請參閱WNODE_HEADERClientCoNtext成員。
預設值為 1 (Windows Vista 和更新版本的效能計數器值) 。 在 Windows Vista 之前,預設值為 2 (系統計時器) 。
EnableKernelFlags REG_BINARY 使用此值來啟用一或多個核心提供者。 如果您啟用核心提供者,全域記錄器會話會在啟動時將本身重新命名為 NT 核心記錄器。 如需可能的值,請參閱EVENT_TRACE_PROPERTIESEnableFlags成員。
FileCounter REG_DWORD 全域記錄器會話所產生的事件追蹤記錄檔數目。 系統會遞增此值,直到達到 FileMax的值為止。 然後,它會將值重設為 0。 此計數器可防止系統覆寫全域記錄器追蹤記錄檔。
FileMax REG_DWORD 系統上允許的事件追蹤記錄檔數目上限。 當追蹤記錄數目達到指定的最大值時,系統會開始覆寫記錄,從最舊開始。
如果 FileName 中指定的記錄檔存在,ETW 會將 FileCounter 值附加至檔案名。 例如,如果使用預設記錄檔名稱,則表單為 %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl.NNNN。
預設值為 0,表示沒有最大值。
FileName REG_SZ 記錄檔的完整路徑。 此檔案的路徑必須存在。 記錄檔是循序記錄檔。 請注意,所有將事件寫入全域記錄器會話的提供者都會將事件寫入此記錄檔。 路徑限制為 1024 個字元。如果未指定 FileName ,事件會寫入 %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl。 在 Windows Vista 之前: 預設檔案為 %SystemRoot%\System32\LogFiles\WMI\Trace.log。

FlushTimer REG_DWORD 追蹤緩衝區在幾秒內會強制排清的頻率。 排清時間下限為 1 秒。 這個強制排清除了當緩衝區已滿時以及追蹤會話停止時所發生的自動排清。
如果是即時記錄器,則預設值為零 (預設值) 表示排清時間會設定為 1 秒。 即時記錄器是 LogFileMode 設定為 EVENT_TRACE_REAL_TIME_MODE
預設值為 0。 根據預設,只有在緩衝區已滿時才會排清。
LogFileMode REG_DWORD 指定記錄會話選項。 如需值,請參閱 記錄模式常數。 Windows Vista 和更新版本支援這個值。
MaximumBuffers REG_DWORD 要配置的緩衝區數目上限。 一般而言,此值是緩衝區數目下限加上 20。 ETW 會使用緩衝區大小和實體記憶體的大小來計算此值。 此值必須大於或等於 MinimumBuffers的值。
MaxFileSize REG_DWORD 事件追蹤記錄檔的大小上限,以 MB 為單位。 根據預設值,沒有檔案大小限制。
MinimumBuffers REG_DWORD 全域記錄器會話啟動時要配置的緩衝區數目下限。 您可以指定的緩衝區數目下限是每個處理器的兩個緩衝區。 例如,在單一處理器電腦上,緩衝區數目下限為 2。
單一處理器系統上的預設值為 0x3。
狀態 REG_DWORD 全域記錄器的啟動狀態。 如果全域記錄器無法啟動,此機碼的值就是適當的 Win32 錯誤碼。 如果全域記錄器已成功啟動,則此機碼的值會ERROR_SUCCESS (0) 。

在登錄經過修改且電腦重新開機之後,全域記錄器會話會自動啟動,而且會像任何其他會話一樣使用,但有一個例外狀況:您可以使用 Wmistr.h) 中所定義的WMI_GLOBAL_LOGGER_ID常數句 (柄) 來參考全域記錄器會話。 此常數可作為接受會話控制碼之任何事件追蹤函式的引數。 在接受會話名稱的函式中,使用 GLOBAL_LOGGER_NAME。

全域記錄器控制器不會呼叫 EnableTrace 函式來啟用提供者。 提供者負責判斷全域記錄器會話是否已啟動,然後自行啟用。

若要判斷全域記錄器會話是否已啟動,您可以呼叫 ControlTrace 函式,將 SessionHandle 設定為 WMI_GLOBAL_LOGGER_ID, 並將 ControlCode 設定為 EVENT_TRACE_CONTROL_QUERY。 如果 ControlTrace 呼叫成功,則全域記錄器會話存在,而且提供者可以在 ControlTrace 函式未使用中) 時,將本身和記錄事件記錄至全域記錄器會話 (傳回ERROR_WMI_INSTANCE_NOT_FOUND。

一般而言,控制器負責在啟用提供者時將啟用旗標和層級傳遞給提供者,但因為全域記錄器控制器未啟用提供者,因此提供者必須負責視需要將此資訊傳遞給本身。

全域記錄器會話是有限的資源,應謹慎使用。 想要在開機程式期間擷取資訊的服務應該考慮將控制器邏輯新增至本身,而不是使用全域記錄器會話。

如需啟動事件追蹤會話的詳細資訊,請參閱 設定和啟動事件追蹤會話

如需啟動私人記錄器會話的詳細資訊,請參閱 設定和啟動私人記錄器會話

如需啟動 NT 核心記錄器會話的詳細資訊,請參閱 設定和啟動 NT 核心記錄器會話