Поделиться через


Relog

Пакет SDK для Сборки C++ совместим с Visual Studio 2017 и более поздними версиями. Чтобы увидеть документацию для этих версий, установите в данной статье селектор Версия Visual Studio в Visual Studio 2017 и более поздних версий. Он находится в верхней части оглавления на этой странице.

Функция Relog используется для чтения событий MSVC из трассировки событий Windows (ETW) и записи этих событий в новую, измененную трассировку 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
Битовая маска, указывающая, какие системные события трассировки событий Windows следует сохранить в повторно записанных трассировках. Дополнительные сведения см. в статье RELOG_RETENTION_SYSTEM_EVENT_FLAGS.

analyzerGroup
Группа анализатора, используемая для анализа сеанса повторной записи. Вызовите MakeStaticAnalyzerGroup, чтобы создать группу анализатора. Чтобы использовать группу динамического анализатора, полученную из MakeDynamicAnalyzerGroup, сначала необходимо инкапсулировать ее в статическую группу анализатора, передав ее адрес в MakeStaticAnalyzerGroup.

reloggerGroup
Группа перезаписи, которая выполняет перезапись событий в файл трассировки, указанный в outputLogFile. Вызовите MakeStaticReloggerGroup, чтобы создать группу повторной записи в журнал. Чтобы использовать группу динамической перезаписи, полученную из MakeDynamicReloggerGroup, сначала нужно инкапсулировать ее в группу динамической перезаписи, передав ее адрес в MakeStaticReloggerGroup.

Возвращаемое значение

Код результата из перечисления RESULT_CODE.

Комментарий

Входная трассировка передается через группу анализатора значения времени numberOfAnalysisPasses раз. Для проходов перезаписи не существует аналогичного параметра. Трассировка передается через группу перезаписи только один раз после завершения всех этапов анализа.

Повторная запись системных событий, таких как примеры ЦП, из класса перезаписи не поддерживается. Используйте параметр systemEventsRetentionFlags, чтобы решить, какие системные события следует хранить в выходной трассировке.

Функция relog зависит от COM-API. Перед вызовом необходимо вызвать CoInitialize relog. Вызов CoUninitialize после relog завершения. При вызове relog без вызова CoInitialize сначала вы получите код ошибки 9 (RESULT_CODE_FAILURE_START_RELOGGER).