Pages Menu
Categories Menu

Опубликовано | Нет комментариев

Драйверы устройств

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

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

Они запускаются в режиме ядра в одном их трех контекстов:

  • в контексте пользовательского потока, инициировавшего функцию ввода-вывода;
  • в контексте системного потока режима ядра;
  • в результате прерывания (и поэтому вне контекста любого конкретного процесса или потока — какой бы процесс или поток ни был текущим при возникновении прерывания).

драйверы-устройств

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

Существует несколько типов драйверов устройств:

  • Драйверы аппаратных устройств, управляющие (с помощью HAL) записью на физическое устройство или в сеть или чтением оттуда. Существует множество типов драйверов аппаратных устройств — драйверы шин, драйверы интерфейса с пользователем, драйверы запоминающих устройств большой емкости и т. д.
  • Драйверы файловой системы, являющиеся драйверами Windows, которые принимают запросы на файловый ввод-вывод и транслируют их в запросы ввода-вывода, направляемые конкретному устройству.
  • Драйверы фильтра файловой системы, обеспечивающие зеркалирование и шифрование дисков, перехваты ввода-вывода и некоторую дополнительную обработку перед передачей ввода-вывода на следующий уровень.
  • Сетевые редиректоры и серверы, являющиеся драйверами файловой системы, передающими запросы ввода-вывода файловой системы машине, находящейся в сети, и получающими от нее аналогичные запросы.
  • Драйверы протоколов, реализующие такие сетевые протоколы, как TCP/IP, NetBEUI и IPX/SPX.
  • Драйверы потоковых фильтров ядра, собранные в цепочку для обработки сигналов потока данных, например, при записи или воспроизведении аудио- и видеопотоков.

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

Например, многие утилиты из Sysinternals сочетают в себе приложение Windows GUI и драйвер устройства, используемый для сбора внутреннего состояния системы и вызова функций, доступных только в режиме ядра и недоступных из Windows API в режиме пользователя.

Оставить комментарий

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

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

↓