CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
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 <stdio.h> #include <io.h> #include <dir.h> int main(void) { int stat; /* функция 8 используется, чтобы определить, является ли диск, в текущем устройстве сменным */ stat = ioctl(0, 8, 0, 0); printf("Диск %c %s сменный\n", getdisk() + 'A', (stat == 0) ? "" : "не"); }