IHostTaskManager::LeaveRuntime メソッド
現在実行されているタスクが共通言語ランタイム (CLR: Common Language Runtime) を出てアンマネージ コードに入ろうとしていることをホストに通知します。
重要 |
---|
対応する IHostTaskManager::EnterRuntime 呼び出しは、現在実行されているタスクがマネージ コードに再入しようとしていることをホストに通知します。 |
HRESULT LeaveRuntime (
[in] SIZE_T target
);
パラメーター
- target
[入力] 呼び出されるアンマネージ関数の、割り当てられている移植可能な実行可能ファイル内のアドレス。
戻り値
HRESULT |
説明 |
---|---|
S_OK |
LeaveRuntime が正常に終了しました。 |
HOST_E_CLRNOTAVAILABLE |
CLR がプロセスに読み込まれていません。または、CLR がマネージ コードを実行できない状態か、呼び出しを正常に処理できない状態にあります。 |
HOST_E_TIMEOUT |
呼び出しがタイムアウトしました。 |
HOST_E_NOT_OWNER |
呼び出し元がロックを所有していません。 |
HOST_E_ABANDONED |
ブロックされたスレッドまたはファイバーが待機しているイベントがキャンセルされました。 |
E_FAIL |
未知の重大エラーが発生しました。 メソッドから E_FAIL が返される場合、プロセス内で CLR を使用することはできません。 ホスト メソッドへの後続の呼び出しは、HOST_E_CLRNOTAVAILABLE を返します。 |
E_OUTOFMEMORY |
メモリ不足のため、要求された割り当てを完了できません。 |
解説
アンマネージ コードの呼び出しシーケンスおよびアンマネージ コードからの呼び出しシーケンスは、入れ子にできます。 例として、以下に、LeaveRuntime、IHostTaskManager::ReverseEnterRuntime、IHostTaskManager::ReverseLeaveRuntime、および IHostTaskManager::EnterRuntime の各呼び出しのシーケンスによって、ホストが入れ子になった層を識別できる仮想の状況を示します。
アクション |
対応するメソッド呼び出し |
---|---|
マネージ Visual Basic 実行可能ファイルが、プラットフォーム呼び出しを使用して C で記述されているアンマネージ関数を呼び出す。 |
IHostTaskManager::LeaveRuntime |
アンマネージ C 関数が、C# で記述されているマネージ DLL のメソッドを呼び出す。 |
IHostTaskManager::ReverseEnterRuntime |
マネージ C# 関数が、同じくプラットフォーム呼び出しを使用して、C で記述されている別のアンマネージ関数を呼び出す。 |
IHostTaskManager::LeaveRuntime |
2 つ目のアンマネージ関数が、実行を C# 関数に返す。 |
IHostTaskManager::EnterRuntime |
C# 関数が、実行を 1 つ目のアンマネージ関数に返す。 |
IHostTaskManager::ReverseLeaveRuntime |
1 つ目のアンマネージ関数が、実行を Visual Basic プログラムに返す。 |
IHostTaskManager::EnterRuntime |
必要条件
プラットフォーム: 「.NET Framework システム要件」を参照
ヘッダー : MSCorEE.h
ライブラリ: MSCorEE.dll にリソースとして格納されていること
.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0