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


Драйверы для Windows


; Lasciate ogni speranza, voi ch' entrata!

; (Leave behind every hope, you who enter!)

;

; -- Dante

Оставь надежду, всяк сюда входящий! Данте

ddk\286\keyboard\xlat.asm, строка 53

5.1.

5.2.

5.3.

В этой главе мы затронем одну из сложнейших областей программирования для операционной системы Windows - создание драйверов.

Традиционно считается, что разработка драйвера для Windows доступна лишь немногим программистам, и отчасти это так и есть. Особенно если речь заходит о драйвере для видеоадаптера, принтера или другого стандартного оборудования компьютера. Если вы сомневаетесь - посмотрите исходные тексты драйверов, которые есть в составе DDK. Они содержат тысячи строк ассемблерного "бреда"! Посмотрев на все это, вы, возможно, с тоской вспомните старые времена, когда казалось, что драйверы для MS-DOS - это очень сложные программы, которые не так просто составить и отладить.

В чем же сложность? Только ли в объеме листингов? Увы, нет.

Для начала сообщим, что в операционной системе Windows существуют драйверы трех типов. Причем два их них используются как в стандартном, так и в расширенном режиме работы Windows, а один - только в расширенном (к счастью, реальный режим Windows ушел в прошлое, вслед за ним идет и стандартный: Windows for Workgroups версии 3.11 работает только в расширенном режиме).

Драйверы первого типа (мы будем называть их стандартными драйверами) представляют собой обычные DLL-библиотеки и обслуживают стандартные устройства компьютера "с первых дней жизни" Windows. Когда-то, когда Windows еще не работал в расширенном режиме, это был единственный тип драйверов.

Стандартные драйверы, как и полагается драйверам, в стандартном режиме Windows работают непосредственно с регистрами аппаратуры (кроме драйвера принтера). Соответствующие DLL-библиотеки экспортируют функции, доступные как ядру Windows, так и обычным приложениям.

Несмотря на то, что мы называем эти драйверы стандартными, не существует никакого стандартного набора экспортируемых такими драйверами функций.


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