次の方法で共有


FunctionLeave 関数

更新 : 2007 年 11 月

関数が呼び出し元に戻ろうとしていることをプロファイラに通知します。

Aa964719.alert_note(ja-jp,VS.90).gifメモ :

FunctionLeave 関数は、.NET Framework 2.0 での使用は推奨されていません。機能はしますが、パフォーマンスが低下します。代わりに、FunctionLeave2 関数を使用してください。

void FunctionLeave (
        [in] FunctionID funcID
);

パラメータ

  • funcID
    [入力] 戻ろうとしている関数の識別子。

解説

FunctionLeave 関数はコールバックであり、ユーザー自身で実装する必要があります。実装では、__declspec(naked) ストレージ クラス属性を使用する必要があります。

この関数を呼び出す前に、実行エンジンがレジスタを保存することはありません。

  • エントリ時には、使用するすべてのレジスタを、浮動小数点ユニット (FPU) のレジスタも含めて保存する必要があります。

  • 終了時には、呼び出し元によってプッシュされたすべてのパラメータをポップして、スタックを復元する必要があります。

ガベージ コレクションが遅延するので、FunctionLeave の実装ではブロックを行わないでください。また、スタックがガベージ コレクションできる状態にあるとは限らないので、実装ではガベージ コレクションを実行しないでください。ガベージ コレクションが試行されると、ランタイムは FunctionLeave が戻るまでブロックします。

さらに、FunctionLeave 関数では、マネージ コードを呼び出したり、マネージ メモリの割り当てが行われるような処理を実行したりすることは避ける必要があります。

必要条件

プラットフォーム : 「.NET Framework システム要件」を参照

ヘッダー : CorProf.idl

ライブラリ : CorGuids.lib

.NET Framework のバージョン : 1.1、1.0

参照

参照

FunctionEnter2 関数

FunctionLeave2 関数

FunctionTailcall2 関数

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 メソッド

その他の技術情報

グローバル静的関数のプロファイル