Windows 7 як визначити косичний драйвер. Використання засобу перевірки драйверів виправити синій екран смертіUsing Driver Verifier to fix a Blue Screen of Death. Перевірка непідписаних драйверів

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

Усі драйвери пристроїв призначені для певних операційних систем. Наприклад, у Windows XP драйвери будуть відрізнятися від Windows Vista драйверів. Отже, необхідно, щоб вжити додаткових запобіжних заходів при встановленні та оновленні драйверів пристроїв, оскільки встановлення неправильних або несумісних драйверів може не тільки пошкодити пристрій, але і вашу систему.

Загальні причини помилок драйверів

Деякі загальні причини помилок у роботі драйверів наведені нижче:

  • Ви намагаєтеся використовувати апаратний пристрій, який неправильно підключений до комп'ютера.
  • Два або більше драйверів у системі несумісні один з одним.
  • Драйвер або драйвер встановлюються несумісними з вашою системою.
  • Є непотрібні чи застарілі драйвера на ПК.

Кроки для виправлення помилок драйверів
Перший крок у встановленні помилки драйвера, це переконатися, що пристрій правильно підключено до вашої системи. Багато пристроїв видають помилки, пов'язані з підключенням, так що перевірте, що ваш пристрій підключено до вашої системи правильно. Далі, вам потрібно переконатися, що немає жодних проблем з драйверами. Ви можете зробити це за допомогою утиліти Device Manager, яка постачається з вашої комп'ютерної системою Windows. Ви можете відкрити диспетчер пристроїв, безпосередньо запустивши devmgmt. msc з командного рядка Пуск>Виконанийити. Коли ви відкриєте Device Manager, ви побачите список усіх пристроїв, підключених до системи. Ви можете легко визначити дефектний файл, тому що він буде відзначений жовтим трикутником з знаком окликувсередині. Клацніть правою кнопкою миші на пристрої, щоб відкрити діалогове вікно його властивостей. У діалоговому вікні властивості перевірте розділ Стан пристроюна вкладці Загальні. Драйвера відображаються на вкладці Драйвера вікна властивості. Тут виконайте одне з наступних завдань:

  • Перевірити та Встановити Оновлення Драйверів: Застарілі драйвериодна з основних причин пов'язаних з помилками драйвера. Щоб вирішити цю проблему, натисніть кнопку Оновити Драйвер.Відкриється майстер оновлення обладнання. Ви можете використовувати майстер для оновлення драйвера.Рекомендується спочатку завантажити оновлення для драйверів і зберегти його у зручне місце на жорсткому диску, а потім почати процес оновлення, тому що майстер оновлення попросить вас вказати місце для встановлення оновлення.
  • Відкат драйвера:Якщо ви почали отримувати повідомлення про помилку, незабаром після інсталяції нового оновлення, цілком можливо, що нове оновлення має баггі. Щоб вирішити цю проблему, натисніть кнопку Відкат драйверащоб повернутися до вашої попередньої версіїдрайвера.
  • Деінсталяція драйвера:Якщо є проблеми з вашим поточним драйверів - відсутні або пошкоджені файли, то найкраще, що ви можете зробити це ви клацніть видалити, щоб видалити поточний драйвер, а потім знову інсталюйте драйвер.

У випадку, якщо ви не впевнені, що ви робите, і якщо ви знайдете описані вище виправлення трохи складними, то рекомендується вибрати надійний інструмент сканування драйверів. Інструменти сканування драйверів створені для того, щоб перевірити всі драйвери пристроїв і переконатися, що вони не up-to-date. Щоразу, коли нові доступні нові оновлення, сканер драйверів автоматично завантажує та встановлює найкращі оновлення на ваш комп'ютер.

Використовуючи системну утиліту, що постачається в комплекті з Windows Vista/7 Driver Verifier Manager, можна провести всебічну діагностику встановлених у системі драйверів і знайти проблемні компоненти, що порушують стабільну роботу комп'ютера та підключеного до нього устаткування.

