MS-DOS для программиста

Общее управление устройством GENERIC IOCTL


Подфункция 0Dh функции 44h прерывания INT21h обеспечивает механизм взаимодействия между прикладным программным обеспечением и драйверами блочных устройств. Эта подфункция позволяет программам читать и изменять параметры устройств, предоставляет возможность выполнять чтение, запись, форматирование и проверку дорожек диска на низком уровне с помощью драйвера устройства.

При вызове функции вы должны загрузить регистры процессора следующим образом:



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

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

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

41h - записать дорожку;

61h - прочитать дорожку;

42h - форматировать дорожку;

62h - проверить дорожку

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

Если функция выполнилась без ошибки, флаг переноса CF сброшен. В противном случае этот флаг установлен, при этом регистр AX содержит код ошибки.

Через регистры DS:DX функции необходимо передать адрес подготовленного блока параметров, формат которого зависит от выполняемой операции. Опишем этот формат для наиболее важных операций.

  • Получить/установить параметры устройства (CL = 40h/60h)
  • Смещение Размер Содержимое поля
    0 1 Специальные функции:Бит 0:Если установить этот бит в операции с кодом 60h, можно извлечь текущий BPB . Результат аналогичен выполнению команды драйвера с кодом 2 (построить BPB). Если этот бит сброшен, надо извлечь BPB, используемый по умолчанию.Бит 1:Если этот бит установлен, функция игнорирует все поля в блоке параметров, кроме поля описания физической структуры дорожки на данном устройстве.Бит 2:Если этот бит установлен, все секторы на дорожке имеют одинаковый размер
    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 Тип среды носителя данных. Используется для устройств, поддерживающих несколько типов носителей данных. Например, если в НГМД высокой плотности установлена дискета высокой плотности, тип равен 0, а если установлена дискета двойной плотности - 1
    7 31 BPB для устройства. Если бит 0 поля специальных функций сброшен, то в этом поле находится новый BPB для устройства. Если бит 0 установлен, драйвер устройства возвращает BPB для всех последующих запросов на построение BPB
    38 ? Таблица разметки дорожки, имеет переменную длину
    <

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