DOS, функция 32h Получить информацию DOS о диске
(Официально не документирована)
Вход:
AH=32h
DL - номер диска (0 - текущий, 1 - А и так далее)
Выход:
AL=OOh, если в DL был задан корректный диск
DS:BX - адрес блока информации о диске для запрошенного уст-
ройства (Таблица Б-6)
AL=FFh, если в DL был задан некорректный диск
Описание.
Возвращает блок информации, представляющей интерес для приложе-
ний и утилит, которые выполняют доступ к дискам, поддерживаемым
драйверами устройств, на уровне секторов.
Некоторые дисководы (особенно незагружаемые) функционируют только
через свои драйвера устройств. Такие диски могут содержать неверную
информацию в корневой записи и таблице разделов, что делает очень
трудным определение, например, размера корневого оглавления, числа
таблиц FAT и прочего. Блок информации диска содержит такие данные
в хорошо форматированной структуре.
Версии: DOS 2.00 и выше.
Таблица Б-6. Формат блока информации о диске.
| Смещ. | Размер | Описание | |
| +00h | байт | Номер диска (0 - текущий, 1 - А и так далее) | |
| +01h | байт | Количество блоков в драйвере диска | |
| +02h | слово | Количество байт в секторе | |
| +04h | байт | Наибольший номер сектора в кластере | |
| +05h | байт | Счетчик сдвига для конвертации кластера в сектор | |
| +06h | слово | Количество зарезервированных секторов в начале диска | |
| +08h | байт | Количество FAT | |
| +09h | слово | Количество входов в root-директорию | |
| +OBh | слово | Номер первого сектора, содержащего данные | |
| +ODh | слово | Максимальный номер кластера | |
| +OFh | байт | Количество секторов в FAT | |
| +10h | слово | Номер первого сектора директории | |
| +12h | двойное слово | Адрес заголовка драйвера устройства | |
| +16h | байт | ID (отражает тип диска) | |
| +17h | байт | OOh, если диск доступен и FFh, если нет | |
| +18h | двойное слово | Указатель на следующий блок информации о диске | |
| Для версий DOS 2.XX | |||
| +lCh | слово | Кластер, содержащий старт текущей директории. OOOOh - root, FFFFh - не известно |
|
| +lEh | 64 байта | Путь текущей директории для диска в формате ASCIZ | |
| Для версий DOS 3.XX | |||
| +lCh | слово | Кластер, с которого начинается поиск свободного места при записи некоторого количества секторов на диск |
|
| +lEh | слово | Количество свободных секторов на диске. FFFFh - не известно |
Таблица Б-6. Формат блока информации о диске. {Окончание)
| Смещ. | Размер | Описание |
| Для версий DOS 4.XX - 6.ХХ | ||
| +OFh | слово | Количество секторов в FAT |
| +llh | слово | Номер первого сектора директории |
| +13h | двойное слово | Адрес заголовка драйвера устройства |
| +17h | байт | ID (отражает тип диска) |
| +18h | байт | OOh, если диск доступен, и FFh, если нет |
| +19h | двойное слово | Указатель на следующий блок информации о диске |
| +lDh | слово | Кластер, с которого начинается поиск свободного кластера при записи некоторого количества секторов на диск |
| +lFh | слово | Количество свободных секторов на диске. FFFFh - не известно |