{img1} |
немецко русский словарь |
|
Попросту говоря, это средство пересылки буфера данных по
вспомогательному каналу. Механизм этого вызова идентичен вызову
функций ввода/вывода на основе ДОМД (функции 3FH и 40H), за иск-
лючением кодов функций, определяемых содержимым регистра AX.
Предназначены ли данные, передаваемые по дополнительному каналу,
для устройства или для самого драйвера - это дело разработчика.
Не будьте, однако, ослеплены простотой этой функции и не восп-
ринимайте ее как всего-лишь еще одну функцию ввода/вывода. |
nod32 |
|
{img2} |
Отказоустойчивые системы |
|
В со-
ответствующем приложении, IOCTL может блестяще выступать в роли
вторичного канала для взаимодействия с драйвером. Фирма Microsoft
обеспечила "запасную дверь" для решения непредвиденных проблем.
Они говорят - "Вам кажется, что наш интерфейс с драйверами слиш-
ком ограничен ? Должен быть более гибким ? Что же, попробуйте вот
это." Такой подход является огромным шагом вперед по сравнению с
подходом "У нас нет этого, значит Вам это не нужно !", который не
так давно был весьма распространен в среде разработчиков систем.
- 6-13 -
Таблица 6-1
Функции управления вводом/выводом (IOCTL)
------T--------T----------T--------------------------------------
Код ¦ Версия ¦Примечание¦ Назначение
(AL=)¦ MS-DOS ¦ ¦
------+--------+----------+--------------------------------------
0: ¦ 2.0+ ¦ #1,#2 ¦Получить информацию устройства
1: ¦ 2.0+ ¦ ¦Установить информацию устройства
2: ¦ 2.0+ ¦ #3,#6 ¦Читать из управляющего канала СУ
3: ¦ 2.0+ ¦ #3,#6 ¦Писать в управляющий канал СУ
4: ¦ 2.0+ ¦ #3,#7 ¦Читать из управляющего канала БУ
5: ¦ 2.0+ ¦ #3,#7 ¦Писать в управляющий канал БУ
6: ¦ 2.0+ ¦ #1 ¦Получить входную информацию
7: ¦ 2.0+ ¦ #1 ¦Получить выходную информацию
8: ¦ 3.0+ ¦ #2 ¦БУ поддерживает смену носителя ?
9: ¦ 3.2+ ¦ ¦БУ локальное или удаленное ?
A: ¦ 3.2+ ¦ ¦Описатель локальный или удаленный ?
B: ¦ 3.0+ ¦ #4 ¦Изменить счетчик попыток
C: ¦ 3.3+ ¦ #5 ¦Запрос на переключение кодовых страниц
D: ¦ 3.3+ ¦ #5 ¦Запрос IOCTL для блоковых устройств
E: ¦ 3.3+ ¦ #5 ¦Получить имя логического диска
F: ¦ 3.3+ ¦ #5 ¦Установить имя логического диска
------+--------+----------+--------------------------------------
Примечание #1: Функция поддерживает как файлы, так и устройства.
Примечание #2: Функция не поддерживает сетевую работу.
Примечание #3: Функция разрешается битом 14 словом атрибутов
драйвера и поддержка определяется битом 14 слова
конфигурации.
Примечание #4: Функция требует загрузки команды SHARE.
Примечание #5: Функция разрешена битом 6 слова атрибутов драйвера.
Примечание #6: СУ - символьное устройство.
Примечание #7: БУ - блоковое устройство.
Конфигурация с помощью команд управления вводом/выводом
MS-DOS обеспечивает выполнение команд конфигурации ("Получить
или Установить информацию устройства"), поддерживаемых
IOCTL-функцией. |
архиватор winzip |
|
|
На рисунке 6-2 показано 16-битовое слово конфигу-
рации, используемое функциями "Получить/Установить информацию ус-
тройства" (коды 0 и 1). В текущих версиях MS-DOS могут быть опре-
делены только младшие 8 бит этого слова. |
win zip |
|
|
бухгалтерия, архиватор rar, отказоустойчивые вычислительные системы, Архиваторы, файловый менеджер, .
офисные программы
|
Предположим, что некото-
рая система имеет отображаемую на адресное пространство графичес-
кую подсистему. Данные из системной памяти в графическую пересы-
лаются с использованием драйвера графического адаптера. По той
причине, что этот адаптер не является устройством массовой памя-
ти, драйвер для него должен быть символьным. Если ввод/вывод про-
изводится с использованием только ДОМД, нет никакого способа оп-
ределить место в видео-памяти, куда должны быть посланы данные.
- 6-12 -
Если же драйвер поддерживает IOCTL-функцию, место в графической
памяти можно определить через канал управления.
Функция 44H - управление вводом/выводом для устройств (IOCTL)
Как мы упоминали, не все устройства поддерживают вызов
IOCTL-функции. Те драйверы, которые обеспечивают управление вво-
дом/выводом, не обязательно поддерживают все возможности
IOCTL-функции. Тем не менее, IOCTL является настолько мощным
средством управления работой устройств, что понуждает многих
программистов поближе познакомиться с его возможностями. Знание
того, что можно сделать с помощью IOCTL, несомненно определяет
решение программиста о том, какими функциональными особенностями
наделить драйвер устройства.
Функция управления вводом/выводом имеет три основных режима,
которые определяются передаваемым в регистре AL кодом функции :
- Конфигурация устройства (коды 0, 1 и в последних версиях
MS-DOS, коды 8, 0BH, 0EH и 0FH);
- Управление каналом ввода/вывода (коды с 2 по 5 и в MS-DOS
версии 3.2, коды 0CH и 0DH);
- Запрос статуса устройства (коды 6 и 7).
Список кодов функций, поддерживаемых IOCTL, показан в таблице 6-1.
Запрос статуса устройства возвращает либо индикатор готовности
(0FFH) либо не готовности (0). В руководстве программиста фирма
Microsoft предупреждает о том, что код статуса может быть некор-
ректным на момент возвращения управления вызывающей программе.
Вероятно, в руководстве имеется в виду будущая возможность муль-
тизадачности MS-DOS. Можно только надеяться, что когда появятся
будущие версии, Microsoft найдет способ возвращать корректную ин-
формацию. Как бы то ни было, до тех пор пока MS-DOS не стала мно-
гозадачной, проблемы неточности статуса не должно существовать.
Мы уже упоминали возможности канала управления устройством
IOCTL.
|
|
|