Что такое драйвер суппорт
Многие считают что самому создать драйвер для 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 (синий экран смерти), поэтому экспериментируйте осторожно и обязательно всё сохраняйте перед запуском драйвера.
Привет. Что такое Intel Driver and Support Assistant Installer? Ну судя по тому, что в названии есть слово Installer, то это установщик Intel Driver and Support Assistant. Ну а что это такое, я вам сейчас расскажу. Intel Driver and Support Assistant это программа, которая проверяет версии ваших драйверов Intel и если появились новые, то она об этом сообщит (возможно она способна и установить их). Так как эта прога идет от Intel, то надеюсь она сделана качественно и работает без глюков, все таки Intel.
Точно не знаю, но может быть Intel Driver and Support Assistant проверяет не только драйвера от Intel, но и другие. Помимо поиска новых версий драйверов, также в программе есть поддержка, то есть можно обратится с проблемой (правда как это не работает я не понял).
Ну а вот как выглядит прога Intel Driver and Support Assistant:
Вот окно настроек Intel Driver and Support Assistant:
При установленной проге Intel Driver and Support Assistant у вас в трее будет иконка, если по ней нажать правой кнопкой, то появится такая менюшка:
Оказывается что есть поддержка русского языка, что не может не радовать:
С этой прогой **** у вас может быть такая ошибка:
А вот тоже меню, ну которое вызывается в трее иконкой проги, но вот только оно тут на русском:
И вижу что тут есть функция чтобы сразу проверить наличие новых драйверов и это удобно.
На этом все ребята, надеюсь что инфа была кому-то полезной, ну а если что не так, то уж извините. Удачи вам и будьте счастливы!!
Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.
Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.
Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.
Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.
Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».
Как работает драйвер и для чего он нужен?
Основное назначение драйвера – это упрощение процесса программирования работы с устройством.
Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.
Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).
Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).
Как создается драйвер устройства
Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.
При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.
Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.
И чем драйвер не является
Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:
- Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
- Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.
Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.
Я решил написать этот опус для того, чтобы дать понимание, как нынче работает официальная поддержка Dell (в том числе и сервисная).
Это не критика, не крик о помощи, а просто собственный опыт.
Возможно, он кому-то пригодится или будет полезен.
Итак…
Так уж вышло, что у моего работодателя партнёрские отношения с Dell, а потому рабочий ноутбук у меня — Dell.
Акт 1. Авторизованный сервисный центр Dell
Началась история с эксплуатации Dell Inspiron 7720. Он верой и правдой служил около шести или семи лет, после чего два года назад из-за короткого замыкания в порту USB 3.0 сгорел южный мост.
Авторизованный сервисный центр Dell (обойдёмся без имён, но скажем так — он находится в Киеве) выполнил замену южного моста, после чего начались новые проблемы: Windows 10 загружалась, показывая великолепный экран входа с артефактами такой силы, что вводить логин-пароль приходилось вслепую. После входа всё начинало работать нормально, за исключением того, что ряд программ крашился при запуске: Viber, некоторые рабочие программы и т.д.
Тот же самый авторизованный сервисный центр выполнил диагностику проблем не нашёл и порекомендовал переустановить ОС, дескать «что-то сломалось при сбое».
Переустановка конечно же не помогла.
Пришлось самому делать тесты и обнаружилось, что iGPU не проходит ряд тестов OpenGL — не все, но некоторые. К сожалению Dell не позволяет в BIOS не использовать iGPU, а оставлять только дискрентую nVidia из соображений повышения автономности, а Windows при загрузке по умолчанию использует именно iGPU — отсюда и артефакты.
Какой-то период я терпел, настроив запуск всех крашащихся приложений принудительно на nVidia, но потом мне надоело, и я опять пришёл в тот же самый сервисный центр с подробным описанием своих находок. Ребята провели «детальный тест» (странно, а что было до этого?) и сообщили, что при сгорании южного моста умудрился повредится узел iGPU в процессоре. В остальном процессор рабочий, но сколько он таким пробудет — неизвестно.
Короче, я заменил процессор.
После этого возникла новая проблема: ноутбук стал самопроизвольно выключаться. Очень похоже было на перегрев ЦПУ, но ни одна из утилит (AIDA, GPU-Z) не подтверждали перегрев именно в момент выключения.
Тот же самый авторизованный сервисный центр Dell провёл тестирование (взяв деньги за диагностику), но проблему не выявил. Не знаю, как они суслика не заметили — но факт.
Компьютер пришлось списать.
Забегая вперёд — я отдал ноутбук на растерзание в обычный сервисный центр в Донецке. Их я назову: «Чип-Центр». Ребята провозились с ноутбуком в общей сложности два или три месяца, но в итоге обнаружили сбой контроллера температуры. Заменили. Ноутбук рабочий. Стоимость ремонта вышла в общей сложности 1200 рублей.
Акт 2. Поддержка Мэтров
Так уж вышло, что необходимо использовать кучу виртуальных машин, кроме того держать дистрибутивы под рукой. То есть в итоге имеем много оперативной памяти + большой винчестер.
Это всё ограничивает выбор до игровых моделей.
В итого был приобретён Dell G3 17 3779. Так уж вышло, что у дилера не было системы с Windows на борту, а потому пришлось взять с Ubuntu и Windows Pro x64 отдельно в виде лицензии.
Так уж вышло, что в момент установки системы актуальной была всё та же 1809…
С самого начала с установкой Windows и ОЕМ-драйверов выплыла проблема: все видеоплееры, кроме встроенных в Windows (Movies & TV) и все браузеры, кроме IE/Edge, воспроизводили видео с кратковременными прерываниям. даже встроенный в Windows скринсейверы вели себя так же.:
Пик на диаграмме в правом нижнем углу — это и есть подтормаживание.
Было обнаружено, что проблема проявляется только при использовании iGPU Intel UHD 630, дискретная nVidia работает как часы.
И понятно, что переносить все приложения на запуск с дискретной картой — не комильфо по причинам, изложенным выше.
ОК, едем дальше: как только Windows 10 увидела интернет, она немедленно обновила драйвера Intel, после чего проблема не исправилась, а Контрольная Панель Intel Graphics из систрея пропала напрочь, хотя процесс igfxEM.exe и служба igfxCUIService2.0.0.0 остались активными.
Поскольку очевидно, что ни ОЕМ, ни Windows Update помочь не могли, я полез на официальный суппорт Intel и скачал драйвера последней версии. Их установка поверх не решила ни одну из возникших проблем, а установка начисто после удаления с помощью DDU вернула Контрольную панель, но не убрала лаги.
Ноутбук на гарантии, я всё перепробовал, поэтому я создал тикет в Dell Support Assistant и позвонил на официальную поддержку Dell.
Звонок ничего не дал: девушка сообщила, что поскольку мой ноутбук поставлен был с Ubuntu, то и гарантия касается только Ubuntu. Да, компьютер может быть с Windows. Да, железо одно и то же. И нет — они не могут ничем помочь или прокомментировать. То, что ОЕМ-драйвер слетает при обновлении Windows — обратитесь в Microsoft.
ОК — едем дальше: Microsoft! Те же истории, но в виде чата. Тут некто Андрей оказался более компетентным: он сразу предупредил, что то, что мы делаем — вообще-то расширенный сервис, который стоит примерно 1500 рублей и на который потом гарантия 30 дней. Но в рамках демонстрации — попробуйте сменить драйвер iGPU на древний, как дерьмо мамонта Microsoft Basic Display Adapter. Проблема исчезла? Поздравляю — у Вас проблема с драйвером Intel! Обратитесь в Intel. Вы хотите заплатить 1500 рублей и дать нам решить проблему? Сожалею, но мы не можем гарантировать. что решение не будет представлять собой простое переключение на Microsoft Basic Display Adapter. Картинка не нравится Вам разрешением и отсутствует возможность профилей из Контрольной Панели? ОК — обратитесь в Intel!
Немного развёрнутее то же сообщают и в Intel Community. Более того: говорят, что так будет полезнее даже Dell, которые смогут оперативно сообщить об этом Intel и вместе решить проблему.
Всё хорошо, да только круг замкнулся.
Акт 3. Счастливая концовка.
Вся эта переписка и война заняла у меня приблизительно полторы недели. И вот, в течение последних двух или трёх дней я обнаружил странную активность на своём ноутбуке:
Надо сказать, что обновление драйверов iGPU в Windows я отключил, Dell SupportAssist запускается только по требованию, а Intel Driver & Support Assistant вообще не настроен на автоматическое обновление — да и не видят они оба ничего нового на мой ноутбук.
Активность имела место 5 или 6 раз. Хорошо видно, кто вендор. И да — я разрешил эти действия. А что уже терять…
И проблема исчезла. Совсем. Полностью. Есть Контрольная Панель, нет лагов, всё ОК.
А версия драйвера iGPU стала такой: 24.20.100.6287.
Это новее, чем сейчас у Dell для моего ноутбука <img src /img/image-loader.svg" data-src="https://habrastorage.org/webt/19/b7/eb/19b7ebeeojw_xlp1imboxgof5qu.jpg"/>" />Немного погуглив, я обнаружил, что сейчас Dell сейчас предлагает именно эту версию драйверов, правда, для других семейств ноутбуков, например вот и вот, при этом — угадайте, что было исправлено?
Fixes:
— Fixes the issue where Intel Control Panel disappears after updating Intel Graphics driver to 23.20.16.5037 through Windows Update.
Enhancements:
— Supports Windows 10 October 2018 Update.
Ну вот как бы занавес…
Эпилог
Даже не знаю… Почему-то во всей этой истории — двух историях! — я сильно разочаровался в Официальных Сервисах и Поддержках и сильно озаботился проблемой Большого Брата. Доброго такого. Как Дед Мороз.
Вы реально верите в пользу обновлений?
Intel отозвали свой новомодный uwd_win64_25.20.100.6444.exe.
<img src /img/image-loader.svg" data-src="https://habrastorage.org/webt/fz/_q/gs/fz_qgskesesge0fv-7lc1drpq4k.jpg"/>" />
То, как было раньше — выше по тексту.
Есть ещё желающие обновлять драйвера и участвовать в бета-тесте с последними версиями продуктов Intel?
Финал истории. Epic.
I have received the response from our engineers, regarding your issue. Unfortunately, we do not have your system to replicate the issue, and i was advised to inform you that you should always use the drivers provided by your laptop manufacturer as the OEM may customize the drivers to work properly with the device
Also, please try to get the drivers from Dell website.
Читайте также: