Драйверы Windows работают в режиме ядра. В этой статье я расскажу про различные типы драйверов. И покажу как посмотреть на установленные драйверы в системе.

Драйверы

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

Драйверы представляют собой файлы .sys и обеспечивают интерфейс между вводом/выводом и соответствующим оборудованием или модулем ядра. Про диспетчер ввода/вывода я уже рассказывал в прошлой статье.

Драйверы в основном написаны на языке C, но недавно стало возможно писать их для Windows на C++.

Типы драйверов

Можно выделить следующие типы драйверов:

  • Драйвера физических устройств. Они необходимы для работы обычных устройств. Например принтеров, сканеров и другого оборудования.
  • Фильтры файловой системы. Необходимы, например, для создания программных RAID или шифрования дисков.
  • Сетевые перенаправители. Это драйверы файловой системы, которые передают запросы по сети на другую машину. В качестве клиента в сетевой операции ввода/вывода отправляет запросы на сервер и обрабатывает ответы. Как сервер получает запросы ввода/вывода и обрабатывает их. Таким образом они позволяют приложению получать доступ к ресурсам на удаленных серверах и управлять ими, как если бы они находились на локальном компьютере.
  • Драйвера потоков. Необходимы для поддержки сетевых протоколов, например TCP/IP.
  • Потоковые драйвера-фильтры ядра. Они могут объединятся в цепочки для обработки потоков данных. Например для записи или воспроизведения аудио и видио.
  • Программные драйвера. Модули ядра, работающие только в режиме ядра. Например многие программы из Sysinternals (Process Explorer, Process Monitor) устанавливают, а затем используют такие модули.

Еще можно разделить их на работающие в пользовательском режиме и в режиме ядра.

В пользовательском режиме работают драйверы принтеров, они переводят аппаратно-независимые запросы в понятные принтеру команды. Которые затем передаются драйверу порта в режиме ядра, например usbprint.sys.

В режиме ядра работают драйверы файловой системы, которые принимают запросы к файлам на ввод / вывод. Тут же работают драйверы PnP, которые общаются с диспетчером PnP. Это драйверы запоминающих устройств, видеоадаптеров, устройств ввода и сетевых адаптеров. Здесь же работают расширения ядра и драйверы сетевых протоколов, но они не связаны с физическими устройствами.

Просмотр установленных драйверов

Чтобы посмотреть информацию о загруженных в систему драйверах можно воспользоваться программой «Сведения о системе» (msinfo32.exe). Эта программа является стандартной для Windows. В программе необходимо перейти в «Программная среда» / «Системные драйверы«. В открывшемся окне вы увидите информацию об установленных драйверах:

«Сведения о системе» msinfo32.exe

Также можно посмотреть список запущенных драйверов программой Process Explorer. Для этого нужно включить отображение всех пользователей в меню «View«. Далее выбрать процесс «System«. И включить отображение нижней панели (View / Lower Pane View):

Process Explorer — загруженные драйвера

То есть драйверы мапятся к процессу «System«.

Из чего состоит драйвер

Драйверы состоят из набора процедур, вызываемых для обработки различных запросов. Например можно выделить следующие процедуры:

  • инициализации — при загрузке драйвера в ОС диспетчер ввода / вывода выполняет эту процедуру;
  • добавления устройства — если это PnP драйвер, то при добавлении нового устройства PnP диспетчер выполняет эту процедуру;
  • диспетчеризации — когда происходит запрос от оборудования к системе, то генерируется IRQ запрос и через эту процедуру вызывается драйвер;
  • начального ввода / вывода — эта процедура используется если нужно организовать передачу данных на устройство или с него;
  • обработки прерываний — диспетчер прерываний передает управление этой процедуре когда устройство прерывает работу процессора для своих нужд;
  • dpc — а тут выполняются dpc функции, которые были поставлены в очередь при работе прерываний.
  • завершения ввода/ вывода;
  • отмены ввода / вывода;
  • выгрузки — когда драйвер выгружается из системы и освобождает все занятые им ресурсы.

Вернуться к оглавлению

Сводка
Драйверы Windows
Имя статьи
Драйверы Windows
Описание
Драйверы Windows работают в режиме ядра. В этой статье я расскажу про различные типы драйверов. И покажу как посмотреть на установленные драйверы в системе

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *