次の方法で共有


IHostAssemblyStore::ProvideAssembly メソッド

更新 : 2010 年 6 月

IHostAssemblyManager::GetNonHostStoreAssemblies から返された ICLRAssemblyReferenceList が参照しないアセンブリへの参照を取得します。 共通言語ランタイム (CLR: Common Language Runtime) は、リストにないアセンブリそれぞれについて、ProvideAssembly を呼び出します。

HRESULT ProvideAssembly (
    [in]  AssemblyBindInfo *pBindInfo,
    [out] UINT64           *pAssemblyId,
    [out] UINT64           *pHostContext,
    [out] IStream          **ppStmAssemblyImage,
    [out] IStream          **ppStmPDB
);

パラメーター

  • pBindInfo
    [入力] ホストが、任意のバージョン管理ポリシーの有無などのバインド特性やバインド対象のアセンブリを決定するために使用する AssemblyBindInfo インスタンスへのポインター。

  • pAssemblyId
    [出力] この IStream で要求されているアセンブリの一意の ID へのポインター。

  • pHostContext
    [出力] 要求されたアセンブリの証拠をプラットフォーム呼び出しを呼び出さずに確認するために使用されるホスト固有のデータへのポインター。 pHostContext は、Assembly マネージ クラスの HostContext プロパティに対応しています。

  • ppStmAssemblyImage
    [出力] 読み込まれている移植可能な実行可能 (PE) イメージを含む IStream のアドレスへのポインター。アセンブリが見つからなかった場合は null。

  • ppStmPDB
    [出力] プログラム デバッグ (PDB: Program Debug) 情報を含む IStream のアドレスへのポインター。.pdb ファイルが見つからなかった場合は null。

戻り値

HRESULT

説明

S_OK

ProvideAssembly が正常に終了しました。

HOST_E_CLRNOTAVAILABLE

CLR がプロセスに読み込まれていません。または、CLR がマネージ コードを実行できない状態か、呼び出しを正常に処理できない状態にあります。

HOST_E_TIMEOUT

呼び出しがタイムアウトしました。

HOST_E_NOT_OWNER

呼び出し元がロックを所有していません。

HOST_E_ABANDONED

ブロックされたスレッドまたはファイバーが待機しているイベントがキャンセルされました。

E_FAIL

未知の重大エラーが発生しました。 メソッドから E_FAIL が返される場合、プロセス内で CLR を使用することはできません。 ホスト メソッドへの後続の呼び出しで、HOST_E_CLRNOTAVAILABLE が返されます。

COR_E_FILENOTFOUND (0x80070002)

要求されたアセンブリが見つかりませんでした。

ERROR_INSUFFICIENT_BUFFER

pAssemblyId で指定されたバッファーの大きさが足りないため、ホストが返す ID を保持できません。

解説

pAssemblyId に返される ID 値は、ホストによって指定されます。 ID は、プロセスの有効期間中は一意である必要があります。 CLR は、この値をストリームの一意の ID として使用します。 それぞれの値は、他の ProvideAssembly 呼び出しによって返された pAssemblyId の値と比較して確認されます。 ホストが他の IStream と同じ pAssemblyId 値を返した場合、CLR は、そのストリームの内容が既に割り当てられているかどうかを確認します。 割り当てられている場合、ランタイムは新しいイメージを割り当てる代わりに、既存のイメージのコピーを読み込みます。

必要条件

プラットフォーム: 「.NET Framework システム要件」を参照

ヘッダー : MSCorEE.h

ライブラリ: MSCorEE.dll にリソースとして格納されていること

.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICLRAssemblyReferenceList インターフェイス

IHostAssemblyManager インターフェイス

IHostAssemblyStore インターフェイス

履歴の変更

日付

履歴

理由

2010 年 6 月

アセンブリが見つからない場合に返される HRESULT を修正。

カスタマー フィードバック