ioctl

 Функция            Управление устройствами ввода/вывода.

 Синтаксис          int ioctl(int handle, int func[, int *argdx,
                    int argcx]);

 Файл, содержащий   io.h
 прототип

 Описание           Данная функция представляет собой непосредственный
                    интерфейс для вызова функции DOS 0x44 (IOCTL).

                    Выполняемая функция зависит от значения параметра
                    func следующим образом:

                    0- получение информации об устройстве;

                    1- установка информации об устройстве (в параметр
                       argdx);

                    2- считывает argcx байт и помещает их по адресу,
                       указанному в argdx;

                    3- записывает argcx байт из адреса, на который
                       указывает argdx;

                    4- также, как и в ситуации 2, исключая то, что па-
                       раметр handle трактуется, как номер дисковода
                       (0= по умолчанию, 1=A, и т.д.);

                    5- также, как и в ситуации 3, за исключением того,
                       что параметр handle трактуется, как номер дис-
                       ковода(0= по умолчанию, 1=A, и т.д.);

                    6- получает статус ввода;

                    7- получает статус вывода;

                    8- тест на сменность; только для версий
                       DOS 3.0;

                    11- устанавливает число повторов при конфликте
                        разделения файлов; только для версий DOS 3.0

                    Функция ioctl может быть использована для получе-
                    ния информации о каналах устройств.

                    Могут использоваться также обычные файлы, но для
                    них можно использовать только func равное 0,6 и 7.
                    Все остальные вызовы будут возвращать для файлов
                    ошибочное значение EINVAL.

                    Смотрите более детальную информацию об аргументах
                    или возвращаемых значениях в "Справочном руководст-
                    ве программиста DOS" - в описании системного
                    вызова 0x44.

                    Аргументы argdx и argcx - необязательны.

                    Функция ioctl обеспечивает прямой интерфейс к спе-
                    циальным  функциям  драйверов устройств DOS. В ре-
                    зультате, точное поведение  данной  функции  будет
                    изменяться  в зависимости от поставщиков-производи-
                    телей мат. обеспечения и различных устройств. Кро-
                    ме того, некоторые фирмы не следуют  правилам  ин-
                    терфейса, описанным выше. Смотрите конкретное опи-
                    сание  системы BIOS вашего конкретного поставщика,
                    чтобы найти точные правила  использования  функции
                    ioctl.

 Возвращаемое       Для значений параметра func - 0 или 1 возвращаемое
 значение           значение представляет собой информацию об устрой-
                    стве (в часности значение регистра DX, получаемое
                    при вызове IOCTL).

                    Для значений func от 2 до 5, возвращаемое значе-
                    ние - это количество реально переданных байтов.

                    Для значениея func 6 или 7, возвращаемое значе-
                    ние - это статус устройства.

                    В любой ситуации, если обнаружена ошибка, возвра-
                    щается -1 и глобальная переменная errno получает
                    одно из следующий значений:

                    EINVAL - неверный аргумент;
                    EBADF  - неверный номер файла;
                    EINVDAT - неверные данные.

 Переносимость      Функция ioctl поддерживается на системах UNIX, но
                    не с описанными выше параметрами. На системе UNIX
                    версии 7 и системе SYSTEM III применение функции
                    ioctl различно. Вызовы функции ioctl не переносимы
                    на системах UNIX и очень редко переносятся с одной
                    системы DOS на другую.

                    В версиях MS-DOS 3.0 параметр func разширен двумя
                    значениями: 8 и 11.

 Пример:

 #include 
 #include 
 #include 

 int main(void)
 {
    int stat;
    /* функция 8 используется, чтобы определить, является ли
       диск, в текущем устройстве сменным */
          stat = ioctl(0, 8, 0, 0);
          printf("Диск %c %s сменный\n", getdisk() + 'A',
                  (stat == 0) ? "" : "не");
       }