Анализ регистров
Когда обработчик получает управление, регистры процессора содержат информацию, необходимую для определения причины и места появления ошибки:
Регистр | Содержимое |
AH | Информация об ошибке.Бит 0: тип операции: 0 - чтение, 1 - запись Биты 1,2: область диска, где произошла ошибка: 00 - системные файлы; 01 - область FAT ; 10 - область каталога; 11 - область данных. Бит 3: если равен 1, возможен выход с кодом FAIL Бит 4: если равен 1, возможен выход с кодом RETRY Бит 5: если равен 1, возможен выход с кодом IGNORE Бит 6 зарезервирован, равен 0 Бит 7 тип устройства: 0 - диск; 1 - символьное устройство |
AL | Номер диска (если бит 7 регистра AH равен 0) |
DI | Код ошибки (биты 0...7, остальные биты не определены) |
BP:SI | Адрес заголовка драйвера устройства, в котором произошла ошибка |
Обработчик критических ошибок не должен пользоваться функциями MS-DOS с кодами, большими чем 0Ch (из-за того, что функции MS-DOS не реентерабельны).
Программа обработки критических ошибок может вывести на экран сообщение об ошибке и запросить оператора о необходимых действиях. Ей разрешено также получить дополнительную уточняющую информацию об ошибке с помощью функции 59h прерывания INT 21h или узнать версию MS-DOS с помощью функции 30h этого же прерывания.
Дополнительная информация об устройстве, в котором произошла ошибка, может быть получена с использованием адреса заголовка драйвера устройства, который передается операционной системой при вызове обработчика в регистрах BP:SI.