# 19 - Функции управления вводом/выводом (IOCTL)
Команда с кодом 19 предназначена для выполнения нескольких функций и поддерживается только теми драйверами, у которых в слове атрибутов устройства установлен в 1 бит поддержки IOCTL (бит 14). Эта команда поддерживается DOS версии 3.2 и более поздних версий.
Команда используется для выполнения ряда операций с дисками, доступных обычно лишь на уровне BIOS, например, форматирования, чтение/запись секторов по их абсолютному номеру и т.д. Имеется стандартный интерфейс для различных типов дисков, обеспечиваемых драйвером логических дисков DRIVER.SYS.
DOS имеет специальную функцию номер 44h прерывания 21h. Эта функция имеет множество подфункций и предназначена для поддержки IOCTL. Очень скоро мы займемся этой функцией DOS, а сейчас приведем формат запроса для команды с кодом 19:
(0) 13 | header | Заголовок запроса. |
(+13) 1 | funct | Это поле содержит код функции команды общего IOCTL. |
(+14) 1 | subfunc | Код подфункции для функции funct. |
(+15) 2 | si_reg | Значение регистра SI при вызове функции 44h прерывания 21h. Эта функция DOS предназначена для управления вводом/выводом. |
(+17) 2 | di_reg | Значение, передаваемое при вызове функции 44h прерывания 21h через регистр DI. |
(+19) 4 | buf | Указатель на буфер данных, содержащий управляющую информацию для устройства или предназначенный для приема информации от устройства. |