Описание функций Си

Ioctl



     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) ? "" : "не"); }


Содержание раздела