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

另请参阅