IHostAssemblyStore::ProvideAssembly 方法
取得對 IHostAssemblyManager::GetNonHostStoreAssemblies 所傳回,且 ICLRAssemblyReferenceList 並未參考的組件參考。 通用語言執行平台 (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
會對應至受控 Assembly 類別的 HostContext 屬性。
ppStmAssemblyImage
[out] IStream
的位址指標,其中包含要載入的可攜式可執行檔 (PE) 映像,如果找不到組件,則為 null。
ppStmPDB
[out] IStream
的位址指標,其中包含程式偵錯 (PDB) 資訊,如果找不到 .pdb 檔案,則為 null。
傳回值
HRESULT | 描述 |
---|---|
S_OK | ProvideAssembly 已成功傳回。 |
HOST_E_CLRNOTAVAILABLE | CLR 尚未載入處理序,或 CLR 處於無法執行受控程式碼或成功處理呼叫的狀態。 |
HOST_E_TIMEOUT | 呼叫逾時。 |
HOST_E_NOT_OWNER | 呼叫端未擁有鎖定。 |
HOST_E_ABANDONED | 封鎖的執行緒或 Fiber 在其上等候時,事件遭到取消。 |
E_FAIL | 發生未知的重大失敗。 如果方法傳回 E_FAIL,則 CLR 就無法再用於處理序。 後續對裝載方法發出的呼叫會傳回 HOST_E_CLRNOTAVAILABLE。 |
COR_E_FILENOTFOUND (0x80070002) | 無法找到要求的組件。 |
E_NOT_SUFFICIENT_BUFFER | pAssemblyId 所指定的緩衝區大小不夠大,無法保存主機想要傳回的識別碼。 |
備註
針對 pAssemblyId
傳回的識別值是由主機指定。 識別碼在處理序的存留期內必須是唯一的。 CLR 會使用此值作為資料流的唯一識別碼。 它會針對其他 ProvideAssembly
呼叫所傳回的 pAssemblyId
值,檢查每個值。 如果主機針對另一個 pAssemblyId
傳回相同的 IStream
值,CLR 會檢查是否已對應該資料流的內容。 若是如此,執行階段會載入影像的現有複本,而不是對應新的複本。
規格需求
平台:請參閱系統需求。
標題: MSCorEE.h
程式庫:包含作為 MSCorEE.dll 中的資源
.NET Framework版本:自 2.0 起可用