Clase IAnalyzer

El SDK de C++ Build Insights es compatible con Visual Studio 2017 y versiones posteriores. Para ver la documentación de estas versiones, establezca el control de selector de Versión de Visual Studio para este artículo en Visual Studio 2017 o versiones posteriores. Se encuentra en la parte superior de la tabla de contenido de esta página.

La clase IAnalyzer proporciona una interfaz para analizar un seguimiento de la característica Seguimiento de eventos para Windows (ETW). Se usa con las funciones MakeDynamicAnalyzerGroup, MakeDynamicReloggerGroup, MakeStaticAnalyzerGroup, y MakeStaticReloggerGroup. Use IAnalyzer como una clase base para crear su propio analizador que puede formar parte de un grupo de analizadores o registradores.

Sintaxis

class IAnalyzer : public IRelogger
{
public:
    virtual AnalysisControl OnStartActivity(const EventStack& eventStack);
    virtual AnalysisControl OnStopActivity(const EventStack& eventStack)
    virtual AnalysisControl OnSimpleEvent(const EventStack& eventStack);
    virtual AnalysisControl OnBeginAnalysis();
    virtual AnalysisControl OnEndAnalysis();
    virtual AnalysisControl OnBeginAnalysisPass();
    virtual AnalysisControl OnEndAnalysisPass();

    AnalysisControl OnStartActivity(const EventStack& eventStack,
        const void* relogSession) final;

    AnalysisControl OnStopActivity(const EventStack& eventStack,
        const void* relogSession) final;

    AnalysisControl OnSimpleEvent(const EventStack& eventStack,
        const void* relogSession) final;

    AnalysisControl OnBeginRelogging() final;
    AnalysisControl OnEndRelogging() final;
    AnalysisControl OnBeginReloggingPass() final;
    AnalysisControl OnEndReloggingPass() final;

    virtual ~IAnalyzer();
};

Comentarios

Las clases que derivan de IAnalyzer se pueden usar como analizadores y registradores. Cuando se usan como repetidores de registro, las funciones específicas del registrador se redirigen a su analizador equivalente. Lo contrario no es cierto: una clase que deriva de IRelogger no se puede usar como analizador. El uso de un analizador en un grupo de registradores es un patrón común. Cuando se coloca en una posición anticipada de un grupo de registradores, un analizador puede calcular previamente la información y ponerla a disposición de los registradores en posiciones posteriores.

El valor devuelto predeterminado para todas las funciones que no se invalidan es AnalysisControl::CONTINUE. Para más información, consulte AnalysisControl.

Miembros

Además del miembro OnTraceInfo de la interfaz IRelogger, la clase IAnalyzer contiene los siguientes miembros:

Destructor

~IAnalyzer

Functions

OnBeginAnalysis
OnBeginAnalysisPass
OnBeginRelogging
OnBeginReloggingPass
OnEndAnalysis
OnEndAnalysisPass
OnEndRelogging
OnEndReloggingPass
OnSimpleEvent
OnStartActivity
OnStopActivity

~IAnalyzer

Destruye la clase IAnalyzer.

virtual ~IAnalyzer();

OnBeginAnalysis

En el caso de los analizadores que forman parte de un grupo de analizadores, esta función se llama antes de que comience la primera fase de análisis. En el caso de los analizadores que forman parte de un grupo de registradores, esta función se llama antes de que comience la primera fase de repetición de registro. En el caso de los analizadores que forman parte tanto del grupo de analizadores como del grupo de registradores de la misma sesión de repetición de registro, esta función se llama dos veces antes de comenzar la primera fase de análisis.

virtual AnalysisControl OnBeginAnalysis();

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.

OnBeginAnalysisPass

En el caso de los analizadores que forman parte de un grupo de analizadores, esta función se llama al principio de cada fase de análisis. En el caso de los analizadores que forman parte de un grupo de registradores, esta función se llama al principio de cada fase de registrador. En el caso de los analizadores que forman parte tanto del grupo de analizadores como del grupo de registradores de la misma sesión de repetición de registro, esta función se llama al principio de cada fase de análisis y al principio de la fase de registrador.

