获取对从 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 起可用