共用方式為


IHostAssemblyStore::ProvideAssembly 方法

更新:2010 年 6 月

取得不是由 ICLRAssemblyReferenceList (從 IHostAssemblyManager::GetNonHostStoreAssemblies 傳回) 所參考之組件的參考。 Common Language Runtime (CLR) 會針對清單中未出現的每一個組件,呼叫 ProvideAssembly

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

參數

  • pBindInfo
    [in] AssemblyBindInfo 執行個體的指標,主應用程式會使用它來判斷特定的繫結特性,包括任何版本控制原則的存在與否,以及要繫結哪一個組件。

  • pAssemblyId
    [out] 此 IStream 之要求組件的唯一識別項指標。

  • pHostContext
    [out] 主應用程式特定的資料指標,可用來判斷要求組件的辨識項,而不需要平台叫用呼叫。 pHostContext 屬性對應於 Managed Assembly 類別的 HostContext 屬性。

  • ppStmAssemblyImage
    [out] IStream 位址的指標,其包含要載入的可攜式執行檔 (PE) 映像;如果找不到組件,則為 null。

  • ppStmPDB
    [out] IStream 位址的指標,其包含程式偵錯 (PDB) 資訊;如果找不到 pdb 檔,則為 null。

傳回值

HRESULT

描述

S_OK

ProvideAssembly 已成功傳回。

HOST_E_CLRNOTAVAILABLE

CLR 尚未載入至處理序中,或者此 CLR 目前的狀態無法執行 Managed 程式碼或成功處理呼叫。

HOST_E_TIMEOUT

呼叫已逾時。

HOST_E_NOT_OWNER

呼叫端不具備鎖定功能。

HOST_E_ABANDONED

已封鎖執行緒或 Fiber 在等候事件時,該事件已遭取消。

E_FAIL

發生未知的重大錯誤。 當方法傳回 E_FAIL 時,便無法在處理序內使用 CLR。 對裝載方法的後續呼叫會傳回 HOST_E_CLRNOTAVAILABLE。

COR_E_FILENOTFOUND (0x80070002)

找不到要求的組件。

ERROR_INSUFFICIENT_BUFFER

pAssemblyId 指定的緩衝區不夠大,無法容納主應用程式想要傳回的識別項。

備註

針對 pAssemblyId 所傳回的識別值是主應用程式所指定。 識別項在處理序的存留期內必須是唯一的。 CLR 會使用此值做為資料流唯一的識別項。 它會根據其他的 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。

客戶回函。