Щоб запустити цей інструмент, необхідно зареєструватися в Windows з правами адміністратора, потім в адресному рядку меню "Пуск -> Виконати" ввести команду verifier.exe і натиснути кнопку OK. В результаті відкриється вікно диспетчера перевірки драйверів, в якому потрібно буде, почухавши потилицю, визначитися з відповідним варіантом запуску утиліти. Можна зробити як вибіркове, і повне тестування всіх без винятку драйверів.

Після налаштування режиму роботи програми та натискання клавіші “Готово”, потрібно перезавантажити комп'ютер та дочекатися завантаження операційної системи. У разі виявлення збійного драйвера, Windows звалиться в так званий синій екран смерті (BSOD – Blue Screen Of Death) і відрапортує про критичну помилку, що містить відомості про проблемний компонент, які в обов'язковому порядку слід взяти на олівець.

Наступним кроком є ​​видалення файлів дефектного драйвера. Для цього необхідно, утримуючи при старті комп'ютера клавішу F8, запустити систему в безпечному режимі (Safe Mode), а потім стандартними засобами Windowsліквідувати збійний компонент. Після цього потрібно знову відкрити консоль і ввести інструкцію verifier.exe /reset для деактивації програми Driver Verifier Manager. Важливо відзначити, що введення останньої команди є обов'язковим і в разі успішного завантаження комп'ютера, що свідчить про відсутність проблемних драйверів.

Додаткова інформація довідкового характеру даному питаннюпредставлена ​​на сайті Microsoft Support у статті “Використання засобу перевірки драйверів для виявлення проблем із драйверами Windows (для просунутих користувачів)” .

Вказує на системний драйвер, який навряд чи є причиною проблеми (наприклад, win32k.sys). У цьому випадку знадобиться серйозний аналіз дампа, що вимагає дуже глибоких знань та досвіду у цій галузі. Тим не менш, можна самостійно виконати перевірку драйверів за допомогою вбудованого в операційну систему засобу перевірки Verifier.exe. Хоча воно докладно описано у статті бази знань Microsoft Використання засобу перевірки драйверів для усунення несправностей у роботі драйверів Windows, представлений там матеріал викладено досить складному технічному рівні. Нижче наводиться короткий описдій, які потрібно виконати для перевірки драйверів.

На цій сторінці

Початок роботи із засобом перевірки драйверів

В меню ПускВиконати(або ПускПошук) введіть verifierта натисніть Enter. Запуститься засіб перевірки драйверів. Виберіть пункт Створити нестандартні параметри (для програмного коду)та натисніть кнопку Далі.

Вибрати окремі параметри з повного списку та натисніть кнопку Далі.

На наступному кроці поставте всі прапорці крім Імітація нестачі ресурсівта натисніть кнопку Далі.

На наступному кроці виберіть пункт Автоматично вибирати непідписані драйверита натисніть кнопку Далі. Якщо не підписано драйверів, перейдіть до .

Непідписані драйвери

Якщо непідписані драйвери виявлено, ви побачите їхній список.

Драйвери можуть належати як до пристроїв, так і до програм. Не закривайте вікно засобу перевірки драйверів та не натискайте кнопку Далізараз.

Пошук оновлених драйверів

Вам потрібно перевірити, чи є оновлені драйвери.

  1. Якщо ви бачите у списку драйвер програми, відвідайте сайт його виробника - можливо, програма оновилася. Якщо оновленої версії немає, можете спробувати видалити програму (ви завжди можете встановити її знову пізніше). Якщо критичні помилки припиняться, воно і було причиною.
  2. Якщо ви бачите у списку драйвер пристрою і працюєте у Windows Vista, скористайтеся центром Оновлення Windowsдля пошуку нових драйверів. Цей спосіб добре підходить для Windows Vista, оскільки багато виробників пристроїв співпрацюють з Microsoft, надаючи свої драйвери для завантаження засобами Windows Update. На панелі керування виберіть Windows Updateі виконайте перевірку щодо наявності оновлень для драйвера вашого пристрою. Якщо драйвер знайдено, встановіть його.
  3. Якщо Windows Update не запропонує вам нових драйверів, відвідайте веб-сайт виробника пристрою. Можливо нові драйвери доступні там. Якщо ви маєте проблеми з пошуком драйверів, зверніться до форуму Пошук драйверів, прошивок та посібників на OSzone.net.

