共用方式為


FunctionIDMapper 函式

向分析工具告知,指定的函式識別項可能已重新對應至替代 ID,以針對該函式在 FunctionEnter2FunctionLeave2FunctionTailcall2 回呼中使用。 FunctionIDMapper 也讓分析工具能夠表示是否要接收該函式的回呼。

UINT_PTR __stdcall FunctionIDMapper (
    [in]  FunctionID  funcId, 
    [out] BOOL       *pbHookFunction
);

參數

  • funcId
    [in] 要重新對應的函式識別項。

  • pbHookFunction
    [out] 值指標,如果分析工具要接收 FunctionEnter2FunctionLeave2FunctionTailcall2 回呼,則會將這個值設定為 true,否則會設定為 false。

傳回值

分析工具傳回的值可供執行引擎做為替代函式識別項使用。 傳回值不能為 null,除非 pbHookFunction 中傳回 false。 否則,null 傳回值會產生無法預期的結果,包括可能暫止處理序。

備註

FunctionIDMapper 函式是回呼。 由分析工具實作它,將函式 ID 重新對應至對分析工具來說更有幫助的其他識別項。 FunctionIDMapper 會傳回替代 ID,以用於任何指定的函式。 接著,執行引擎會允諾程式碼剖析工具的要求,將這個替代 ID (加上傳統的函式 ID) 傳遞回到 FunctionEnter2FunctionLeave2FunctionTailcall2 攔截程序之 clientData 參數中的程式碼剖析工具,以識別做為呼叫攔截程序之起因的函式。

您可以使用 ICorProfilerInfo::SetFunctionIDMapper 方法來指定 FunctionIDMapper 函式的實作。 只能呼叫 ICorProfilerInfo::SetFunctionIDMapper 方法一次,建議您在 ICorProfilerCallback::Initialize 回呼中進行呼叫。

根據預設,假設藉由使用 ICorProfilerInfo::SetEventMask 設定 COR_PRF_MONITOR_ENTERLEAVE 旗標,並透過 ICorProfilerInfo::SetEnterLeaveFunctionHooksICorProfilerInfo2::SetEnterLeaveFunctionHooks2 設定攔截程序的分析工具,應該會接收每個函式的 FunctionEnter2FunctionLeave2FunctionTailcall2 回呼。 不過,程式碼剖析工具可以實作 FunctionIDMapper,藉由將 *pbHookFunction 設定為 false,以選擇性避免特定函式的這些回呼。

分析工具應容許被分析應用程式的多個執行緒同時呼叫相同方法/函式之實例。 在這種實例中,分析工具可能會接收相同 FunctionID 的多個 FunctionIDMapper 回呼。 以相同 FunctionID 進行多次呼叫時,分析工具應確實從這個回呼中傳回相同值。

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**CorProf.idl

**程式庫:**CorGuids.lib

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

請參閱

參考

ICorProfilerInfo::SetFunctionIDMapper 方法

FunctionIDMapper2 函式

FunctionEnter2 函式

FunctionLeave2 函式

FunctionTailcall2 函式

其他資源

分析全域靜態函式