Что такое драйвер?

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

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

Расширение определения

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

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

  • Не все драйверы взаимодействуют напрямую с устройством. Часто в запросе ввода-вывода участвуют несколько драйверов, слоисто расположенных в стеке драйвера и.

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

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

    • драйвер функции: драйвер, который взаимодействует непосредственно с устройством, называется драйвером функции .

    • драйвер фильтра: драйверы, которые выполняют вспомогательные обработки, называются драйверами фильтров .

    Дополнительные сведения см. в разделе стеки драйверов.

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

Чтобы уточнить определение, драйвер является любым программным компонентом, который наблюдает или участвует в обмене данными между операционной системой и устройством.

Драйверы программного обеспечения

Это расширенное определение является более точным, но по-прежнему неполным. Некоторые драйверы вообще не связаны с каким-либо аппаратным устройством.

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

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

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

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

Дополнительные сведения о режимах процессора см. в разделе "Режим пользователя" и "Режим ядра".

Водители автобусов

Другим типом водителя является водитель автобуса . Чтобы понять драйверы шины, необходимо понять узлы устройств и дерево устройств.

Сведения о деревьях устройств, узлах устройств и драйверах шины см. в разделе "Узлы устройств" и стеки устройств.

Дополнительные сведения о драйверах функций

Объяснение на данный момент упрощает драйвер функции. Объяснение до сих пор указывает, что драйвер функции является драйвером, который взаимодействует непосредственно с устройством. Эта инструкция относится к устройству, которое подключается непосредственно к шине взаимодействия периферийных компонентов (PCI). Драйвер функции для устройства PCI получает адреса, сопоставленные с ресурсами порта и памяти на устройстве. Драйвер функции напрямую взаимодействует с устройством, записывая данные по этим адресам.

Во многих случаях устройство не подключается непосредственно к шине PCI. Вместо этого устройство подключается к адаптеру шины хоста, подключенному к шине PCI. Например, USB-тостер подключается к адаптеру шины узла, который называется контроллером USB-узла. Этот контроллер подключен к шине PCI. Usb-тостер имеет драйвер функции, а контроллер USB-узла также имеет драйвер функции.

Функциональный драйвер тостера взаимодействует с тостером косвенно, отправляя запрос функциональному драйверу хост-контроллера USB. Затем драйвер функции для контроллера USB-узла взаимодействует непосредственно с оборудованием контроллера USB-узла, который взаимодействует с тостером.

схема, демонстрирующая взаимодействие между драйверами USB-тостера, драйвером контроллера USB и шиной PCI.