Після оновлення програми або драйвера закрийте вікно засобу перевірки драйверів, натиснувши кнопку Відміна(а не Далі) . Перезавантажте комп'ютер і продовжуйте роботу в операційній системі. Якщо критична помилка більше не виникає, ви усунули її оновленням драйвера.

Видалення драйверів

Якщо ви не знайдете нових драйверів, спробуйте видалити драйвер.

Увага!Видалення драйверів призводить до непрацездатності пристроїв. Після перезавантаження в кращому випадку операційна система встановить відповідний драйвер із власного сховища драйверів. Якщо ви не впевнені, чи потрібно видаляти той чи інший драйвер, не видаляйте його.

У диспетчері пристроїв ( ПускПошук / Виконатиdevmgmt.mscОК) знайдіть пристрій, клацніть по ньому правою кнопкою миші та виберіть з контекстного менюпункт Властивості. Потім перейдіть на вкладку Драйверта натисніть кнопку видалити.

Перевірка непідписаних драйверів

Увага!Після перевірки непідписаних драйверів система може не завантажитись (нижче описано, як діяти в такій ситуації).

Якщо ви не бажаєте видаляти драйвер та/або виконати перевірку непідписаних драйверів, у вікні засобу перевірки драйверів натисніть кнопку Далі. Вам буде запропоновано вибрати фізичний диск.

Готово, після чого перезавантажте комп'ютер. Якщо після перезавантаження ви побачите синій екран з помилкою, проблемний драйвер визначено - його назву буде включено до повідомлення про помилку. Увійдіть у безпечний режим та скиньте всі параметри перевірки драйверів, ввівши в ПускПошук / Виконатикоманду verifier.exe /reset.

Якщо система завантажилася у звичайному режимі, перевірка непідписаних драйверів завершилася успішно – вони не є джерелом проблем. Ви можете побачити список перевірених драйверів, запустивши verifier.exe .

Оскільки непідписані драйвери не є причиною критичної помилки, необхідно перевірити інші драйвери.

Вибіркова перевірка драйверів

Якщо не підписані драйвери або їх перевірка не виявила проблем, доведеться виконати вибіркову перевірку драйверів. У цьому випадку у зображеному нижче вікні виберіть пункт Вибрати ім'я драйвера зі списку.

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

Тому перевірку, можливо, доведеться проводити у кілька етапів. Поетапна послідовність вибору драйверів може бути такою:

  1. Нещодавно оновлені драйвери або ті, що типово викликають проблеми (драйвери) антивірусних програм, мережевих екранів, віртуальні диски).
  2. Драйвери, постачальником яких не є корпорація Майкрософт.
  3. Група з 10-15 драйверів за один раз.

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

Увага!Після перевірки драйверів система може не завантажитись (нижче описано, як діяти в такій ситуації).

Якщо після перезавантаження ви побачите синій екран з помилкою, проблемний драйвер визначено - його назву буде включено до повідомлення про помилку. Перезавантажте комп'ютер і увійдіть безпечний режим, натиснувши F8під час завантаження. Після входу в систему скиньте всі параметри перевірки драйверів, ввівши в ПускПошук / Виконатикоманду verifier.exe /reset.

Якщо система завантажилася у звичайному режимі, перевірка вибраних драйверів завершилася успішно – вони не є джерелом проблем. Ви можете побачити список перевірених драйверів, запустивши verifier.exeта вибравши на першому кроці пункт Вивести відомості про поточні перевірені драйвери.

Виберіть наступну групу драйверів і повторіть перевірку.

Усі драйвери перевірені – що далі?

Якщо перевірка всіх драйверів завершилася успішно, я маю зняти капелюх перед вашим терпінням і завзятістю. Швидше за все, драйвери не є причиною критичної помилки, що виникає у вашій системі. Не виключено, що проблема криється в апаратній частині вашого комп'ютера - наприклад, у несправному жорсткому диску або оперативної пам'яті, або блок живлення має недостатню потужністьдля роботи всіх пристроїв. Можливі інші апаратні проблеми, які перевіркою драйверів також неможливо виявити.

