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) 尚未加载到进程中或者处于无法运行托管代码或成功处理调用的状态。 |
HOST_E_TIMEOUT |
调用超时。 |
HOST_E_NOT_OWNER |
调用方不拥有锁。 |
HOST_E_ABANDONED |
事件在被阻止的线程或纤程正在等待它时被取消。 |
E_FAIL |
发生了未知的灾难性故障。 如果某方法返回 E_FAIL,CLR 便无法再在进程中使用。 对宿主方法的后续调用都将返回 HOST_E_CLRNOTAVAILABLE。 |
ERROR_FILE_NOT_FOUND |
未能找到所请求的程序集或链接资源。 |
ERROR_INSUFFICIENT_BUFFER |
pdwModuleId 不够大,不足以包含主机要返回的标识符。 |
备注
为 pdwModuleId 返回的标识值由主机指定。 标识符在进程的生存期内必须是唯一的。 CLR 使用此值作为关联流的唯一标识符。 它将每个值与调用 ProvideAssembly 所返回的 pAssemblyId 的值以及 ProvideModule 的其他调用所返回的 pdwModuleId 的值进行比较。 如果宿主为另一个 IStream 返回了相同的标识符值,则 CLR 将检查是否已映射了该流的内容。 如果已映射,则 CLR 将加载现有的映像副本,而不是进行新的映射。 因此,该标识符还不得与从 ProvideAssembly 中返回的程序集标识符重叠。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**MSCorEE.h
**库:**作为一项资源包含在 MSCorEE.dll 中
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0