First driver что это
Многие считают что самому создать драйвер для Windows это что-то на грани фантастики. Но на самом деле это не так. Конечно, разработка драйвера для какого-то навороченного девайса бывает не простой задачей. Но ведь тоже самое можно сказать про создание сложных программ или игр. В разработке простого драйвера нет ничего сложного и я попытаюсь на примерах это показать.
Сперва нам нужно определится в чем мы же будем создавать наш первый драйвер. Поскольку материал ориентирован на новичков, то язык программирования был выбран один из простых, и это не Си или ассемблер, а бейсик. Будем использовать один из диалектов бейсика — PureBasic. Из коробки он не обучен создавать драйверы, но у него удачный набор файлов, используемых для компиляции и небольшое шаманство позволяет добавить эту возможность. Процесс компиляции состоит из нескольких этапов. Если кратко, то он происходит следующим образом: Сначала транслятор «перегоняет» basic-код в ассемблер, который отдается FASM'у (компилятор ассемблера), который создает объектный файл. Далее в дело вступает линкер polink, создающий исполняемый файл. Как компилятор ассемблера, так и линкер могут создавать драйверы и если немного изменить опции компиляции, то получим не исполняемый файл, типа EXE или DLL, а драйвер режима ядра (SYS).
Окно IDE с загруженным кодом драйвера показано на скрине.
Компиляция драйвера выполняется через меню «Компилятор» (это если кто не понял).
Теперь определимся что будет делать наш первый драйвер. Обычно при изучении программирования начинают с простых вещей, скажем, выполнения математических операций и вывода результата. Вот пусть наш драйвер делает тоже самое, ведь банальная математика производимая в режиме ядра это очень круто!
Может показаться что это куча бессмысленного кода, но это не так.
У каждого драйвера должна быть точка входа, обычно у нее имя DriverEntry() и выполнена она в виде процедуры или функции. Как видите, в этом драйвере есть такая процедура. Если посмотрите на начало кода, то в первых строках увидите как ей передается управление. В этой процедуре происходит инициализация драйвера. Там же назначается процедура завершения работы драйвера, которая в нашем случае имеет имя UnloadDriver(). Процедуры CreateDispatch() и CloseDispatch() назначаются обработчиками соединения и отсоединения проги из юзермода.
Процедура DeviceIoControl() будет обрабатывать запросы WinAPI функции DeviceIoControl(), являющейся в данном драйвере связью с юзермодом. В конце кода расположена так называемая ДатаСекция (DataSection), в которой находятся имена драйвера, сохраненные в формате юникода (для этого использована одна из фишек ассемблера FASM).
Видите сколько понадобилось кода для выполнения простейшей математической операции — сложения двух чисел?
А теперь рассмотрим программу, работающую с этим драйвером. Она написана на том же PureBasic.
Процедура Plus() осуществляет связь с драйвером. Ей передаются хэндл, доступа к драйверу и слагаемые числа, которые помещаются в структуру и указатель на указатель которой, передается драйверу. Результат сложения чисел будет в переменной «Result».
Далее следует код простейшего GUI калькулятора, скопированного из википедии.
Когда закроют окно, то перед завершением работы программы, закрывается связь с драйвером и производится его деинсталляция из системы.
Результат сложения чисел 8 и 2 на скриншоте.
Исходные коды драйвера и программы, можно найти в папке «Examples», PureBasic на файлопомойке, ссылку на который давал в начале статьи. Там так же найдете примеры драйвера прямого доступа к порам компа и пример работы с памятью ядра.
PS.
Помните, работа в ядре чревата мелкими неожиданностями аля, BSOD (синий экран смерти), поэтому экспериментируйте осторожно и обязательно всё сохраняйте перед запуском драйвера.
Думаю, ни для кого не секрет, что современные версии операционной системы Windows - это весьма умный продукт, который стремится всё выполнять за пользователя. В этом нет ничего плохого, но иногда из-за такой автоматизации могут быть проблемы. В данном материале вы узнаете, как разом установить и обновить все драйверы для вашего ПК и получить максимально возможную производительность.
Прежде чем начать
Прежде чем переходить к гайду, стоит чуть подробней рассказать, что такое драйвер.
Драйвер — это прослойка (программа) между железом и операционной системой Windows, которая подсказывает системе, как лучше работать с устройством. Обычно Windows применяет универсальные или устаревшие драйверы для оборудования, что позволяет обеспечить его функционирование, но не достичь задуманного производителем уровня работы устройства.
Проведём эксперимент. Сравним работу CS: Source на системе с установленными драйверами и без.
Как вы могли заметить, результат потрясает. В системе без установленных драйверов, а я имею в виду не только драйвер видеокарты, скорость загрузки упала более чем в 6 раз, а о разнице в FPS и говорить не стоит. Перейдём к гайду.
Существует множество стороннего ПО для установки и обновления драйверов ПК, но всё оно в большинстве случаев сомнительного качества или платное. Благо, есть проверенное временем бесплатное решение под название Snappy Driver Pack Installer.
Snappy Driver Pack Installer — это бесплатный инструмент для установки и обновления драйверов от бывшего разработчика Driverpack, который не был согласен с политикой интеграции рекламы, а также внедрением шпионского ПО в проект.
Интсрукция:
Программа просканирует подключённые устройства к ПК и свяжется с базой драйверов. После получения данных отмечаем все или только нужные устройства. Нажимаем установить и ждём окончания установки. Выполняем перезагрузку ПК.
Вот собственно и всё, не заплатив ни копейки и сэкономив уйму времени, мы разом выполнили установку и обновление всех драйверов ПК. Возможно, кто-то скажет, что лучший вариант это всегда устанавливать драйверы с сайта производителя устройства, но гайд был создан для экономии времени и автора данное ПО ещё никогда не подводило. Используйте свой ПК на максимум!
Об авторе
Пожаловаться на комментарий
39 комментариев
Добавить комментарий
Непонятно зачем нужная эта программа. Windows уже давно самостоятельно устанавливает драйвера из центра обновлений. Такие программы были актуальны во времена Windows XP и 7, но сейчас они абсолютно бессмысленны.
В вашем примере сравнивается производительность системы с установленными драйверами и системы без драйверов. Но как этот пример доказывает необходимость использования программы из статьи? Зачем городить костыли, если можно установить драйвера и добиться того же самого эффекта средствами windows. Достаточно открыть центр обновлений, вручную проверить обновления и установить все необязательные обновления драйверов.
Глупость не говорите, вы читали хоть материал? Я же всё там указал, зачем и почему.
Хорошо, я повторюсь, современная система Windows обновляет всё по принципу базы, и о ужас, она обновляется реже, чем у этого ПО.
Простой пример:
Выполните установку чипсета или драйвера видеокарты с помощью центра обновления Windows и Snappy или оф с сайтов.
Вы удивитесь различиям в версии драйвера или количеству недоустановленных драйверов. Не беря в рассчёт уже всякие обрубки-пиратки без возможности обновления.
Пожалуйста, разберитесь в теме, прежде чем подобное повторять в будущем.
Обрубки-пиратки и прочие дно сборки вообще не стоит устанавливать. Windows — закрытая ОС и вырезание чего-то «ненужного» по мнению очередного сборщика Васи Пупкина может привести к непредсказуемым последствиям. Что же касается версий, то обычно Microsoft предлагает наиболее стабильные версии драйверов. И бывает так что после ручного обновления все может накрыться. У меня так было когда я обновила драйвер как раз на графику. Производительность упала и система часто стала падать с ошибками «ОС windows заблокирован доступ к графическому оборудованию». По моему опыту лучшие драйвера те которые ставит сама система. Проблема была у меня только с одним специфичным планшетом Dell, для которого драйверов не было в центре обновлений. Но это очень специфичное железо и в таком случае проще просто скачать драйвера с сайта производителя устройства.
Вы рассуждаете со стороны серверного сегмента, где важна стабильность, а гайд воплощает геймерские идеи максимальной выжимки-производительности. В данном сегменте поощаряется и обрезание Windows, ибо современная Win это чёртыв отстой с кучей мусора, а также выжимку всего и вся.
Ну не скажите, у меня, например, винда постоянно пытается откатить графический драйвер проца на старую и как раз нестабильную версию, на которой присутствуют артефакты даже в отрисовке страниц браузера. Поэтому приходится вручную устанавливать при помощи официального веб приложения от интела и запрещать центру обновления снова откатывать всё назад. Ну и процессор не специфический, а i5-11600 с графикой uhd 750
Благодарю за подтверждающий отзыв. О чём собственно и речь. Я понимаю, что с «прогрессом» многим стало казаться, будто ручная установка в прошлом, но не нужно заблуждаться, так качество современной Windows зависит от индусов х0.
Тоже заметил, что самые стабильные драйвера это те, которые ставит сама Windows. Сравнивал производительность их и более свежих с сайта — в пределах погрешности. Вообще сейчас всякие программы загрузки драйверов нафиг не нужны, т.к. Windows сама все умеет.
А приведенная программа напоминает старые времена установки Windows, когда сначала нужно было загрузиться с дискеты, использовать команды «fdisk», «format c» и т.п. А сейчас все это делается также средствами самой Windows.
типичный криворукий юзер у которого всё глючит и падает на засранной винде, со времён XP пользуюсь только мини-сборками не нарадуюсь скоростью работы и отсутствию целлюлита на несколько десятков гигов, просто самая лучшая ОС в мире, текущая 10ка стоит от Flibustier.
Не пишите чушь) Как раз таки у меня система всегда чистая. Все программы из надежных источников — репозитории winget, MS store. И установлено только то что мне нужно. Как раз таки криворукие пользователи, такие как вы и ставят сборки собранные непонятно кем. Нужно понимать что windows не открытая ОС, это не конструктор. Это законченный коммерческий продукт. И вырезание чего-то типо «ненужного» может привести абсолютно к непредсказуемым последствиям. Это сильно снижает стабильность ОС. Если вам нужен конструктор, то пожалуйста вперед на Gentoo Linux. Вот там можно собрать систему самостоятельно(включая ядро) и убрать все вам «ненужное».
Особенно смешно кстати когда в этих сборках отключают всю систему безопасности) А потом такие вот пользователи сборок кричат «ууу винда решето!» после очередной массовой эпидемии какого нибудь вируса шифровальщика. Это же додуматься нужно отключить систему безопасности, отключить обновления безопасности… А и еще любимая фишка всех этих сборок это вырезать все языки кроме русского) А главное для чего это все? Там производительность повышается максимум на пару процентов) И в ОЗУ освобождается несколько мегабайт)
Попробуйте установить систему без интернета или с ограниченным интернетом и поймете зачем (и да, win11 так же возможно установить без наличия интернета). Второе: на некоторое старое железо винда не устанавливает драйвера автоматически, приходится пользоваться вот такими паками.
У меня был случай когда win10 упорно скачивала не тот драйвер для видеокарты AMD ATI, а с помощью этого пака не тратя времени на поиск быстро установил нужный.
Этот Snappy Driver Pack Installer сэкономил, лично мне, массу времени и нервов.
… И лучше бы она это не делала. Получить отвал устройства, BSOD или даже полный брик (угу, после обновления биоса) — проще простого.
Кстати, полностью отключить эту мерзость, как обычно — крайне непросто.
Не соглашусь.
Да, так было некоторое время назад, но с какой-то сборки вынь вдруг перестала автоматом подтягивать дрова на интегрированное видео, могу ошибаться, кажется с 21H1, ну да не суть. Мы то уж обрадовались, спрятали драйверпаки в дальний ящик стола, а оно вишь как. Так что у таких сборок есть будущее. И особо они востребованы у сервисов и прочих мастеров.
ИМХО лучший и удобнейший драйвер пак. Для меня маст хэв, экономит тучу времени и нервов. Крайне рекомендую к использованию.
На видео карту напомнит утилита же, идущая с драйверами. На материнку обновления не столь часты.
На софт выше ссылка
Ставить не пойми чего — пусть априори хуже
Простите, но вы, боюсь, меньше пишете по времени, чем я делаю то, о чем вы пишете.
И не стоит тут кидаться громкими словами, дабы получить плюсеки в карму.
Интсрукция:
Скачиваем и устанавливаем желаемую версию ПО.
Разархивируем файлы в любую папку.
Запускаем файл SDI_x64_R2000.exe или SDI_R2201.exe, в зависимости от битности вашей системы.
Производим сканирование оборудования.
------
Ну поехали почитаем вдумчиво)
1. Ошибка грамматики
2. Сканирование проводится драйверов оборудования (либо они есть либо их нет). И именно их (драйвера) предлагается обновить.
3. «битность системы» не соотнесена с х86 и х64 по названиям файла, приходится догадываться. Ну ок, догадаемся)
4. Запуск от имени администратора точно не нужен такому файлу? И не надо пояснять?
Я вас тоже люблю, но лучше вам поумереть свой третий глаз провидца, ибо вам совершенно не ведамо кто и чем занят.
Не говорите, что мне делать, и не услышите, куда идти, юноша.
Поправьте лучше статейку и да прибудет с вами карма с плюсиками..)
«Я вас тоже люблю, но лучше вам поумереть свой третий глаз провидца, ибо вам совершенно не ведамо кто и чем занят.»
А теперь по-русски: поумерить, не ведомо, кто.
Проблема всех подобных поделий — они почему-то думают, что если VID/PID совпали — все, можно накатывать последнюю версию.
Реальность несколько отличается — в результате можно получить совершенно феерические баги или просто неработоспособную систему.
Вообще по-хорошему надо смотреть весь комплекс и учитывать особенности данной конкретной модели (и сочетания компонентов), но это сложно собирать и поддерживать, поэтому… пользоваться подобным никому не советую.
Думаю что все подобные программы и обновление через Винду, для людей далёких от компьютера или ленивых.Это и в правду удобно, быстро.
Большинство и я в том числе, ставят сами с сайта материнской платы и ТД.
Наверное соглашусь с тем что такой софт имеет место быть, просто потому что сейчас на рынке хватает околоноунеймовских устройств под которые винда весьма печально ищет драйвера.
Хотя если у вас устройство уважаемого бренда, то вам, скорей всего, данное ПО не нужно.
Не ставьте это. Проблем потом не оберетесь. Установил драйвер на ТВ Тюнер и работа компа стала невыносимой. Все стало тупить, и неожиданно ни с чего вдруг при только что установленной системе выскочил синий экран. Виновника я вычислил быстро. Как раз вот это ПО и вызвало ошибку. Посмотрел в журнале событий. Но удалить эту хрень стало трудно. Пришлось заходить в безопасный режим с отключением цифровой подписи драйверов. Только тогда я смог вычистить эту хрень. После перезагрузки комп стал работать вполне себе нормально. Драйвер на ТВ Тюнер в итоге я скачал с сайта производителя. Вполне себе нормально установилось и никаких синих экранов нет. Не тратьте время на подобный софт. Лучше для надежности скачайте драйвер с сайта производителя вашего оборудования, если не хотите получить проблем в работе вашего ПК. Автор говорит тут об экономии времени, но про работоспособность вашего ПК он молчит. Не доверяйте всяким сторонним утилитам. Сохраните работу вашего ПК в стабильном состоянии.
SamDrivers -два в одном, DRP и SDI. На некоторых конфигах драйвер бывает либо в одном, либо во втором варианте. Объём конечно больше, но в работе показал себя с наилучшей стороны.
Ну очень двояко про все эти драйвер паки. Ибо на двух ноутах эта прога ставит странные драйвера для тачпада, ибо после их установки тачпад тупо отвалился. Дальше на материнке асус и гигабайте этот драйвер пак пытался прошить микрокод биоса. В итоге асус пришлось поднимать программатором, в на гиге два биоса, так что сама себя восстановила. Дальше всё интересней, берём драйвера для чипсета материнки и эти же драйвера из драйвер пака одной версии. Во первых разница в размере, оф версия весит больше, из пака меньше. Нашёл оф дрова и дрова из пака одной версии и одного размера. Но вот хеш у дров совсем разный, и это странно. Дальше совсем интересно, уже не раз на разных пк этот драйвер пак почему то предлагает обновить видео драйвер. Притом не полностью драйвера на видео, а чисто драйвер видео без всей программной оснастки. И при таком обновлении ломается граф интерфейс дров, постоянный отказ в доступе. И так я могу перечислять до бесконечности все проблемы любых драйверпаков. Этот драйвер пак хорош только тем что там можно найти старые драйвера, для древнего железа, и то автоматической установкой лучше не пользоваться, а вытащить драйвера и установить вручную. А автоматическая установка всех дров разом это вообще зло. Некоторые драйвера требуют перезагрузки после установки. Да некоторым дровам пофиг и можно потом перезагрузить пк, а некоторым нет, и если продолжить что то ещё ставить то дрова ломаются.
Так что пользоваться таким софтом нужно крайне осторожно и с опаской, а лучше взять дрова с оф сайта и поставить, так точно будет понятно что так или не так работает.
У меня тяжёлый случай — старый винт вставил в другую сборку. Винт не мой, что там за винда стоит — не знаю. Можно через флэшку и эту прогу установить новые драйвера и запустить систему?
Вы предлагаете использовать не понятно кем подготовленный набор драйверов.
Я, как проработавший системным администратором несколько лет, НЕ рекомендую использовать подобный софт. Ни SDI, ни DriverPack, ни прочее дерьмо. Win10 сама прекрасно справляется с этим.
Максимум, для чего их можно использовать — офлайн установка. И то, я бы рекомендовал скачать драйвера с сайта производителя. И НИКОГДА не пользоваться этой ерундой.
«Слетели драйвера», «У меня нет драйверов на принтер», «Видеокарте нужны драйвера» — если вам непонятно, что это значит и на что влияют драйверы, то эта статья для вас.
Что такое драйвер
Драйвер — это программа, которая работает как инструкция для операционной системы. Драйвер объясняет операционке, как пользоваться каким-то устройством.
Устройство — это то, что физически подключается к компьютеру:
- видеокарта,
- мышь,
- криптотокен,
- монитор,
- сканер,
- джойстик для игр.
Драйвер рассказывает компьютеру, как этим железом пользоваться, что оно умеет, какие команды понимает и как это железо могут использовать другие программы.
👉 Технически драйвер — это программа, которая висит в памяти компьютера всё время, пока компьютеру нужно это устройство.
Известное и неизвестное железо
Операционная система в компьютере знает и умеет многое, в том числе и работать со стандартным оборудованием. Стандартным — это значит тем, которое предоставляет стандартные возможности.
Например, клавиатура, мышь или веб-камера — это стандартное оборудование, потому что независимо от производителя они делают примерно одно и то же.
Разработчики операционной системы знают про такое оборудование, поэтому могут написать стандартные драйверы, которые подойдут к большинству устройств. Именно поэтому мы можем купить в магазине новую мышь и просто подключить её к компьютеру без установки дополнительных программ — операционная система сама разберётся, что делать.
Но бывает так, что разработчики добавили в устройство нестандартные возможности: переназначение сочетаний клавиш, сделали мышь с несколькими колёсиками или встроенный лазерный дальномер в видеокамеру. В этом случае компьютер не разберётся, как этим всем пользоваться, потому что в стандартных драйверах про это ничего нет.
В таких случаях разработчики устройств пишут свой драйвер, который объяснит компьютеру, как пользоваться всеми возможностями устройства. Этот драйвер нужно будет установить.
Сложное оборудование
Ещё бывает так, что оборудование хоть и стандартное, но сложное, например, видеокарта или принтер. Каждый производитель добавляет свои функции и технологии, которые считает нужными, и чаще всего они не совпадают с другими. Если подключить такое устройство к компьютеру, то компьютер, скорее всего, разберётся, что именно в него воткнули, то как с этим работать — неизвестно.
Здесь тоже нужны драйверы — они идут или в комплекте с устройством на компакт-диске или их качают с официального сайта производителя. Чем сложнее устройство, тем больше вероятность, что без установки дополнительных драйверов оно работать не будет.
Например, если у вас навороченная видеокарта, вы вставляете её в компьютер и сначала видите странную огромную картинку с низким разрешением. Это значит, что компьютер пока не нашёл драйверов на эту карточку и запустил её в «режиме совместимости» — то есть в том режиме, в котором он точно сможет ей управлять. Но возможности видеокарты будут сильно порезаны, пока мы не установим нужные нам драйверы.
Что значит «слетели драйвера»?
Это значит, что компьютер не может найти файлы с инструкциями от какого-то устройства. Так бывает при обновлениях системы, заражении вирусом или просто кто-то случайно мог удалить нужные файлы или папку целиком.
Решение простое: берёте заново драйвер с официального сайта или тот, который шёл в комплекте с устройством, и запускаете программу-установщик заново. А она уже сама разберётся, каких файлов не хватает, и настроит всё заново.
Драйверы нужны только на Windows?
Драйверы нужны на всех компьютерах и для всех операционных систем. Но некоторые операционки идут с кучей драйверов в комплекте, а у других этот набор более скромный.
Общее правило для 2021 года такое: большая часть оборудования, которое нужно для обычной офисной работы, подключится к любому компьютеру без необходимости что-то устанавливать. Операционка сама поймёт, что это за устройство, и, скорее всего, у неё уже будут драйверы.
А вот какое-то более сложное оборудование (например, профессиональная аудиокарта или видеокамера) потребуют установки драйверов от производителя.
В чём проблема с драйверами
Проблема в том, что часто производители не делают новые драйверы для старого оборудования. Например:
Есть диджейский контроллер Numark NS7 — это профессиональное оборудование для диджеев и артистов, оно стоит дорого и нужно примерно 100 тысячам человек на всей планете.
Когда контроллер только вышел, компания Numark выпускала драйвера на все свежие операционные системы, проблем с совместимостью не было.
Потом аппарат сняли с производства, поддержку прекратили. Последняя версия драйверов, которую выпустил Numark, — для Windows 10 и MacOS 10.12 (Sierra). С тех пор у Windows вышло большое обновление до 11, а MacOS обновился раз пять. Причём последние две версии сделаны для процессоров Apple, и уже нет надежды, что Numark обновит драйверы для этой архитектуры.
Так что, если вам достался этот редкий профессиональный прибор, вы вынуждены сидеть на древней MacOS Sierra, которая стремительно перестаёт поддерживаться современным софтом.
Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.
Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.
Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.
Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.
Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».
Как работает драйвер и для чего он нужен?
Основное назначение драйвера – это упрощение процесса программирования работы с устройством.
Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.
Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).
Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).
Как создается драйвер устройства
Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.
При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.
Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.
И чем драйвер не является
Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:
- Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
- Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.
Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.
Раз уж в нашем предыдущем посте мы пригласили всех желающих поучаствовать в добровольной помощи в разработке очередных версий DRP, сегодня пришла пора рассказать о том, как именно мы создаем немаловажную вещь при работе с большими архивами драйверов (необходимые сис. админам и другим профессионалам, занимающимся «серийной» настройкой компьютеров) — индексы.
У каждого пользователя на локальном компьютере собирается индекс всех драйверов, присутствующих в системе – в том числе и самой операционной системой. Его наличие позволяет ускорять поиск драйверов для установленных устройств, а в дальнейшем – и для их обновления. Другими словами – без индекса нельзя, его создание и дальнейшие обновления критическим образом сказываются на скорости и эффективности работы нашего приложения.
Герои Silicon Valley работают над оптимизацией собственных алгоритмов
Как строится пользовательский индекс драйверов
Для каждого устройства в системе есть свой уникальный номер (DevID).
Он отображается как в установках Windows, так и в программе DriverPack Solution. Уникальный для каждого устройства идентификатор (однозначно характеризующий каждое устройство), используется программой для автоматического «подбора» драйвера к нему.
База данных в программе содержит ID всех устройств, самостоятельно отслеживает версии драйверов для них, сопоставляет их версии и актуальность. В случае наличия в базе более новой версии, программа автоматически предлагает установить для устройства новый драйвер. Можно найти драйвер для конкретного устройства и самостоятельно в интернете, выбрав соответствующий режим поиска драйвера.
Для эффективной работы программы необходимы архивы драйверов (в формате "7z"), а для быстрого поиска по ним, требуется проиндексировать файлы, содержащиеся внутри.
Кроме уже содержащихся (довольно обширных) в программе архивов драйверов, DriverPack Solution предоставляет возможность создания пользовательских драйверпаков. Это актуально как при наличии нестандартного оборудования, так и «привязанности» операционной системы пользователя к некоторым типам (возможно устаревших) драйверов.
Новые драйвера после их разархивации «разбросаны» по папкам, которые содержат массу файлов, на первый взгляд, совершенно «ненужных» пользователю.
Для того, чтобы выбрать «нужные» файлы, требуется в распакованных файлах найти один с расширением *.inf.
Именно он содержит (в секции [SourceDisksFiles]) перечень необходимых файлов, по которому и требуется скопировать список файлов в предварительно созданную пользователем папку.
Примечание: если среди распакованных файлов нет .inf-файла, то автоматическое создание пакета драйверов невозможно. Настоятельно не рекомендуется удалять файлы с расширением *.САТ – сведения о цифровой подписи.
Как было раньше
До 2010 года, пока версий Windows было чуть меньше, нами использовался следующий метод создания индекса к сборке драйверов.
Создается папка D (сокр. от «Drivers»), а драйверы помещаются в любую подпапку внутри директории D.
Имя подпапки (поддиректории) может быть любым, однако рекомендуется использовать максимально короткие имена. Стоит избегать длинных путей к файлам – это может привести к ошибкам и помешать установке.
При создании структуры папок пакета драйверов следует придерживаться определенных общепринятых правил именования. Обязательно должны использоваться только английские названия папок.
В созданных папках драйверы разделяются по производителям, тем самым образуя подпапки.
Названия производителей также рекомендуется максимально сокращать. Например: «NVidia» – «N», «ATi» – «A» и т. д. Внутри папки с именем производителя драйверы располагаются в папках 1-9, при необходимости число папок может быть увеличено. После создания необходимой структуры папок поместите ваши драйверы в соответствующие подпапки (примечание: распакованные файлы, .inf-файлы, но не архивы или программы установки).
Название папки | Английское название | Пояснение |
A | Additions | Дополнения |
B | Broadband | Широкополосные сетевые устройства (*DSL-модемы и им подобные) |
C | Chipset | Наборы системной логики (чипсеты) |
CPU | Central processor unit | Центральный процессор (необходим для AMD K8) |
D | Dial-Up | Модемы |
G | Graphics | Видеоадаптеры (Графические карты) |
L | LAN | Сетевые адаптеры |
M | Mass Storage | Контроллеры жестких дисков |
P | Printers | Принтеры |
S | Sound | Звуковые адаптеры |
VMWare | VMWare | Драйверы для виртуальной машины VMWare |
W | WLAN | Беспроводные адаптеры |
U | USB | USB-устройства (флешки, фотокамеры) |
Y | Misc | Разное (Все что не попало в другие разделы) |
Y | Monitor | Мониторы |
Z | Hid | Устройства ввода (Интелектуальные мыши, клавиатуры тачпады и т.п.) |
Процесс создания (пользовательских) пакетов драйверов
После создания структуры папок с новыми драйверами требуется заархивировать созданную папку (в примере – это папка «D») в соответствии с требованиями программы к архиву.
- Имя архива: «DP_НазваниеПакетаДрайверов_ x86-32_ВерсияПакетаДрайверов.7z»
- Требования: имя архива не должно содержать пробелов. Например, название пакета драйверов версии 9.06 для контроллеров жестких дисков должно быть таким: «DP_MassStorage_x86-32_906.7z.»
- Формат архива: 7z
- Уровень сжатия: «Ultra» (для обеспечения максимальной компрессии, при желании вы можете указать меньший уровень сжатия).
- Метод сжатия: «LZMA» (значение установлено по умолчанию, изменять его не рекомендуется).
- Размер словаря: 32 Mb
Последнее установлено по умолчанию. Можно увеличить или уменьшить значение этого параметра. Увеличение данного параметра позволяет достичь большей компрессии, но требует больше времени для создания архива.
Индексные файлы хранятся в *.txt — формате, и находятся папке «Indexes» а не в «dev_db», как было ранее.
Структуру индексных файлов целесообразно рассмотреть на примере двух драйверов.
Содержимое индексного файла для 1-го:
– «PCI\VEN_8086&DEV_24D5&SUBSYS_680316F3 Audio_w7x64_912.2\ Audio_w7x64_912.2\3\1\Alcwdm18.inf Realtek.NTamd64 06/19/2009,6.0.1.6305 Realtek AC'97 Audio»
Содержимое индексного файла для 2-го:
– «HDAUDIO\FUNC_01&VEN_10DE&DEV_8067 Audio_w7x64_912.2\ Audio_w7x64_912.2\11\1\nvhda.inf VIDIA.NTamd64 11/11/2009,1.00.00.63 NVIDIA High Definition Audio»
Более развернуто объяснение структуры приведено в таблице:
Элементы структуры | Драйвер 1 | Драйвер 2 |
Device ID (идентификатор устройства) | PCI\VEN_8086&DEV_24D5&SUBSYS_680316F3 | HDAUDIO\FUNC_01&VEN_10DE&DEV_8067 |
Путь хранения драйвера в архиве | Audio_w7x64_912.2\Audio_w7x64_912.2\3\1\ | Audio_w7x64_912.2\Audio_w7x64_912.2\11\1\ |
Название inf-файла | Alcwdm18.inf | nvhda.inf |
Тип | Realtek.NTamd64 | NVIDIA.NTamd64 |
Дата выпуска и версия | 06/19/2009,6.0.1.6305 | 11/11/2009,1.00.00.63 |
Название устройства | Realtek AC'97 Audio | NVIDIA High Definition Audio |
Текущие реалии
Сегодня жесткой привязки к структуре индекса нет, что называется, «свободный стиль».
Главное – это использовать маркеры операционных систем. Дополнительно есть маркеры для, практически, всех производителей ноутбуков.
При этом расположение и название папок и подпапок перестало иметь значение, единственное требование – наличие минимально одного маркера системы.
Фактически же маркер – конкретное название папки. Оно видно в названии одного из подкаталогов драйвер-пака: DRP\Drivers\DP_Chipset_14101.7z\Intel\WinAll\Chipset\9.4.0.1007_HECI\
В данном случае «WinAll» значит «все версии Windows».
Версия Windows = маркер (имя подпапки), характеризующий, что драйвер который находится внутри папки-маркера подходит для указанной ОС.
- XP x64 =«5x64»;
- XP x86 =«5x86»;
- Vista x64 =«6x64|NTx64|AllNT|67x64»;
- Vista x86 =«6x86|NTx86|AllNT|67x86»;
- Windows 7 x64 =«7x64|NTx64|AllNT|67x64|78x64|781x64|7819x64»;
- Windows 7 x86 =«7x86|NTx86|AllNT|67x86|78x86|781x86|7819x86»;
- Windows 8 x64 =«8x64|NTx64|AllNT|78x64|All8x64»;
- Windows 8 x86 =«8x86|NTx86|AllNT|78x86|All8x86»;
- Windows 8.1 x64 =«81x64|NTx64|AllNT|781x64|7819x86|All8x64»;
- Windows 8.1 x86 =«81x86|NTx86|AllNT|781x86|7819x86|All8x86»;
- Windows 9 x64 =«9x64|NTx64|AllNT|7819x64|All8x64|81x64»;
- Windows 9 x86 =«9x86|NTx86|AllNT|7819x86|All8x86|81x86»;
- Windows 10 x64 =«10x64|NTx64|AllNT|78110x64|All8x64»;
- Windows 10 x86 =«10x86|NTx86|AllNT|78110x86|All8x86»;
- Все x64 =«Allx64»;
- Все x86 =«Allx86»;
- Все XP =«AllXP»;
- Все Vista =«All6»;
- Все Windows 7 =«All7»;
- Все Windows 8 =«All8»;
- Все Windows 8.1 =«All81»;
- Все Windows 9 =«All9»;
- Все Windows 10 =«All10»;
- Любые Windows =«WinAll»;
Маркеры ноутбуков
Маркер-папка с названием производителя ноутбука = слово, используемое самим производителем для идентификации его ноутбуков
- Acer_nb = acer / emachines / packard*bell / gateway / aspire
- Apple_nb = apple
- Asus_nb = asus
- Dell_nb = dell / alienware / arima / jetway / gericom
- Fujitsu_nb = fujitsu / siemens
- Gigabyte_nb = gigabyte
- HP_nb = hp / compaq
- Lenovo_nb = lenovo / compal / ibm
- LG_nb = lg
- MSI_nb = msi / micro-star
- NEC_nb = nec
- Panasonic_nb = panasonic / matsushita
- Samsung_nb = samsung
- Sony_nb = sony / vaio
- Toshiba_nb = toshiba
- OEM_nb = другие вендоры (benq / clevo / depo / durabook / ecs / elitegroup / eurocom / getac / intel / iru / k-systems / medion / mitac / mtc / nokia / pegatron / prolink / quanta / sager / shuttle / twinhead / rover / roverbook / viewbook / viewsonic / vizio / wistron и т.д.)
Текущий индекс
Если при скачивании с нашего сайта обновленных драйвер-паков их имена файлов совпадают (например, старый и новый файл имеет имя «DP_Chipset_14112.7z»), можно просто заменить старые файлы новыми.
При наличии такого же файла, но с меньшим номером, его можно удалить: скачали «DP_Chipset_14112.7z», но в папке есть «DP_Chipset_14111.7z» — файл с меньшим номером версии «DP_Chipset_14111.7z» можно удалить.
Индексируем новые драйвер-паки (создаем списки поддерживаемых устройств).
Если старые индексы удалены, то при запуске DRP, программа автоматически попросит вас произвести индексацию новых драйвер-паков — например программа для нового драйвер-пака «DP_Chipset_14112.7z» создает файлы-индекса «DP_Chipset_14112_xxx.xxx» в соответствующей папке в «X:\DRP\Indexes\».
Можно также удалить и старые индексы.
В папке «Indexes» необходимо удалить все файлы старого драйвер-пака.
Имени файла индекса соответствуют имя драйвер-пака и найти его легко. Например, вы скачали драйвер-пак «DP_Chipset_14112.7z» а у вас был «DP_Chipset_14111.7z», соответственно удаляем все файлы-индексы «DP_Chipset_14111_xxx.xxx», если же и скаченный и старый драйвер-пак имеют одинаковое имя например «DP_Chipset_14112.7z», то индексы «DP_Chipset_14112_xxx.xxx» также нужно удалить т.к. список поддерживаемых устройств в новой версии драйвер-пака может отличаться.
Если вам лень выискивать нужный для удаления индекс — можно удалить все папку «Indexes» и тогда программа будет создавать индексы для всех драйвер-паков, а не только для нового, что займет больше времени, но результат будет идентичным.
Надеемся, что данное руководство по созданию индекса драйверов будет полезно не только разработчикам DriverPack Solution.
Читайте также: