アンマネージ ホストが共通言語ランタイム (CLR) をプロセスに読み込むことができます。
CorBindToRuntime 関数とCorBindToRuntimeEx関数は同じ操作を実行しますが、CorBindToRuntimeEx関数を使用すると、CLR の動作を指定するフラグを設定できます。
この関数は、.NET Framework 4 では非推奨になりました。
この関数は、ホストが次の操作を行えるようにするパラメーターのセットを受け取ります。
読み込むランタイムのバージョンを指定します。
サーバーまたはワークステーションのビルドを読み込む必要があるかどうかを示します。
同時実行ガベージ コレクションと非同時実行ガベージ コレクションのどちらを実行するかを制御します。
注
Intel Itanium アーキテクチャ (旧称 IA-64) を実装する 64 ビット システムで WOW64 x86 エミュレーターを実行するアプリケーションでは、同時実行ガベージ コレクションはサポートされていません。 64 ビット Windows システムでの WOW64 の使用の詳細については、「 32 ビット アプリケーションの実行」を参照してください。
アセンブリをドメイン中立として読み込むかどうかを制御します。
開始前に CLR のインスタンスを構成するための追加オプションを設定するために使用できる ICorRuntimeHost へのインターフェイス ポインターを取得します。
構文
HRESULT CorBindToRuntimeEx (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] DWORD startupFlags,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID FAR *ppv
);
パラメーター
pwszVersion [in]読み込む CLR のバージョンを説明する文字列。
.NET Framework のバージョン番号は、ピリオドで区切られた 4 つの部分 ( major.minor.build.revision) で構成されます。
pwszVersionとして渡される文字列は、文字 "v" の後にバージョン番号の最初の 3 つの部分 (例: "v1.0.1529") で始まる必要があります。
CLR の一部のバージョンは、以前のバージョンの CLR との互換性を指定するポリシー ステートメントと共にインストールされます。 既定では、スタートアップ shim はポリシー ステートメントに対して pwszVersion を評価し、要求されているバージョンと互換性のある最新バージョンのランタイムを読み込みます。 ホストは、以下で説明するように、startupFlags パラメーターに STARTUP_LOADER_SAFEMODE の値を渡すことによって、shim にポリシー評価をスキップし、pwszVersionで指定された正確なバージョンを読み込むよう強制できます。
呼び出し元が pwszVersionに null を指定 CorBindToRuntimeEx 、インストールされているランタイムのバージョン番号が .NET Framework 4 ランタイムより低いセットを識別し、そのセットから最新バージョンのランタイムを読み込みます。 .NET Framework 4 以降は読み込まれません。以前のバージョンがインストールされていない場合は失敗します。 null を渡すと、どのバージョンのランタイムが読み込まれるかをホストが制御できなくなることに注意してください。 一部のシナリオではこの方法が適している場合がありますが、ホストが読み込む特定のバージョンを提供することを強くお勧めします。
pwszBuildFlavor [in]サーバーを読み込むか、CLR のワークステーション ビルドを読み込むかを指定する文字列。 有効値は svr または wks です。 サーバー ビルドは、ガベージ コレクションに複数のプロセッサを利用するように最適化されており、ワークステーションのビルドは、単一プロセッサ コンピューターで実行されているクライアント アプリケーション用に最適化されています。
pwszBuildFlavorが null に設定されている場合は、ワークステーションのビルドが読み込まれます。 単一プロセッサ コンピューターで実行している場合、 pwszBuildFlavor が svr に設定されている場合でも、ワークステーションのビルドは常に読み込まれます。 ただし、 pwszBuildFlavor が svr に設定され、同時実行ガベージ コレクションが指定されている場合 ( startupFlags パラメーターの説明を参照)、サーバー ビルドが読み込まれます。
startupFlags [in] STARTUP_FLAGS 列挙体の値の組み合わせ。 これらのフラグは、同時実行ガベージ コレクション、ドメインに依存しないコード、および pwszVersion パラメーターの動作を制御します。 フラグが設定されていない場合、既定値は単一ドメインです。 有効な値は、次のとおりです。
STARTUP_CONCURRENT_GCSTARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAINSTARTUP_LOADER_OPTIMIZATION_MULTI_DOMAINSTARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOSTSTARTUP_LOADER_SAFEMODESTARTUP_LOADER_SETPREFERENCESTARTUP_SERVER_GCSTARTUP_HOARD_GC_VMSTARTUP_SINGLE_VERSION_HOSTING_INTERFACESTARTUP_LEGACY_IMPERSONATIONSTARTUP_DISABLE_COMMITTHREADSTACKSTARTUP_ALWAYSFLOW_IMPERSONATION
これらのフラグの説明については、 STARTUP_FLAGS 列挙型を参照してください。
rclsid[in]ICorRuntimeHost または ICLRRuntimeHost インターフェイスを実装するコクラスのCLSID。 サポートされている値は、CLSID_CorRuntimeHostまたはCLSID_CLRRuntimeHostです。
riid[in]rclsidから要求されたインターフェイスのIID。 サポートされている値は、IID_ICorRuntimeHostまたはIID_ICLRRuntimeHostです。
ppv [out] riidに返されるインターフェイス ポインター。
注釈
存在しないランタイム バージョン pwszVersion 指定した場合、 CorBindToRuntimeEx は CLR_E_SHIM_RUNTIMELOAD の HRESULT 値を返します。
Windows ID の実行コンテキストとフロー
CLR のバージョン 1 では、 WindowsIdentity オブジェクトは、新しいスレッド、スレッド プール、タイマー コールバックなどの非同期ポイント間でフローしません。 CLR のバージョン 2.0 では、 ExecutionContext オブジェクトは現在実行中のスレッドに関するいくつかの情報をラップし、アプリケーション ドメインの境界を越えてではなく、任意の非同期ポイントをまたいでフローします。 同様に、 WindowsIdentity オブジェクトは、任意の非同期ポイントをまたいでフローします。 したがって、スレッド上の現在の偽装もフローします (存在する場合)。
フローは、次の 2 つの方法で変更できます。
ExecutionContext設定を変更して、スレッドごとにフローを抑制します (SuppressFlow、SuppressFlow、およびSuppressFlowWindowsIdentityメソッドを参照)。
プロセスの既定のモードをバージョン 1 互換モードに変更すると、現在のスレッドのExecutionContext設定に関係なく、WindowsIdentity オブジェクトが非同期ポイント間を流れることはありません。 既定のモードを変更する方法は、マネージド実行可能ファイルとアンマネージ ホスティング インターフェイスのどちらを使用して CLR を読み込むかによって異なります。
マネージド実行可能ファイルの場合は、<legacyImpersonationPolicy> 要素の
enabled属性をtrueに設定する必要があります。アンマネージ ホスティング インターフェイスの場合は、
CorBindToRuntimeEx関数を呼び出すときに、startupFlagsパラメーターにSTARTUP_LEGACY_IMPERSONATIONフラグを設定します。
バージョン 1 互換モードは、プロセス全体およびプロセス内のすべてのアプリケーション ドメインに適用されます。
必要条件
:「システム要件」を参照してください。
ヘッダ: MSCorEE.h
ライブラリ: MSCorEE.dll
.NET Framework のバージョン: 1.0 以降で使用可能
こちらも参照ください
.NET