分享方式:


Relog

C++ Build Insights SDK 與 Visual Studio 2017 和更新版本相容。 若要查看這些版本的檔,請將本文的 Visual Studio 版本 選取器控制項設定為 Visual Studio 2017 或更新版本。 其位於此頁面目錄頂端。

Relog 式可用來從 Windows 事件追蹤 (ETW) 追蹤讀取 MSVC 事件,並將其寫入新的修改 ETW 追蹤中。

語法

template <
    typename... TAnalyzerGroupMembers,
    typename... TReloggerGroupMembers>
RESULT_CODE Relog(
    const char*                                   inputLogFile,
    const char*                                   outputLogFile,
    unsigned                                      numberOfAnalysisPasses,
    unsigned long long                            systemEventsRetentionFlags,
    StaticAnalyzerGroup<TAnalyzerGroupMembers...> analyzerGroup,
    StaticReloggerGroup<TReloggerGroupMembers...> reloggerGroup);

template <
    typename... TAnalyzerGroupMembers,
    typename... TReloggerGroupMembers>
RESULT_CODE Relog(
    const wchar_t*                                inputLogFile,
    const wchar_t*                                outputLogFile,
    unsigned                                      numberOfAnalysisPasses,
    unsigned long long                            systemEventsRetentionFlags,
    StaticAnalyzerGroup<TAnalyzerGroupMembers...> analyzerGroup,
    StaticReloggerGroup<TReloggerGroupMembers...> reloggerGroup);

參數

TAnalyzerGroupMembers
這個參數一律會推斷。

TReloggerGroupMembers
這個參數一律會推斷。

inputLogFile
您想要從中讀取事件的輸入 ETW 追蹤。

outputLogFile
要在其中寫入新事件的檔案。

numberOfAnalysisPasses
在輸入追蹤上執行的分析傳遞數目。 追蹤會在每個分析階段通過所提供的分析器群組一次。

systemEventsRetentionFlags
位元遮罩,指定要保留在重新記錄追蹤中的系統 ETW 事件。 如需詳細資訊,請參閱 RELOG_RETENTION_SYSTEM_EVENT_FLAGS

analyzerGroup
用於重新記錄會話分析階段的分析器群組。 呼叫 MakeStaticAnalyzerGroup 以建立分析器群組。 若要使用從 MakeDynamicAnalyzerGroup 取得的動態分析器群組,請先將位址傳遞至 ,將其封裝在 MakeStaticAnalyzerGroup 靜態分析器群組內。

reloggerGroup
重新記錄器群組,會將事件重新記錄到 outputLogFile 中指定的 追蹤檔案中。 呼叫 MakeStaticReloggerGroup 以建立重新記錄器群組。 若要使用從 MakeDynamicReloggerGroup 取得的動態重新記錄器群組,請先將位址傳遞至 ,將其封裝在 MakeStaticReloggerGroup 靜態重新記錄器群組內。

傳回值

來自 RESULT_CODE 列舉的結果碼。

備註

輸入追蹤會透過分析器組 數OfAnalysisPasses 時間傳遞。 重新記錄傳遞沒有類似的選項。 在完成所有分析階段之後,追蹤只會通過重新記錄器群組一次。

不支援從重新記錄器類別內重新記錄系統事件,例如 CPU 範例。 使用 systemEventsRetentionFlags 參數來決定要保留在輸出追蹤中的系統事件。

relog 式取決於 COM API。 您必須先呼叫 CoInitialize ,才能呼叫 relog 。 完成後,呼叫 CoUninitialize 一次 relog 。 如果您 relog 呼叫時未先呼叫 CoInitialize ,您會收到錯誤碼 9 ( RESULT_CODE_FAILURE_START_RELOGGER )。