Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

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

 
 
 
 Синтаксис          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) ? "" : "не");
 
       }
 
 


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS