Глава 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. Принтер.-~>

Сайт управляется системой uCoz