_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 函数。 但是,此函数不会执行任何操作;它只是返回。

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**Cor.h

**库:**作为一项资源包含在 MsCorEE.dll 中

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

请参见

其他资源

元数据全局静态函数