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

Драйвер (Driver) - программное обеспечение, при помощи которого операционная система и работающие в её составе программные модули, получают доступ к аппаратному или логическому устройствам.

Именно поэтому операционная система пытаемся всеми доступными ей методами обеспечить функционирование устройства в своей среде, для этого производится попытка установки для вновь подключаемого устройства соответствующего драйвера, дабы тем самым предоставить функции нового устройства для доступа программам пользовательского режима и коду режима ядра, ведь без этого самого пресловутого драйвера оборудование в системе работать попросту не сможет.
Я не случайно упомянул в определении логические устройства, поскольку существует отдельная категория драйверов, которые не занимаются обслуживанием аппаратного обеспечения, а интегрируются для расширения реализации (расширения, дополнения) функциональных особенностей различных модулей системы. Но кого сейчас удивишь установкой драйверов? Этот процесс настолько уже хорошо знаком всем пользователям ПК по многолетней практике, что некоторые, я уверен, могут делать это с закрытыми глазами:) Но задумывались ли мы о деталях этого процесса, размышляли ли когда-нибудь над алгоритмом установки драйвера ? Задавались ли вопросом, какие именно действия выполняет операционная система в момент подключения нового устройства и инсталляции драйверов?

Согласитесь, что с точки зрения пользователя процесс установки драйвера в Windows, в большинстве случаев, выглядит достаточно прозаично. В системном трее появляется привычный анимированный значок мастера установки, и система через некоторое время может выдать отчет об успешном, либо неудачном завершении процедуры инсталляции в системе драйвера нового устройства. Более того, зачастую мастер установки кроме этой самой иконки в трее вовсе не выдает никаких визуальных подтверждений о попытках инсталляции нового устройства, при этом "тихо" добавляя новое оборудование в список устройств и (в случае неудачи) маркируя его специальным значком в диспетчере устройств, предлагая пользователю в ручном режиме продолжить конфигурирование оборудования. Все эти внешние процессы, хорошо уже знакомые как Вам так и мне, в той или ином виде присутствуют во всех версиях операционных систем Windows практически с момента появления этой операционной системы, незначительно отличаясь между собой лишь в деталях. Они стали настолько знакомыми и привычными, что я даже никогда и не задумывался, а что же происходит "по ту сторону экрана", в недрах операционной системы, что скрывается под этой мнимой простотой? Как Вы увидите далее, установка драйвера Windows для физического либо логического устройства скрывает под собой довольно сложные и чрезвычайно интересные процессы. Алгоритм установки драйвера в Windows можно разбить на перечисленные ниже ключевые глобальные задачи:

  • Копирование двоичного файла драйвера в соответствующий каталог в системе;
  • Регистрация драйвера в системе Windows с указанием метода загрузки;
  • Добавление необходимой информации в системный реестр;
  • Копирование/установка связанных вспомогательных компонентов из пакета драйвера;

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

  • Пользователь инсталлирует в выключенный компьютер новое устройство. В этом случае, сам процесс обнаружения нового устройства и инсталляции драйвера начинается уже на этапе загрузки операционной системы.
  • Пользователь с правами локального администратора, при помощи оснастки "Диспетчер устройств" инициирует установку либо обновление драйвера для какого-либо уже установленного устройства.
  • Пользователь "на ходу" подключает к работающему компьютер новое устройство. В этом случае речь идет об определенной категории устройств, которые могут подключаться "на лету", таких как устройства с внешним интерфейсом eSata , USB и прч. Ведь Вы же не будете инсталлировать внутреннюю видеокарту, когда питание подано на слоты PCIe ? Я лично такого пока еще не вытворял:)
  • Пользователь самостоятельно запускает программу установки комплекта пакета драйвера из-под учетной записи с правами локального администратора. Такой способ может использоваться как для установки драйверов для физических устройств, которые поддерживают стандарт Plug and Play, так и для установки не-PnP (legacy) драйверов, драйверов логических устройств, которые не могут быть автоматически обнаружены системой и которые не могут быть проинсталлированы иначе как в ручном режиме. Характерным примером могут быть антивирусы или виртуальные машины, которые инсталлируют свои драйвера (логических устройств) в систему.
  • Пользователь щелкает правой кнопкой мыши на .inf -файле в директории с драйвером и выбирает пункт Установить из-под учетной записи с правами локального администратора.

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

  • .inf -файл(ы). Ключевой компонент установочного пакета драйвера - файл, описывающий процесс инсталляции драйвера. inf -файл разделен на секции и состоит из инструкций, указывающих системе на то, как именно устанавливается драйвер: они описывают устанавливаемое устройство, исходное и целевое местонахождение всех компонентов драйвера, различные изменения, которые необходимо внести в реестр при установке драйвера Windows, информацию о зависимостях драйвера и прочее. .inf -файлы связывают физическое устройство с драйвером, контролирующим данное устройство.
  • Двоичный файл(ы) драйвера. Пакет, как минимум, должен содержать .sys - или .dll -файл ядра драйвера. Фактически один-единственный.sys-файл (в крайнем случае) может быть установлен (с оговорками) в ручном режиме через правку реестра.
  • Исполняемые файлы установки. Обычно это всем хорошо уже знакомые утилиты инсталляции, которые имеют имена setup.exe , install.exe и некоторые другие.
  • Исполняемые файлы удаления. Обычно это утилиты деинсталляции, которые имеют имена uninstall.exe .
  • Файл(ы) дополнительных процедур и библиотек. Обычно это вспомогательные библиотеки формата .dll , соинсталляторы.
  • .cat -файл(ы). Файл каталога, подписанный цифровой подписью. Данные файлы содержат цифровые подписи каталогов и играют роль сигнатуры для файлов пакета, с помощью которой пользователь может определить происхождение пакета и проверить целостность файлов пакета драйвера. Требуются в 64-битных версиях Windows, начиная с Vista и более поздних и рекомендуются для всех остальных.
  • Модули управления пользовательского режима. Обычно это различные командные апплеты, работающие в пользовательском режиме, такие как ATI Catalist Control Center, VIA HD Audio Desk, Realtek HD Audio Control Panel и аналогичные.
  • Файлы справок. Куда же без них то?

