Сообщения: 2
Благодарности: 0
В моем случае оба способа из шапки и советы (в теме далее) тоже не помогли.
1. U SB3.0 на нетбуке не было, только USB2.0/USB1.0
2. Переключения в BIOS’е с AHCI-mode на IDE-mode и обратно не помогали.
3. Сборка проверенная.
Сообщение так и не пропадало.
В случае с записью сохранённого ранее готового ISO-образа грешил на его повреждение, т.к. контрольные суммы после многих переносов с компа на комп и с винта на винт не сохранились.
Пересоздание образа с болванки с последующей переносом его на флешку тоже не помогало. Сообщение так и не исчезало. Думал, что уже и болванка повреждена.
Спасибо другу, который не дал впасть в отчаянье и навёл на верную мысль.
Оказалось причина в способе записи образа на флешку. Казалось бы, что там можно сделать не так?! Ан, нет – можно!
Получилось как в старом анекдоте:
– Можно ли изнасиловать женщину днём на главной площади.
– Нет. Советами замучают.
Скажу так: если взялись делать что-то по совету человека, то НЕУКОСНИТЕЛЬНО следуйте ЕГО инструкциям и не отвлекайтесь на советы других “умников”. И если в итоге не выйдет, то можно будет сказать, что ЕГО способ не работает, и пробовать другой способ.
В результате, на флешке был создан один общий нескрытый раздел (размером на всю флешку), куда и была записана инсталляция Windows 7.
При желании туда же можно было бы записать и прочее (драйверы, инсталляции программ и т.п.), но решено было ничего лишнего не дописывать, дабы не множить неопределённости.
Записанная таким образом флешка нормально стартовала, и в процессе установки Win7 сообщение о необходимости драйверов для CD/DVD больше не появлялось. Инсталляция прошла успешно.
Потому, могу только ещё раз посоветовать быть внимательным и неукоснительно следовать одной выбранной методике. И либо всё получится, либо эта методика неверна в данном конкретном случае.
При установке Windows 10, 8 и Windows 7 на компьютер или ноутбук пользователь может столкнуться с ошибками «Не найден необходимый драйвер носителя. Это может быть драйвер DVD-дисковода, USB-накопителя или жесткого диска» (во время установки Windows 10 и 8), «Не найден необходимый драйвер для дисковода оптических дисков. Если у вас есть дискета, CD, DVD или флэш-накопитель USB с этим драйверов, вставьте этот носитель» (при установке Windows 7).
Текст сообщения об ошибке не особо понятен, особенно для начинающего пользователя, потому как не ясно, о каком именно носителе идет речь и можно предположить (неверно), что дело в SSD или новом жестком диске, на который происходит установка (об этом здесь: Не виден жесткий диск при установке Windows 7, 8 и Windows 10), однако обычно это не так и дело в другом.
Основные шаги, чтобы исправить ошибку «Не найден необходимый драйвер носителя», которые будут подробно описаны в инструкции далее:
Основная причина ошибки Не найден необходимый драйвер носителя при установке Windows 7
Ошибка «Не найден необходимый драйвер носителя» во время установки Windows 7 наиболее часто бывает вызвана (особенно в последнее время, по мере обновления компьютеров и ноутбуков у пользователей) тем, что загрузочная флешка для установки подключается к разъему USB 3.0, а официальная программа установки ОС не имеет встроенной поддержки драйверов USB 3.0.
Простое и быстрое решение проблемы — подключить флешку к порту USB 2.0. Их отличие от разъемов 3.0 — в том, что они не синего цвета. Как правило, после этого установка происходит без ошибок.
Более сложные способы решения проблемы:
Ошибка «Не найден необходимый драйвер для дисковода оптических дисков» при установке с DVD
Основная причина ошибки «Не найден необходимый драйвер для оптических дисков» при установке Windows с диска — поврежденный диск или плохо читающий диски привод DVD.
При этом, повреждений вы можете и не видеть, а на другом компьютере установка с этого же диска происходить без проблем.
Использование другого ПО для записи загрузочного USB накопителя
Иногда случается, что сообщение об отсутствующем драйвере носителя появляется при установке Windows 10, 8 и Windows 7 с флешки, записанной какой-то определенной программой и не появляется при использовании другой.
Проблемы с загрузочной флешкой
Если указанные в предыдущем разделе пункты не помогли, дело может быть и в самой флешке: если есть возможность, попробуйте использовать другую.
А заодно проверьте, не содержит ли ваша загрузочная флешка несколько разделов — это тоже может приводить к появлению таких ошибок при установке. Если содержит, удалите эти разделы, см. Как удалить разделы на флешке.
Дополнительная информация
В некоторых случаях, ошибка может быть вызвана и поврежденным образом ISO (попробовать загрузить заново или из другого источника) и более серьезными проблемами (например, неправильно работающая оперативная память может приводить к повреждению данных при копировании), хотя это и случается редко. Тем не менее, если есть возможность, стоит попробовать произвести загрузку ISO и создание накопителя для установки Windows на другом компьютере.
На официальном сайте Майкрософт также присутствует собственная инструкция по исправлению проблемы: https://support.microsoft.com/ru-ru/kb/2755139.
Ошибка «Не найден необходимый драйвер носителя» – почему возникает и как исправить
Установку Windows на ПК удобнее всего производить с флеш-накопителя. Но в этом случае в самом начале процесса инсталляции новой системы нередко возникает ошибка вида «Не найден необходимый драйвер носителя», после чего установка прерывается. Возникает она чаще всего из-за отсутствия тех самых драйверов на установочном носителе, которые необходимы для первичной инициализации оборудования компьютера.
Ошибка вида «Не найден или поврежден необходимый драйвер носителя» возникает на начальном этапе установки Windows на ПК или ноутбук. Чтобы понять, из-за чего она появляется, необходимо разобраться в том, как именно происходит инсталляция новой системы. Алгоритм следующий:
Но чтобы программа смогла «распознать» жёсткий диск и загрузочный накопитель, ей нужны драйверы следующих устройств:
Базовый перечень драйверов от Microsoft имеется на самом установочном носителе. Если же используемые комплектующие требуют специфических drivers, то программа инсталляции попросту не сможет «понять» куда необходимо копировать файлы и где находится MFT-запись (потому что оборудование полноценно не работает). Соответственно, инсталляция Windows даже не начинается.
Практика показывает, что с данной ошибкой пользователи чаще всего сталкиваются при попытке инсталлировать Виндовс с накопителя, подключённого в порт USB 3.0, так как пакет драйверов для его поддержки в установочных образах Windows XP, 7 и 8 попросту отсутствует. Решение простое – подключить флешку к USB 2.0. Если же такого порта нет (в ноутбуках так бывает), то потребуется в BIOS или UEFI включить на момент установки для USB режим «Legacy». Эта настройка принудительно переключает порты в совместимый режим работы с 2.0.
Ошибка «Не найден необходимый драйвер для дисковода оптических дисков при установке с DVD»
Аналогичная ошибка при инсталляции Windows с DVD-диска (CD, Blu-Ray) возникает на порядок реже. Основные причины её появления:
При установке Windows 10 проблема чаще возникает при использовании редакции образа LTSB (LTSC), в котором пакет драйверов существенно урезан.
Чтобы обойти ошибку, рекомендуется:
А ещё некоторые производители материнских плат выпускают специальные утилиты для создания загрузочных носителей, полностью совместимых с их оборудованием. Для ASRock – это Win 7 USB Patcher, для MSI – MSI Smart Tool.
Ошибка вида «Не найден или повреждён необходимый драйвер носителя» при установке Виндовс может также возникать из-за неправильной записи образа на USB-накопитель. Нередко с этим сталкиваются пользователи, которые готовили флешку для переноса на неё установочных файлов с помощью приложения UNetbootin. Вместо него рекомендуется использовать:
При использовании Rufus необходимо правильно выбрать тип создаваемого загрузочного накопителя: UEFI (GPT, поддерживается только на Windows 7 и выше) или BIOS (MFT, рекомендуется для устаревшего оборудования из-за лучшей совместимости).
Ошибки при установке Windows могут возникать и из-за неисправности самой флешки. И подключать её рекомендуется в порт именно USB 2.0 (с чёрным сердечником, в USB 3.0 – он голубой). Перед созданием установочной USB-флешки её рекомендуется отформатировать штатными средствами Windows (отключив пункт «Быстрое форматирование»).
И на старых материнских платах может вовсе отсутствовать возможность установки системы через USB (отсутствие поддержки на уровне BIOS). В этом случае решение может быть следующим:
Итак, ошибка в 95% случаев возникает из-за отсутствия драйверов или при подключении установочной флешки в порт USB 3.0. Остальные 5% – это использование устаревших и неактуальных материнских плат или повреждение данных на загрузочном накопителе.
Как установить драйвера на Windows 7 принудительно.
Данный вид установки драйверов практически всегда помогает в том случае, когда драйвер для устройства не устанавливается простым запуском установочного файла setup
, с расширениями *.exe
или *.msi
.
Но главным условием для успешной установки драйвера в этом случае является то, что драйвер должен быть полностью распакован и файл с расширением *.inf
должен быть доступен. Зачастую производители оборудования упаковывают свои драйвера не только стандартными ZIP-архиваторами, но и используя замысловатые программы собственного изготовления. Здесь для распаковки весьма полезной может оказаться программка Universal Extractor
, которой можно распаковать практически любой инсталлятор драйвера.
Рассмотрим, как принудительно установить драйвер в Windows 7
на примере веб-камеры Defender AV-W2035
. Имеется скачанный с просторов Интернета драйвер AV-W2035_VISTA.zip
, который мы успешно распаковали в папку C:/AW-0350-MIC-VISTA
. Для начала нам нужно просмотреть, где же находится у нас файл с расширением *.inf
. Для этого в свойствах папок Windows нужно включить отображение расширений файлов, чтобы название файлов писались с их расширениями. Либо использовать весьма полезную программу Total Commander
или схожий файловый менеджер. Просмотрев папки (можно воспользоваться поиском файла) мы нашли файл snpstd2.inf
Следует запомнить весь путь до этого файла, чтобы потом было легче найти его в Проводнике
. Подключаем камеру к компьютеру, и дожидаемся, когда Windows завершит все свои операции по определению нового оборудования.
в открывшемся окне нажимаем
и далее выбираем и кнопку Далее
Откроется окно со списков категорий оборудования. Чтобы даром время не терять и не ломать голову, просто указываем на первую строчку Показать все устройства
и жмем кнопку Далее
В следующем окне у нас откроется список имеющихся драйверов в системе (если они есть). Но так как мы знаем, что у нас есть папка с драйвером, то ничего не выбирая из списка, нажимаем на кнопку
и с помощью Проводника ищем наш файл с расширением *.inf
, выделяем его мышкой и следуем по кнопке Открыть
и, конечно же, кнопочку ОК
Теперь в окне со списком имеющихся драйверов появиться наш драйвер (если драйвер не подходит для оборудования, то система выдаст ошибку).
Здесь следует обратить внимание на галочку Только совместимые устройства
. Дело в том, что если подключаемое оборудование не тестировалось на совместимость с установленной версией Windows, то драйвер для него не найдется, несмотря на то, что он может быть вполне рабочим. Поэтому в некоторых случаях эту галочку следует убрать и повторить поиск драйвера снова.
Итак, после того как файл с драйвером найден, выделяем в списке мышкой наш драйвер и нажимаем кнопку Далее
Начнется установка драйвера
Может появиться предупреждение Windows о том, что устанавливаемый драйвер не имеет цифровой подписи либо не проверялся на совместимость. Если уверены, что драйвер взят с надежного источника и точно предназначен для устанавливаемого оборудования, то такого предупреждения абсолютно не стоит бояться, а следует согласиться на дальнейшую установку драйвера. По окончании установки система выведет окно о завершении.
В успешной установке драйвера можно убедиться в Диспетчере устройств
, где подключаемое устройство уже не будет иметь вопросика, а его название поменяется на правильное, созданное производителем. В нашем случае с камерой это будет появившееся устройство с названием USB PC Camera (SN9C103)
Установка закончена, можно спокойно начать пользоваться новым оборудованием!
Драйвер
— это специфическая управляющая программа, которая сообщает операционной системе информацию о подключенном оборудовании и предоставляет механизмы для его использования. Многие такие программные продукты содержат в себе достаточно сложный функционал, обрабатывая самую разнообразную информацию, проходящую через обслуживаемое оборудование. Это может быть аудио и видеоинформация, потоки данных сканирующих, печатающих и сетевых машин, информация о нажатии клавиш, движениях мыши, взаимодействие с переносными носителями, разнообразными мобильными телефонами и пр. и пр.
Сведения об установленном «железе» можно узнать, зайдя в «Панель управления», выбрав раздел «Система» и нажав ссылку или кнопку «Диспетчер устройств»
В открывшемся древовидном списке будут видны все устройства, видимые операционкой
Какие бывают способы установки?
Если при подключении нового оборудования операционная система не смогла автоматически настроить соответствующее ПО, то у Вы можете пойти двумя путями:
1. Воспользоваться специальными программами для поиска и автоматической установки.
2. Самостоятельно найти и установить необходимое программное обеспечение.
Оба эти способа имеют свои преимущества и недостатки. Первый вариант безусловно удобнее и значительно экономит время. И при использовании стандартного оборудования такой подход даст хорошие результаты — все железяки заработают как надо и без сбоев. Кроме того при использовании последних версий таких программ автоматизации Вы получите наиболее свежие версии драйверных файлов. Более подробно про этот метод можно прочитать на этой странице нашего сайта: .
Несмотря на значительное удобство, часто бывает так, что не удается установить управляющую программу автоматически из-за того, что ее попросту нет в базе данных выбранной утилиты. В этом случае Вам придется заняться настройкой вручную. Хоть это и требует больше времени, но такой подход наиболее надежен. Ведь получив управляющую программу непосредственно от производителя оборудования, Вы одновременно получаете гарантии ее полной совместимости с устанавливаемым устройством с учетом всех нюансов его работы. Такие нюансы могут быть не учтены в универсальных сборниках.
Как получить драйвер?
Обычно все нужное программное обеспечение идет в комплекте с купленным товаром на оптическом диске. В этом случае зачастую достаточно вставить диск в привод, запустить приложение и следовать подсказкам в процессе настройки.
Если же диск утерян, или Вы хотите более свежей версии, то сделать это можно на сайте производителя оборудования в соответствующем разделе, который стандартно называется «Сервис / Поддержка».
При поиске нужных файлов следует не забывать, для какой версии операционной системы Вам они нужны. Потому что приложения, разработанные для Windows XP скорее всего не заработают нормально на более новых ОС, а 32-разрядный софт может отказаться функционировать в 64-разрядной среде. И наоборот.
Может случиться так, что Вам в руки попадет устаревшая аппаратура. И просто так запустить его на последних версиях операционной системы не получится. В этом случае можно попробовать установить его в режиме совместимости с более старыми версиями Windows. К сожалению это не всегда приводит к успешному результату. И проблема отсутствия нормальной поддержки под новые версии ОС вынуждает пользователей отказываться от пользования многими вполне рабочими и полезными товарами.
Ручная установка драйвера
Обычно управляющие программы поставляются производителями в виде установочных приложений. Запустив установку, пользователь получает подсказки и следуя установочным этапам без особых проблем справляется со всем процессом настройки.
Но довольно распространена ситуация, когда такого дружественного софта не предусмотрено. И многие пользователи не знают, что делать в этом случае.
Ниже описан порядок действий в подобной ситуации на примере MP3-плеера iRiver IFP-700.
Соответственно для гарантии успеха потребуется устанавливать этот плеер в Windows XP.
Немного поискав, удалось раздобыть вот такой архив с нужными файлами:
Распаковываем содержимое архива
и видим что в нем нет никаких exe-файлов. Но зато есть , который описан как «Сведения для установки».
Именно этот файл (в комплекте с соседними из этой папки) и нужен операционной системе, чтобы успешно подключить плеер к USB-порту.
Подключаем плеер шнуром к компьютеру и видим, что появилось такое типичное окно:
Если мы пойдем обычным путем, и выберем автоматическую остановку, то после длительного показа вот такого окна
появится сообщение о неудаче. Поэтому нажимаем кнопку «Назад», чтобы пойти альтернативным путем.
В этом окне вместо автоматического способа следует выбрать вариант «Установка из указанного места»
Нажимаем кнопку обзор и выбираем папку, в которую мы распаковали файлы из zip-архива.
В результате в строке для поиска должен оказаться путь к папке, в которой находится inf-файл:
По завершении процесса появляется окно об успешном выполнении:
Можно дополнительно убедиться в этом, перейдя в Диспетчер устройств и увидев там наличие установленного плеера:
Итоги
Используя перечисленные в этой статье методы, Вы сможете успешно устанавливать управляющие программы для используемых Вами устройств. А знание того, как установить драйвер вручную с помощью inf файла, позволит Вам максимально расширить количество используемой аппаратуры, не привлекая сторонних специалистов. Кроме того, использование официального софта с сайтов производителей устройств значительно повысит надежность работы Вашего компьютера.
Очевидно, что у каждого пользователя персонального компьютера, время от времени возникает необходимость подключить к своей станции какое-либо устройство. Причина, по которой это происходит, нас сейчас не сильно то и интересует, это может быть и хорошо знакомый многим апгрейд (в целях увеличения производительности отдельных узлов, и как следствие общей производительности системы), это может быть и просто добавление нового оборудования для расширения функционала существующей конфигурации, как, например, в случае с подключением нового игрового манипулятора, это может быть и потребность в использовании данных с флеш-накопителя. Вне зависимости от того, каким именно образом мы подключаем новое устройство, операционная система Windows вынуждена реагировать на появление нового оборудования, производя определенные манипуляции для обеспечения поддержки нового оборудования на программном уровне. Во многих операционных системах для обеспечения программного взаимодействия с устройствами используются интерфейс между оборудованием и программным слоем под названием драйвер
.
Драйвер (Driver) – программное обеспечение, при помощи которого операционная система и работающие в её составе программные модули, получают доступ к аппаратному или логическому устройствам.
Именно поэтому операционная система пытаемся всеми доступными ей методами обеспечить функционирование устройства в своей среде, для этого производится попытка установки для вновь подключаемого устройства соответствующего драйвера, дабы тем самым предоставить функции нового устройства для доступа программам пользовательского режима и коду режима ядра, ведь без этого самого пресловутого драйвера оборудование в системе работать попросту не сможет.
Я не случайно упомянул в определении логические устройства, поскольку существует отдельная категория драйверов, которые не занимаются обслуживанием аппаратного обеспечения, а интегрируются для расширения реализации (расширения, дополнения) функциональных особенностей различных модулей системы. Но кого сейчас удивишь установкой драйверов? Этот процесс настолько уже хорошо знаком всем пользователям ПК по многолетней практике, что некоторые, я уверен, могут делать это с закрытыми глазами:) Но задумывались ли мы о деталях этого процесса, размышляли ли когда-нибудь над алгоритмом установки драйвера
? Задавались ли вопросом, какие именно действия выполняет операционная система в момент подключения нового устройства и инсталляции драйверов?
Согласитесь, что с точки зрения пользователя процесс установки драйвера в Windows, в большинстве случаев, выглядит достаточно прозаично. В системном трее появляется привычный анимированный значок мастера установки, и система через некоторое время может выдать отчет об успешном, либо неудачном завершении процедуры инсталляции в системе драйвера нового устройства. Более того, зачастую мастер установки кроме этой самой иконки в трее вовсе не выдает никаких визуальных подтверждений о попытках инсталляции нового устройства, при этом “тихо” добавляя новое оборудование в список устройств и (в случае неудачи) маркируя его специальным значком в диспетчере устройств, предлагая пользователю в ручном режиме продолжить конфигурирование оборудования. Все эти внешние процессы, хорошо уже знакомые как Вам так и мне, в той или ином виде присутствуют во всех версиях операционных систем Windows практически с момента появления этой операционной системы, незначительно отличаясь между собой лишь в деталях. Они стали настолько знакомыми и привычными, что я даже никогда и не задумывался, а что же происходит “по ту сторону экрана”, в недрах операционной системы, что скрывается под этой мнимой простотой? Как Вы увидите далее, установка драйвера Windows для физического либо логического устройства скрывает под собой довольно сложные и чрезвычайно интересные процессы. Алгоритм установки драйвера
в Windows можно разбить на перечисленные ниже ключевые глобальные задачи:
Помимо основных задач, выполняемых в рамках алгоритма установки драйвера в Windows, неплохо было бы классифицировать и условия, по которым стартует процесс установки драйвера Windows:
Но что представляет из себя сам пакет драйвера? Ведь, как мы неоднократно видели, это целый набор файловом абсолютно различного, на первый взгляд, назначения. Без более углубленного обзора структуры инталляционного пакета установки драйвера нам будет сложно понять и сам алгоритм установки драйвера, поэтому приведем общие составляющие:
Термины и определения
В данной статье я приведу описание только одного метода установки, который, в любом случае, описывает практически все этапы алгоритма установки драйвера в Windows, которые применимы и к другим способам. И разговор у нас сейчас пойдет о ситуации, когда пользователь вставляет во внутренний разъем выключенного компьютера новое оборудование, например видеокарту. Но для начала введем некоторые, необходимые нам в процессе изучения алгоритма установки драйвера, определения. Менеджер (диспетчер) Plug and Play (PnP Manager, PnP Менеджер)
– облако кода режима ядра и пользовательского режима, отвечающее за добавление, распознавание, удаление устройств в системе. Блок режима ядра взаимодействует с остальными компонентами системы в процессе загрузки/установки программного обеспечения, необходимого для обслуживания имеющихся в системе устройств. Блок пользовательского режима (, запускается в контексте главного системного процесса svchost.exe) отвечает за взаимодействие с пользователем в ситуациях, требующих установки новых драйверов или настройки рабочих параметров в уже инсталлированных. Отвечает за назначение и последующее распределение аппаратных ресурсов, таких как прерывания (IRQ), порты ввода-вывода, каналы прямого доступа к памяти (DMA) и адреса памяти. Имеет функционал определения драйвера, требуемого для поддержки определенного устройства и функционал загрузки/инсталляции данного драйвера. Умеет распознавать новые устройства, реагировать на их подключение и отключение. Является частью кода исполнительной подсистемы Windows.
Перечисление устройств
Целиком стадию загрузки с самого ее начала описывать смысла нет, и мы начнем с только с интересующего нас этапа, на котором модуль Winload(.efi) загружает ядро операционной системы Windows 7 из файла ntoskrnl.exe
. Ядро запускает PnP менеджер, являющийся частью исполнительной подсистемы. PnP менеджер стартует процесс перечисления устройств с корневого устройства, драйвера виртуальной шины под названием ROOT (Корень), который олицетворяет собой всю систему и представляет из себя драйвер шины вообще для всех PnP- и не-PnP-устройств, а так же HAL (уровня аппаратных абстракций). H AL на этом этапе функционирует как драйвер шины, который перечисляет устройства, напрямую подключенные к материнской плате. Однако, HAL вместо фактического перечисления полагается на описание оборудования, уже присутствующее в реестре. Цель HAL на данном этапе – обнаружить первичные шины, такие как PCI . Драйвер первичной шины PCI, в свою очередь, перечисляет устройства, подключенные к данной шине, находит другие шины, для которых PnP менеджер тут же загружает драйвера. Эти драйвера шин, в свою очередь, обнаруживают уже устройства на своих шинах. Данный рекурсивный процесс перечисления, загрузки драйверов и последующего перечисления, продолжается пока все устройства в системе не будут обнаружены и сконфигурированы. В процессе перечисления PnP менеджер строит дерево устройств (device tree), которое однозначно описывает отношения между всеми устройствами системы. Узлы этого дерева, именуемые devnodes (сокр. от “узлы устройств”), содержат информацию об объекте устройства, который, в свою очередь, подробно описывает устройство.
Записи всех устройств, которые были обнаружены с момента инсталляции системы, хранятся в кусте реестра . Подключи этого куста описывают устройства в следующем формате:
HKLMSYSTEMCurrentControlSetEnum Enumerator DeviceID InstanceID
Дело в том, что драйвер шины, к которой подключено устройство, запрашивает у устройства различные параметры (идентификатор производителя, устройства, ревизии и прч) и формирует так называемый аппаратный идентификатор (HardwareID), который однозначно описывает устройство и представляет из себя строку параметров, разделенных знаками &
и состоящую из следующих частей:
HardwareID – идентификационная строка, зависящая от параметров устройства (производитель, модель, ревизия, версия и прч), которую Windows использует для сопоставления устройства с.inf-файлом драйвера.
Типичная структура HardwareID:
Помимо HardwareID , устройству назначается параметр(ы) CompatibleID , который имеет схожий формат, однако содержит лишь более общие значения, не содержащие специфичных для какого-либо устройства параметров (некоторые идентификаторы устройства) и необходимый для инициализации более широкого круга совместимых устройств.
Идентификаторы HardwareID и CompatibleID используются кодом исполнительной подсистемы Windows для поиска драйвера устройства.
Обнаружение драйверов
Если на этапе перечисления устройств и загрузки драйверов, функциональный драйвер шины, на которую подключено новое устройство, информирует PnP менеджер об изменениях в подключенных дочерних устройствах. PnP менеджер режима ядра проверяет, сопоставлен ли с устройством драйвер, для этого он запрашивает драйвер шины, на которую подключено новое устройство, и получает идентификаторы HardwareID и, опционально, CompatibleID устройства. PnP менеджер режима ядра специальным событием информирует PnP менеджер пользовательского режима о том, что данное устройство требует инсталляции, передавая ему полученные идентификаторы. PnP менеджер пользовательского режима сначала пробует автоматически установить устройство без вмешательства пользователя. Для этого PnP менеджер пользовательского режима запускает утилиту rundll32.exe для запуска мастера установки драйверов устройств (%Windir%System32Newdev.dll
).
Мастер установки драйверов устройств инициирует поиск подходящего для устройства драйвера по информации из всех inf
-файлов системы, расположенных в следующих доверенных системных расположениях:
Для вышеописанных целей поиска и установки драйвера используются функции библиотек setupapi.dll
(функции поддержки инсталляции) и cfgmgr32.dll
(менеджер конфигурации). В процессе поиска используются полученные уже на данный момент идентификаторы HardwareID и (опционально) CompatibleID , значения которых описывают все возможные варианты идентификации оборудования в файле инсталляции драйвера, то есть inf
-файле. Значения идентификаторов устанавливаемого устройства сравниваются с теми, что описаны в секциях Models зарегистрированных в системе inf
-файлов. Списки идентификаторов упорядочены, поэтому более специфичные описатели оборудования представлены в списках первыми. Если совпадения идентификаторов были найдены в нескольких inf
-файлах, более точное совпадение считается предпочтительным по отношению к менее точному совпадению, подписанные inf
-файлы предпочитаются неподписанным, и подписанные позднее inf
-файлы предпочитаются подписанным ранее. Если совпадение на основе HardwareID не найдено, то используются CompatibleID , в случае наличия, конечно же. Если совпадение не найдено на основе CompatibleID , мастер установки оборудования может вывести приглашение на указание местоположения свежего драйвера оборудования. Давайте более подробно рассмотрим все указанные источники информации о драйверах.
Хранилище драйверов
Мастер установки драйверов пытается обнаружить подходящий inf
-файл в системном хранилище драйверов, располагающемся в каталоге %Windir%System32DriverStore
, который содержит все без исключения драйвера системы, входящие в состав дистрибутива Windows, полученные через службу “Windows Update”, либо инсталлированные в систему пользователем.
Хранилище драйверов – защищенное системное расположение, каталог, предназначающийся для хранения всех пакетов драйверов, которые когда-либо инсталлировались в системе.
Хранилище драйверов было впервые введено в Windows Vista. Перед установкой любого драйвера в систему, сначала специализированный код проверяет цифровую подпись драйвера, затем синтаксис inf
-файлов драйвера, затем привилегии текущего пользователя, только после этого помещает все компоненты драйвера в системное хранилище драйверов. А вот затем уже драйвер, находящийся в хранилище драйверов, может быть использован для установки устройств в системе. Поскольку процедура помещения драйвера в хранилище достаточно проработана, хранилище драйверов и является самым доверенным источником информации о драйверах.
Системный каталог INF-файлов
Параллельно система ищет драйвер в системном расположении, описываемом значением параметра DevicePath , находящемся в ветке реестра . Обычно параметр имеет значение %SystemRoot%inf
, что в большинстве систем эквивалентно местоположению C:Windowsinf
.
Хотелось бы сделать небольшое отступление и отдельно поговорить об информационных файлах пакета драйвера. inf
-файл является одним из ключевых компонентов комплекта драйверов. В нем хранится последовательность операций по установке и удалению драйвера, описанная специальными директивами, указывающими на расположение файлов функционального драйвера. Файл содержит команды, которые добавляют в реестр информацию, отвечающую за перечисление (Enum) драйвера и его класса (Class), и могут содержать указания для мастера установки оборудования по запуску так называемых основных установщиков (Class Installer, Установщик класса) и дополнительных установщиков (CoInstaller, Cоинсталлятор) для класса устройств и непосредственно устройства. Дополнительно inf
-файл определяет тип, производителя, модель устройства, класс драйвера, необходимые файлы и ресурсы.
Соинсталлятор (по структуре обычная DLL) – дополнительный инсталлятор, вызываемый на этапе инсталляции, который выполняет специфичные для подкласса или устройства шаги установки, такие как подготовка инфраструктуры для работы драйвера в системе (например, установка пакета NET. Framework), вывод конфигурационных диалоговых окон, которые позволяют пользователю указать настройки для конкретного устройства.
Немаловажная особенность соинсталляторов заключается в том, что они, в случае необходимости выполняют привязку экземпляров нового устройства к требуемым для работы протоколам. Это, к примеру, может касаться разного рода коммуникационных устройств, которым требуются для работы различные протоколы и транспорты, такие как ndis , pppoe , tcpip , tcpip6 , smb , netbt .
В .inf
-файле дополнительно описываются операции распаковки, копирования, запуска, переименования файлов, добавления и удаления ключей в реестре и многое другое.
Однако вернемся к главному алгоритму установки драйвера в Windows. В случае, когда установщик драйверов устройств не нашел подходящих драйверов в перечисленных выше локациях, система маркирует устройство как неопознанное.
При этом пользователю предлагается самостоятельно продолжить установку устройства через апплет . После того как пользователь самостоятельно выбирает устройство и указывает местоположение файлов драйвера, алгоритм установки драйвера продолжает свою работу и следующим этапом у него стартует проверка цифровой подписи драйвера.
Проверка цифровой подписи драйвера
Дело в том, что драйвер как часть кода режима ядра, является достаточно критичным компонентом операционной системы, и любые ошибки, допущенные разработчиком в коде драйвера, легко могут привести к серьезным сбоям (BSOD) в системе. С некоторого времени Microsoft достаточно трепетно относится к качеству кода драйверов, и в связи с этим в операционные системы Windows были введены такие механизмы как цифровая подпись драйвера и системная политика подписи драйверов.
Цифровая подпись драйвера – строка данных переменной длины, которая в определенной мере является гарантом того, что код драйвера был создан надежным источником и не подвергался несанкционированным модификациям.
Следующим шагом часть кода PnP менеджера, работающая в пользовательском режиме, проверяет системную политику подписания драйверов. Если системная политика предписывает коду ядра блокировать или предупреждать об инсталляции неподписанных драйверов, то PnP менеджер парсит inf
-файл драйвера на предмет наличия директивы CatalogFile , указывающей на файл каталога (файл с расширением .cat
), содержащий цифровую подпись пакета драйвера.
Файл каталога (.cat) – специальный файл, который играет роль цифровой подписи для всего пакета драйвера, потому как отдельно каждый файл, входящий в комплект пакета драйвера, не подписывается. Исключение составляют лишь двоичные файлы драйверов ядра этапа загрузки, но их проверяет отдельный код ядра.
Для тестирования драйверов и их подписания была сформирована лаборатория Microsoft Windows Hardware Quality Lab (WHQL), обстоятельно тестирующая драйвера, поставляемые с дистрибутивами Windows, а так же драйвера от крупных поставщиков оборудования. Для всех остальных разработчиков драйверов предусмотрены процедуры получения возможности самостоятельно подписывать драйвера на платной основе. Когда драйвер проходит все тесты WHQL , он становится “подписанным”. Это означает, что для драйвера WHQL формирует хэш, или уникальную сигнатуру, однозначно идентифицирующую файлы драйвера, и затем подписывает ее с применением криптографических алгоритмов при помощи специального закрытого ключа Microsoft, используемого для подписания драйверов. Подписанный хэш помещается в каталоговый файл (.cat
-файл), который размещается непосредственно в директории пакета драйвера.
В процессе инсталляции драйвера, PnP менеджер пользовательского режима извлекает сигнатуру драйвера из .cat
-файла, расшифровывает сигнатуру используя публичный ключ Microsoft и сравнивает результирующий хэш с хэшем файла инсталлируемого драйвера. Если хэши совпадают, драйвер маркируется как прошедший WHQL тестирование. Если сигнатуру не удается проверить, PnP менеджер действует в соответствии с настройками системной политики подписи драйверов, либо запрещая инсталляцию драйвера, либо все же позволяя инсталлировать драйвер.
Создание резервной копии
Довольно неплохая стратегия Windows создавать точку восстановления перед добавлением в систему драйверов нового устройства. Связано это, в первую очередь, с тем, что драйвер режима ядра, содержащий ошибку, может являться причиной полной неработоспособности системы, и как потом с этой системой быть? Даже не смотря на все подписи и проверки, пользователь должен иметь возможность отката конфигурации в случае, например, когда ему что-то после установки не понравилось.