Усуваємо помилку: неправильна секція установки служби у цьому inf файлі MPT. Встановлення драйвера з INF-файлу Як встановити файл inf

04.11.2020 Безпека

Очевидно, що у кожного користувача персонального комп'ютера час від часу виникає необхідність підключити до своєї станції будь-який пристрій. Причина, через яку це відбувається, нас зараз не дуже цікавить, це може бути і добре знайомий багатьом апгрейд (з метою збільшення продуктивності окремих вузлів, і як наслідок загальної продуктивностісистеми), це може бути і просто додавання нового обладнання для розширення функціоналу існуючої конфігурації, як, наприклад, у разі підключення нового ігрового маніпулятора, це може бути і потреба у використанні даних з флеш-накопичувача. Незалежно від того, як саме ми підключаємо новий пристрій, операційна система 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 використовує для зіставлення пристрою з файлом драйвера.

Типова структура 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 Update;
  • Системний каталог 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).

    Сьогодні ми навчимо вас встановлювати драйвера для пристроїв із sys та inf файлів.

    Пошук, встановлення та налаштування драйвера пристрою 200 р уб.

    Завантажуючи драйвера з інтернету для своїх пристроїв, ви можете натрапити не на звичний вам інсталяційний пакет, а архів із файлами sys та inf. Sys файли є системними файлами, а inf часто складова частина драйвера обладнання комп'ютера. Якщо у вас до складу драйвера входить тільки sys і inf без звичного вам установника, не треба впадати у відчай, даний виддрайверів також можна встановити. У більшості випадків такі драйвери поширюються на сторонні сайти, не на сайти виробників. Тому будьте уважні і перевіряйте кожен завантажений драйвер антивірусною програмою.

    Встановлення драйвера у вигляді sys та inf файлів

    1. Перше, що нам необхідно це зайти в диспетчер пристроїв. Натискаємо пуск, і за назвою "мій комп'ютер" викликаємо меню, що випадає, натисканням правою кнопкою миші і в списку вибираємо властивість. Відкриється нове вікно, в якому нам необхідно перейти в розділ "диспетчер пристроїв" розташований у лівій колонці. У списку знайдіть обладнання, яке позначене жовтим знаком оклику, клацаємо правою клавішею миші по пристрої якому необхідно встановити драйвер і тиснемо на пункт - оновити драйвер. Наступне вікно у нас запустить майстри з встановлення та налаштування нового обладнання. Вибираємо пункт для ручної установкидрайвера пристрою.

    2. Далі нам запропонують вибрати папку, в якій знаходяться наші драйвера, тобто sys або inf файли. Далі підтверджуємо свій вибір для початку встановлення драйвера. Якщо цей драйвер не сумісний з пристроєм або пристрій вже має нову версію драйвера, вам запропонують вибрати інший файл для правильного налаштуванняпристрої.

    3. Якщо в скачаному архіві виявите тільки один файл sys без inf, то майстер установки драйвера для пристрою не зможе встановити їх. Для того щоб драйвер правильно встановився і запрацював - необхідно скопіювати.sys файл у windows->System32->drivers. Після того як ми скопіювали наш драйвер у системну папку, запускаємо інсталяцію та пошук драйвера в автоматичному режимі. При установці таких файлів рекомендуємо їх перевіряти антивірусною програмою, оскільки деякі зловмисники вбудовують шкідливий коду файли драйверів, а також завантаження драйверів найкраще з офіційного сайту.

    Також якщо у вас виникнуть якісь труднощі щодо оновлення драйверів самостійно, то наші майстри із задоволенням виконають цю роботу.

    Виїзд майстра та діагностика0 руб.

    Як інсталювати драйвера на 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)

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