Операционная система MS DOS

# 0Dh Общее управление вводом/выводом (GENERIC IOCTL)


Вызов:



Регистр
AH 44h
AL 0Dh
BL Номер дисковода (0 - текущий дисковод, 1 - дисковод А: и т.д.)
CH Код категории устройства: 08h - дисковое устройство
CL Операция:

40h - установить параметры устройства;

60h - получить параметры устройства;

41h - записать дорожку на логическом устройстве;

61h - прочитать дорожку на логическом устройстве;

42h - форматировать дорожку на логическом устройстве;

62h - проверить дорожку на логическом устройстве

DS:DX Указатель на блок параметров.

Возврат без ошибки:

Регистр
CF 0

Возврат с ошибкой:

Регистр
CF 1
AX Код ошибки

Общая схема использования этой подфункции:

  • Сохранить параметры устройства операцией 40h.
  • Установить нужные параметры.
  • Выполнить операцию ввода/вывода или форматирования.
  • Восстановить предыдущие параметры.
  • Формат блока параметров зависит от выполняемой операции:

    CL = 40h/60h (получить/установить параметры устройства)

    Смещение Размер Содержимое поля
    (0) 1 Специальные функции
    (+1) 1 Тип устройства, возвращаемый драйвером:

    0 - 320/360 К флоппи-диск (5,25");

    1 - 1,2 М флоппи-диск (5,25");

    2 - 720 К флоппи-диск (3,5");

    3 - 8" флоппи-диск нормальной плотности;

    4 - 8" флоппи-диск двойной плотности;

    5 - жесткий диск;

    6 - накопитель на магнитной ленте;

    7 - 1,44 М флоппи-диск (3,5")

    (+2) 2 Атрибуты устройства, возвращаемые драйвером. В этом поле используются только два младших бита. Бит 0 - признак заменяемости среды носителя данных (0 - заменяемая, 1 - не заменяемая), бит 1 - признак наличия аппаратного контроля замены дискеты (1 - контроль выполняется, 0 - контроль не выполняется). Остальные биты зарезервированы и должны содержать 0.
    (+4) 2 Максимальное количество цилиндров на физическом устройстве. Это поле устанавливается драйвером.
    (+6) 1 Тип среды носителя данных. Используется для устройств, поддерживающих несколько типов носителей данных, например, для флоппи-дисковода на 1.2М значение этого поля, равное 0, соответствует дискете на 1.2М, а 1 - 360К.
    (+7) 31 BPB для устройства. Если бит 0 поля специальных функций сброшен, то в этом поле находится новый BPB для устройства. Если бит 0 установлен, драйвер устройства возвращает BPB для всех последующих запросов на построение BPB.
    (+38) ? Таблица разметки дорожки, имеет переменную длину.
    <
    Биты байта специальных функций имеют следующее значение:

  • Бит 0:


  • В операции 60h значение этого бита, равное 1, используется для извлечения текущего BPB, как если бы он был получен по команде драйвера с кодом 2 (построить BPB). Значение этого бита, равное 0, говорит о том, что надо извлечь BPB, используемый по умолчанию.

    Для операции с кодом 40h значение бита, равное 1, используется для извлечения текущего BPB, значение 0 приводит к использованию BPB, подготовленного в данном блоке параметров.

  • Бит 1:


  • Значение этого бита, равное 1, - это указание игнорировать все поля в блоке параметров, кроме поля описания физической структуры дорожки на данном устройстве.

  • Бит 2:


  • Значение этого бита, равное 1, говорит о том, что все сектора на этой дорожке имеют одинаковый размер.

    Таблица разметки дорожки начинается с двухбайтового слова, содержащего общее количество секторов на дорожке. Затем для каждого сектора в таблице находится по два двухбайтовых слова, содержащих номер сектора (1, 2 и т.д.) и размер сектора. То есть для каждого сектора в таблице содержится два слова.

    Если в поле "специальные функции" бит 2 установлен в 1, размеры всех секторов должны быть одинаковыми.

    CL = 41h/61h (записать/прочитать дорожку)

    Смещение Размер Содержимое поля
    (0) 1 Специальные функции (это поле всегда содержит 0)
    (+1) 2 Номер головки
    (+3) 2 Номер дорожки
    (+5) 2 Номер начального сектора (нумерация секторов, в отличие от нумерации головок и дорожек начинается с 0)
    (+7) 2 Общее количество секторов на дорожке, уменьшенное на единицу
    (+9) 4 FAR-указатель на буфер обмена с диском, в который помещается считываемая информация или откуда берется записываемая информация
    CL = 42h/62h (форматировать/проверить дорожку)

    Смещение Размер Содержимое поля
    (0) 1 Специальные функции. Для этой операции определен только бит 0. Перед вызовом команды значение бита, равное 0, требуется для форматирования дорожки. Если этот бит установлен в 1, то проверяется возможность использования заданного формата трека. Если после выполнения команды значение бита 0 равно 0, то поддерживается заданный формат трека и заполненную таблицу разметки дорожки можно использовать. Если значение бита 0 равно 1, то затребованный формат дорожки не поддерживается.
    (+1) 2 Номер головки для форматирования/проверки
    (+3) 2 Номер дорожки для форматирования/проверки

    Содержание раздела