Кое-что о драйверах
Источник: Заглядывайте
Каждый пользователь компьютера рано или поздно столкнется с вопросом поиска,
установки и удаления драйверов. Будет это вызвано покупкой нового устройства,
переустановкой операционной системы, желанием повысить быстродействие или
улучшить другие характеристики системы - не суть важно. В этой статье я хочу
предоставить некоторые теоретические сведения о драйверах, а также обсудить
некоторые тонкости и приемы в обращении с ними.
Что это такое
Драйвер - набор служебных программ, позволяющих операционной системе (ОС)
работать с тем или иным устройством компьютера. Его задача - обрабатывать
запросы, поступающие от прикладных и системных программ, переводить их на язык,
понятный физическому устройству, управлять процессами его инициализации,
настройки параметров, обмена данными, переключением из одного состояния в другое
и т.п. Драйвер позволяет операционной системе взаимодействовать с конкретным
устройством через общий интерфейс, не учитывающий особенности данного
устройства. Другими словами, драйвер транслирует запросы высокого уровня в
запросы низкоуровневого машинного языка, непосредственно обращаясь к аппаратным
ресурсам компьютера.
Не для каждого устройства требуется драйвер. Если существует строгий
стандарт, описывающий набор команд, последовательность и временные параметры
операций и другие особенности работы с данным классом устройств, драйвер может и
не понадобиться, так как операционная система уже имеет в своем составе все
необходимые для этого процедуры. В принципе, это можно назвать и встроенным
драйвером. Примеры - клавиатура, таймер, коммуникационные порты, модем
(внешний). Но если устройство может быть заменено на другое, отличное по своим
функциональным возможностям, то драйвер для него нужно будет устанавливать
обязательно.
Драйвер может содержаться и в дистрибутиве операционной системы. Тогда вопрос
его поиска отпадает сам по себе. Однако устройства, появившиеся после
официального выхода ОС, потребуют установки отдельного драйвера, разработанного
производителем. Кроме того, набор драйверов в комплекте с ОС невелик и
охватывает только небольшую часть наиболее распространенных или полностью
стандартных устройств.
Драйверы и Windows
В операционных системах Microsoft Windows драйвер состоит из нескольких
файлов, хранящихся обычно в каталогах SYSTEM, SYSTEM32 и их подкаталогах. Ядро
драйвера хранится в файлах с расширениями .VXD, .DRV, .SYS и некоторых других, а
дополнительные процедуры собраны в динамические библиотеки .DLL. Кроме того, в
состав драйвера могут входить файлы справки, утилиты, модули деинсталляции и
т.д.
Последовательность операций по установке и удалению драйвера хранится в
специальном информационном файле .INF. С его помощью Windows определяет тип,
производителя, модель устройства, класс драйвера, необходимые ресурсы и файлы. В
этом файле также описываются операции распаковки, запуска, копирования,
удаления, переименования файлов, добавления и удаления ключей в реестре и т.д.
Все .INF-файлы хранятся в каталоге INF, причем устанавливаемые драйверы
не-Microsoft'овского происхождения (не поставляемые в комплекте с ОС)
откладываются в отдельный подкаталог INF/OTHER.
Windows умеет автоматически находить драйвер для устройства. Для этого она
использует технологию Plug&Play, точнее, ее часть, отвечающую за
самоидентификацию устройства. В частности, PCI-устройства обнаруживаются BIOS и
заносятся в виде списка в специальную область ESCD (Extended System
Configuration Data). Windows может использовать ее, а может и самостоятельно
опросить шину PCI и узнать у каждого устройства коды его производителя, модели и
версии, необходимые ресурсы и другую информацию. Далее проверяется база данных
(файлы DRVDATA.BIN и DRVIDX.BIN) по всем известным устройствам и находится
необходимый .INF-файл. Если в каталоге .INF имеются новые файлы, они будут
автоматически проиндексированы и внесены в базу данных.
Следует также помнить, что операционные системы Windows 98 SE и Windows 2000,
равно как и их потомки, поддерживают новую модель драйверов, получившую название
WDM (Windows Driver Model). Это - попытка реализовать полную поддержку
Plug&Play и ACPI, то есть дать возможность загружать и выгружать драйверы
<на ходу>, без перезагрузки системы, подключать их в виде фильтров-расширений к
стандартным драйверам Microsoft, более гибко управлять энергосбережением и
конфигурацией устройств и т.п. WDM-драйверы хранятся в каталоге
SYSTEM32/DRIVERS. В частности, интерфейсы нового поколения USB и IEEE-1394
(FireWire) работают только под управлением WDM-драйверов.
<Референс> или <фирменные>?
Как правило, функциональность каждого устройства компьютера определяется его
контроллерами. Контроллеры имеют вид интегральных микросхем, установленных на
печатной плате. Взаимодействие устройства с остальными компонентами системы
сводится к обмену данными и командами между контроллером устройства и
центральным процессором (или другим контроллером, например, арбитром шины,
контроллером DMA и т.п.). Можно сказать, что драйвер - это программа,
позволяющая процессору <общаться> с контроллером.
Очень часто разработчики микросхем (так называемого чипсета) сами пишут
драйверы для того устройства, которым будет управлять их контроллер. Обычно
такие драйверы называют референсными ("reference"). Они могут быть либо
общедоступными и выкладываться в Интернет на сайте разработчика, либо
предоставляться исключительно производителям оборудования на доработку и
адаптацию. Очевидно, что в первом случае для устройства можно и нужно
устанавливать референсные драйверы, которые обновляются гораздо чаще <фирменных>
и содержат исправления ошибок и новые возможности. Однако при этом можно
потерять доступ к некоторым функциям, специфичным для конкретного устройства.
<Фирменные> драйверы производителя оборудования могут быть изрядно
устаревшими, но при этом учитывать какие-то особенности данного устройства, о
которых не знают разработчики чипсета. В любом случае всегда имеет смысл
попробовать сначала <референс>-драйвер (если он доступен для скачивания), а если
он по какой-то причине не подойдет, вернуться к <фирменным>.
Версии драйверов
Как и любое другое программное обеспечение, драйверы имеют свои версии.
Формат версии свободный - каждый разработчик сам решает, сколько ему нужно цифр
для нумерации и в какой последовательности они должны стоять. В некоторых
случаях все-таки есть система: Windows-драйверы для наиболее интересных с нашей
точки зрения устройств вроде игровых видео- и звуковых карт, поддерживающих
DirectX, нумеруются определенным образом. Первая цифра - номер версии
операционной системы Windows. 4 = Win9x/WinNT, 5 = Win2000. Далее после точки
идет версия DirectX. 12 = DX7, 13 = DX8. Последние цифры - номер версии самого
драйвера. Например, представленный на скриншоте драйвер для видеокарт nVIDIA
имеет версию 4.13.01.1241, что означает предназначен для Win9x и DirectX8, его
версия - 1241.
Чтобы узнать версию драйвера, распакуйте его до состояния отдельных .VXD и
.DLL-файлов. Далее нужно в <Проводнике> щелкнуть любой из файлов (лучше с
расширением .VXD) правой кнопкой мыши, выбрать <Свойства>, потом закладку
<Версия> (см. скриншот). Версия драйвера будет выделена цветом.
Иногда производители сопровождают драйвер своим инсталлятором (setup.exe,
install.exe и т.п.). Тогда увидеть файлы драйвера не представляется возможным.
Поищите файл readme.txt, version.txt, release.txt или что-нибудь подобное, так
как в них часто тоже указаны версии файлов или всего комплекта.
Также стоит упомянуть о так называемых бета-драйверах. Разработчики чипсетов
и устройств часто стараются стимулировать интерес к себе, выкладывая на своих
сайтах экспериментальные драйверы. Другой известный прием - предоставление
драйверов владельцам различных тематических Интернет-сайтов под видом украденных
или случайно оставленных на внутренних корпоративных страницах (так называемые
"leaked"-драйверы). Конечно, разработчики заранее открещиваются от них и не
обещают технической поддержки в случае возникновения проблем, но, как мне
кажется, они все равно анализируют поток писем от пользователей и тем самым
экономят на процессе поиска сбоев и отладки.
Чтобы предотвратить сбои в системе из-за бета-драйверов, Microsoft ввела
специальную сертификацию. Драйверы тестируются в лаборатории Microsoft Windows
Hardware Quality Lab (WHQL), и после успешного прохождения всех процедур они
получают сертификат. Он имеет вид файла типа "Security Catalog" (расширение
.CAT), в котором перечислены все сертифицированные компоненты драйвера. Если
такого файла в комплекте драйвера нет, то очень велика вероятность, что это
бета-версия.
Кстати, проверяйте .CAT-файлы, запуская их двойным щелчком мыши, так как они
могут быть фиктивными (пустыми).
Как определить производителя и модель устройства
Конечно, лучше покупать комплектующие известных производителей, благо сегодня
такая возможность есть. Тогда не будет возникать вопрос о том, какой драйвер
нужно искать. Но иногда пользователь не имеет понятия о модели или даже
производителе устройства - например, если компьютер не очень новый и собирал его
кто-то другой. Перед тем, как начинать поиск, придется определить точное
название устройства или его чипсета.
Все чипы обязательно имеют маркировку, где указано название производителя,
модель, серия, версия и ревизия чипа, дата выпуска. Микросхемы чипсета обычно
имеют самое сложную структуру, у них большой корпус и много контактов, поэтому
они больше других чипов по размерам. По маркировке, пользуясь поисковиками http://www.google.com/, http://www.altavista.com/, http://www.yandex.ru/ и другими,
можно достаточно быстро отыскать сайт производителя чипсета и
"reference"-драйверы.
Производителя самого устройства найти будет легче. Во-первых, вся необходимая
информация должна быть нанесена краской на печатной плате. Даже если вы не нашли
названия, есть шанс определить его по FCC-номеру. Ищите строку "FCC ID:", в
которой будет указан регистрационный код, присвоенный изготовителю устройства.
После этого нужно зайти на сайт FCC и ввести код в строку поиска.
Во-вторых, где-нибудь обязательно будет написана модель устройства, по
которой в Интернет можно попытаться найти сайт производителя.
В-третьих, если устройство устанавливается в слот PCI или AGP, то с помощью
утилит можно определить код производителя этого устройства или чипсета. Могу
порекомендовать Sandra, PowerStrip. Принцип, положенный в основу идентификации,
базируется на анализе информации, выдаваемой PCI-устройством. Как минимум можно
получить коды производителя (Vendor ID) и модели (Device ID), которые поддаются
расшифровке с помощью таблиц. В частности, в таблице Sandra содержится более 6
тыс. кодов различных устройств.
Где взять драйвер
Конечно, можно не напрягаться и установить все драйверы прямо с
компакт-диска, идущего в комплекте с устройством. Такое решение вполне
оправданно, но только на первое время. Драйверы (особенно для внутренних
устройств) имеют тенденцию часто обновляться, поэтому полезно иногда поискать в
Интернет новые версии. Иначе велика вероятность столкнуться с несовместимостью
устройства с новым программным обеспечением или другим комплектующими.
Если вы точно знаете доменное имя сайта производителя (или догадываетесь -
www.производитель.com, www.производитель.com.tw), то можно начинать поиск. На
титульной странице отыщите кнопку "Download", "Drivers", "Support" или
аналогичную. Далее предстоит выбрать из списка именно то устройство, которое у
вас имеется. Вполне возможно, что вы увидите несколько устройств с совпадающими
названиями, отличия которых будут заключаться только в суффиксах или даже
номерах ревизий. Обращайте на это внимание, иначе драйвер может не подойти.
Далее, по возможности скачивайте драйверы не только для той операционной
системы, которая у вас установлена, но и для других ОС: во время инсталляции
новой Windows будет неприятно обнаружить факт отсутствия необходимого драйвера.
Если вам никак не удается найти нужный сайт, обращайтесь на
специализированные драйверные сайты (http://www.windrivers.com/, http://www.driverhq.com/, http://www.drv.ru/ и т.д.). Скачивать оттуда непосредственно
файлы драйвера можно только в одном случае: фирма-разработчик уже прекратила
свое существование и ее сайта физически нет в Сети. Гораздо лучше
воспользоваться поиском не драйвера, а сайта производителя или его страницы
технической поддержки.
Как установить
Установка драйвера заключается в следующем: Windows обнаруживает .INF-файл,
отыскивает в нем строки идентификации Plug&Play-устройств, и если они
совпадают с информацией, выданной самим устройством, система выполняет
предписанные действия по копированию файлов, добавлению записей в реестр и т.д.
Вы должны указать местоположение файла в ответ на запрос мастера обновления
оборудования. Мастер запускается либо автоматически, после появления сообщения о
найденном устройстве, либо вручную. В последнем случае зайдите в <Свойства
системы> (нажать я+Pause), выбирайте закладку <Управление устройствами>, потом
свойства нужного устройства, закладку <Драйвер>, <Обновить драйвер>.
Если в комплекте с драйвером есть свой инсталлятор, то лучше воспользоваться
им. Для этого нужно после появления сообщения о найденном устройстве нажать
, загрузить Windows без драйвера и запустить инсталлятор. Он скопирует все
файлы драйвера в папку Windows\INF\Other, где драйвер и будет найден после
перезагрузки. Кроме того, будут установлены дополнительные программы, идущие в
комплекте. Немаловажно также и то, что в большинстве случаев инсталлятор может
корректно убрать драйвер, не оставив следов своего пребывания (<Панель
управления>/<Установка и удаление программ>).
Как удалить вручную
Если установленный вами драйвер не справляется со своими функциями и даже
вызывает ошибки и сбои, его нужно удалить. Просто нажать в списке
устройств, а потом дождаться сообщения о новом устройстве?.. Иногда это
помогает, иногда - нет. Дело в том, что Windows может следующий раз и не
спросить у вас драйвер, а просто проинформировать о найденном устройстве и тут
же вернуть все на место. Для удаления информации о драйвере потребуется
дополнительно выйти в DOS, зайти в каталог Windows/Inf и найти там .INF-файл
нужного (точнее, уже ненужного) драйвера и удалить его. Вслед за ним можно
отправить и .VXD-файлы, которые обычно находятся в Windows/System, но тут нужно
проявить аккуратность, так как можно и перестараться. Теперь после перезагрузки
Windows обновит свою базу данных и не найдет старого драйвера, а значит, можно
устанавливать новый или возвращать на место старый, хорошо работавший до того,
как вы начали ремонтировать то, что не сломалось.
И еще
В Интернет существуют специальные сайты, которые регулярно следят за
появлением новых версий драйверов для наиболее распространенных устройств. Я
тоже стараюсь собирать такую информацию и публиковать ее на своем сайте. Заглядывайте иногда, и вы всегда будете в
курсе и не пропустите новую версию необходимого вам драйвера.
|