共用方式為


FunctionTailcall2 函式

通知分析工具目前的執行中函式即將對另一個函式執行 Tail 呼叫,並提供堆疊框架的相關資訊。

語法

void __stdcall FunctionTailcall2 (  
    [in] FunctionID         funcId,
    [in] UINT_PTR           clientData,
    [in] COR_PRF_FRAME_INFO func  
);  

參數

funcId [in] 目前正在執行且即將進行 Tail 呼叫的函式識別碼。

clientData [in] 目前執行中且即將進行 Tail 呼叫之函式的重新對應函式識別碼 (分析工具先前透過 FunctionIDMapper 所指定)。

func [in] 指向堆疊框架相關資訊的 COR_PRF_FRAME_INFO 值。

分析工具應將此視為不透明的控制代碼,可傳遞回 ICorProfilerInfo2::GetFunctionInfo2 方法中的執行引擎。

備註

tail 呼叫的目標函式會使用目前的堆疊框架,並直接傳回給發出 tail 呼叫之函式的呼叫端。 這表示不會針對屬於 tail 呼叫目標之函式發出 FunctionLeave2 回呼。

func 參數的值在 FunctionTailcall2 函式傳回之後無效,因為值可能會變更或遭到終結。

FunctionTailcall2 函式是回呼;您必須加以實作。 實作必須使用 __declspec (naked) 儲存體類別屬性。

執行引擎在呼叫此函式之前不會儲存任何暫存器。

  • 進入時,您必須儲存使用的所有暫存器,包括浮點單位 (FPU)。

  • 離開時,您必須將其呼叫端推送的所有參數移出以還原堆疊。

FunctionTailcall2 的實作不該封鎖,因為它會延遲記憶體回收。 實作不該嘗試記憶體回收,因為堆疊可能不是處於記憶體回收友善狀態。 如果嘗試記憶體回收,執行階段將會封鎖直到 FunctionTailcall2 傳回為止。

此外,FunctionTailcall2 函式不得呼叫受控程式碼,或以任何方式造成受控記憶體配置。

規格需求

平台:請參閱系統需求

標頭:CorProf.idl

程式庫:CorGuids.lib

.NET Framework版本:自 2.0 起提供

另請參閱