IHostAssemblyStore::ProvideModule 方法
解析程序集内的模块或链接的(但未嵌入的)资源文件。
语法
HRESULT ProvideModule (
[in] ModuleBindInfo *pBindInfo,
[out] DWORD *pdwModuleId,
[out] IStream **ppStmModuleImage,
[out] IStream **ppStmPDB
);
参数
pBindInfo
[in] 指向 ModuleBindInfo 实例的指针,该实例描述所请求模块的 AppDomain、程序集和模块名称。
pdwModuleId
[out] 一个指针,指向包含已加载模块的的 IStream
的唯一标识符。
ppStmModuleImage
[out] 指向 IStream
对象的地址的指针,该对象包含要加载的可移植可执行文件 (PE) 映像;如果找不到模块,则为 null。
ppStmPDB
[out] 指向 IStream
对象的地址的指针,该对象包含所请求模块的程序调试 (PDB) 信息;如果找不到 .pdb 文件,则为 null。
返回值
HRESULT | 说明 |
---|---|
S_OK | 已成功返回 ProvideModule 。 |
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 | pdwModuleId 不够大,无法包含主机希望返回的标识符。 |
注解
针对 pdwModuleId
返回的标识值由主机指定。 标识符在进程的生存期内必须是唯一的。 CLR 使用此值作为关联流的唯一标识符。 它将对照对 ProvideAssembly 的调用返回的 pAssemblyId
的值以及对 ProvideModule
的其他调用返回的 pdwModuleId
的值来检查每个值。 如果主机针对其他 IStream
返回相同的标识符值,则 CLR 将检查是否已映射该流的内容。 如果已映射,CLR 将加载映像的现有副本,而不是映射一个新副本。 因此,该标识符也不得与从 ProvideAssembly
返回的程序集标识符重叠。
要求
平台:请参阅系统要求。
标头:MSCorEE.h
库:作为资源包含在 MSCorEE.dll 中
.NET Framework 版本:自 2.0 起可用