В чем разница между стандартными драйверами и загруженными драйверами

Обновлено: 23.11.2024

Существует два основных типа драйверов Microsoft Windows:

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

Например, в Windows Vista все драйверы принтеров выполняются в пользовательском режиме. Дополнительные сведения о компонентах драйвера принтера см. в разделе Введение в печать.

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

Некоторые драйверы режима ядра также являются драйверами WDM, которые соответствуют модели драйверов Windows (WDM). Все драйверы WDM поддерживают Plug and Play и управление питанием. Драйверы WDM совместимы с исходным кодом (но не совместимы с двоичным кодом) в операционных системах Windows 98/Me и Windows 2000 и более поздних версиях.

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

На следующем рисунке драйверы режима ядра разделены на несколько типов.

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

Драйверы самого высокого уровня. К драйверам самого высокого уровня относятся драйверы файловой системы (FSD), поддерживающие файловые системы, например:

Таблица размещения файлов (FAT)

Файловая система CD-ROM (CDFS)

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

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

Драйверы функций управляют определенными периферийными устройствами на шине ввода-вывода.

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

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

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

Любой поставляемый системой драйвер класса, который экспортирует системный интерфейс класса/миникласса, фактически является промежуточным драйвером с одним или несколькими связанными драйверами миникласса (иногда называются минидрайверами). Каждая связанная пара класса/минидрайвера обеспечивает функциональные возможности, эквивалентные функциональному драйверу или программному драйверу шины.

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

Аппаратные драйверы шины поставляются системой и обычно управляют динамически настраиваемыми шинами ввода-вывода.

Драйверы аппаратных шин работают с диспетчером Plug and Play для настройки и перенастройки аппаратных ресурсов системы для всех дочерних устройств, подключенных к шинам ввода-вывода, которыми управляет драйвер. Эти аппаратные ресурсы включают сопоставления памяти устройства и запросов на прерывание (IRQ). (Драйверы аппаратной шины включают в себя некоторые функции, предоставляемые компонентом HAL в более ранних версиях операционной системы на базе Windows NT, чем Windows 2000.)

Устаревшие драйверы, напрямую управляющие физическим устройством, являются драйверами самого низкого уровня.

Крис Хоффман

Крис Хоффман
Главный редактор

Крис Хоффман – главный редактор How-To Geek. Он писал о технологиях более десяти лет и два года был обозревателем PCWorld. Крис писал для The New York Times, давал интервью в качестве эксперта по технологиям на телевизионных станциях, таких как NBC 6 в Майами, и освещал свою работу в таких новостных агентствах, как BBC.С 2011 года Крис написал более 2000 статей, которые были прочитаны почти миллиард раз — и это только здесь, в How-To Geek. Подробнее.

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

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

Драйверы 101

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

Чтобы оборудование работало как можно лучше, Microsoft не принуждает вас устанавливать драйверы от производителя до того, как оборудование заработает. Сама Windows включает драйверы, а новые драйверы можно автоматически загрузить из Центра обновления Windows. Некоторые компоненты также имеют стандартные «универсальные» драйверы. Например, при подключении USB-накопителя к компьютеру Windows использует стандартные драйверы запоминающих устройств USB. Производителям не нужно создавать собственные драйверы для USB-устройств, мышей, клавиатур, компьютерных мониторов и некоторых других типов периферийных устройств.

Как Microsoft предоставляет драйверы

Драйверы интегрированы в саму Windows, поэтому последние версии Windows обеспечивают наилучшую встроенную поддержку нового оборудования. Например, если вы установили Windows 7 на свой компьютер, и часть оборудования сразу не заработала, возможно, вам придется загрузить драйверы для этого компонента оборудования с веб-сайта его производителя и установить их вручную. Если вы установили Windows 8.1 на тот же компьютер, все может работать сразу после установки, поскольку Windows 8.1 поставляется с более современными драйверами.

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

Чем отличаются драйверы, предоставляемые производителем

Пакеты драйверов, которые Windows устанавливает автоматически, отличаются от тех, что предоставляются производителями ваших устройств. Основные драйверы создаются производителем вашего устройства и предоставляются Microsoft после того, как они проходят тестирование Microsoft WHQL (лаборатория качества оборудования Windows), чтобы убедиться в их стабильности.

Однако Microsoft предоставляет эти драйверы в урезанном виде. Например, когда вы получаете драйверы для видеокарт NVIDIA или AMD из Центра обновления Windows, вы получаете пакет драйверов без панели управления NVIDIA или панели управления AMD Catalyst. Подключите принтер, и автоматически предоставленные диски не будут включать панель управления принтера. Подключите беспроводную мышь, и она сразу же заработает, но вам понадобится панель управления производителя, если вы хотите просмотреть уровень заряда батареи мыши или настроить действие кнопок. Однако эти аппаратные утилиты могут понадобиться не всегда.

Версии драйверов, которые предоставляет Microsoft, также немного устарели. Microsoft не обновляет эти драйверы так часто, поэтому производитель вашего устройства может иметь более новые версии на своем веб-сайте. Однако использование старых драйверов часто не является проблемой. Мы не рекомендуем обновлять драйверы оборудования — это может привести к проблемам. Единственным исключением являются графические драйверы, для которых вам нужны последние версии графических драйверов, если вы играете в компьютерные игры.

Наша рекомендация