Утиліта, яку ми сьогодні описуватимемо називається Driver Verifier і входить до складу всіх операційних систем, у тому числі і в Windows XP. Ця програмадозволяє перевіряти та виявляти проблемні, які можуть сильно нашкодити системі. До найвідомішої проблеми належить синій екран смерті.

Дані про такі драйвери записуються в дамп пам'яті, щоб потім можна було проаналізувати. Отже, утиліта піддає драйвера, так званих стресових ситуацій (тестів), створюючи візуальні екстремальні умови, наприклад, брак пам'яті, різні блокування, IRQL, перевірки IRP, DMA та ін., I/O – контроль. Іншими словами, відбувається імітація таких екстремальних ситуацій, яких при звичайній роботі з Windows бути не повинно або вони трапляються не часто. Таким чином, утиліта дозволяє виявити драйвери, які можуть призвести до аварійного відключення системи.

Як я вже сказав, утиліта вбудована на все версії Windowsі знаходиться по дорозі %windir%\system32. Також утиліту можна використовувати у двох варіантах: командний рядок та графічний інтерфейс.

Отже, для того щоб запустити утиліту для перевірки драйверів необхідно у вікні «Виконати»набрати наступну команду:

verifier

Відкривається вікно з необхідними налаштуваннями, в якому ми вибираємо другий пункт – "Створити нестандартні параметри"або "Create custom settings".

Тепер нам потрібно відсортувати вміст, для цього нагорі таблицю натискаємо на слово Provider. Тепер можна вибирати усі драйвера. До речі, драйвера від корпорації Microsoft можна вибирати.

Тепер можна натиснути кнопку FinishПісля цього з'явиться прохання про перезавантаження системи.

Отже, перезавантаження пройшло, тепер система вантажитиметься в режимі перевірки драйверів. Утиліта працюватиме у фоні, проводячи різні тести. Ви можете спокійно працювати за комп'ютером до закінчення роботи утиліти. Після роботи інформаційний файл збережеться в дампі пам'яті. Такий файл зазвичай знаходиться на шляху: C:\Windows\Minidump\*.dmp. Тепер його можна аналізувати, наприклад, за допомогою Windbg або іншою подібною програмою.

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

Вимкнути утиліту можна так: у командному рядку вводьте наступну команду:

На цьому все. Сподіваюся, ця стаття допомогла вам у вирішенні ваших проблем.

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

І як тільки не лають Windowsвід Microsoft, називаючи бідолаху одночасно і гальмівною, і глючною і навіть нестабільною. Тільки от відмовлятися від неї ніхто не поспішає, та й взагалі навряд чи вже колись відмовиться. Тому замість того, щоб лаяти бідних розробників і розводити безглуздий флейм, добре б розібратися: а чому, власне, система глючить? Відкрию тобі маленький секрет. У горезвісних екранах смерті та нестабільній роботі Windowsв переважній більшості випадків винні драйвери сторонніх виробників, а сама операційна система тут абсолютно ні до чого. Зараз ми розповімо, як такі драйвери виявити та видалити з системи.

Дефекти проектування драйверів можуть мати різний характер: від випадень у блакитний екран смерті ( BSOD– Blue Screen of Death) і до уповільнення роботи комп'ютера і дива поведінки деяких зовсім не пов'язаних з драйвером прикладних додатків.

Блакитний екран смерті чудовий (без жодної іронії!) тим, що явно сигналізує про наявність серйозної проблеми і дає наведення, звідки рити. Найчастіше (але далеко не завжди) ім'я драйвера, що «провинився», висвічується безпосередньо в правому верхньому кутку блакитного екрану смерті. Однак там його може і не бути або, що ще гірше, може стояти ім'я зовсім стороннього драйвера.

Приміром, один досить поширений драйвер від відеокарти Matrox G450має тенденцію руйнувати базові структури графічної підсистеми Windows 2000 , внаслідок чого в BSOD'і відображається ім'я системного драйвера win32k.sys, У якому реалізована значна частина функцій USER і GDI і який, звичайно, тут зовсім ні до чого. Так що інтерпретація показань блакитного екраном смерті – це і магія, і інтуїція, і наука, і мистецтво – потроху.

