次の方法で共有


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

メモリ不足のため、要求された割り当てを完了できません。

解説

アンマネージ コードの呼び出しシーケンスおよびアンマネージ コードからの呼び出しシーケンスは、入れ子にできます。 例として、以下に、LeaveRuntimeIHostTaskManager::ReverseEnterRuntimeIHostTaskManager::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

参照

参照

ICLRTask インターフェイス

ICLRTaskManager インターフェイス

IHostTask インターフェイス

IHostTaskManager インターフェイス