_CorValidateImage 函数

验证托管模块映像,并在加载后通知操作系统加载程序。

语法

STDAPI _CorValidateImage (
   [in] PVOID* ImageBase,  
   [in] LPCWSTR FileName  
);  

参数

ImageBase
[in] 一个指针,指向要作为托管代码进行验证的映像的起始位置。 映像必须已加载到内存中。

FileName
[in] 映像的文件名。

返回值

此函数返回标准值 E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTEDE_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 起可用

请参阅