この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
clr:実行手順 [2010/02/06 16:13] admin |
clr:実行手順 [2010/02/06 16:30] admin |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
{{indexmenu_n>7}} | {{indexmenu_n>7}} | ||
- | ====== かけるかな ====== | + | ====== アセンブリが実行される手順 ====== |
+ | ===== Windows98やWindows2000の場合 ===== | ||
+ | アセンブリがコンパイルされるときmscoree.dllが必要なdllとして指定され、PEの.textセクションには_CorExeMainへのジャンプ命令(x86)が記述される。_CorExeMainはmscoree.dllの中にある関数である。 | ||
+ | |||
+ | |||
+ | _CorExeMainはCLRを立ち上げ、exeの中のマネージコードのエントリポイントを探し実行を開始する。 | ||
+ | |||
+ | アンマネージコードがdllアセンブリをLoadLibrary()した場合は_CorExeMainの代わりに_CorDllMainが呼ばれる。 | ||
+ | |||
+ | ===== WindowsXP以降の場合 ===== | ||
+ | |||
+ | PEヘッダのIMAGE_DIRECTORY_ENTRY_COM_DESCRIPTORをみてマネージドであることを判断し、OSがやる。上の方法は使わない。上の方法はx86コード埋め込みなのでこっちのほうが汎用的。 |