_CorValidateImage 関数
マネージ モジュール イメージを検証し、それらが読み込まれると、オペレーティング システム ローダーに通知します。
STDAPI _CorValidateImage (
[in] PVOID* ImageBase,
[in] LPCWSTR FileName
);
パラメーター
ImageBase
[入力] マネージ コードとして検証するイメージの開始位置を示すポインター。 イメージは、既にメモリに読み込まれている必要があります。FileName
[入力] イメージのファイル名。
戻り値
この関数は、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および E_FAIL の各標準値と次の値を返します。
戻り値 |
説明 |
---|---|
STATUS_INVALID_IMAGE_FORMAT |
イメージは無効です。 この値は HRESULT 0xC000007BL を持ちます。 |
STATUS_SUCCESS |
イメージは有効です。 この値は HRESULT 0x00000000L を持ちます。 |
解説
Windows XP 以降のバージョンでは、オペレーティング システム ローダーが、COFF (Common Object File Format) ヘッダー内の COM 記述子ディレクトリ ビットを調べることによって、マネージ モジュールの存在をチェックします。 ビットが設定されていれば、それはマネージ モジュールであることを示します。 ローダーは、マネージ モジュールを検出すると、MsCorEE.dll を読み込み、次のアクションを実行する _CorValidateImage を呼び出します。
イメージが有効なマネージ モジュールであることを確認します。
イメージのエントリ ポイントを共通言語ランタイム (CLR: Common Language Runtime) のエントリ ポイントに変更します。
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