| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Неявная загрузка библиотеки |
| Автор: Router 26.3.2010, 19:50 |
| Меня интересует этап создания процесса, на котором рекурсивно загружаются все библиотеки из таблиц импорта. Я понимаю это так: - создается адресное пространство. - проецируется исполняемый модуль (файл программы). - загрузчик просматривает таблицу того или иного модуля. - если какой-то библиотеки нет, то он ее проецирует в текущее адресное пространство. А вопрос в том, как (кем и в контексте какого потока вызывается) и когда (до или после создания главного потока) происходит вызов главных функций этих библиотек? |
| Автор: azesmcar 26.3.2010, 20:25 |
| Стоит почитать Джефри Рихтера. http://wm-help.net/books-online/book/59464/59464-23.html#h1 тут есть подробные ответы на все твои вопросы. |
| Автор: bra1ny 26.3.2010, 22:53 |
| KiThreadStartup->LdrInitializeThunk( она и загружает библиотеки и вызывает dllmain с DLL_PROCESS_ATTACH ). Потом ( диспетчер APC ?) вызывает главную функцию потока. |
| Автор: jonie 27.3.2010, 09:50 |
| кстати, а в сорцах ядра винды (частично выложенных) нету процессов ? |
| Автор: Router 27.3.2010, 10:44 |
| Хорошо, ну все же меня интересует системы Windows NT Я сделал такой пример: библиотека (module.dll) в DllMain открывает файл в качестве доступа SharedMode я передаю 0 и (app.exe) приложения которое статически линкует module.dll в app.exe первым делом открывается тот же файл с SharedMode = 0 в результате получилось что app.exe открывает его первым (я даже ставил Sleep() в app.exe, и с ним app.exe открывает его первым ) а dll даже не подает признаков что не смогла открыть его. В результате вопрос, а действительно ли в статически слинкованых dll вызываются DllMain? И если все таки да, то что произойдет когда в DllMain поставить бесконечный цикл, какой поток будет выполнять этот самый цикл ? |
| Автор: bra1ny 27.3.2010, 15:17 | ||||
каких процессов? если вы про подсистему , смотрите обычные сорцы )
А я вам про какую? Вот сейчас сверил с Руссиновичом , что вчера вам написал , я не ошибся. |
| Автор: Router 27.3.2010, 16:19 |
| Про windows NT это я просто подчеркнул, а то забыл сказать про это. И все же хотелось, что бы вы прокомментировали мой второй пост, а то я запутался. |