コードの実行

共通言語ランタイムは、実行時に使用できるさまざまなサービスに加えて、マネージ実行のためのインフラストラクチャも提供します。メソッドは、実行する前にプロセッサ固有のコードにコンパイルされている必要があります。対応する MSIL (Microsoft Intermediate Language) が生成されているメソッドは、初めて呼び出されたときに JIT コンパイル (Just-In-Time コンパイル) されてから実行されます。次にこのメソッドが実行されるときには、JIT コンパイル済みの既存のネイティブ コードが実行されます。JIT コンパイルからコード実行までのプロセスは、実行が完了するまで繰り返されます。

実行時に、マネージ コードは、ガベージ コレクション、セキュリティ、アンマネージ コードとの相互運用性、言語間デバッグ サポート、強化された配置とバージョン管理のサポートなどのさまざまなサービスを利用できます。

Microsoft Windows XP では、オペレーティング システム ローダが COFF (Common Object File Format) ヘッダー内のビットを調べることにより、マネージ モジュールをチェックします。設定されたビットはマネージ モジュールを意味します。ローダーがマネージ モジュールを検出した場合は、mscoree.dll を読み込みます。そして、_CorValidateImage と _CorImageUnloading は、マネージ モジュール イメージが読み込まれるかまたはアンロードされると、それをローダーに通知します。_CorValidateImage は次のアクションを実行します。

  1. コードが有効なマネージ コードであることを確認します。

  2. イメージのエントリ ポイントをランタイムのエントリ ポイントに変更します。

64 ビットの Windows では、_CorValidateImage は、メモリ内のイメージを PE32 から PE32+ 形式に変換することによってそのイメージを変更します。

参照

概念

マネージ実行プロセス

その他の技術情報

.NET Framework におけるセキュリティ
アンマネージ コードとの相互運用
.NET Framework アプリケーションの配置