IAnalyzer クラス
C++ Build Insights SDK は、Visual Studio 2017 以降と互換性があります。 これらのバージョンのドキュメントを表示するには、この記事の Visual Studio バージョン セレクター コントロールを Visual Studio 2017 以降に設定します。 このページの目次の一番上にあります。
IAnalyzer クラスにより、Event Tracing for Windows (ETW) トレースの分析を行うためのインターフェイスが提供されます。 これは、MakeDynamicAnalyzerGroup、MakeDynamicReloggerGroup、MakeStaticAnalyzerGroup、および 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 クラスには次のメンバーが含まれています。
デストラクターです。
機能
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 回呼び出されます。
- すべての分析パスが終了した後、再ログ記録パスが開始される前。および
- 再ログ記録パスが終了した後。
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 コード。