Термины и определения

В данной статье я приведу описание только одного метода установки, который, в любом случае, описывает практически все этапы алгоритма установки драйвера в Windows, которые применимы и к другим способам. И разговор у нас сейчас пойдет о ситуации, когда пользователь вставляет во внутренний разъем выключенного компьютера новое оборудование, например видеокарту. Но для начала введем некоторые, необходимые нам в процессе изучения алгоритма установки драйвера, определения.
Менеджер (диспетчер) Plug and Play (PnP Manager, PnP Менеджер) - облако кода режима ядра и пользовательского режима, отвечающее за добавление, распознавание, удаление устройств в системе. Блок режима ядра взаимодействует с остальными компонентами системы в процессе загрузки/установки программного обеспечения, необходимого для обслуживания имеющихся в системе устройств. Блок пользовательского режима (%Windir%\System32\umpnpmgr.dll , запускается в контексте главного системного процесса svchost.exe) отвечает за взаимодействие с пользователем в ситуациях, требующих установки новых драйверов или настройки рабочих параметров в уже инсталлированных. Отвечает за назначение и последующее распределение аппаратных ресурсов, таких как прерывания (IRQ), порты ввода-вывода, каналы прямого доступа к памяти (DMA) и адреса памяти. Имеет функционал определения драйвера, требуемого для поддержки определенного устройства и функционал загрузки/инсталляции данного драйвера. Умеет распознавать новые устройства, реагировать на их подключение и отключение. Является частью кода исполнительной подсистемы Windows.

Перечисление устройств

Целиком стадию загрузки с самого ее начала описывать смысла нет, и мы начнем с только с интересующего нас этапа, на котором модуль Winload(.efi) загружает ядро операционной системы Windows 7 из файла ntoskrnl.exe . Ядро запускает PnP менеджер, являющийся частью исполнительной подсистемы. PnP менеджер стартует процесс перечисления устройств с корневого устройства, драйвера виртуальной шины под названием ROOT (Корень), который олицетворяет собой всю систему и представляет из себя драйвер шины вообще для всех PnP- и не-PnP-устройств, а так же HAL (уровня аппаратных абстракций). HAL на этом этапе функционирует как драйвер шины, который перечисляет устройства, напрямую подключенные к материнской плате. Однако, HAL вместо фактического перечисления полагается на описание оборудования, уже присутствующее в реестре. Цель HAL на данном этапе - обнаружить первичные шины, такие как PCI . Драйвер первичной шины PCI, в свою очередь, перечисляет устройства, подключенные к данной шине, находит другие шины, для которых PnP менеджер тут же загружает драйвера. Эти драйвера шин, в свою очередь, обнаруживают уже устройства на своих шинах. Данный рекурсивный процесс перечисления, загрузки драйверов и последующего перечисления, продолжается пока все устройства в системе не будут обнаружены и сконфигурированы. В процессе перечисления PnP менеджер строит дерево устройств (device tree), которое однозначно описывает отношения между всеми устройствами системы. Узлы этого дерева, именуемые devnodes (сокр. от "узлы устройств"), содержат информацию об объекте устройства, который, в свою очередь, подробно описывает устройство.
Записи всех устройств, которые были обнаружены с момента инсталляции системы, хранятся в кусте реестра HKLM\SYSTEM\CurrentControlSet\Enum . Подключи этого куста описывают устройства в следующем формате:

HKLM\SYSTEM\CurrentControlSet\Enum\ Enumerator\ DeviceID\ InstanceID

HKLM\SYSTEM\CurrentControlSet\Enum\

  • Enumerator - наименование драйвера шины. Может принимать значения: ACPI , DISPLAY , HDAUDIO , HID , HDTREE , IDE , PCI , PCIIDE , Root , STORAGE , SW , UMB , USB , USBSTOR и другие;
  • DeviceID - уникальный идентификатор для данного типа устройств;
  • InstanceID - уникальный идентификатор различных экземпляров одного и того же устройства.

