Re[3]: CLR COM Server. Где?
От: _Morpheus_  
Дата: 04.07.07 10:33
Оценка:
Здравствуйте, fronter3, Вы писали:

F>Здравствуйте, _Morpheus_, Вы писали:


_M_>>Здравствуйте, fronter3, Вы писали:


F>>>Как выяснилось CRL реализована в MSCorWks.dll (~5MB)

F>>>И насколько я понял, при создании процесса (в результате запуска управляемой сборки), CLR загружается в каждый процесс.

_M_>>CLR реализована в MSCOREE.DLL. При запуске дотнет приложения под Win выполняется обычный x86 код, который просто передает управление в функцию _CorExeMain из статически прилинкованой MSCOREE.DLL. Таким образом MSCOREE.DLL загружается в каждый дотнет процесс (это относится к Microsoft реализации дотнета). _CorExeMain считывает заголовок EXE файла из которого произведен вызов, находит IL код, компилирует код необходимый для выполнения Main, подставляя на место обращений к другим методам свой хук и передает этому коду управление. Если управление дошло до одного из хуков, то производится компиляция метода к которому произошло обращение и хук заменяется на адрес по которому произведена компиляция этого метода — в следующий раз этот вызов будет произведен сразу, без компиляции.


F>Рихтер:

F>

F>The CLR itself isn't implemented in MSCorEE.dll; it is implemented in a file called
F>MSCorWks.dll.

F>Так же он утверждает что MSCorEE.dll это некий shim который и грузит нужную CLR:

суть от этого не меняется, сама mscoree есть, находится она тут: C:\WINDOWS\system32\mscoree.dll
Что она там грузит для свое работы не столь важно.


F>Но вопрос быд не в CLR а где находится COM Server? в отдельном процессе или грузится в каждый процесс, тем самым увеличивая его на 5 МБ по умолчанию...


зависит от типа сервера, для inproc сервера грузится в каждый процесс
... << RSDN@Home 1.2.0 alpha rev. 676>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.