_CorValidateImage 函数
验证托管模块映像,并在加载后通知操作系统加载程序。
语法
STDAPI _CorValidateImage (
[in] PVOID* ImageBase,
[in] LPCWSTR FileName
);
参数
ImageBase
[in] 一个指针,指向要作为托管代码进行验证的映像的起始位置。 映像必须已加载到内存中。
FileName
[in] 映像的文件名。
返回值
此函数返回标准值 E_INVALIDARG
、E_OUTOFMEMORY
、E_UNEXPECTED
和 E_FAIL
,以及以下值。
返回值 | 说明 |
---|---|
STATUS_INVALID_IMAGE_FORMAT |
映像无效。 此值具有 HRESULT 0xC000007BL。 |
STATUS_SUCCESS |
映像有效。 此值具有 HRESULT 0x00000000L。 |
备注
在 Windows XP 及更高版本中,操作系统加载程序通过检查通用对象文件格式 (COFF) 头中的 COM 描述符目录位来检查托管模块。 一个设置位表示一个托管模块。 如果加载程序检测到托管模块,将加载 MsCorEE.dll 并调用 _CorValidateImage
,后者会执行以下操作:
确认映像是有效的托管模块。
将映像中的入口点更改为公共语言运行库 (CLR) 中的入口点。
对于 64 位 Windows 版本,修改内存中的映像,将其从 PE32 转换为 PE32+ 格式。
在加载完托管模块映像后返回加载程序。
对于可执行映像,操作系统加载程序随后调用 _CorExeMain 函数,而不考虑可执行文件中指定的入口点。 对于 DLL 程序集映像,加载程序将调用 _CorDllMain 函数。
_CorExeMain
或 _CorDllMain
执行以下操作:
初始化 CLR。
从程序集的 CLR 标头中查找托管入口点。
开始执行。
卸载了托管模块映像时,加载程序会调用 _CorImageUnloading 函数。 但是,此函数不执行任何操作;它只返回。
要求
平台:请参阅系统要求。
标头:Cor.h
库:作为资源包含在 MsCorEE.dll 中
.NET Framework 版本:自 1.0 起可用