Цитата(SM @ Jun 14 2007, 14:17)

Бред какой-то. Ни errors, ни status не могут возвращаться при таком объявлении. Они только передаются в функцию. Возвращаться может что-то переданное в ф-цию по указателю и что то ОДНО (пусть хоть байт, хоть структура), что является типом, возвращаемым функцией. И третьего не дано.
Ну, я бы так с ходу не стал называть это бредом. Аргументы в функцию я не передаю, мне не надо, но, сишная программа, действительно, передаёт в программу через AL и AH. И одновременно, кладёт эти же значения в стек! Вопрос зачем?
Дома у меня нет, завтра покажу дизассемблированный кусок, там прям видно, как сишная программа использует возвращенные значения, никаких фокусов, всё по-честному.
Цитата(zltigo @ Jun 14 2007, 15:55)

А они и не возвращаются

они остаются лежать в мусоре стека,
из этого мусора ASM программа их и извлекает - трюкачество на ровном месте, короче. В принципе для более-менее чистого С существует один более-менее легальный вариант - использовать разнобой между 'C' и Паскалевским соглашением по очистке стека от аргументов и вызывать реальную _cdecl функцию по _pascal прототипу. Это если конечно компилятор поддерживает.
Да? А зачем тогда, по-вашему, их в стек класть вообще, в мусор? Просветите, не дайте помереть дурой(:-). У меня асм ничего не извлекает из стека, он туда кладёт, а вот сишная программа - берёт из стека и присваивает значения сишным переменным! Там кстати, не мусор, а хип, который организуется самим компилером.