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 起可用