работающими в ней драйверами устройств ввода/вывода. Этому соглашению обязаны следовать все драйверы (в том числе и разработанные пользователями) для версий MS-DOS, начиная с 2.0 и выше.

Общий вызов IOCTL реализуется прерыванием $21 ДОС со следующими значениями регистров:

АН == $44 (функция $44 ДОС реализует вызов IOCTL)

AL = $OD (подфункция $OD - общий вызов IOCTL)

BL - номер диска (0 - текущий, 1 - А и т.д.)

СН - $08 (код категории устройства: $08 - дисковое устройство)

CL - операция:

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

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

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

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

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

$62 - проверить дорожку DS:BX - адрес указателя на блок параметров

При возврате из функции флаг переноса CF содержит 0, если обращение было без ошибок, и 1, если обнаружена ошибка. В случае ошибки регистр АХ содерж IT код ошибки.

Формат блока параметров, адрес которого указывается в регистрах DS:BX, зависит от выполняемой операции.

Получить/установить параметры устройства CL = $б0/$40

При использовании этой операции блок параметров должен соответствовать такой структуре данных:

type

Tracks_Type = record

Trek: Byte; {Номер сектора}

Size: Byte {Длина сектора} end;

IOCTL_Info_Type = record

Control Byte; {Управляющий байт}

TypeDrv Byte; {Тип диска}

Attrib Word; {Атрибуты диска}

Cylindrs Word; {Число цилиндров}

Media Byte; {Тип носителя}

BPB ВРВ_Туре;

Add Add_BPB_Type;

Reserv array [1..1O] of Byte;

Sectors Word; {Количество секторов на дорожке}

Tracks {Образ дорожки}

array [1..Sectors] of Tracks_type