Крім дефектів драйверів, блакитні екрани смерті можуть також викликатися відмовами заліза, наприклад, розігнаним процесором, несправною оперативною пам'яттю, кривим контролером жорсткого диска, не до кінця встромленою в слот PCI-картою, неконтактом в одному з роз'ємів, поганим блоком живлення, здутим електролітичним конденсатором материнської плати. А дуються останні по різних причин: через перегрівання від поруч розташованого процесора, нестачі керамічних конденсаторів, «недокладених» виробником (в результаті чого ВЧ-складова йде через електроліт і сильно його розігріває), нарешті, через витік ключових транзисторів у вузлі стабілізатора. Тому, перш ніж бити дрова, необхідно переконатися, що залізо, на якому ми сидимо, повністю справне. Як це можна зробити?

Розбирання із залізом

Блакитні екрани смерті, викликані збоями заліза, мають стихійний характер, з'являючись непередбачувано і незалежно від якихось конкретних дій користувача. Прикладні програми також починають видавати критичні помилки в різних місцях, причому коди помилок, адреси та інша інформація, що видається системою, в усіх випадках будуть різними! До речі, драйвери, що обробляють асинхронні запити від пристроїв введення/виводу, наприклад бездротових мереж, поводяться практично так само. Блакитні екрани смерті, спричинені дефектними драйверами, зазвичай виникають при скоєнні певного набору дій і містять більш-менш постійну інформацію.

Щоб зняти із заліза всі підозри, достатньо підключити до системи ще один жорсткий дисквстановити на нього чисто чисту Windowsта попрацювати на ній деякий час. Якщо блакитні екрани смерті не зникнуть, значить справді винне залізо і його настав час міняти. Пошук дефективних компонентів - тема для окремої розмови, яку ми залишимо наступного разу, а поки, засукавши рукави, візьмемося впритул за ці підступні драйвери.

Дрова без сертифіката одразу в топку

Весь комплект інструментарію, необхідний для розробки драйверів ( DDK– Driver Development Kit), Microsoft розповсюджує безкоштовно разом із супутньою йому документацією. Драйверів, часом дуже глючних та нестабільних.

Щоб такого свавілля не відбувалося, Microsoftще в давнину ввела процедуру сертифікації драйверів на відповідність вимогам, що пред'являються до них, після якої драйверу видається цифровий підпис. Або ... не видається, і він вирушав на доопрацювання. І хоча сертифікація - лише формальна процедура, що не гарантує відсутність фатальних помилок і дефектів розробки, частина відверто «піонерських» драйверів вона все-таки відсіює.

