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
還包含下列成員:
解構函式
函式
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
對於屬於分析器群組的分析器,此函式會在最後一個分析階段結束之後呼叫。 對於屬於重新記錄器群組一部分的分析器,會在重新記錄階段結束後呼叫此函式。 對於屬於相同重新記錄會話之分析器和重新記錄器群組一部分的分析器,此函式會呼叫兩次:
- 在所有分析階段都結束之後,以及重新記錄階段開始之前,以及
- 重新記錄階段結束後。
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 程式碼,描述接下來會發生什麼事。
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: