Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

DOS Fn 45H: Дублировать описатель файла -- DUP




Выход

Вход

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

· Подфукция 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 может выдать сообщение.




Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 517; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.