Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »
реклама
Ремонт iPad срочный ремонт www.islomal.ru.

Почтовая рассылка

Подписчиков: 11642
Последний выпуск: 19.06.2015

DOS Fn 44H: управление устройством в/в -- IOCTL

Вход

Выход

  • 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+

  • Подфукция 00H: Запросить флаги информации об устройстве
  • вход: BX= описатель файла (устройство или дисковый файл)
  • выход: DX= IOCTL Инф об устр

  • Подфукция 01H: установить флаги информации об устройстве
  • вход:
    • BX = описатель файла (устройство или дисковый файл)
    • DX = IOCTL Инф об устр (DH должен быть нулевым)
  • выход: DX= IOCTL Инф об устр

  • Подфукция 02-03: читать (AL=02H) или писать (AL=03H) строку IOCTL на СИМВОЛЬНОЕ устр
  • вход:
    • DS:DX = адрес буфера (чтение) или данных (запись)
    • CX= число передаваемых байт
    • BX= описатель файла (только устройство -- не файл!)
  • выход: AX= код ошибки если CF установлен
  • Подфукция 04-05: читать (AL=04H) или писать (AL=05H) строку IOCTL на БЛОЧНОЕ устр
  • вход:
    • DS:DX = адрес буфера (чтение) или данных (запись)
    • CX = число передаваемых байт
    • BL = ID диска (0=текущий, 1=A, и т.д.)
  • выход:
    • AX = код ошибки если CF установлен
    • AX =действительное число переданных байт (если CF=NC=0)

  • Подфукция 06-07: дать статус ввода (AL=06H) или статус вывода (AL=07H)
  • вход: BX= описатель файла (устройство или дисковый файл)
  • выход:
    • AL= 0ffH=не конец файла; 0=EOF (для дисковых описателей)
    • AL= 0ffH=готово; 0=не готово (для устройств)

  • Подфукция 08H: использует ли блочное устройство съемный носитель? [DOS 3.0+]
  • вход: BL= ID диска (0=текущий, 1=A, и т.д.)
  • выход:
    • AX = 00H - съемный носитель (т.е. флоппи-диск)
    • AX = 01H - не съемный (твердый диск или RAM-диск)
    • AX = 0fH - код ошибки если BL содержит неверный диск

  • Подфукция 09H: Является ли устройство съемным в сети? [DOS 3.1+]
  • вход: BL = ID диска (0=текущий, 1=A, и т.д.)
  • выход: DX = атрибут устройства для диска. если бит 12=1 (т.е., DX & 1000H = 1000H), то устройство съемное.

  • Подфукция 0aH: принадлежит ли описатель файла локальному или удаленному устройству в сети? [DOS 3.1+] Нам посоветовали не использовать эту подфункцию. Вместо этого трактуйте удаленные устройства как локальные.
  • вход: BX = описатель файла (только устройство -- не файл)
  • выход: DX = атрибут устройства для диска. если бит 15=1 (т.е., DX & 8000H = 8000H), то устройство удаленное.

  • Подфукция 0bH: контроль повтора/задержки при разделении и блокировке файлов. 3.0+
  • вход:
    • DX= число попыток перед вызовом INT 24H "Критическая ошибка"
    • CX= счетчик цикла между попытками
  • выход: AX= код ошибки если CF установлен
  • замечание: умолчание - 3 попытки и счетчик цикла 1.

  • Подфукция 0dH: Общий вызов IOCTL отрабатывает разнообразные функции управления. Начиная с DOS 3.2, можно создавать драйверы устройств, работающие на уровне дорожек (форматирование, чтение/запись). [DOS 3.2+] Код действия в регистре CL определяет "подподфункцию":
  • вход:
    • CL = код действия
      • 40H = установить параметры устройства
      • 60H = дать параметры устройства
      • 41H = писать дорожку логического устройства
      • 61H = читать дорожку логического устройства
      • 42H = форматировать дорожку с верификацией
      • 62H = Верифицировать дорожку логического устройства
    • DS:DX=> адрес пакета данных IOCTL
  • выход:
    • AX= код ошибки если CF установлен
    • DS:DX=> пакет данных может содержать информацию возврата.

  • Подфукция 0eH: Выяснить, назначил ли драйвер устройства несколько логических устройств одному физическому устройству. [DOS 3.2+]
  • вход: BL= ID диска (0=текущий, 1=A, и т.д.)
  • выход: AX= код ошибки если CF установлен
    • AL = 0 если ровно одна буква диска назначена устройству BL
    • AL = (1=A, 2=B и т.д.) если назначено несколько логических устройств, AL содержит ID текущего назначенного диска

  • Подфукция 0fH: Сообщить драйверу блочного устройства ID устройства для обработки. когда с физическим устройством ассоциируется несколько логических, DOS выдает сообщение "Insert diskette for drive X:...". Эта функция позволяет вам сообщать DOS, что диск с указанным ID уже установлен, тем самым обходя сообщение. [DOS 3.2+]
  • вход: BL= ID диска (0=текущий, 1=A, и т.д.)
  • выход:
    • AX= код ошибки если CF установлен
    • AL = 0 если ровно один ID назначен устройству BL
    • AL = (1=A, 2=B и т.д.) ID выбранного устройства, которое будет использоваться в последующих операциях в/в.
  • Замечание: Эта функция должна вызываться перед любой операцией в/в на логическом устройстве. Иначе DOS может выдать сообщение.
  • Оставить комментарий

    Комментарий:
    можно использовать BB-коды
    Максимальная длина комментария - 4000 символов.
     
    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог