Глава 5. Дисковые накопители.
Раздел 4. Чтение и запись файла.
5.4.8 Определение дисковых ошибок и восстановление после них.
Дисковые операции настолько сложны, что имеется большое количество возможных ошибок. Большинство дисковых ошибок обсуждаются вместе с операциями, при которых они могут происходить. В данном разделе они собраны вместе, чтобы помочь Вам при разработке процедуры общего назначения для восстановления после дисковых ошибок.
Дисковые ошибки бывают двух типов, которые мы будем называть мягкими (soft) и жесткими (hard). Мягкие ошибки возникают из-за неправильного запроса на доступ к файлу: запрошенный файл может отсутствовать или дисковое пространство может кончиться прежде, чем будет записан весь файл. С другой стороны, жесткие ошибки возникают при неверных последовательностях или временных несоответствий при дисковых операциях, которые могут быть следствием неверного выравнивания или проблем с накопителем. В этом случае, лучше всего произвести сброс диска перед обработкой.
Средний уровень.
Функция 1 прерывания 13H возвращает в AL байт, дающий статус дискового накопителя. Значение его битов следующее:
биты 0-1 01 = неверная команда, или, если бит 3 = 1, то попытка обмена данными за границей 64K 10 = адресная метка не найдена 11 = попытка записи на защищенный от записи диск 2 1 = указанный сектор не найден 3 1 = переполнение DMA (потеря данных при обмене), или, если бит 0 = 1, то попытка обмена дан ными за границей 64K 4 1 = данные прочитаны неверно, надо повторить 5 1 = ошибка контроллера 6 1 = ошибка операции поиска 7 1 = нет ответа от накопителя (тайм-аут)
Kаждая из функций обращения к диску MS DOS использует только некоторые из возможных кодов ошибок, а некоторые функции не сообщают об ошибке. Однако во всех случаях при возникновении ошибки устанавливается флаг переноса. Если произошла ошибка, то номер кода этой ошибки возвращается в AX. Вот коды, относящиеся к дисковым операциям:
1 Hеверный номер функции 2 Файл не найден 3 Путь не найден 4 Уже открыто максимально допустимое число файлов 5 Отрицание доступа (ошибка оборудования) 6 Hеверный номер файла 15 Указан неверный накопитель 16 Попытка удалить текущий каталог 17 Hе то же устройство 18 Больше нет файлов (при поиске в каталоге с использова нием джокеров)
Восстановление после этих "мягких" ошибок несложно. Hекоторые предупреждают Вас о программных ошибках. Другие возникают из-за ошибочных действий пользователя. Если же не отвечает сам накопитель, то произошла критическая ошибка. В разделе {7.2.5} показано как написать процедуру обработки критических ошибок.
В MS DOS 3.0 введены расширенные коды ошибок. Они могут быть получены с помощью функции 59H прерывания 21H, когда флаг переноса индицирует возникновение ошибки. Обсуждение этого вопроса см. в {7.2.5}.
<~-5.4.7 Проверка данных после операций чтения/записи.
Содержание
Глава 6. Принтер.-~>