Никак не могу понять: почему при выполнении CreateFile, например, invoke CreateFile,szXX,GENERIC_READ or GENERIC_WRITE,0,0,\ OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 программа вылетает с сообщением о переполнении стека, если хотя бы раз перед вызовом CreateFile встречалась команда std? И как можно устранить эту проблему? Что же, получется, в Windows-программах цепочки символов можно только в "прямом" направлении обрабатывать, а в обратном - никак?
Alexey2005 Эту проблему решить нельзя, т.к. это соглашение о вызовах функций Win API - callback функции должны сохранять регистры ebx,esp,ebp,esi,edi и флаг напрвления. Теже правила и при вызове API функций. Они также сохраняют регистры. И одно еще одно правило - направление должно быть положительным. В windows можно работать в любом направлении обработки цепочек, просто до вызова любой API флаг направления нужно делать положительным.
Bill_Prisoner Если сохранение esp подразумевает соглашение stdcall, то есть одно исключение - user32!wsprintf.