CodeNet / Языки программирования / Ассемблер / Прерывания DOS и BIOS
CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
DOS Fn 44H: управление устройством в/в -- IOCTL
Вход
- AH = 43H
- AL = код подфункции:
- AL = 00H - дать информацию устр-ва
- AL = 01H - уст. информацию устр-ва
- AL = 02H - читать с симв. устр-ва
- AL = 03H - писать на симв. устр-во
- AL = 04H - читать с блочного устр.
- AL = 05H - писать на блочное устр.
- AL = 06H - дать статус ввода
- AL = 07H - дать статус вывода
- AL = 08H - запрос съемн носителя
- AL = 09H - запрос лок/удал устр-ва
- AL = 0aH - запрос лок/удал описателя
- AL = 0bH - счет повторов разделения
- AL = 0cH - (зарезервировано)
- AL = 0dH - общий IOCTL [DOS 3.2+]
- AL = 0eH - дать логич устр-во [DOS 3.2+]
- AL = 0fH - уст логич устр-во [DOS 3.2+]
- прочие = (в зависимости от подфункции)
Выход
- AX = код ошибки если CF установлен или иное значение (в зависимости от подфункции)
Описание:
IOCTL предоставляет метод взаимодействия с устройствами и получения информации о файлах. входные параметры и выходные значения варьируются в зависимости от кода подфункции в регистре AL.
Версии:
- подфункции 0-7 ............ DOS 2.1+
- подфункции 8,0bH .......... DOS 3.0+
- подфункции 9,0aH .......... DOS 3.1+
- подфункции 0dH,0eH,0fH .... DOS 3.2+
- BX = описатель файла (устройство или дисковый файл)
- DX = IOCTL Инф об устр (DH должен быть нулевым)
- DS:DX = адрес буфера (чтение) или данных (запись)
- CX= число передаваемых байт
- BX= описатель файла (только устройство -- не файл!)
- DS:DX = адрес буфера (чтение) или данных (запись)
- CX = число передаваемых байт
- BL = ID диска (0=текущий, 1=A, и т.д.)
- AX = код ошибки если CF установлен
- AX =действительное число переданных байт (если CF=NC=0)
- AL= 0ffH=не конец файла; 0=EOF (для дисковых описателей)
- AL= 0ffH=готово; 0=не готово (для устройств)
- AX = 00H - съемный носитель (т.е. флоппи-диск)
- AX = 01H - не съемный (твердый диск или RAM-диск)
- AX = 0fH - код ошибки если BL содержит неверный диск
- DX= число попыток перед вызовом INT 24H "Критическая ошибка"
- CX= счетчик цикла между попытками
- CL = код действия
- 40H = установить параметры устройства
- 60H = дать параметры устройства
- 41H = писать дорожку логического устройства
- 61H = читать дорожку логического устройства
- 42H = форматировать дорожку с верификацией
- 62H = Верифицировать дорожку логического устройства
- DS:DX=> адрес пакета данных IOCTL
- AX= код ошибки если CF установлен
- DS:DX=> пакет данных может содержать информацию возврата.
- AL = 0 если ровно одна буква диска назначена устройству BL
- AL = (1=A, 2=B и т.д.) если назначено несколько логических устройств, AL содержит ID текущего назначенного диска
- AX= код ошибки если CF установлен
- AL = 0 если ровно один ID назначен устройству BL
- AL = (1=A, 2=B и т.д.) ID выбранного устройства, которое будет использоваться в последующих операциях в/в.