更新 : 2007 年 11 月
アプリケーションの終了処理中であることをプロファイラに通知します。
HRESULT Shutdown();
解説
Shutdown メソッドを呼び出した後は、プロファイラ コードで ICorProfilerInfo インターフェイスのメソッドを安全に呼び出すことはできません。ICorProfilerInfo メソッドを呼び出すと、Shutdown メソッドから制御が戻った後、未定義の動作が発生します。シャットダウン後に変更できないイベントが発生する可能性があります。プロファイラは、これが発生した場合直ちに制御を返すように注意が必要です。
Shutdown メソッドが呼び出されるのは、プロファイリングが行われているマネージ アプリケーションがマネージ コードとして起動された場合 (つまり、プロセス スタックの最初のフレームがマネージ フレームの場合) のみです。アプリケーションがアンマネージ コードとして起動され、後でマネージ コードにジャンプした場合、共通言語ランタイム (CLR: Common Language Runtime) が作成され、Shutdown は呼び出されません。このような場合、DLL_PROCESS_DETACH 値を使用する DllMain ルーチンをプロファイラのライブラリに含めて、リソースを解放し、ディスクへのトレースのフラッシュなど、データのクリーンアップ処理を実行する必要があります。
通常、プロファイラは予期しないシャットダウンに対応する必要があります。たとえば、Winbase.h で宣言される Win32 の TerminateProcess メソッドによってプロセスが中断される場合があります。また、CLR が特定のマネージ スレッド (バックグラウンド スレッド) の規則的な破壊メッセージを配信せずに、そのマネージ スレッドを中断することもあります。
必要条件
プラットフォーム : 「.NET Framework システム要件」を参照
ヘッダー : CorProf.idl
ライブラリ : CorGuids.lib
.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0