Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по функциям С++.doc
Скачиваний:
130
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Biosdisk

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

НазначениеВвод/вывод с жесткого или гибкого диска.

Синтаксис int biosdisk(int cmd, int drive, int head,

int track, int sector, int nsects,

void *buffer);

Прототип вbios.h

ЗамечанияЭта функция использует прерывание 0х13 для вы-

зова дисковых операций непосредственно из BIOS.

drive - номер используемого дисковода : 0 для

первого дисковода гибких дискет, 1 для второго,

2 для третьего и т.д. Для жесткого дисковода

величина 0х80 для drive определяет первый дис-

ковод, 0х81 - второй, 0х82 - третий и т.д.

Для жесткого диска определяется физический дис-

ковод, а не логическое разделение диска.

При необходимости прикладная программа должна

сама интерпретировать информацию из таблицы

разбиения диска.

cmd опредедяет действия, которые должны быть

выполнены.

В зависимости от значения cmd могут понадобить-

ся и другие параметры. Ниже приведены значения

cmd для IBM PC, XT, АТ или PS/2 и совместимых с

ними моделей:

0 - сброс дисковой системы. Контроллер дисково-

да выполняет принудительный сброс. Все осталь-

ные параметры игнорируются.

1 - возврат статуса выполнения последней диско-

вой операции. Все другие параметры игнорируют-

ся.

2 - читает один или более дисковых секторов в

память. Начальный сектор для чтения задается

параметрами head, track и sector. Число секто-

ров задается параметром nsect. Данные читаются

по 512 байт в секторе в buffer.

3 - записывает один или более секторов диска из

памяти. Начальный сектор для записи задается

head, track и sector. Число секторов задается

параметром nsect. Данные записываются по 512

байт в сектор из buffer.

4 - проверяет один или более секторов. Началь-

ный сектор задается head, track и sector. Число

секторов задается в nsect.

5 - форматирует дорожку. Дорожка задается пара-

метрами head и track. buffer указывает на таб-

лицу заголовков секторов, которые будут записы-

ваться в заданную track. Смотри техническую

документацию для IBM PC для описания этой таб-

лицы и операции форматирования

Следующие значения cmd допускаются только для

моделей ХТ, АТ, PS/2 и совместимых с ними:

6 - форматирует дорожку и устанавливает флаги

дефектных секторов.

7 - форматирует дисковод, начиная с заданной

дорожки.

8 - возвращает параметры активного дисковода.

Эта информация помещается в первые четыре байта

buffer.

9 - инициализация характеристик парного диско-

вода.

10 - производит длинное чтение, 512+4 байта на

сектор.

11 - производит длинную запись, 512+4 байта в

сектор.

12 - производит позиционирование дисковода.

13 - производит альтернативный сброс дисковода.

14 - читает буфер сектора.

15 - записывает буфер сектора.

16 - проверяет готовность заданного дисковода.

17 - проводит перекалибровку дисковода.

18 - диагностика контроллера RAM.

19 - диагностика дисковода.

20 - внутренняя диагностика контроллера.

Замечание: biosdisk работает с секторами диска

на более низком уровне, чем файловая система MS

-DOS, поэтому некорректное использование этой

функции может привести к порче файлов или ог-

лавления жесткого диска.

ВозвращаемоеЭти операции возвращают статусный байт,

значениесоставленный из следующих бит:

0х00 - операция прошла успешно

0х01 - неверная команда

0х02 - маркер адреса не найден

0x03 - запись на диск запрещена

0х04 - запись не найдена

0х05 - ошибка сброса

0x06 - изменилось содержание диска после пос-

ледней операции

0х07 - ошибка чтения параметров дисковода

0x08 - переполнение DMA

0х09 - попытка для DMA перейти границу 64 Кб

0x0A - обнаружен дефектный сектор

0х0В - обнаружен флаг дефектной дорожки

0x0C - трек недоступен

0х10 - ошибка кода коррекции при чтении диска

0х11 - коррекция данных с помощью кода коррек-

ции

0х20 - контроллер неисправен

0х40 - ошибка позиционирования

0х80 - некорректный ответ дисковода

0хВВ - неизвестная ошибка

0xCC - ошибка записи

0xE0 - неверный статус

0хFF - ошибка доступа

Заметим, что 0х11 не является ошибкой, т.к.

данные корректны. Значение возвращается с той

целью, чтобы дать возможность прикладной прог-

рамме самой сделать выбор.

ПереносимостьЭта функция работает только на IBM PC и ей

подобных.

Смотри такжеabsread, abswrite

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