Дело в том, что драйвер шины, к которой подключено устройство, запрашивает у устройства различные параметры (идентификатор производителя, устройства, ревизии и прч) и формирует так называемый аппаратный идентификатор (HardwareID), который однозначно описывает устройство и представляет из себя строку параметров, разделенных знаками & и состоящую из следующих частей:

  • Префикс, описывающий шину, к которой подключено устройство.
  • Идентификатор устройства. Состоит из нескольких частей, таких как идентификатор производителя, идентификатор продукта (модели), ревизия устройства.

HardwareID - идентификационная строка, зависящая от параметров устройства (производитель, модель, ревизия, версия и прч), которую Windows использует для сопоставления устройства с.inf-файлом драйвера.

Типичная структура HardwareID:

PCI\VEN_10DE&DEV_1341&SUBSYS_2281103C&REV_A2

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

Идентификаторы HardwareID и CompatibleID используются кодом исполнительной подсистемы Windows для поиска драйвера устройства.

Обнаружение драйверов

Если на этапе перечисления устройств и загрузки драйверов, функциональный драйвер шины, на которую подключено новое устройство, информирует PnP менеджер об изменениях в подключенных дочерних устройствах. PnP менеджер режима ядра проверяет, сопоставлен ли с устройством драйвер, для этого он запрашивает драйвер шины, на которую подключено новое устройство, и получает идентификаторы HardwareID и, опционально, CompatibleID устройства. PnP менеджер режима ядра специальным событием информирует PnP менеджер пользовательского режима о том, что данное устройство требует инсталляции, передавая ему полученные идентификаторы. PnP менеджер пользовательского режима сначала пробует автоматически установить устройство без вмешательства пользователя. Для этого PnP менеджер пользовательского режима запускает утилиту rundll32.exe для запуска мастера установки драйверов устройств (%Windir%\System32\Newdev.dll ).

Мастер установки драйверов устройств инициирует поиск подходящего для устройства драйвера по информации из всех inf -файлов системы, расположенных в следующих доверенных системных расположениях:

  • Хранилище драйверов;
  • Центр обновления Windows;
  • Системный каталог INF-файлов;

Для вышеописанных целей поиска и установки драйвера используются функции библиотек setupapi.dll (функции поддержки инсталляции) и cfgmgr32.dll (менеджер конфигурации). В процессе поиска используются полученные уже на данный момент идентификаторы HardwareID и (опционально) CompatibleID , значения которых описывают все возможные варианты идентификации оборудования в файле инсталляции драйвера, то есть inf -файле. Значения идентификаторов устанавливаемого устройства сравниваются с теми, что описаны в секциях Models зарегистрированных в системе inf -файлов. Списки идентификаторов упорядочены, поэтому более специфичные описатели оборудования представлены в списках первыми. Если совпадения идентификаторов были найдены в нескольких inf -файлах, более точное совпадение считается предпочтительным по отношению к менее точному совпадению, подписанные inf -файлы предпочитаются неподписанным, и подписанные позднее inf -файлы предпочитаются подписанным ранее. Если совпадение на основе HardwareID не найдено, то используются CompatibleID , в случае наличия, конечно же. Если совпадение не найдено на основе CompatibleID , мастер установки оборудования может вывести приглашение на указание местоположения свежего драйвера оборудования. Давайте более подробно рассмотрим все указанные источники информации о драйверах.

Хранилище драйверов

Мастер установки драйверов пытается обнаружить подходящий inf -файл в системном хранилище драйверов, располагающемся в каталоге %Windir%\System32\DriverStore , который содержит все без исключения драйвера системы, входящие в состав дистрибутива Windows, полученные через службу "Windows Update", либо инсталлированные в систему пользователем.

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

Хранилище драйверов было впервые введено в Windows Vista. Перед установкой любого драйвера в систему, сначала специализированный код проверяет цифровую подпись драйвера, затем синтаксис inf -файлов драйвера, затем привилегии текущего пользователя, только после этого помещает все компоненты драйвера в системное хранилище драйверов. А вот затем уже драйвер, находящийся в хранилище драйверов, может быть использован для установки устройств в системе. Поскольку процедура помещения драйвера в хранилище достаточно проработана, хранилище драйверов и является самым доверенным источником информации о драйверах.

Системный каталог INF-файлов

Параллельно система ищет драйвер в системном расположении, описываемом значением параметра DevicePath , находящемся в ветке реестра HKLM\Software\Microsoft\Windows\CurrentVersion . Обычно параметр имеет значение %SystemRoot%\inf , что в большинстве систем эквивалентно местоположению C:\Windows\inf .

INF-файл

Хотелось бы сделать небольшое отступление и отдельно поговорить об информационных файлах пакета драйвера. 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 создавать точку восстановления перед добавлением в систему драйверов нового устройства. Связано это, в первую очередь, с тем, что драйвер режима ядра, содержащий ошибку, может являться причиной полной неработоспособности системы, и как потом с этой системой быть? Даже не смотря на все подписи и проверки, пользователь должен иметь возможность отката конфигурации в случае, например, когда ему что-то после установки не понравилось.

Инсталляция драйвера

