PDA

Просмотр полной версии : Загрузка DLL при создании процесса через CreateProcess()



TamerLAN
08.02.2006, 15:29
В программе запускаю функцию CreateProcess с флагом CREATE_SUSPENDED. Никак не могу выяснить, подгружаются ли dll-ки к программе сразу при создании процесса или уже после, когда я "оживляю" его через ResumeThread :? В MSDN по этому поводу информации не нашёл. Может, кто знает... :wink:

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

TamerLAN
10.02.2006, 08:26
Спасибо за инфу! :)

TamerLAN
11.02.2006, 00:05
Прошу прощения за назойливость, но появился еще один вопрос, на который не могу никак найти полноценный ответ в мануалах: как можно добиться того, чтобы запуск программы через 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: