Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Драйверы для Windows - часть 3


Когда операционная система Windows запущена в расширенном режиме, стандартные драйверы не обращаются напрямую к аппаратуре, как это происходит в стандартном режиме. Вместо этого они обмениваются данными с виртуальными устройствами, вызывая функции виртуальных драйверов.

Так как виртуальные драйверы работают в нулевом кольце защиты, они имеют доступ к любым участкам памяти, к командам ввода/вывода в любые порты и к привилегированным машинным командам процессора (а также арифметического сопроцессора). Поэтому виртуальный драйвер, в отличие от обычного приложения Windows и стандартного драйвера, может сделать в системе все, что ему вздумается.

К сожалению, для того чтобы создать виртуальный драйвер, придется вспомнить язык ассемблера. И это еще одна сложность, далеко не последняя.

Когда мы рассказывали вам в первом томе "Библиотеки системного программиста" о драйверах MS-DOS, мы упоминали, что драйверу недоступно большинство функций MS-DOS. Виртуальные драйверы находятся в намного лучшем положении. Они могут пользоваться обширным набором функций, предоставляемых, как правило, системными виртуальными драйверами (сервисом виртуальных драйверов). Это сотни функций! И вы должны овладеть этим сервисом, или хотя бы основной его частью.

Третий тип драйверов появился в Windows одновременно с системой мультимедиа. Это так называемые загружаемые драйверы.

Загружаемые драйверы не представляют из себя ничего особенного - это простые DLL-библиотеки, экспортирующие среди прочих функцию DriverProc. Функция DriverProc используется для организации стандартизованного интерфейса, основанного на передаче сообщений. Загружаемые драйверы имеют также стандартный интерфейс для установки и конфигурирования.

Как правило, в расширенном режиме работы Windows загружаемые драйверы не обращаются к аппаратуре непосредственно. Они вызывают для этого виртуальные драйверы. Например, вместе с широко известным звуковым адаптером Sound Blaster поставляется не только загружаемый, но и виртуальный драйвер.




- Начало -  - Назад -  - Вперед -