На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 6 / Конфигурация с помощью команд управления вводом/выводом Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Конфигурация с помощью команд управления вводом/выводом

MS-DOS обеспечивает выполнение команд конфигурации ("Получить или Установить информацию устройства"), поддерживаемых IOCTL-функцией. На рисунке 6-2 показано 16-битовое слово конфигурации, используемое функциями "Получить/Установить информацию устройства" (коды 0 и 1). В текущих версиях MS-DOS могут быть определены только младшие 8 бит этого слова. Ниже описано назначение тех битов слова конфигурации, которые имеют значение для драйверов устройств или влияют на способ обработки драйвером данных.


IOCTL БИТ 14: CTRL

Бит CTRL устанавливается в 1 если драйвер может обрабатывать управляющие последовательности. Этот бит точно отражает состояние IOCTL бита в слове атрибутов драйвера устройства. IOCTL-бит используется драйвером для оповещения MS-DOS о том, что драйвер будет принимать управляющие последовательности. Этот бит применим как к файлам, так и к устройствам.


          15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
        ЙНННСНННСНННСНННСНННСНННСНННСНННСНННСНННСНННСНННСНННСНННСНННСННН»
        є R і C і   і   і   і   і   і   і I і E і B і S і I і I і I і I є
        є E і T і   і   і   і   і   і   і S і O і I і P і S і S і S і S є
        є S і R і    R E S E R V E D    і D і F і N і E і C і N і C і C є
        є   і L і   і   і   і   і   і   і E і   і   і C і L і U і O і I є
        є   і   і   і   і   і   і   і   і V і   і   і L і K і L і T і N є
        ИНННПНННПНННПНННПНННПНННПНННПНННПНННПНННПНННПНННПНННПНННПНННПНННј
         ЗНАЧЕНИЯ БИТОВ                     УСТРОЙСТВО
         CTRL =1 : Поддержка управляющего   EOF  =0 : Конец файла на входе
                   канала                   BIN  =1 : Работа в двоичном
         ISDEV=1 : Канал - это устройство             режиме
              =0 : Канал - это файл         SPECL=1 : Специальное устрой-
                                                      ство
                                            ISCLK=1 : Устройство "ЧАСЫ"
         ФАЙЛ                               ISNUL=1 : Устройство NUL
         После записи в канал биты с 0 по   ISCOT=1 : Консоль вывода
         5 - это номер блокового устр-ва    ISCIN=1 : Консоль ввода

                    Рисунок 6-2. Слово конфигурации устройства.

IOCTL БИТ 7: ISDEV

Бит ISDEV равен 1 если канал (или описатель) открыт к устройству. Если канал открыт к файлу, то этот бит сбрасывается в 0.


IOCTL БИТ 5: BIN

Пятый бит конфигурации (BIN) определяет подготовленный или неподготовленный режим работы драйвера. Другими словами, этот бит определяет будут ли данные проходить дополнительную обработку при передаче или MS-DOS будет просто передавать "сырую" двоичную информацию между устройством и прикладной программой. Под дополнительной обработкой подразумевается обработка определенных управляющих символов, расширение символов табуляции, проверка на нажатие клавиш CTRL-BREAK и т.п.


Более традиционными для этих функций являются термины "двоичный режим" и "ASCII режим", соответствующие неподготовленному и подготовленному режимам. В руководстве программиста для MS-DOS приводятся более детальные инструкции о том, как проверить и установить пятый бит. Мы, в свою очередь, обсудим влияние этого бита на работу символьных драйверов. (Заметьте, что, как показано на рис.6-2, этот бит не используется для блоковых драйверов).


Если символьный драйвер находится в подготовленном режиме (по умолчанию), данные передаются побайтно. Другими словами, одно обращение к драйверу приводит к передаче одного символа. Это происходит вне зависимости от того, какое количество байт затребовано прикладной программой при обращении к MS-DOS. Например, если прикладной программе требуется вывести 128 байт на символьное устройство, а драйвер работает в подготовленном режиме, то MS-DOS сделает 128 обращений к драйверу с функцией "ВЫВОД" или "ВЫВОД С ПРОВЕРКОЙ", передавая за один вызов один байт.


Посимвольного ввода/вывода можно избежать, переведя драйвер в неподготовленный режим. Последний может быть установлен только с помощью IOCTL функции. В неподготовленном режиме количество передаваемых байт, заданное прикладной программой, используется также при обращении к драйверу. Пользуясь тем же самым примером, если прикладная программа требует вывода 128 байт на символьное устройство, и драйвер работает в неподготовленном режиме, то MS-DOS сделает единственное обращение к драйверу с функцией "ВЫВОД" или "ВЫВОД С ПРОВЕРКОЙ", задавая количество передаваемых байт равным 128.


IOCTL БИТ 4: SPECL

Подобно биту CTRL, бит SPECL в слове конфигурации точно отражает состояние бита SPECL в слове атрибутов. Будучи установленным, этот бит означает, что данный драйвер (который почти всегда является драйвером консоли) способен выполнять высокоскоростной вывод в двоичном режиме, используя прерывание INT 29H.


Бит BIN, определяющий неподготовленный режим, также требует разрешения высокоскоростного режима вывода, определяемого атрибутом SPECL. Если установлены как бит слова конфигурации BIN, так и бит слова атрибутов SPECL, значит драйвер будет работать в режиме высокоскоростного вывода. Этот режим и бит атрибутов SPECL обсуждаются более глубоко в разделе "Слове атрибутов заголовка драйвера".


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz