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



         

Harderr



     harderr

Функция Устанавливает подпрограмму обработки ошибок электронного оборудования.

Синтаксис #include

void harderr(*handler)());

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

Описание Функция harderr устанавливает подпрограмму обра- ботки сбоев электронного оборудования для текущей программы. Данная подпрограмма вызывается к рабо- те, как только возникнет прерывание 0x24. (см. документ "Справочное руководство программиста для DOS").

При появлении данного прерывыания происходит вы- зов функции handler. Функция должна быть вызвана со следующими аргументами:

handler(int errval, int ax, int bp, int si);

Переменная errval - код ошибки, устанавливаемый DOS в регистре DI. ax, bp и si - значения, кото- рые MS-DOS помещает соответственно в регистры AX,BP,SI.

- параметр ax обозначает, произошла ли ошибка диска или какого-либо другого устройства. Если ax не отрицательно, произошла дисковая ошибка, в противном случае, это ошибка другого устройства. Для дисковой ошибки значение ax, сложенное логи- чески (операцией AND) с 0x00FF, даст номер диско- вода, в котором произошел сбой (1=A; 2=B; и т.д.).

- bp и si вместе указывают на заголовок драйвера устройства, в котором произошел сбой. bp содержит адрес сегмента, а si смещение.

Названная выше функция не вызывается непосредст- венно. Функция harderr устанавливает подпрограмму обработки прерываний DOS, которая вызывает функ- цию. Для получения информации из заголовка драй- вера можно использовать функции peek и peekb.

Программа - обработчик прерываний может использо- вать системные вызовы DOS от 1 до 0xC, все ос- тальные вызовы портят DOS. В частности, не могут быть использованы ни любые стандартные подпрог- раммы ввода/вывода CИ, ни любые подпрограммы вво- да/вывода эмуляции UNIX.

Программа обработки прерывания должна возвращать 0, если необходимо игнорировать ошибку, 1, если нужно повторить операцию и 2 для завершения прог- раммы.

Возвращаемое Нет. значение

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




Содержание    Вперед