FunctionLeave3WithInfo 関数
関数から制御が返されていることをプロファイラーに通知し、スタック フレームと戻り値を取得するために ICorProfilerInfo3::GetFunctionLeave3Info メソッド に渡すことができるハンドルを提供します。
構文
void __stdcall FunctionLeave3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
パラメーター
functionIDOrClientID
[in] 制御が返された関数の識別子。
eltInfo
[in] 特定のスタック フレームに関する情報を表す不透明なハンドル。 このハンドルは、このハンドル自体が渡されるコールバックの間のみ有効です。
解説
FunctionLeave3WithInfo
コールバック メソッドは、関数が呼び出されたことをプロファイラーに通知します。また、プロファイラーでは、ICorProfilerInfo3::GetFunctionLeave3Info メソッドを使用して戻り値を調べることができます。 戻り値の情報にアクセスするには、COR_PRF_ENABLE_FUNCTION_RETVAL
フラグを設定する必要があります。 プロファイラーでは、ICorProfilerInfo::SetEventMask メソッドを使用してイベント フラグを設定してから、ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo メソッドを使用してこの関数の実装を登録できます。
FunctionLeave3WithInfo
関数はコールバックであるため、実装する必要があります。 実装では、__declspec(naked)
ストレージ クラス属性を使用する必要があります。
この関数を呼び出す前に、実行エンジンではレジスタは保存されません。
開始時には、浮動小数点演算ユニット (FPU) 内のものを含め、使用するすべてのレジスタを保存する必要があります。
終了時には、呼び出し元によってプッシュされたすべてのパラメーターをポップして、スタックを復元する必要があります。
FunctionLeave3WithInfo
の実装では、ガベージ コレクションが遅れるためブロックしないでください。 スタックがガベージ コレクション対応状態ではない可能性があるため、この実装ではガベージ コレクションを試行しないでください。 ガベージ コレクションが試行された場合、FunctionLeave3WithInfo
が返されるまでランタイムはブロックされます。
FunctionLeave3WithInfo
関数では、マネージド コードを呼び出すことはできません。呼び出すと、何らかのマネージド メモリ割り当てが行われます。
要件
:「システム要件」を参照してください。
ヘッダー: CorProf.idl
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 4 以降で使用可能
関連項目
.NET