共用方式為


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

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

注意

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

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

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI

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

價值 類型 描述
開始 REG_DWORD 將此值設定為 1 (on) 以在下一次系統啟動時啟動全域記錄器工作階段。 若要停止工作階段啟動,請將此值設定為 0(關閉)。
BufferSize REG_DWORD 每個緩衝區的大小,以 KB 為單位。 此值應小於一 MB。 ETW 會使用物理記憶體的大小來計算此值。
時鐘類型 REG_DWORD 記錄每個事件的時間戳時要使用的定時器。
  • 1 = 效能計數器值 (高解析度)
  • 2 = 系統定時器
  • 3 = CPU 循環計數器
如需每個時鐘類型的描述,請參閱 WNODE_HEADERClientContext 成員。
Windows Vista 和更新版本的預設值為 1(性能計數器值)。 在 Windows Vista 之前,預設值為 2 (系統定時器)。
EnableKernelFlags REG_BINARY 使用此值來啟用一或多個核心提供者。 如果您啟用核心提供者,全域記錄器會話會在啟動時自行重新命名為NT核心記錄器。 如需可能的值,請參閱 EVENT_TRACE_PROPERTIESEnableFlags 成員。
文件計數器 REG_DWORD 全域記錄器會話所產生的事件追蹤記錄檔數目。 系統會遞增此值,直到達到 FileMax的值為止。 然後,它會將值重設為 0。 此計數器可防止系統覆寫全域記錄器追蹤記錄檔。
FileMax REG_DWORD 系統上允許的事件追蹤記錄檔數目上限。 當追蹤記錄數目達到指定的最大值時,系統會開始覆寫記錄,開頭為最舊。
如果 FileName 中指定的記錄檔存在,ETW 會將 FileCounter 值附加至檔名。 例如,如果使用預設記錄檔名稱,格式為 %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl.NNNN。
預設值為 0,表示沒有最大值。
檔案名稱 REG_SZ 記錄檔的完整路徑。 此檔案的路徑必須存在。 記錄檔是循序記錄檔。 請注意,所有將事件寫入至全域記錄器會話的提供者都會將事件寫入此記錄檔。 路徑限制為 1024 個字元。如果未指定 fileName ,事件會寫入至 \System32\LogFiles\WMI\GlobalLogger.etl %SystemRoot%。 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 為單位。 根據預設,沒有檔案大小上限。
最小緩衝區 REG_DWORD 全域記錄器會話啟動時要配置的緩衝區數目下限。 您可以指定的緩衝區數目下限是每個處理器的兩個緩衝區。 例如,在單一處理器計算機上,緩衝區數目下限為兩個。
單一處理器系統上的預設值為 0x3。
狀態 REG_DWORD 全域記錄器啟動狀態。 如果全域記錄器無法啟動,這個機碼的值會顯示相應的 Win32 錯誤碼。 如果全域記錄器已成功啟動,則此鍵值的值會是 ERROR_SUCCESS(0)。

修改登錄並重新啟動計算機之後,全域記錄器會話會自動啟動,並且與任何其他會話一樣使用,但有一個例外狀況:您可以使用WMI_GLOBAL_LOGGER_ID常數句柄 (定義於 Wmistr.h) 來參考 Global Logger 會話。 這個常數可以作為任何接受會話句柄的事件追蹤函式的參數使用。 在接受工作階段名稱的函式中,使用 GLOBAL_LOGGER_NAME。

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

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

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

全域記錄器會話是一種有限的資源,應該節約使用。 想要在啟動程序期間擷取資訊的服務應考慮將控制器邏輯新增至本身,而不是使用全域日誌會話。

如需啟動事件追蹤工作階段的詳細資訊,請參閱 設定和啟動事件追蹤工作階段

如需啟動私人記錄器工作階段的詳細資訊,請參閱 設定和啟動私人記錄器工作階段

如需啟動 NT 核心記錄器工作階段的詳細資訊,請參閱 設定和啟動NT核心記錄器工作階段