FunctionEnter2 函式
通知分析工具,控制項即將傳遞至函式,並提供堆疊框架和函式引數的相關資訊。 這個函式會取代 FunctionEnter 函式。
語法
void __stdcall FunctionEnter2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo
);
參數
funcId
[in] 傳遞控制項之函式的識別碼。
clientData
[in] 重新對應的函式識別碼,這是先前使用 FunctionIDMapper 函式所指定的分析工具。
func
[in] 指向堆疊框架相關資訊的 COR_PRF_FRAME_INFO
值。
分析工具應將此視為不透明的控制代碼,可傳遞回 ICorProfilerInfo2::GetFunctionInfo2 方法中的執行引擎。
argumentInfo
[in] COR_PRF_FUNCTION_ARGUMENT_INFO 結構的指標,會指定函式引數記憶體中的位置。
若要存取引數資訊,就必須設定 COR_PRF_ENABLE_FUNCTION_ARGS
旗標。 分析工具可以使用 ICorProfilerInfo::SetEventMask 方法來設定事件旗標。
備註
func
和 argumentInfo
參數的值在 FunctionEnter2
函式傳回之後無效,因為值可能會變更或遭到終結。
FunctionEnter2
函式是回呼;您必須實作它。 實作必須使用 __declspec
(naked
) 儲存體類別屬性。
執行引擎在呼叫此函式之前不會儲存任何暫存器。
進入時,您必須儲存使用的所有暫存器,包括浮點單位 (FPU)。
離開時,您必須將其呼叫端推送的所有參數移出以還原堆疊。
FunctionEnter2
的實作不該封鎖,因為它會延遲記憶體回收。 實作不該嘗試記憶體回收,因為堆疊可能不是處於記憶體回收友善狀態。 如果嘗試記憶體回收,執行階段將會封鎖直到 FunctionEnter2
傳回為止。
此外,FunctionEnter2
函式不得呼叫受控程式碼,或以任何方式造成受控記憶體配置。
規格需求
平台:請參閱系統需求。
標頭:CorProf.idl
程式庫:CorGuids.lib
.NET Framework版本:自 2.0 起可用