Каждый пользователь компьютера рано или поздно столкнется с вопросом поиска, установки и удаления драйверов. Будет это вызвано покупкой нового устройства, переустановкой операционной системы, желанием повысить быстродействие или улучшить другие характеристики системы – не суть важно. В этой статье я хочу предоставить некоторые теоретические сведения о драйверах, а также обсудить некоторые тонкости и приемы в обращении с ними. Что это такое Драйвер – набор служебных программ, позволяющих операционной системе (ОС) работать с тем или иным устройством компьютера. Его задача – обрабатывать запросы, поступающие от прикладных и системных программ, переводить их на язык, понятный физическому устройству, управлять процессами его инициализации, настройки параметров, обмена данными, переключением из одного состояния в другое ит.п. Драйвер позволяет операционной системе взаимодействовать с конкретным устройством через общий интерфейс, не учитывающий особенности данного устройства. Другими словами, драйвер транслирует запросы высокого уровня в запросы низкоуровневого машинного языка, непосредственно обращаясь к аппаратным ресурсам компьютера. Не для каждого устройства требуется драйвер. Если существует строгий стандарт, описывающий набор команд, последовательность и временные параметры операций и другие особенности работы с данным классом устройств, драйвер может и не понадобиться, так как операционная система уже имеет в своем составе все необходимые для этого процедуры. В принципе, это можно назвать и встроенным драйвером. Примеры – клавиатура, таймер, коммуникационные порты, модем (внешний). Но если устройство может быть заменено на другое, отличное по своим функциональным возможностям, то драйвер для него нужно будет устанавливать обязательно. Драйвер может содержаться и в дистрибутиве операционной системы. Тогда вопрос его поиска отпадает сам по себе. Однако устройства, появившиеся после официального выхода ОС, потребуют установки отдельного драйвера, разработанного производителем. Кроме того,набор драйверов в комплекте с ОС невелик и охватывает только небольшую часть наиболее распространенных или полностью стандартных устройств. Драйверы и 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-драйверов.