Главная страница
Навигация по странице:

  • Возвращаемое

  • Назначение

  • Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования


    Скачать 3.41 Mb.
    НазваниеПодпрограммы классификации Подпрограммы преобразования
    АнкорСправочник по функциям С++.doc
    Дата07.05.2018
    Размер3.41 Mb.
    Формат файлаdoc
    Имя файлаСправочник по функциям С++.doc
    ТипДокументы
    #18992
    КатегорияИнформатика. Вычислительная техника
    страница61 из 120
    1   ...   57   58   59   60   61   62   63   64   ...   120

    harderr


    -----------------------------------------------------------------
    Назначение Устанавливает обработчик ошибок оборудования.
    Синтаксис void harderr(int(*fptr)());
    Прототип в dos.h
    Замечания harderr устанавливает обработчик ошибок

    оборудования для текущей программы. Этот обра-

    ботчик включается, когда возникает прерывание 0

    х24. (Смотри Руководство программиста MS-DOS

    для ознакомления с прерываниями.)
    Функция, на которую указывает fptr, будет выз-

    вана, когда возникнет прерывание. Обработчик

    будет вызван со следующими аргументами.
    harderr(int errval,int ax,int bp,int si);
    errval - код ошибки, помещенный в регистр DI

    системой.

    ax,bp и si - значения, установленные MS-DOS для

    AX,BP,SI регистров соответственно.
    * ax показывает, случилась ли ошибка диска или

    другого устройства: если ax не отрицательно, то

    ошибка на диске, иначе это ошибка устройства.

    Для ошибок диска ax логически складывается с 0

    x00FF и в результате получается номер диска (1=

    А, 2=В и т.д.)
    * bp и si указывают на заголовок драйвера оши-

    бочного устройства (содержат сегмент адреса и

    смещение соответствено).
    Указанная функция не вызывается прямо. harderr

    устанавливает обработчик прерываний DOS, кото-

    рый и вызывает ее.
    peek и peekb могут использоваться для получения

    информации об устройстве из заголовка.
    Обработчик может использовать вызов bdos 1 че-

    рез 0хС, но все остальные вызовы bdos будут

    подменены MS-DOS. В частности, любой из стан-

    дартных вызовов ввода-вывода Си или эмулятора

    UNIX не может быть использован.
    Заголовок драйвера может не изменяться через

    вызов poke или pokeb.
    Обработчик должен возвращать 0 для игнорирова-

    ния, 1 для новой попытки и 2 для аварийного

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

    значение
    Переносимость Уникальна для MS-DOS.
    Смотри также hаrderesume, hardretn, peek, poke
    Пример

    #include

    #include
    #define DISPLAY_STRING 0x09

    #define IGNORE 0

    #define RETRY 1

    #define ABORT 2
    int handler(int errval,int ax,int bp,int si)

    {

    char msg[25]; int drive;

    if (ax < 0) { /* ошибка устройства */

    bdosptr(DISPLAY_STRING,"ошибка устройства$",

    0);

    hardretn(-1);

    }

    drive = (ax & 0x00F);

    sprintf(msg,"ошибка диска на устройстве %c$",

    'A' + drive);

    bdosptr(DISPLAY_STRING,msg,0);

    return(ABORT);

    }
    main()

    {

    harderr(handler);

    printf("Убедитесь, что в дисководе A нет"

    " диска\n");

    printf("Нажмите по готовности любую"

    " клавишу...");

    getch();

    printf("Попытка доступа к A\n");

    fopen("A:ANY.FIL","r");

    }
    Результат выполнения программы
    Убедитесь, что в дисководе A нет диска

    Нажмите по готовности любую клавишу...

    Попытка доступа к A

    Ошибка диска на устройстве A

    -----------------------------------------------------------------

    hardresume


    -----------------------------------------------------------------
    Назначение Функция обработки ошибки оборудования.
    Синтаксис void hardresume(int resolve);
    Прототип в dos.h
    Замечания Обработчик ошибок, установленный функцией

    harderr, может возвращаться в MS-DOS, вызвав

    для этого hardresume. Возвращаемое значение об-

    работчика или rescode (код результата)

    hardresume содержит индикатор аварийного окон-

    чания (2), повтора (1) или игнорирования ошибки

    (0). Аварийное окончание сопровождается преры-

    ванием DOS 0x23 (Ctrl-break).
    Возвращаемое Нет.

    значение
    Переносимость Уникальна для MS-DOS.
    Смотри также haderr, hadretn

    -----------------------------------------------------------------

    hardretn


    -----------------------------------------------------------------
    Назначение Функция обработки ошибки оборудования.
    Синтаксис void hardretn(int errcode);
    Прототип в dos.h
    Замечания Обработчик ошибок, установленный функцией

    haderr, может возвращаться прямо в прикладную

    программу по вызову hardretn. Обработчик должен

    возвращать 0 - для игнорирования ошибки уст-

    ройства, 1 - для повторного обращения, 2 - для

    завершения программы.
    Возвращаемое Нет.

    значение
    Переносимость Уникальна для MS-DOS.
    Смотри также haderr, hadresume
    Пример Смотри harderr

    -----------------------------------------------------------------
    1   ...   57   58   59   60   61   62   63   64   ...   120


    написать администратору сайта