验证托管模块映像,并在加载托管模块映像后通知操作系统加载程序。
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