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


Структура ANALYSIS_CALLBACKS

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

Структура ANALYSIS_CALLBACKS используется при инициализации объекта ANALYSIS_DESCRIPTOR или RELOG_DESCRIPTOR. Она указывает, какие функции следует вызвать во время анализа или повторной записи трассировки событий Windows (ETW).

Синтаксис

typedef struct ANALYSIS_CALLBACKS_TAG
{
    OnAnalysisEventFunc     OnStartActivity;
    OnAnalysisEventFunc     OnStopActivity;
    OnAnalysisEventFunc     OnSimpleEvent;
    OnTraceInfoFunc         OnTraceInfo;
    OnBeginEndPassFunc      OnBeginAnalysis;
    OnBeginEndPassFunc      OnEndAnalysis;
    OnBeginEndPassFunc      OnBeginAnalysisPass;
    OnBeginEndPassFunc      OnEndAnalysisPass;
} ANALYSIS_CALLBACKS;

Участники

Имя Описание
OnStartActivity Вызывается для обработки события запуска действия.
OnStopActivity Вызывается для обработки события остановки действия.
OnSimpleEvent Вызывается для обработки простого события.
OnTraceInfo Используется для сеансов анализа, вызываемых в начале каждого прохода анализа. Используется для сеансов повторной записи в журнал, которые вызываются в начале каждого прохода анализа, а также в начале прохода повторной записи. Эта функция вызывается только после вызова OnBeginAnalysisPass.
OnBeginAnalysis Используется для сеансов анализа, вызванных до начала любого прохода анализа. Используется для сеансов повторной записи в журнал, которые дважды вызываются до начала фазы анализа. Один раз, чтобы сообщить о начале сеанса повторной записи в журнал, а второй, — чтобы сообщить о начале прохода анализа.
OnEndAnalysis Для сеансов анализа эта функция вызывается после завершения всех проходов анализа. Для сеансов повторной записи в журнал эта функция вызывается после завершения всех проходов анализа фазы анализа. Затем она вызывается снова после завершения прохода повторной записи в журнал.
OnBeginAnalysisPass Вызывается в начале прохода анализа или прохода повторной записи в журнал перед обработкой события.
OnEndAnalysisPass Вызывается в конце прохода анализа или прохода повторной записи в журнал после обработки всех событий.

Замечания

Фаза анализа сеанса повторной записи в журнал является частью прохода повторной записи в журнал и может содержать несколько проходов анализа. По этой причине OnBeginAnalysis дважды вызывается в строке в начале сеанса повторной записи в журнал. OnEndAnalysis вызывается в конце фазы анализа до начала фазы повторной записи в журнал и еще раз в конце этой фазы. Фаза повторной записи в журнал всегда имеет один проход повторной записи в журнал.

Анализаторы могут быть частью анализа и фазы повторной записи в журнал сеанса повторной записи в журнал. Эти анализаторы могут определять, какая фаза в настоящее время выполняется, отслеживая пары вызовов OnBeginAnalysis и OnEndAnalysis. Если OnBeginAnalysis вызывается дважды без вызова OnEndAnalysis, это означает, что выполняется фаза анализа. Если OnBeginAnalysis вызывается дважды, а OnEndAnalysis — один раз, это означает, что выполняется фаза повторной записи в журнал. Если OnBeginAnalysis и OnEndAnalysis вызываются дважды, это означает, что обе фазы закончились.

Все члены структуры ANALYSIS_CALLBACKS должны указывать на допустимую функцию. Дополнительные сведения о допустимых сигнатурах функций см. в документации по OnAnalysisEventFunc, OnTraceInfoFunc и OnBeginEndPassFunc.