Функция Интерфейс с функциями 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.
Смотри также bdosbdosptrgeninterruptintdosint6xint6, intrsegread
Пример:
#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(®s, ®s);
/* 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