_CorValidateImage Function

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

Syntax

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

Parameters

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

FileName [in]映像的文件名。

Return Value

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