Загрузка DLL при создании процесса через CreateProcess()

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
TamerLAN
Сообщения: 7
Зарегистрирован: 31 янв 2006, 13:59
Откуда: из Орды

В программе запускаю функцию CreateProcess с флагом CREATE_SUSPENDED. Никак не могу выяснить, подгружаются ли dll-ки к программе сразу при создании процесса или уже после, когда я "оживляю" его через ResumeThread :? В MSDN по этому поводу информации не нашёл. Может, кто знает... :wink:
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Все implicitly linked DLL подгружаются к моменту возврата из CreateProcess(). Есть одно исключение - DLL, в которых размещены hook procedures для глобальных хуков. Они подгружаются при 1-й выборке сообщения соотв.типа из message queue процесса.
TamerLAN
Сообщения: 7
Зарегистрирован: 31 янв 2006, 13:59
Откуда: из Орды

Спасибо за инфу! :)
TamerLAN
Сообщения: 7
Зарегистрирован: 31 янв 2006, 13:59
Откуда: из Орды

Прошу прощения за назойливость, но появился еще один вопрос, на который не могу никак найти полноценный ответ в мануалах: как можно добиться того, чтобы запуск программы через CreateProcess() НИКАК не зависел от родительского процесса? :?:
Дело в том, что я выпоняю следующий код:
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

CreateProcess("program.exe" ,
NULL,
NULL,
NULL,
FALSE,
CREATE_SUSPENDED,
GetEnvironmentStrings(),
NULL,
&si,
&pi )
)
Однако после запуска программы program.exe в ней не работают диалоговые окна. При обычном запуске через Explorer всё работает нормально... :shock:
Ответить