Если вы устанавливаете Windows на свой компьютер или вставляете новое аппаратное устройство, и оно работает из коробки — отлично! Если все работает правильно, вам, вероятно, не нужно устанавливать драйверы оборудования. Некоторые производители устройств могут даже рекомендовать не устанавливать свои пакеты драйверов оборудования в современных версиях Windows, таких как Windows 8, поскольку в Windows уже есть необходимые драйверы.

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

  • Если вы играете в компьютерные игры: установите новейшие графические драйверы напрямую от NVIDIA или AMD, если вы играете в компьютерные игры. Эти пакеты не только включают инструменты, которые помогут вам настроить графические параметры; более новые версии также повысят производительность.
  • Когда вам нужна аппаратная утилита: установите предоставленные производителем пакеты осушителей, когда вам нужна какая-либо прилагаемая аппаратная утилита. Например, вам может понадобиться узнать, сколько чернил осталось в вашем принтере. Если это не отображается на самом принтере, вам может понадобиться панель управления производителя принтера, чтобы увидеть эту информацию.
  • Когда вам нужна последняя версия: вам, вероятно, не нужна последняя версия драйвера. В некоторых редких случаях ошибка может быть исправлена ​​в последней версии, и вам потребуется установить ее с веб-сайта производителя.
  • Если оборудование не работает: загрузите драйверы оборудования от производителя устройства, если Windows не может автоматически обнаружить и установить оборудование. Windows не идеальна и не может автоматически настраивать каждое устройство.
  • Если у вас возникла проблема: установите пакет драйверов от вашего производителя, если аппаратное устройство работает неправильно. Это может показаться ошибочным или просто медленным.

Вероятно, это будет спорный совет. Многие гики клянутся, что после установки Windows на свой ПК устанавливают все драйверы, предоставленные производителем, — набор микросхем материнской платы, сеть, ЦП, USB, графику и все остальное. Но мы больше не используем Windows XP — современные версии Windows стали лучше.

Часто установка драйверов производителя не требуется. Ваш компьютер не будет работать быстрее только потому, что вы регулярно обновляете драйверы оборудования, и он также не будет работать медленнее только потому, что вы используете драйверы, которые устарели на несколько версий. (Графические драйверы здесь составляют одно большое исключение.)

  • › Как установить драйверы оборудования в Windows без раздувания
  • › Никогда не загружайте утилиту обновления драйверов; Они хуже, чем бесполезны
  • › Как установить драйверы оборудования в Linux
  • › Как найти драйверы для неизвестных устройств в диспетчере устройств
  • › Как просмотреть список всех установленных драйверов Windows
  • › Полное руководство по переустановке Windows на ПК
  • › Как использовать Miracast Screen Mirroring из Windows или Android
  • › Как установить Google Play Маркет в Windows 11

Я знаю, что Windows автоматически устанавливает драйверы DCH NVIDIA при установке новой ОС, но я могу отключить кабель Ethernet во время установки, чтобы предотвратить это, и вместо этого установить не-DCH (стандартные) драйверы с флэш-накопителя.

Должен ли я это сделать?

Я провел немало поисков, но большинство дискуссий о DCH и стандарте, по-видимому, связаны с тем, как переключаться между ними (например, с помощью DDU), а не является ли для переключения между ними.

Одно из возможных отличий, если я не ошибаюсь, заключается в том, что в версии DCH используется панель управления NVIDIA, полученная из Microsoft Store, но я не нашел никакой информации о том, лучше она или хуже, чем NCP, найденная в стандартные драйверы.

Насколько я понимаю, для конечного пользователя нет никакой разницы. NVCP выглядит так же, как и раньше.

Я знаю, что Windows автоматически устанавливает драйверы DCH NVIDIA при установке новой ОС

Я не уверен в этом. Когда я только что установил 1903, драйвер, который Windows установил по умолчанию, был 388.13, не DCH, очевидно, потому что да, это драйвер 2017 года. Не знаю, почему он это делает, но да.

С тех пор я пробовал 430.86 DCH и не-DCH и не нашел существенной разницы. Когда вы устанавливаете версию DCH, Windows автоматически устанавливает панель управления Nvidia из магазина без каких-либо дополнительных действий, и все.

Я бы просто использовал версию DCH, так как в конечном итоге это будет единственная поддерживаемая версия, плюс я действительно думаю, что концепция DCH сама по себе имеет гораздо больше смысла, чем BS, который у нас был ранее. (Не то чтобы Nvidia слишком злоупотребляла этим, но другие поставщики оборудования, безусловно, так и поступали.)

Должен отметить, что я не использую GeForce Experience, поэтому не смог это проверить.

Также интересно отметить, что 388.13 на самом деле включает новый режим перелистывания (аппаратно составленный: независимый переворот) для приложений без полей, в то время как 430.86 включает его только для приложений, работающих в полноэкранном режиме. Но, похоже, это не имеет никакого отношения к DCH и не-DCH.

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

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

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

Наше объяснение упрощено по нескольким причинам:

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

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

Не все драйверы напрямую взаимодействуют с устройством.

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

Драйвер функции. Единственный драйвер в стеке, напрямую взаимодействующий с устройством, называется драйвер функции.

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

Дополнительную информацию о стеках см. в разделе Стеки драйверов.

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

Мы могли бы расширить наше определение драйвера, сказав, что драйвер – это любой программный компонент, который наблюдает или участвует в обмене данными между операционной системой и устройством.

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

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

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

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

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

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

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

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

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

Подробнее о функциональных драйверах

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

Однако во многих случаях устройство не подключается напрямую к шине PCI. Вместо этого устройство подключается к адаптеру главной шины, который подключен к шине PCI. Например, тостер USB подключается к адаптеру главной шины (называемому хост-контроллером USB), который подключается к шине PCI. USB-тостер имеет функциональный драйвер, а хост-контроллер USB также имеет функциональный драйвер. Функциональный драйвер тостера косвенно взаимодействует с тостером, отправляя запрос функциональному драйверу хост-контроллера USB. После этого функциональный драйвер хост-контроллера USB связывается напрямую с аппаратным обеспечением хост-контроллера USB, которое взаимодействует с тостером.

Читайте также: