появилась проблема с сабжем, рекурсия выполняет поиск файла (даже из под поддиректорий) в любой папке, рекурсия работает отлично (количество вызовов рекурсии известно), в некоторый момент времени нужно прервать рекурсию и выйти, в данном случае на ExitProcess (для этого соответственно нужно правильно выровнить стек) небольшая схема: (szDir - стартовая папка, szFile - искомый файл) Код (Text): start: stdcall _recursion,szDir,szFile invoke ExitProcess,NULL proc _recursion, lpParam1,lpParam2 - если файл найден в этой папке выходим в ExitProcess - если нет, ищем в следующей папке: pushad stdcall _recursion,lpParam3,lpParam2 popad return endp ps. lpParam3 - модификация lpParam1 (szPath) помогите пожалуйста
Avoidik Выставить какой-нибудь флаг или построить функцию так, чтобы при нахождении файла просто выходить из подпрограммы. Стек раскрутится сам. Или самому выравнивать стек на основе счётчика вызовов подпрограммы.
Самый простой способ - заюзать глобальную переменную, куда сохранять ESP при старте программы (хотя, если речь идёт о выходе по ExitProcess, то нужно ли его восстанавливать?) Более сложный - положить в стэк "маркер" вроде C001C0DEh и потом его искать. Принцип простой - любой указатель, размер массива и т.п. в виндосе < 80000000h, поэтому старший бит можно использовать для других целей. Хотя многут быть и подводные камни...