В ідеалі, в системі слід тримати лише драйвери, завірені цифровим підписом. І хоча цифровий підпис не є страховим полісом, його наявність уже вказує на певний рівень культури розробки. Драйвери без цифровий підпис- це гірше, ніж кіт з кішкою в мішку, і їх по можливості слід позбавлятися (тим більше що багато з них є шкідливими програмами, що встановлюються rootkit'ами або агресивними захисними механізмами, що глибоко проникають в систему і викликають її нестабільність). Коротше, не розводитиме демагогії, а спробуємо відповісти на одне просте запитання: як скласти список драйверів без цифрового підпису?

У цьому нам допоможе утиліта sigverif.exe, що входить у штатний комплект постачання операційної системи і розташована в каталозі WINNT System32. Запускаємо її та бачимо діалогове вікно. Натискаємо кнопку «Додатково» та у вкладці «Пошук» налаштовуємо критерії відбору, переміщуючи радіокнопку із положення «Сповістяти про непідписаних» системних файлах» (Де вона і прозябала за замовчуванням) в положення «Шукати інші файли, не підписані цифровим підписом». Після цього в "Параметрах пошуку" відкриваємо бокс "Шукати файли наступного типу" і вибираємо "*.sys", а нижче вказуємо папку для пошуку "C:\WINNT", обов'язково відзначивши галочку "Включаючи підпапки".

Взагалі, строго кажучи, драйвери не повинні мати розширення sys і далеко не завжди обмежуються каталогом WINNT, перебуваючи в каталогах «своїх» додатків, а деякі додатки взагалі зберігають драйвери ... всередині себе! Відразу ж після запуску (або будь-якого іншого часу) вони зберігають файл на диск у поточну або тимчасову директорію, завантажують драйвер в пам'ять і… відразу видаляють його з диска! Так чинять не лише шкідливі віруси, а й цілком респектабельні програми, на кшталт деяких утиліт відомого дослідника надр Windows Марка Руссиновича.

Тому для чистоти експерименту нам зовсім не завадить отримати список драйверів, що знаходяться в Наразіу пам'яті, і порівняти їх із драйверами, розташованими на диску. Слова "в даний момент" - ключові, оскільки завантаження/вивантаження драйверів може відбуватися безкоштовно без перезавантаження операційної системи. Цю операцію бажано виконати кілька разів, запускаючи утиліту командного рядка drivers.exe, що входить до складу DDK, який можна завантажити з сервера Microsoft. Запущена без будь-яких ключів командою рядка, утиліта drives.exeвивалює всю інформацію на екран, що не є добре, оскільки драйверів у системі зазвичай є дуже багато і на екран вони не поміщаються. Однак релігія нам дозволяє перенаправити потік виведення в текстовий файл(drivers.exe >file-name.txt ), який відкривається будь-яким текстовим редактором- хоч Word'ом, хоч блокнотом. Потім залишається тільки виділити вертикальний блок (що блокнот не дозволяє) і отримати список драйверів. Прямо із ядра операційної системи!

Якщо хоча б один із цих драйверів відсутній у каталозі C:\WINNT\, то його цифровий підпис не перевірено! Звичайно, такий драйвер відразу ж привертає до себе увагу, і у нас виникає резонне питання: звідки він береться? Спочатку скануємо усі каталоги на диску; якщо його там немає, встановлюємо точку зупинки на функцію CreateFileW в Soft-Ice і дивимося на аргументи, що передаються їй. Рано чи пізно ми зустрінемо наш глючний драйвер, після чого залишиться тільки поглянути в правий нижній кут екрану Soft-Ice, де висвічується ім'я процесу, що його породив. Докладніше – у книзі «Техніка налагодження програм без вихідних текстів», електронну копію якої можна знайти на ftp- або http-сервері nezumi.org.ru, а також на диску. А ми продовжуємо терзати утиліту sigverif.exe.

Після натискання на "ОК", "Пуск" на екрані з'явиться "градусник", що відображатиме хід прогресу, і жорсткий диск почне шарудити всіма своїми головками, які у нього тільки є. Після завершення роботи буде складено та виведено на екран список драйверів без цифрового підпису.

Деякі гарячі голови пропонують, у порядку очищення системи від брехні, видалити всі непідписані драйвери – тоді, мовляв, усі проблеми як хвостом зніме. Як це можна зробити? Найгрубіше рішення - просто взяти і видалити їх з диска через FAR або провідник (звісно, ​​володіючи правами адміністратора!). Але наслідки такої операції можуть виявитися вельми плачевними, і краще, клікнувши правою клавішею миші на іконку драйвера в провіднику, знайти в «Властивості» ім'я виробника, за яким можна визначити, що за додаток/залізниця встановила цей драйвер, і деінсталювати її цивілізованим шляхом. Щоправда, тут є одне «але».

На наведеному малюнку виділено драйвер g400m.sys, що йде разом з картою Matrox G450, і хоча Matrox зовсім не квола компанія, цифрового підпису вона не отримала (чи то Microsoft не дала, чи то сама Matrox не захотіла морочитися). Природно, після видалення його із системи, про SVGA-режим доведеться забути. Можна, правда, сходити на сайт Matrox, завантаживши останню версію драйвера (вона вже забезпечена цифровим підписом). Тільки ось... і підписана, і непідписана версії містять безліч фатальних помилок, зокрема, внаслідок збігу певних обставин при спробі перейти в overlay mode система падає в BSOD, оскільки драйвер намагається звільнити вже звільнену пам'ять.

Таким чином, наявність/відсутність цифрового підпису сама по собі ще ні про що не говорить, і, навіть якщо ми використовуємо лише підписані драйвери, жодних гарантій стабільності нам це не дає.

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

Влаштовуємо дровам справжнє випробування

До складу DDK входить чудова утиліта Driver Verifier, Що створює для драйверів максимально суворі умови, що межують з екстримом і суїцидом, в яких ймовірність відмови максимальна, а ім'я дефектного драйвера визначається з найвищою точністю (навіть якщо він через дефект розробки страждає не сам, а руйнує структуру даних чужих драйверів).

Важливо, що Driver Verifier- це ліки, лише засіб діагностики. Від збоїв воно все одно не врятує (навпаки, збільшить їх інтенсивність на пару порядків), проте допоможе виявити «підлий» драйвер з достатнім ступенем достовірності.

Отже, запускаємо verifier.exe, бачимо вікно Driver Verifier Manager, йдемо в закладку Setting і переводимо радіокнопку в положення Verify all drivers, після чого тиснемо кнопку «Preferred Setting», яка встановлює такі типи перевірок (verification type):

  • Special pool– драйверам, що перевіряються, буде відведена спеціальна область пам'яті для виділення, яка не дуже швидко працює, зате здатна виявляти більшість типів руйнувань своїх і чужих даних.
  • Force IRQL Checking. IRQL – це рівень запиту переривань (Interrupt Request Level). Найчастішою помилкою розробників драйверів є спроба звернутися до пам'яті на такому рівні IRQL, на якому менеджер підкачування не працює. І якщо потрібна сторінка раптом виявиться витісненою на диск, система обернеться на блакитний екран із написом «IRQL_LESS_OR_EQULAR». Форсування цього режиму примусово витісняє сторінки драйвера на диск, щоб дефект розробки виявлявся у 100% випадків.
  • Low resource simulationкорисно встановити, щоб подивитися, як драйвер поводитиметься при катастрофічному браку системних ресурсів, проте цього можна і не робити, а ось галочку Pool tracking (відстеження коректності поводження з пулом пам'яті) краще залишити. Помилки вводу/виводу (I/O verification) становлять нікчемну частину всіх помилок, тому становище цієї галки взагалі зовсім некритично.

Покінчивши з вибором налаштувань, натискаємо кнопку «Apply» (застосувати) і, як і пропонують, перезавантажуємося.

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

Дізнатися про статус перевірки можна в будь-який момент запуском verifier.exe. У закладці Driver Status перелічені статуси всіх виявлених драйверів з поясненням поточної ситуації. Статус Loaded означає, що цей драйвер був завантажений і перевірений принаймні один раз (але, можливо, не повністю, тобто не всі ділянки драйвера встигли відпрацювати). Статус Unloaded готує про те, що драйвер був завантажений, перевірений (можливо, частково) і вивантажений системою/програмою, що використовує його, або за своїм власним бажанням. Останнє особливо характерне для драйверів, що залишилися від обладнання, яке було видалено шляхом варварського висмикуючи плати розширення із слота, тобто без виконання деінсталяції. Драйвер, що залишився в живих, сканує шину, намагаючись намацати «своє» обладнання, обламується з пошуком, після чого вивантажує себе з пам'яті, до речі кажучи, уповільнюючи завантаження системи (іноді дуже значно) і конфліктуючи з іншими драйверами. Мораль: обладнання із системи потрібно видаляти за всіма правилами! Однак не всякий статус Unloaded - ознака ненормальності ситуації, і, перш ніж видаляти драйвер з таким статусом, потрібно розібратися, що це за північний олень такий і звідки він узявся тут.

Статус Never Loaded вказує на те, що цей драйвер ще не був завантажений, а значить, не був і перевірений, отже, треба почекати, запускаючи різні програми, які можуть бути пов'язані з ним. Втім, деякі драйвери (особливо некоректно деінстальовані) не завантажуються і, відповідно, не перевіряються ніколи.

Попрацювавши із системою в режимі жорсткої перевірки деякий час (від кількох годин до декількох днів), ми виявимо практично всі дефектні драйвери, від яких страждали раніше, і запишемо їх на папірець.

Повернути систему в нормальний режим (тобто без додаткових перевірок, що зжирають продуктивність), можна за допомогою того ж таки verifier'а. Повертаємося до закладки Setting, переводимо радіокнопку в положення Verify selected drivers (при цьому ніякий драйвер не повинен бути виділений), давимо на "Reset All", потім на "Apply" і перезавантажуємося. Всі! Тепер система працює із нормальною швидкістю, але без перевірок.

Що робити із сирими дровами?

А чи справді, що можна зробити з дефектним драйвером? Хакери, які вміють тримати відладчик у руках, за наявності достатньої кількості вільного часу, можуть його дизассемблювати (благо за обсягом драйвери зазвичай невеликі), знайти помилку, і придумати спосіб її виправлення, але це занадто трудомісткий шлях.

Викидати драйвер (разом із тим залізом/програмою, що його використовує) теж не варіант. Хоча якщо відомо, що у блакитних екранах смерті винна звукова картанезнайомого китайського виробника вартістю $20, то у нас з'являється цілком вагома мотивація її замінити чимось гіднішим. Але це, власне, всім і так зрозуміло і додаткових коментарів не потребує.

Зате далеко не кожен знає, що велика кількість збоїв і блакитних екранів смерті пов'язана з тим, що драйвер, розроблений (і протестований) в однопроцесорному середовищі, ставлять на двопроцесорну машину. Під «двопроцесорністю» тут мається на увазі як реальна платформа з двома каменями, так і Hyper-Threading/багатоядерні процесори. Відомо (і підтверджено великою кількістю тестів), що домашньому комп'ютерудва процесори зовсім ні до чого, тому що на переважній більшості додатків збільшення продуктивності при цьому практично не спостерігається.

Тому якщо система працює нестабільно, а позбутися дефектного драйвера за тими чи іншими обставинами ніяк не вдається, можна спробувати залізти в BIOS Setup, перетворивши свою «віртуальну двопроцесорну» машину на однопроцесорну. Аналогічного ефекту можна досягти, відкривши файл boot.ini (на комп'ютерах з Windows NT/2000/XPвін розташований у кореневому каталозі логічного диска, на якому встановлена ​​система) і додавши до нього ключ /ONECPU, після чого перезавантажитись у надії, що помилки зникнуть.

Лістинг 1

Приклад типового файлу boot.ini


timeout=30

multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows 2000 Pro" /fastdetect /SOS

Лістинг 2

Налаштовуємо систему використання лише одного процесора з усіх наявних


timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows 2000 Pro" /fastdetect /SOS /ONECPU

А ось на Windows Vistaфайлу boot.ini немає, і хоча існує (тимчасова) можливість налаштувати її завантажувальні налаштування за допомогою спеціальної утиліти Microsoft планує повністю відмовитися від цієї лазівки, так що залишиться тільки BIOS Setup. Втім, що стосується Vista, то до моменту переходу на неї розробники драйверів, напевно, обзаведуться багатопроцесорними машинами (оскільки інших просто не залишиться у продажу) і тестуватимуть свої твори в багатопроцесорному оточенні.

Ще один тонкий момент. Пам'ятаєш, ми вище говорили, що помилка розробників драйверів, що найбільш часто зустрічається, - звернення до витісняється пам'яті на тому рівні IRQL, на якому менеджер підкачки не працює, і якщо запитувана сторінка відсутня в пам'яті, настає крах? Очевидним рішенням тут буде збільшення оперативної пам'яті до того обсягу, коли витіснення сторінок на диск практично не відбувається. За нинішніх цін на пам'ять прикупити пару нових «плашок» може дозволити собі практично кожен. Але існує і доступніше (і більш елегантне) вирішення проблеми. Якщо параметр DisablePagingExecutive, що знаходиться в наступній гілці реєстру HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement, дорівнює одиниці(за умовчанням нулю), ядерні компоненти не витіснятимуться. Тому просто запускаємо «Редактор реєстру», змінюємо цей заповітний параметр і перезавантажуємося (зміни набувають чинності лише після перезавантаження), сподіваючись, що це допоможе вирішити проблему збоїв.




Top