IAnalyzer クラス

C++ Build Insights SDK は、Visual Studio 2017 以降と互換性があります。 これらのバージョンのドキュメントを表示するには、この記事の Visual Studio バージョン セレクター コントロールを Visual Studio 2017 以降に設定します。 このページの目次の一番上にあります。

IAnalyzer クラスにより、Event Tracing for Windows (ETW) トレースの分析を行うためのインターフェイスが提供されます。 これは、MakeDynamicAnalyzerGroupMakeDynamicReloggerGroupMakeStaticAnalyzerGroup、および MakeStaticReloggerGroup 関数で使用されます。 アナライザーまたはリロガー グループの一部にできる独自のアナライザーを作成するための基底クラスとしては、IAnalyzer を使用します。

構文

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();
};

解説

IAnalyzer から派生したクラスは、アナライザーとしても、リロガーとしても使用できます。 リロガーとして使用する場合、リロガー固有の関数は同等のアナライザーの関数にリダイレクトされます。 その逆は当てはまりません。つまり、IRelogger から派生したクラスをアナライザーとして使用することはできません。 リロガー グループでアナライザーを使用するのは一般的なパターンです。 リロガー グループの早い位置に配置されたアナライザーによって、情報を事前に計算し、より後の位置にあるリロガーが使用できるようにすることができます。

オーバーライドされていないすべての関数の既定の戻り値は AnalysisControl::CONTINUE です。 詳細については、AnalysisControl に関する記事をご覧ください。

メンバー

IRelogger インターフェイスの OnTraceInfo メンバーに加えて、IAnalyzer クラスには次のメンバーが含まれています。

デストラクターです。

~IAnalyzer

機能

OnBeginAnalysis
OnBeginAnalysisPass
OnBeginRelogging
OnBeginReloggingPass
OnEndAnalysis
OnEndAnalysisPass
OnEndRelogging
OnEndReloggingPass
OnSimpleEvent
OnStartActivity
OnStopActivity

~IAnalyzer

IAnalyzer クラスを破棄します。

virtual ~IAnalyzer();

OnBeginAnalysis

アナライザー グループのアナライザーの部分では、最初の分析パスが開始される前に、この関数が呼び出されます。 リロガー グループのアナライザーの部分では、再ログ記録パスが開始される前に、この関数が呼び出されます。 同じ再ログ記録セッションのアナライザーおよびリロガー グループ両方のアナライザーの部分では、最初の分析パスが開始される前に、この関数が 2 回呼び出されます。

virtual AnalysisControl OnBeginAnalysis();

戻り値

次に行う必要があることが記述されている AnalysisControl コード。

OnBeginAnalysisPass

アナライザー グループのアナライザーの部分では、すべての分析パスの開始時にこの関数が呼び出されます。 リロガー グループのアナライザーの部分では、リロガー パスの開始時にこの関数が呼び出されます。 同じ再ログ記録セッションのアナライザーおよびリロガー グループ両方のアナライザーの部分では、すべての分析パスの開始時、およびリロガー パスの開始時にこの関数が呼び出されます。

virtual AnalysisControl OnBeginAnalysisPass();

戻り値

次に行う必要があることが記述されている AnalysisControl コード。

OnBeginRelogging

AnalysisControl OnBeginRelogging() final;

この関数をオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 この関数によって OnBeginAnalysis への呼び出しがリダイレクトされます。

戻り値

OnBeginAnalysis 呼び出しの結果です。

OnBeginReloggingPass

この関数をオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 この関数によって OnBeginAnalysisPass への呼び出しがリダイレクトされます。

AnalysisControl OnBeginReloggingPass() final;

戻り値

OnBeginAnalysisPass 呼び出しの結果です。

OnEndAnalysis

アナライザー グループの一部であるアナライザーでは、最後の分析パスが終了した後に、この関数が呼び出されます。 リロガー グループの一部であるアナライザーでは、再ログ記録パスが終了した後に、この関数が呼び出されます。 同じ再ログ記録セッションのアナライザーおよびリロガー グループ両方の一部であるアナライザーの場合、この関数は 2 回呼び出されます。

  1. すべての分析パスが終了した後、再ログ記録パスが開始される前。および
  2. 再ログ記録パスが終了した後。
virtual AnalysisControl OnEndAnalysis();

戻り値

次に行う必要があることが記述されている AnalysisControl コード。

OnEndAnalysisPass

アナライザー グループのアナライザーの部分では、すべての分析パスの終了時にこの関数が呼び出されます。 リロガー グループのアナライザーの部分では、リロガー パスの終了時にこの関数が呼び出されます。 同じ再ログ記録セッションのアナライザーおよびリロガー グループ両方のアナライザーの部分では、すべての分析パスの終了時、およびリロガー パスの終了時にこの関数が呼び出されます。

virtual AnalysisControl OnEndAnalysisPass();

戻り値

次に行う必要があることが記述されている AnalysisControl コード。

OnEndRelogging

この関数をオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 この関数によって OnEndAnalysis への呼び出しがリダイレクトされます。

AnalysisControl OnEndRelogging() final;

戻り値

OnEndAnalysis 呼び出しの結果です。

OnEndReloggingPass

この関数をオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 この関数によって OnEndAnalysisPass への呼び出しがリダイレクトされます。

AnalysisControl OnEndReloggingPass() final;

戻り値

OnEndAnalysisPass 呼び出しの結果です。

OnSimpleEvent

この関数は、簡易イベントが処理されるときに呼び出されます。 この関数の 2 番目のバージョンをオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 バージョン 2 へのすべての呼び出しは、バージョン 1 にリダイレクトされます。

Version 1

virtual AnalysisControl OnSimpleEvent(const EventStack& eventStack);

Version 2

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

パラメーター

eventStack
この簡易イベントのイベント スタック。 イベント スタックの詳細については、イベントに関するページを参照してください。

relogSession
このパラメーターは使用されません。

戻り値

次に行う必要があることが記述されている AnalysisControl コード。

OnStartActivity

この関数は、アクティビティ開始イベントが処理されるときに呼び出されます。 この関数の 2 番目のバージョンをオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 バージョン 2 へのすべての呼び出しは、バージョン 1 にリダイレクトされます。

Version 1

virtual AnalysisControl OnStartActivity(const EventStack& eventStack);

Version 2

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

パラメーター

eventStack
このアクティビティ開始イベントのイベント スタック。 イベント スタックの詳細については、イベントに関するページを参照してください。

relogSession
このパラメーターは使用されません。

戻り値

次に行う必要があることが記述されている AnalysisControl コード。

OnStopActivity

この関数は、アクティビティ停止イベントが処理されるときに呼び出されます。 この関数の 2 番目のバージョンをオーバーライドすることはできません。 これは、アナライザーがリロガー グループの一部である場合、C++ Build Insights SDK によって呼び出されます。 バージョン 2 へのすべての呼び出しは、バージョン 1 にリダイレクトされます。

Version 1

virtual AnalysisControl OnStopActivity(const EventStack& eventStack);

Version 2

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

パラメーター

eventStack
このアクティビティ停止イベントのイベント スタック。 イベント スタックの詳細については、イベントに関するページを参照してください。

relogSession
このパラメーターは使用されません。

戻り値

次に行う必要があることが記述されている AnalysisControl コード。