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 枚举的结果代码。
注解
输入跟踪通过分析器组传递 numberOfAnalysisPasses 次。 重新记录传递没有类似的选项。 在所有分析传递完成后,通过重新记录器组只会传递一次跟踪。
不支持重新记录来自重新记录器类中的系统事件(如 CPU 示例)。 使用 systemEventsRetentionFlags 参数确定要保留在输出跟踪中的系统事件。
relog 函数依赖于 COM API。 在调用 relog 之前必须调用 CoInitialize。 在 relog 完成后调用 CoUninitialize。 如果你在没有先调用 CoInitialize 的情况下调用 relog,则会收到错误代码 9 (RESULT_CODE_FAILURE_START_RELOGGER)。