Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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


Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог