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 阻塞的线程或纤程正在等待某一事件,而该事件已被取消。
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 起可用

另请参阅