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