На этом этапе пакет драйвера стороннего разработчика развертывается в системное хранилище драйверов. Затем, система выполняет фактическую инсталляцию драйвера из хранилища драйверов, которая производится посредством утилиты %Windir%\System32\drvinst.exe . На этом этапе происходят следующие события:

  • inf -файл драйвера копируется в специализированную папку %Windir%/inf . Для драйверов сторонних разработчиков характерно переименование файла в OEMx.inf , где x - порядковый номер inf -файла в директории.
  • Код операционной системы фиксирует факт инсталляции inf -файла в реестре.
  • Создается узел устройства (devnode) в реестре по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\\\ , который содержит подробную информацию об устройстве.
  • Двоичные файлы драйвера копируются в целевую папку %Windir%\System32\DRIVERS и, возможно, другие целевые папки. Обновляются разделы реестра.
  • Формируется ключ реестра, соответствующий драйверу: HKLM\SYSTEM\CurrentControlSet\Services\имя_драйвера . Формируются параметры ключа.
  • Формируется ключ реестра, отвечающий за логгирование событий драйвера, размещающийся в ветке HKLM\SYSTEM\CurrentControlSet\Services\EventLog\System\имя_драйвера .
  • PnP менеджер вызывает процедуру DriverEntry для каждого установленного только что драйвера. Затем PnP менеджер режима ядра пытается "запустить" драйвер, подгружая его в память и вызывая процедуру AddDevice драйвера для информирования самого драйвера о присутствии устройства, для которого он был загружен.

Расположение информации о драйверах

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

Общие журналы драйверов

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

  • %Windir%\setupact.log -- содержит сообщения отладки от инсталлятора драйверов режима ядра, который представляет собой Win32 DLL, сопровождающую процесс установки устройства;
  • %Windir%\inf\setupapi.app.log -- содержит сообщения процесса инсталляции приложений;
  • %Windir%\inf\setupapi.dev.log -- содержит сообщения процесса инсталляции устройств;

Журнал драйвера

Если Вы используете Диспетчер пакетов (Package Manager, pkgmgr) для инсталляции/деинсталляции пакета, который (в свою очередь) инсталлирует, обновляет, либо деинсталлирует драйвер, то у Вас есть возможность включить (с целью отладки) создание специального лог-файла drivers.log , который будет содержать только ошибки, специфичные для конкретного драйвера. Для создания этого журнала, создайте/задайте следующий ключ реестра, и затем запустите pkgmgr снова. После этого, в директории, откуда был запущен pkgmgr , будет создан файл drivers.log .
Ветка: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Device Installer
Ключ: DebugPkgMgr
Тип: DWord
Значение: 1

%Windir%\inf

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

%Windir%\System32\DRIVERS

Это директория в файловой системе Windows, где размещаются непосредственно файлы драйверов. В современных операционных системах, а я говорю сейчас о Windows Vista и более поздних, драйвера в данной директории имеют расширения .sys в подавляющем своем большинстве, реже встречаются dll -файлы, однако общего смысла это не меняет, поскольку, вне зависимости от расширения, все они идентичны по структуре .dll -файлам. В более ранних операционных системах встречались такие форматы как.drv и.vxd .

%Windir%\System32\DriverStore

Системная коллекция драйверов, которая предназначается для размещения всех без исключения драйверов, которые проходили через Вашу систему. Используется начиная с Windows Vista. Перед установкой любого драйвера в операционную систему, сначала специализированный код проверяет подпись драйвера, затем синтаксис файлов inf -файла драйвера, затем привилегии текущего пользователя, только после этого добавляет все компоненты драйвера в системную коллекцию. И только после этого драйвер может быть использован в системе для инсталляции устройств без какого-либо вмешательства пользователя.

HKLM\SYSTEM\CurrentControlSet\Enum

Куст реестра, содержащий информацию об устройствах, имеющихся в системе. PnP менеджер создает здесь ключ для каждого устройства в формате HKLM\SYSTEM\CurrentControlSet\Enum\Enumerator\deviceID . где Enumerator - это описанный выше в статье идентификатор шины, полученный на этапе перечисления устройств, deviceid - идентификатор типа устройств. Ключ содержит следующую информацию: описание устройства, аппаратные идентификаторы (Hardware ID), идентификаторы совместимых устройств (Compatible ID) и требования к ресурсам. Куст зарезервирован для использования исключительно кодом операционной системой, поэтому пользовательским приложениям и драйверам не рекомендуется напрямую взаимодействовать с ним, предлагается использовать документированные системные функции.

HKLM\SYSTEM\CurrentControlSet\Control

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

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

HKLM\SYSTEM\CurrentControlSet\Services

Куст реестра, который используется для размещения информации обо всех сервисах (драйверах) в системе. Каждый системный драйвер размещает достаточно важную глобальную информацию о себе в подключах вида HKLM\SYSTEM\CurrentControlSet\Services\<Имя_драйвера> , которая используется драйвером в процессе инициализации на этапе загрузки системы. Куст активно используется PnP менеджером для передачи параметров при вызове процедуры инициализации драйвера.
В этом кусте размещаются такие элементы:

  • ImagePath - содержит полный путь в двоичному файлу (образу) драйвера. программа инсталляции заполняет это значение на основе данных из inf -файла пакета драйвера;
  • Parameters - хранит индивидуальную информацию драйвера, заполняется на основе данных, размешенных в inf -файле пакета драйвера;
  • Performance - информация для мониторинга производительности устройства, контролируемого драйвером. Указывает имя DLL мониторинга производительности и имена функций, экспортируемых данной DLL. Заполняется на основании данных, полученных из inf -файла;