virtual AnalysisControl OnBeginAnalysisPass();

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.

OnBeginRelogging

AnalysisControl OnBeginRelogging() final;

Esta función no se puede invalidar. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Esta función redirige la llamada a OnBeginAnalysis.

Valor devuelto

El resultado de la llamada OnBeginAnalysis.

OnBeginReloggingPass

Esta función no se puede invalidar. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Esta función redirige la llamada a OnBeginAnalysisPass.

AnalysisControl OnBeginReloggingPass() final;

Valor devuelto

El resultado de la llamada OnBeginAnalysisPass.

OnEndAnalysis

En el caso de los analizadores que forman parte de un grupo de analizadores, esta función se llama después de que haya terminado la última fase de análisis. En el caso de los analizadores que forman parte de un grupo de registradores, esta función se llama después de que haya terminado la fase de repetición de registro. En el caso de los analizadores que forman parte tanto del grupo de analizadores como del grupo de registradores, esta función se llama dos veces:

  1. después de que hayan terminado todas las fases de análisis y antes de que comience la fase de registro, y
  2. después de que haya terminado la fase de registro.
virtual AnalysisControl OnEndAnalysis();

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.

OnEndAnalysisPass

En el caso de los analizadores que forman parte de un grupo de analizadores, esta función se llama al final de cada fase de análisis. En el caso de los analizadores que forman parte de un grupo de registradores, esta función se llama al final de cada fase de registrador. En el caso de los analizadores que forman parte tanto del grupo de analizadores como del grupo de registradores de la misma sesión de repetición de registro, esta función se llama al final de cada fase de análisis y al final de la fase de registrador.

virtual AnalysisControl OnEndAnalysisPass();

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.

OnEndRelogging

Esta función no se puede invalidar. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Esta función redirige la llamada a OnEndAnalysis.

AnalysisControl OnEndRelogging() final;

Valor devuelto

El resultado de la llamada OnEndAnalysis.

OnEndReloggingPass

Esta función no se puede invalidar. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Esta función redirige la llamada a OnEndAnalysisPass.

AnalysisControl OnEndReloggingPass() final;

Valor devuelto

El resultado de la llamada OnEndAnalysisPass.

OnSimpleEvent

Esta función se llama cuando se está procesando un evento simple. No se puede invalidar la segunda versión de esta función. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Todas las llamadas a la versión 2 se redirigen a la versión 1.

versión 1

virtual AnalysisControl OnSimpleEvent(const EventStack& eventStack);

versión 2

AnalysisControl OnSimpleEvent(const EventStack& eventStack,
        const void* relogSession) final;

Parámetros

eventStack
La pila de eventos para este evento sencillo. Para más información sobre pilas de eventos, vea Eventos.

relogSession
Este parámetro no se utiliza.

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.

OnStartActivity

Esta función se llama cuando se está procesando un evento de inicio de actividad. No se puede invalidar la segunda versión de esta función. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Todas las llamadas a la versión 2 se redirigen a la versión 1.

versión 1

virtual AnalysisControl OnStartActivity(const EventStack& eventStack);

versión 2

AnalysisControl OnStartActivity(const EventStack& eventStack,
        const void* relogSession) final;

Parámetros

eventStack
La pila de eventos para este evento de inicio de actividad. Para más información sobre pilas de eventos, vea Eventos.

relogSession
Este parámetro no se utiliza.

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.

OnStopActivity

Esta función se llama cuando se está procesando un evento de parada de actividad. No se puede invalidar la segunda versión de esta función. La llama el SDK de C++ Build Insights cuando un analizador forma parte de un grupo de registradores. Todas las llamadas a la versión 2 se redirigen a la versión 1.

versión 1

virtual AnalysisControl OnStopActivity(const EventStack& eventStack);

versión 2

AnalysisControl OnStopActivity(const EventStack& eventStack,
        const void* relogSession) final;

Parámetros

eventStack
La pila de eventos para este evento de parada de actividad. Para más información sobre pilas de eventos, vea Eventos.

relogSession
Este parámetro no se utiliza.

Valor devuelto

Un código AnalysisControl que describe lo que debería ocurrir a continuación.