
По типу устройств можно выделить
драйверы видеоадаптеров, транслирующие аппаратно-независимые запросы на графические операции в аппаратно-зависимые. Когда приложение вызывает Win32-функцию с аппаратно-независимым запросом на вывод графики, вызывается драйвер видеоадаптера. Этот драйвер может реализовать операции рисования, либо записывая данные напрямую ввидеопамять, либо обращаясь к графическому акселератору. Для особенно критичных во времени операций драйвер видеоадаптера может обращаться к оборудованию напрямую. Для полной поддержки видеоадаптера необходим также так называемый видео минипорт-драйвер. Отметим, что термин порт-драйвер – это некоторая библиотека функций режима ядра для поддержки ввода-вывода, типичного для порта определенного типа. Порт-драйвер не является драйвером. Минипорт-драйвер является истинным драйвером устройства, он импортирует функции, предоставляемые порт-драйвером, и генерирует запросы к конкретному типу адаптера. Минипорт-драйвер видеоадаптера отвечает за установку режима работы адаптера, частоты регенерации, позиционирование курсора, загрузку таблицы цветов, управляет операциями, связанными с другими компонентами ядра ОС, например, такими, как управление памятью, используемой видеоадаптером, физическим отображением регистров видеоадаптера на конкретную область памяти, доступную драйверу видеоадаптера; прямую адресацию портов ввода-вывода. Видео минипорт-драйвер должен быть специфичным для конкретного видеооборудования;
драйверы файловой системы, принимающие запросы на ввод-вывод и выдающие более конкретные запросы драйверам дисковых устройств или сетевым драйверам;
драйверы мультимедиа, для аудиоустройств – считывание, воспроизведение и компрессия аудиоданных, для устройств работы с видео – захват и компрессия видеоданных.
Из приведенной классификации видно, что поддержка индивидуального устройства часто распределяется между несколькими драйверами, каждый из которых обеспечивает часть функций, необходимых для нормальной работы устройства. Принцип, согласно которому аспекты управления конкретным устройством разделены между несколькими драйверами, реализован в спецификации WINDOWS DRIVER MODEL (WDM). Спецификация WDM реализована в W-2000, W-98, W-ME и требует от драйверов поддержки управления электропитанием, Plug and Play. С точки зрения WDM, имеется три типа драйверов:
1) драйвер шины (bus driver), обслуживающий контроллер шины, адаптер или другое оборудование, имеющее дочерние устройства. Для каждого типа шины имеется собственный драйвер. Драйвер шины отвечает за распознавание устройств, подключенных к управляемой им шины, оповещение об подключении к шине и отключении устройств диспетчера PnP и управление параметрами электропитания шины.
2) функциональный драйвер. Служит для управления конкретным типом устройств. Обязателен для устройства за исключением тех случаев, когда ввод-вывод осуществляется драйвером шины. Функциональный драйвер обладает самой полной информацией о своем устройстве, и обычно только этот драйвер имеет доступ к специфическим регистрам устройства.
3) драйвер фильтра. Занимает более высокий логический уровень по сравнению с функциональным драйвером. Служит для корректировки поведения устройства или драйвера, может изменять запросы на ввод-вывод и ответы на них от других драйверов. Например, драйвер фильтра для клавиатуры может перехватывать информацию, вводимую с клавиатуры, без изменения соответствующего функционального драйвера.