通过


IHostAssemblyStore::P rovideAssembly 方法

获取对从 IHostAssemblyManager::GetNonHostStoreAssemblies 返回的 ICLRAssemblyReferenceList 未引用的程序集的引用。 公共语言运行时 (CLR) 调用 ProvideAssembly 列表中未显示的每个程序集。

Syntax

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 对应于 HostContext 托管 Assembly 类的属性。

ppStmAssemblyImage [out]指向要加载的可移植可执行文件(PE)映像的地址的 IStream 指针,如果找不到程序集,则为 null。

ppStmPDB [out]指向包含程序调试(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 起可用

另见