Hardresu
hardresume
Функция Функция обработки ошибок электронного оборудова- ния.
Синтаксис #include
void hardresume(int rescode);
Файл, содержащий dos.h прототип
Описание Программа обработки ошибочных состояний, устанав- ливаемая функцией harderr может использовать фун- кцию hardresume для возврата управления DOS. Воз- вращаемое значение rescode должно содержать инди- катор, определяющий игнорирование ошибки (0), повторение операции (1) или завершение программы (2). Завершение программы выполняется посредством прерывания DOS 0x23.
Программа обработки прерывания должна возвращать 0, если необходимо игнорировать ошибку, 1, если нужно повторить операцию и 2 для завершения прог- раммы.
Возвращаемое Нет. значение
Переносимость Функция уникальна для DOS.
Смотрите также
Пример:
/* Эта программа отслеживает появление ошибок, и запрашивает у пользователя дальнейшие действия. Для того, чтобы была вызва- на подпрограмма обработки ошибок, запуская программу, выньте из дисковода А: диск. */
#include
#include
#include
#define IGNORE 0 #define RETRY 1 #define ABORT 2
/* определим сообщения об ошибке для дисковода */ static char *err_msg[] = {"диск защищен от записи", "неизвестное устройство", "дисковод не готов", "неизвестная команда", "ошибка данных (CRC)", "ошибка поиска", "неизвестный тип носителя", "ненайден сектор", "в принтере нет бумаги", "сбой при записи", "ошибка при чтении", "неустранимая ошибка", "зарезервирован", "зарезервирован", "неверная смена диска" };
error_win(char *msg) { int retval; cputs(msg); /* запрос у пользователя дальнейших действий */ while(1) { retval = getch(); if(retval == 'a' retval == 'A') { retval = ABORT; break; } if(retval == 'r' retval == 'R') { retval = RETRY; break; } if(retval == 'i' retval == 'I') { retval = IGNORE; break; } } return(retval); } /* прагма warn -par исключае выдачу предупреждений о том, что не в подпролграмме не используются параметры errval,bp и si */ #pragma warn -par
int handler(int errval, int ax, int bp, int si) { static char msg[80]; unsigned di; int drive; int errno; di = _DI; /* если это не ошибка диска, то возникли проблемы у другого устр-ва */ if(ax