CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
intdosx
INTDOSX #include <dos.h> int intdosx(intno,inregs,outregs,segregs); union REGS *inregs; значение регистров при вызове union REGS *outregs; значение регистров при возврате struct SREGS *segregs; значение сегментов при вызове Описание. Функция intdosx осуществляет выполнение системного вызова DOS, который определен значением регистра, объявленным в inregs, и возвращает результат системного вызова в outregs. В отличии от функции intdos, функция intdosx принимает значения регистров сег- мента в segregs, позволяя программам, которые используют сегменты данных большой модели или far-указатели, определить, какой сег- мент или указатель должен быть использован на протяжении систем- ного вызова. Аргументы inregs и outregs являются объединениями типа REGS.Аргумент segregs является структурой типа SREGS. Эти типы объявлены в include-файле <dos.h>. Для активизации системно- го вызова функция intdosx выполняет команду INT 21H. Перед выпол- нением команды функция копирует содержимое inregs и segregs в со- ответствующие регистры. В segregs используются только значения регистров DS и ES. После возврата команды INT intdosx копирует текущее значение регистра в outregs и перезаписывает DS. Она также копирует статус переносимого флага системы в поле cflag, размещенное в outregs. Если это поле является ненулевым, флаг устанавливается посредством системного вызова и указывает на условие ошибки. Область действия функции intdosx расширяется и на область действия системных вызовов DOS, которые берут аргумент в регистре ES или значение регистра DS, отличное от умалчиваемого сегмента данных. Возвращаемое значение. После завершения системного вызова функция intdosx возвра- щает значение регистра AX. Если поле cflag в outregs является не- нулевым, возникает ошибка и _doserrno также устанавливает соот- ветствующий код ошибки. См.также bdos, intdos, segread, FP_SEG. Замечание! Значения сегмента для аргумента segreg могут быть получены либо при использовании функции segread, либо макро FP_SEG. Пример: #include <dos.h> union REGS inregs, outregs; struct SREGS segregs; char far *dir = "/test/bin"; /*следующий оператор заменяет текущий рабочий директорий вызовом шеснадцатеричной функции DOS 36 */ inregs.h.ah=0x3b; /* измененный директорий */ inregs.x.dx=FP_OFF(dir); /* имя файла offset*/ segregs.ds=FP_SEG(dir); /* имя файла сегмента */ intdosx(&inregs,&outregs,&segregs);