HKLM\SYSTEM\CurrentControlSet\HardwareProfiles

Куст реестра, который содержит информацию об аппаратных профилях системы и предназначен для поддержки данной технологии. Аппаратный профиль это всего-лишь набор изменений в стандартной аппаратной конфигурации и конфигурации сервисов (original configuration), загружаемых при старте системы. Содержит специфические изменения исходного, основного профиля оборудования, сконфигурированного в двух разделах реестра: HKLM\SOFTWARE и HKLM\SYSTEM . Не используется в Windows 7, хотя ключи реестра остались, вероятно в целях совместимости.

Не такая уж частая ситуация, но при обслуживании большого парка пользовательских компьютеров иногда случается такое, что для какого-то устройства производитель не выпустил драйверы под нужную версию OS. Это может быть старая версия OS, или старое устройство. В общем. иногда требуется установить драйверы вручную. Поставляются они обычно в виде нескольких файлов. Чаще всего они имеют расширение inf или sys, но могут быть и другими.

Процедура установки драйвера в ОС Windows 10 зависит от того, каким именно способом вы его устанавливаете. Каждый способ имеет свои плюсы и минусы. Самый главный плюс в том, что любой пользователь, от новичка до мастера, может выбрать для себя самый удобный, избежав системных ошибок и вылета программ в дальнейшем. Мы подробно рассмотрим каждый способ в отдельности. Помните, что самое важное – использовать драйвера из надёжных источников, чтобы не повредить операционную систему и случайным образом не запустить вирус, устранение которого займёт гораздо больше времени и сил, чем установка любого драйвера.

Что нужно для установки драйвера

Для того, чтобы установить драйвер вручную, нужен установочный диск или специальное программное обеспечение, которое поможет вам пошагово выполнить всю процедуру установки. Ниже мы рассмотрим одну из таких программ – Driver Easy. Бывают такие ситуации, когда по причине несовместимости драйвер с установочного диска выдаёт ошибку. Именно в таких случаях нам и нужны программы, которые помогут найти и обновить драйвер. К тому же этот вариант будет более приемлемым для владельцев нетбуков, в которых зачастую отсутствует дисковод. Для таких случаев есть вариант установки необходимого драйвера с USB-накопителя, его мы тоже сегодня разберём, так как этот метод имеет свои особенности.

Ручная установка - инструкция

Установка драйвера вручную при помощи диспетчера устройств

1. Откройте панель управления Windows 10, нажав одновременно клавишу Win + X (клавиша Windows и клавиша X) и кликните левой кнопкой мыши на пункт «Панель управления»

2. Для удобства желательно настроить маленькие значки.

3. Кликните на «Диспетчер устройств».

В окне диспетчера устройств разверните категории и найдите нужное вам устройство. Затем щелкните правой кнопкой мыши на имя устройства и выберите «Обновить программное обеспечение драйвера». На фото приведён пример установки драйвера сетевого адаптера Realtek PCIe GBE Family Controller.

Установка драйвера вручную при помощи программы Driver Easy

1. В главном окне программы Driver Easy нажмите на драйвер устройства, нуждающегося в обновлении. После этого вы увидите стандартное окно диспетчера задач, о котором было написано выше. Выберите устройство для обновления.

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

3. Нажмите «Обзор», чтобы найти загруженный файл драйвера.

Нажмите в Driver Easy кнопку Down Triangle, затем выберите Open File Location, чтобы открыть папку с драйвером.

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

Путь к файлу:

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

Установка драйвера с компакт-диска или DVD-диска

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

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

Установка драйверов с USB-накопителя

После копирования драйверов на USB-накопитель, вы сможете установить необходимое программное обеспечение на свой компьютер. Убедитесь, что накопитель подключен к компьютеру, откройте проводник Windows и найдите в нём имя вашего устройства. Например, если у вас есть USB-накопитель, которому при подключении назначен диск E:, то вам нужно кликнуть на значок с именем E: для того, чтобы открылось содержимое.

Как только драйверы будут обнаружены на диске, вы должны определить, каким именно образом они будут установлены на ваш компьютер. Если каталог содержит исполняемые файлы или файл установки (расширение *.exe), то вы можете установить драйвер с помощью этого файла. Если драйверы сжаты в ZIP-файл, вам необходимо распаковать файл при помощи таких архиваторов, как 7-Zip и WinZip.

Установка inf файла

