分享方式:


IAnalyzer 類別

C++ Build Insights SDK 與 Visual Studio 2017 和更新版本相容。 若要查看這些版本的檔,請將本文的 Visual Studio 版本 選取器控制項設定為 Visual Studio 2017 或更新版本。 其位於此頁面目錄頂端。

類別 IAnalyzer 提供介面來分析 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 的類別可以當做分析器和重新記錄器使用。 當做重新記錄器使用時,重新記錄器特定的函式會重新導向至其分析器對等的函式。 反向不是 true:衍生自 IRelogger 的類別無法當做分析器使用。 在重新記錄器群組中流量分析器是常見的模式。 當放在重新記錄器群組的早期位置時,分析器可以預先計算資訊,並讓其可供稍後位置的重新記錄者使用。

未覆 AnalysisControl::CONTINUE 寫之所有函式的預設傳回值為 。 如需詳細資訊,請參閱 AnalysisControl

成員

除了來自 介面的 IRelogger OnTraceInfo 成員之外,類別 IAnalyzer 還包含下列成員:

解構函式

~IAnalyzer

函式

OnBeginAnalysis
OnBeginAnalysisPass
OnBeginRelogging
OnBeginReloggingPass
OnEndAnalysis
OnEndAnalysisPass
OnEndRelogging
OnEndReloggingPass
OnSimpleEvent
OnStartActivity
OnStopActivity

~IAnalyzer

終結 IAnalyzer 類別。

virtual ~IAnalyzer();

OnBeginAnalysis

對於分析器群組的分析器部分,會在第一次分析階段開始之前呼叫此函式。 對於重新記錄器群組的分析器部分,會在重新記錄階段開始之前呼叫此函式。 對於相同重新記錄會話之分析器和重新記錄器群組的分析器部分,在第一次分析階段開始之前,會呼叫此函式兩次。

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

對於屬於分析器群組的分析器,此函式會在最後一個分析階段結束之後呼叫。 對於屬於重新記錄器群組一部分的分析器,會在重新記錄階段結束後呼叫此函式。 對於屬於相同重新記錄會話之分析器和重新記錄器群組一部分的分析器,此函式會呼叫兩次:

  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

處理簡單事件時會呼叫此函式。 無法覆寫此函式的第二個版本。 當分析器是重新記錄器群組的一部分時,C++ Build Insights SDK 會呼叫它。 所有對第 2 版的呼叫都會重新導向至第 1 版。

第 1 版

virtual AnalysisControl OnSimpleEvent(const EventStack& eventStack);

第 2 版

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

參數

eventStack
這個簡單事件的事件堆疊。 如需事件堆疊的詳細資訊,請參閱 事件

relogSession
不使用這個參數。

傳回值

AnalysisControl 程式碼,描述接下來會發生什麼事。

OnStartActivity

處理活動啟動事件時,會呼叫此函式。 無法覆寫此函式的第二個版本。 當分析器是重新記錄器群組的一部分時,C++ Build Insights SDK 會呼叫它。 所有對第 2 版的呼叫都會重新導向至第 1 版。

第 1 版

virtual AnalysisControl OnStartActivity(const EventStack& eventStack);

第 2 版

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

參數

eventStack
此活動啟動事件的事件堆疊。 如需事件堆疊的詳細資訊,請參閱 事件

relogSession
不使用這個參數。

傳回值

AnalysisControl 程式碼,描述接下來會發生什麼事。

OnStopActivity

處理活動停止事件時,會呼叫此函式。 無法覆寫此函式的第二個版本。 當分析器是重新記錄器群組的一部分時,C++ Build Insights SDK 會呼叫它。 所有對第 2 版的呼叫都會重新導向至第 1 版。

第 1 版

virtual AnalysisControl OnStopActivity(const EventStack& eventStack);

第 2 版

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

參數

eventStack
此活動停止事件的事件堆疊。 如需事件堆疊的詳細資訊,請參閱 事件

relogSession
不使用這個參數。

傳回值

AnalysisControl 程式碼,描述接下來會發生什麼事。