IHostAssemblyStore::P rovideAssembly 方法

會從 IHostAssemblyManager::GetNonHostStoreAssemblyBassemblies 回傳一個 ICLRAssemblyReferenceList 未引用的組件。 每個未出現在清單中的組合語言,則是通用語言執行時(CLR)呼叫 ProvideAssembly

語法

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

參數

pBindInfo [在]一個指向 AssemblyBindInfo 實例的指標,主機用來判斷某些綁定特性,包括是否有版本控制政策,以及要綁定哪個組裝裝置。

pAssemblyId [出]指向該組合 IStream的唯一識別碼指標。

pHostContext [出]一個指向主機特定資料的指標,用於判斷所請求組裝的證據,無需平台呼叫。 pHostContext 對應 HostContext 於受管理 Assembly 類別的屬性。

ppStmAssemblyImage [出]指向包含可攜式可執行檔(PE)映像檔的位址 IStream 指標,若找不到組合語言則為空指標。

ppStmPDB [出]一個指向包含程式除錯(PDB)資訊的位址 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) 但無法找到所要求的集會地點。
E_NOT_SUFFICIENT_BUFFER 由 指定的 pAssemblyId 緩衝區大小不足以容納主機想要回傳的識別碼。

備註

回傳的 pAssemblyId 身份值由主機指定。 識別碼必須在程序的生命週期內保持唯一。 CLR 使用此值作為串流的唯一識別碼。 它會將每個值與其他呼叫ProvideAssembly回傳的值pAssemblyId進行檢查。 若主機對另一IStream台 回傳相同pAssemblyId值,CLR 會檢查該串流的內容是否已被映射。 如果是這樣,執行時會載入現有的映像檔,而不是映射新的。

要求

平台:請參閱系統需求

標題: MSCorEE.h

圖書館: MSCorEE.dll 中納入資源

.NET Framework 版本: 自 2.0 起可用

另請參閱