· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Про ret в WinXP

Посл.отвђт Сообщенiе


Дата: Мар 5, 2004 16:08:15

Вспоминая традиции com- файла ставлю ret (а не ExitProcess) в конце программы. Всё работает т.к. в стеке при старте адресс ExitThread (push eax call ExitThread). Вопрос: можно ли так, нормально ли завершится программа (освободит ли все ресурсы) и как будет в многопоточных приложениях (у меня в XP SP1- вроде нормально работает)?


Дата: Мар 5, 2004 16:48:22

Дело в том, что при вызове CreateProcessW менеджером, и после ...действий вызывается из CreateProcessW CreateProcessInternalW:
Call [EBP+08], которая указывает на метку START Твоей проги. Короче она (прога) запущена. После комманды RET ?, если стек в порядке, то мы попадаем соответственно, на следующую комманду в CreateProcessInternalW:
Push EAX
Call ExitThread
Так что это аналогичный, не менее корректный способ выгрузки. Следует только учетсь то что важно, что в EAX.


Дата: Мар 6, 2004 07:53:57

Debug с вами, медетируйте


Дата: Мар 9, 2004 03:58:22

Sem
нормально ли завершится программа (освободит ли все ресурсы)
Imho если твоя программа сама не освобождает ресурсы, а надеется на ОС, то это уже не нормально.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.062