Если приведенные выше рекомендации вам не помогли, то все инструкции по установке драйверов и аппаратных устройств всегда содержатся в файле с расширением.inf, который находится в папке C:Windowsinf. Папка с файлами сведений защищена и является скрытой. Чтобы она отобразилась, в настройках вида папки поставьте галочку «Скрытые элементы». Чтобы найти файл сведений нужного вам устройства, придерживайтесь следующей инструкции:

  • откройте диспетчер устройств;
  • кликните правой кнопкой мыши на выбранное устройство и выберите в меню «Свойства»
  • после этого перейдите на вкладку «Сведения». Раскройте список и выберите пункт «Имя INF». Название файла будет отображено в поле «Значение».
  • После того, как вы узнали имя файла, возвращайтесь в Диспетчер задач, выберите устройство, нажмите «Обновить драйвер» и укажите путь к файлу *.inf (в данном примере это будет C:Windowsinfoem3.inf).

    Установка, настройка и восстановление Windows 7 на 100% Ватаманюк Александр Иванович

    Установка драйвера из INF-файла

    Рассмотрим ситуацию, когда для установки оборудования используется набор из INF-файлов.

    Откройте Панель управления и запустите механизм Диспетчер устройств . В результате откроется окно, в котором вы можете видеть список всех устройств, обнаруженных операционной системой на компьютере (рис. 16.1).

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

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

    Если устройство уже подключено к компьютеру, то щелкните правой кнопкой мыши на названии компьютера в самом верху списка и в появившемся меню выберите пункт Установить старое устройство (рис. 16.2). Это приведет к запуску мастера установки оборудования, который будет вам помогать и направлять ваши действия при установке оборудования (рис. 16.3).

    Рис. 16.1. Запускаем механизм Диспетчер устройств

    Рис. 16.2. Выбираем пункт Установить старое устройство

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

    Рис. 16.3. Мастер установки оборудования

    Мастер установки на выбор предлагает два варианта дальнейших действий: автоматическую и ручную установку оборудования (рис. 16.4). Автоматическая установка ничего не даст, так как операционная система уже пыталась сделать это в процессе установки. По этой причине сразу же необходимо переходить ко второму варианту действий. Установите переключатель в положение Установка оборудования, выбранного из списка вручную и нажмите кнопку Далее.

    Рис. 16.4. Выбираем вариант действия

    В следующем окне вы увидите список устройств разного типа, драйверы к которым имеются в операционной системе (рис. 16.5).

    Рис. 16.5. Указываем тип устройства, которое нужно установить

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

    В следующем окне мастер установки оборудования покажет список всех имеющихся в системе драйверов для выбранного типа устройства, отсортированных по производителю оборудования. Если вы уверены в том, что для вашего оборудования подойдет один из предложенных драйверов, то в левой части окна выберите нужного производителя, а в правой – необходимый драйвер. После этого можно попробовать его установить, нажав кнопку Далее (рис. 16.6). Это приведет к появлению подтверждающего окна, в котором еще раз нужно нажать кнопку Далее (рис. 16.7).

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

    Рис. 16.6. Указываем драйвер для устройства

    Рис. 16.7. Подтверждаем установку драйвера

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

    Рис. 16.8. Неудачная установка драйвера

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

    Рис. 16.9. Устанавливаем драйвер из другого источника

    После нажатия кнопки ОК мастер попытается установить драйвер. Если данный драйвер сможет работать в Windows 7, он будет установлен и устройство сможет функционировать.

    Данный текст является ознакомительным фрагментом. Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

    5.5.2.4. Проверка драйвера После загрузки убедитесь, что драйвер установлен и используется. Нажмите ‹Alt+F2›, введите system-config-display, перейдите в раскрывшемся окне на вкладку Оборудование и щелкните на кнопке Настроить напротив строки с идентификацией видеокарты. В

    Из книги Как писать драйвера автора

    Как писать драйвера (часть 1) Предисловие. Драйвера под Windows являются для большей массы программистов, "тайной за семью печатями". И вовсе не потому, что это что-то архисложное, сколько по причине абсолютной недокументированности идеологии.Начав заниматься этой темой я

    Из книги Пишем драйвер Windows на ассемблере автора Компьютеры Автор неизвестен -

    Как писать драйвера (часть 2) Прежде, чем хвататься за описание самого драйвера, давайте определимся с типами существующих драйверов.По существующему в DDK разделению сам Microsoft подразделяет драйвера на следующие типы:– Kernel-Mode Drivers;– Kernel Streaming Drivers;– Graphics Drivers;– Network

    Из книги Сбои и ошибки ПК. Лечим компьютер сами автора Донцов Дмитрий

    Из книги Системное программирование в среде Windows автора Харт Джонсон М

    Из книги MySQL: руководство профессионала автора Паутов Алексей В

    Часть 2. API для WDM драйвера. Большинство функций драйверного API, которые нас интересуют, предоставляются модулем ntoskrnl.exe.Для их использования надо сделать следующее:1) Объявить типы данных и определить константы.Большинство определений для C находятся в файлах ntdef.h и wdm.h.2)

    Из книги Настройка Windows 7 своими руками. Как сделать, чтобы работать было легко и удобно автора Гладкий Алексей Анатольевич

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

    Из книги Linux программирование в примерах автора Роббинс Арнольд

    Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла

    Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

    Пример: установка меток времени файла Программа 3.3 реализует UNIX-команду touch, предназначенную для изменения кода защиты файлов и обновления меток времени до текущих значений системного времени. В упражнении 3.11 от вас требуется расширить возможности функции touch таким

    Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

    Из книги Использование NuMega DriverStudio для написания WDM-драйверов автора Тарво Александр

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

    Из книги автора

    Из книги автора

    Установка драйвера и настройка источников данных Дистрибутив драйвера состоит из одного исполнимого файла с именем ibgem_21_desk.exe (для настольной редакции драйвера версии 2.1). Чтобы установить драйвер, необходимо запустить этот файл.Существует два способа создания

    Из книги автора

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

    Из книги автора

    16.3. Откат драйвера Иногда приходится не только ставить драйверы с нуля, но и обновлять старые драйверы. Необходимость установки нового драйвера объясняется достаточно просто: новый драйвер практически всегда представляет собой исправленную версию старого драйвера

    Из книги автора

    2.2 Компиляция и установка драйвера. Проект, сгенерированный DriverWizard, находится в каталоге XDSP. В этом каталоге расположены файлы рабочего пространства (Workspace) VC++: XDSP.dsw, XDSP.ncd и XDSP.opt и два каталога – sys и exe. Здесь же находится файл XDSPioctl.h. В нем описаны управляющие коды,

    Данный вид установки драйверов практически всегда помогает в том случае, когда драйвер для устройства не устанавливается простым запуском установочного файла setup, с расширениями *.exe или *.msi.

    Открываем Диспетчер устройств (Пуск –> Панель Управления –> Диспетчер устройств)

    Нажимаем кнопку Обзор…

    и, конечно же, кнопочку ОК

    Начнется установка драйвера

    ddriver.ru

    Принудительная установка драйверов на 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 завершит все свои операции по определению нового оборудования.

    Открываем Диспетчер устройств (Пуск –> Панель Управления –> Диспетчер устройств)

    Сразу видно устройство USB camera без установленных драйверов. Правой кнопкой мыши нажимаем на камере и в контекстном меню выбираем пункт Обновить драйверы…

    в открывшемся окне нажимаем Выполнить поиск драйвером на этом компьютере

    Откроется окно со списков категорий оборудования.

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

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

    Нажимаем кнопку Обзор…

    и с помощью Проводника ищем наш файл с расширением *.inf, выделяем его мышкой и следуем по кнопке Открыть

    и, конечно же, кнопочку ОК

    Теперь в окне со списком имеющихся драйверов появиться наш драйвер (если драйвер не подходит для оборудования, то система выдаст ошибку).

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

    Итак, после того как файл с драйвером найден, выделяем в списке мышкой наш драйвер и нажимаем кнопку Далее

    Начнется установка драйвера

    Может появиться предупреждение windows о том, что устанавливаемый драйвер не имеет цифровой подписи либо не проверялся на совместимость. Если уверены, что драйвер взят с надежного источника и точно предназначен для устанавливаемого оборудования, то такого предупреждения абсолютно не стоит бояться, а следует согласиться на дальнейшую установку драйвера. По окончании установки система выведет окно о завершении.В успешной установке драйвера можно убедиться в Диспетчере устройств, где подключаемое устройство уже не будет иметь вопросика, а его название поменяется на правильное, созданное производителем. В нашем случае с камерой это будет появившееся устройство с названием USB PC Camera (SN9C103)

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

    ddriver.ru

    Установка драйвера тач скрина на HP TouchSmart 7320

    Установка драйвера тач скрина на HP TouchSmart 7320duromerJanuary 18th, 2012В первый раз такой бред встречаю.Качаем драйвер для NextWindow Voltron Touch Screen, запускаем инсталятор, который распаковывает файлы драйвера в папку. Эффект нулевой.При попытке установить inf файл правой кнопкой мышки получаем сообщение "Выбранный INF-файл не поддерживает этого метода установки".Долго бьемся головой апстену, потом идем на сайт хьюлета и внимательно читаем инструкцию по установке.Оказывается в системе два устройства с одинаковыми PID и VID (в данном случае VID_1926&PID_0DBD)

    И чтобы драйвер таки встал, надо отыскать среди "Составных USB устройств" устройство с такими же PID и VID и обновить для него драйвер указав.inf файл.

    После чего все прекрасно работает.Жжжжуть!

    Но теперь можно тыкать пальцами в большой экран.

    duromer.livejournal.com

    И вот тут меня ждал неприятный сюрприз - то ли родной драйвер оказался кривым, то ли винда, то ли провод… вообщем драйвер то встал, диспетчер устройств windows рапортовал о полной работоспособности девайса, но на запрос adb devices в консоли я получал пустой список и, естественно, тестировать приложение на планшете не удавалось.

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

    Вот тут я решил попробовать свои силы в написании драйверов старом добром методе научного тыка и открыл inf-файл драйвера. Надежду мне давало понимание, что софтверная часть adb интерфейса со стороны планшета должна быть идентичной для всех устройств, а USB и так работал. И вот, после нескольких неудачных проб ручной правки inf-файла я нашел рецепт лечения приправы inf-файла так, чтобы оно поставилось и, главное, работало.

    Итак, приступим.

    Шаг 1. Скачать драйвер. Если вы этого еще не сделали, откройте Android SDK Manager, найдите раздел Extras, поставьте галочку напротив Google USB Driver и нажмите Install Packages. Все просто. Ждете, пока загрузится.

    Шаг 2. Найдите драйвер и сделайте его копию в отдельную папку. Зайдите в папку %android-sdk%\extras\google\ и увидите там заветную папочку usb_driver. Вот ее скопируйте куда-то, и там же будем проводить дальнейшие манипуляции. В принципе, можете править и «оригинал», но я предпочел сохранить оригинал нетронутым на всякий пожарный.

    Шаг 3. Правим inf-файл. В папочке открываем файл android_winusb.inf и ищем там строки такого вот вида:

    ;Google Nexus One %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02&MI_01 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E11 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01 Делаем копию этих строк, заменяем Google Nexus One на %имя_вашего_девайса% для идентификации в будущем и… открываем диспетчер устройств windows. Ищем там наше устройство(Android, Android Composite ADB Interface или что-то в этом стиле). Открываем свойства устройства, вкладка «Сведения», в списке выбираем пункт «ИД оборудования» и видим такую вот картину. Копируем строчку, которая больше всего похожа на ту, что показана на рисунке(Она, по идее просто немного короче), и вставляем ее в наш inf-файл.;TEXET TM-7025 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0003 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0003&MI_01 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0003 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0003&MI_01 В %SingleAdbInterface% мы конец строки удаляем, как видно, в %CompositeAdbInterface% вставляем целиком. Повторять два раза все, наверное, не надо, но у меня уже все стоит и мне лень экспериментировать:) Сохраняемся(будьте внимательны - в некоторых случаях для этого нужно запускать блокнот с правами администратора, т. к. в пользовательском режиме вам не дадут перезаписать inf-файл).

    Шаг 4. Установка драйвера. Теперь, когда все подготовлено, возвращаемся в диспетчер устройств и удаляем все ранее установленные adb драйверы(если были). Обновляем список устройств и видим наш девайс без драйверов. Открываем его свойства и выбираем «обновить драйверы», выбираем установку из папки, указываем папку с поправленым inf-ом и запускаем установку - наш драйвер моментально находится, но при установке он может ругаться о несовместимости с вопросом «продолжать ли, насяльнека?». Продолжаем. Все, драйвер установлен.

    Шаг 5. Финал. Для точности делаем вынь-всунь USB-порта, ждем пока все обнаруживается, открываем консоль(Win+R, вводим cmd) и пишем adb devices. Если все прошло хорошо - видим заветный пункт списка, обозначающий, что adb теперь видит наш девайс.
    С этого момента можно спокойно запускать eclipse и строить программы, наслаждаясь удобной автоматической сборкой, установкой и возможностью дебага прямо на нашем устройстве.

    Если команда adb у вас вообще не работает. Компьютер -> Свойства -> Переменные среды. Ищем переменную Path и в конце дописываем(ни в коем случае не перезаписываем) в конце точку с запятой, а после адрес папки, где живет adb(обычно %android-sdk%\platform-tools\). После перезагрузки должно заработать.

    Иногда adb не запускается автоматически при старте системы. Запустите вручную.

    Что это было?

    На самом деле все просто. В силу неких причин(винда мастдай/у прогеров кривые руки/гугловский инф-файл писался только для родных гугловских девайсов/в вашем компьютере все испортили бозоны Хиггса) винда не хочет кушать гугловский драйвер для негугловских девайсов, не записанніх в inf-файл. Видимо, там все как раз завязано на этих ИД-оборудования. Но ведь софтверная часть на подавляющем большинстве андроид-устройств в части дебаггер-коннектора к ПК идентична, потому драйвер должен нормально общаться с любым Андроид-устройством. Наша задача - обмануть windows и заставить ее принять девайс за «драйверо-подходящий», что мы и сделали путем дописывания его ИД в inf-файл драйвера. Надеюсь, кому-то данный мануал поможет завести свой китайский или другой девайс, для которого при сборке системы забыли сделать нормальный драйвер adb, или тем, кого задалбывает качать официальный драйвер от производителя устройства(это бывает настолько гемморно, что быстрей сделать все вышеописанное - у меня так было с драйвером для телефона LG E510).

    P. S. Я не проводил массового тестирования данного метода, так что не могу гарантировать, что он заработает в 100% во всех случаях. Но у меня он заработал на windows 7, а после и на windows 8. Файл приходилось править для каждого раза отдельно, но не думаю, что это такая уж проблема.

    habrahabr.ru

    Установка драйвера вручную в windows 7

    Способ установки драйверов для программ и устройств вручную иногда помогает в том случае, когда обычная автоматическая установка завершается неудачно. Скажем, свежий пример – установка драйвера аудиокарты для windows 7, установленной в VirtualBox. Есть и другие примеры, так что такой метод может оказаться весьма полезным.

    Итак, установить драйвер вручную можно следующим образом.

    Нажмите комбинацию клавиш, чтобы открыть окно Выполнить. Введите в нем команду hdwwiz и щелкните на кнопке ОК.

    Запустится Мастер установки оборудования. В первом окне щелкните на кнопке Далее. Во втором окне выберите переключатель Установка оборудования, выбранного из списка вручную, после чего щелкните на кнопке Далее.

    В новом окне выберите значение Показать все устройства, щелкните на кнопке Далее.

    Как видите, теперь будет показан список всех доступных устройств. Можно поискать нужное или же установите драйвер с диска. Для этого щелкните на кнопке Установить с диска.

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