共用方式為


FunctionIDMapper 函式

更新:2007 年 11 月

向分析工具告知,指定的函式識別項可能已重新對應至替代 ID,以針對該函式在 enter2/leave2/tailcall2 回呼中使用。這個方法也可讓分析工具指出是否要接收該函式的回呼。

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

參數

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

  • pbHookFunction
    [out] 值指標,如果分析工具要接收 enter(2)/leave(2)/tailcall(2) 回呼,它會將此值設定為 true,否則會設定為 false。

傳回值

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

備註

FunctionIDMapper 函式是回呼。由分析工具實作它,將函式 ID 重新對應至對分析工具來說更有幫助的其他識別項。FunctionIDMapper 會傳回替代 ID,以用於任何指定的函式。接著,執行引擎會在 enter2/leave2/tailcall2 攔截程序的 clientData 參數中,將這個替代 ID (加上傳統函式 ID) 傳回至分析工具,以識別正在呼叫攔截程序的函式,而承認分析工具的要求。

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

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

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

需求

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

**標頭:**CorProf.idl

**程式庫:**CorGuids.lib

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

請參閱

參考

ICorProfilerInfo::SetFunctionIDMapper 方法

FunctionEnter2 函式

FunctionLeave2 函式

FunctionTailcall2 函式

其他資源

分析全域靜態函式