Читать «Как писать драйвера» онлайн - страница 2

Автор неизвестен

Но бывает и другая. Это говорит о том что ваш драйвер собран правильно и установка прошла успешно

Как писать драйвера (часть 2)

Прежде, чем хвататься за описание самого драйвера, давайте определимся с типами существующих драйверов.

По существующему в DDK разделению сам Microsoft подразделяет драйвера на следующие типы:

– Kernel-Mode Drivers;

– Kernel Streaming Drivers;

– Graphics Drivers;

– Network Drivers;

– Virtual Device Drivers.

С графическими и сетевыми драйверами более менее понятно по названию.

Виртуальные VDD относятся к устройствам, нуждающимся в работе под MS-DOS.

А вот два первых типа мы разберем немного подробнее.

На рисунке видна структура всех драйверов типа Kernel-Mode Drivers. В иерархии этой системы различают драйвера для работы на верхнем уровне(high-level), промежуточные (intermediate) и низкого уровня (low-level).

К первому относятся драйвера файловый систем (FAT, NTFS), ко второму – драйвера фильтры, драйвера виртуальных дисков, I/O устройств, а к третьему – драйвера непосредственно работающие на уровне прерываний.

Kernel Streaming Drivers – это в первую очередь драйвера устройств видео и аудио потока.

Немного лирики. По сути все драйвера, работают на уровне kernel, поэтому такое деление, лично я, считаю не оправданным, но раз создатели говорят "есть контакт", нам придется "есть контакт".

Более подробную информацию по разделению на типы, и их описание можно найти в Help DDK идущего в поставке DDK, и устанавливаемому вместе с этим пакетом.

Отступим от абстрактной классификации, и перейдем к более земным вещам.

Опишем среднестатистическую структуру драйвера.

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

В каждом драйвере есть входная точка, соответствующая функции main(), в замечательном С, WinMain() в Windows. Функция вызывается при старте системы автоматически в момент инициализации обслуживающей части Windows к которой относится данный драйвер.

Функции выхода нет.

Еще чуть-чуть лирики. В нашей с вами ситуации дистанционного общения, придется брать и писать один из драйверов для примера. Без этого будет сложновато объяснить, что мы делаем и зачем. Поэтому я предлагаю выбрать некий тип для нашего примера.

Так как большая часть драйверов работает для поддержки и управления реального физического устройства, предположить, что у всех вас есть одинаковая плата или одинаковый дисковод, было бы верхом глупости.

Отбросив таким образом драйвера, который привязаны к железке мы остановимся на типе Network – сетевых драйверах.

Сетевые драйвера.

Сетевые драйвера тоже как и драйвера типа kernel, делятся на такие же три уровня. Вспомните, что все разделение я назвал условным.

Меняется только название.