プロセスへの共通言語ランタイムの読み込み
ホストは、マネージ コードを実行する前に、共通言語ランタイム (CLR: Common Language Runtime) を読み込み、初期化する必要があります。 プロセスではランタイムがまだ実行されていないので、すべてのホストはアンマネージ スタブで始まります。 .NET Framework には、ホストがランタイムを起動するために使用できる、ホスト API と呼ばれる一連のアンマネージ API が用意されています。 詳細については、「ホスト インターフェイス」を参照してください。
メモ |
---|
.NET Framework Version 4 より前のバージョンの .NET Framework に用意されているホスト メソッドの使用は推奨されません。代わりに、このトピックで説明する .NET Framework 4 で導入されたインターフェイスを使用することをお勧めします。 |
ホストは、次のいずれかの手順を使用して、プロセスに CLR を読み込むことができます。
CLRCreateInstance 関数を呼び出して、ICLRMetaHost または ICLRMetaHostPolicy のいずれかのインターフェイスを取得します。 CLRCreateInstance 関数は、「.NET Framework 1.1 および 2.0 のホスト グローバル静的関数」に示すすべての CorBindTo* 関数よりも優先されます。
ICLRMetaHost::EnumerateInstalledRuntimes メソッド、ICLRMetaHost::GetRuntime メソッド、または ICLRMetaHostPolicy::GetRequestedRuntime メソッドを呼び出して、有効な ICLRRuntimeInfo ポインターを取得します。
ICLRRuntimeInfo::GetInterface メソッドを呼び出します。 rclsid パラメーターに CLSID_CLRRuntimeHost を指定し、riid パラメーターに IID_ICLRRuntimeHost を指定します。
これらのインターフェイスのプロトタイプはすべて、Windows Software Development Kit (SDK) の Include ディレクトリにある Metahost.h ファイルに含まれています。 ホストは、ICLRRuntimeInfo インターフェイスと ICLRRuntimeHost インターフェイスの両方を使用して、読み込むランタイムのバージョンと、ガベージ コレクションやアセンブリ読み込みなどの基本的な関数の動作を制御できます。
ICLRRuntimeHost インターフェイスを使用して、次のアクションを実行します。
ICLRRuntimeHost::Start メソッドを呼び出してランタイムを起動します。
マネージ コードを実行します。
共通言語ランタイムによって実装されたマネージャーへのアクセスを提供する ICLRControl インターフェイスへのポインターを取得し、IHostControl インターフェイスを実装するホスト コントロール オブジェクトを登録します。 共通言語ランタイムは、IHostControl インターフェイスを呼び出して、ホストで実装されるマネージャーを決定します。