Описание функций Си

       

Intdosx



     intdosx

Функция Интерфейс с функциями DOS.

Синтаксис #include

int int86(int intr_num, union REGS *inregs, union REGS *outregs, struct SREGS *segregs);

Файл, содержащий dos.h прототип

Описание Функция генерирует программное прерывание DOS 0x21 для вызова необходимой функции DOS. Значение inregs->h.al определяет требуемую функцию.

Кроме этого, intdosx копирует значения segregs->x.ds и segregs->x.es в соответствующие регистры, перед вызовом прерывания. Эта возможность позволяет программам использовать дальние указатели или большие модели памяти для указания используемых для прерывания сегментов.

После возврата из прерывания, функция копируют те- кущие значения регистров в параметр outregs, а ста- тус флажка системного переноса в поле x.cflag па- раметра outregs. Если флажок переноса установлен, это означает что произошла ошибка. Кроме этого, данная функция восстанавливает содержимое DS и за- полняет поля segregs->es и segregs->ds соответст- вующими значениями.

intdosx позволяет вам вызывать функцию DOS, кото- рая получает значение в DS, отличное от адреса сег- мента данных по умолчанию, и/или которое получает аргумент в регистре ES.

Примечание: параметры inregs и outregs могут ука- зывать на одну и туже структуру.

Возвращаемое Функция intodsx возвращает значение регистра AX после значение завершения прерывания. Если флажок переноса уста- новлен (outregs-->x.cflag!=0), то есть произошла ошибка, данная функция присваивает глобальной пе- ременной _doserrno код ошибки.

Переносимость Функция уникальна для DOS.

Смотри также 6 6,

Пример: #include

#include

/* удаление файла. При успешном завершении возвращает 0, иначе ненулевое значение */ int delete_file(char near *filename) { union REGS regs; int ret; regs.h.ah = 0x41; /* удаление файла */ regs.x.dx = (unsigned) filename; ret = intdos(&regs, &regs); /* if carry flag is set, there was an error */ return(regs.x.cflag ? ret : 0); } int main(void) { int err; err = delete_file("NOTEXIST.$$$"); printf("Able to delete NOTEXIST.$$$: %s\n", (!err) ? "YES" : "NO");

} Вывод:

Able to delete NOTEXIST.$$$: NO



Содержание раздела