Рубрика «Драйвер»

Привет!

Когда передо мной встала задача написать свой драйвер, осуществляющий мониторинг операций в реестре, я, конечно же, полезла искать на просторах интернета хоть какую-то информацию по этому поводу. Но единственное, что вылезало по запросу «Драйвер-фильтр реестра» — поток статей по написанию драйвера-фильтра (ура), НО все эти статьи касались только фильтра файловой системы (печаль).

К сожалению, единственное, что удалось найти — статью 2003 года, код из которой вы никогда не соберете в своей новенькой VS19.

К счастью же, есть прекрасный пример от Microsoft на GitHub (сразу кидаю ссылочку), на котором и будет строиться бОльшая часть этого разбора.

Возможно, суперпрограммистам хватит и ссылки на пример, чтобы за 5 минут во всем разобраться. Но есть и новички, студенты, как я, для которых, скорее всего, и будет данная статья. Надеюсь, кому-то это действительно поможет.

Читать полностью »

Как выясняется, далеко немногие знают о существовании режима оверлеев в ACPICA и их поддержки в ОС Linux. Я хочу восполнить этот пробел на примере добавления ведомых устройств I2C в систему без перекомпиляции.
Читать полностью »

На упаковках светодиодных ламп можно найти множество параметров: мощность, световой поток, эквивалент мощности, индекс цветопередачи. Но один очень важный параметр производители указывают крайне редко. Это тип драйвера.

Очень важный параметр светодиодных ламп, о котором мало кто знает - 1

Читать полностью »

Онлайн касса Хочу поделиться опытом разработки ПО для бюджетной онлайн-кассы VikiPrint 57. В связи с вступлением в силу закона ФЗ-54, это может быть актуально и полезно техническим специалистам, которые впервые в жизни выполняют задачу по интеграции ПО или сайта с физическим оборудованием. Особенно с этих онлайн-касс «бзднут» вебмастеры, разрабатывающие на WordPress магазины и по-другому понимающие термин «онлайн».

Да, судя по всему, когда вы что-то заказываете в Интернет-магазине, в каком-то бутике в ТЦ сам по себе будет «вылазить» чек из кассы. Иначе владельца магазина оштрафуют. Если, конечно, ничего не изменится в головах тех людей, кто это придумал. Просто чудо как оно есть!Читать полностью »

Вступление

Authenticode (Аутентификация) является форматом цифровой подписи, который используется, чтобы определить издателя и целостность двоичных файлов программного обеспечения. Authenticode основан на стандартах криптографии с открытым ключом (PKCS) и использует X.509 v3 сертификаты, чтобы связать Authenticode-подписанный файл с идентификационными данными издателя программного обеспечения.

Одно важное использование подписей Authenticode – это подпись PE файлов, которые включают .exe, .dll и .sys файлы.

Подпись исполняемых файлов

Создание тестового сертификата

Для нашей работы сначала мы создадим тестовый сертификат с открытым и закрытым ключом. Для этого предварительно необходимо установить Microsoft Windows SDK for Windows 7. Данный пакет содержит два необходимых файла для создания сертификата:

  • Makecert.exe
  • Pvk2pfx.exe

Запускаем командную строку и переходим в директорию с установленным SDK:

  • cd "C:Program FilesMicrosoft SDKsWindowsv7.0Abin"

Создаем сертификат и файл с закрытым ключом:

  • makecert -sv "Vladimir Ivanov.pvk" -n "cn=Vladimir Ivanov" "Vladimir Ivanov.cer" -b 01/01/2017 -e 01/01/2020 -r

Здесь же указываем имя сертификата, а также начало и окончание срока его действия. В процессе создания закрытого ключа Вас попросят ввести пароль:

Драйвер подмены сертификатов - 1

В нашем случае рекомендуется не вводить пароль, оставив его пустым. Нажмите кнопку «Отсутствует».
Читать полностью »

Приветствую всех. В сегодняшней статье речь пойдёт о том, как можно реализовать собственный высокоуровневый API в управляемом коде для работы с устройствами печати, от установки нового монитора печати в системе и до получения обработанного драйвером устройства печати документа с порта принтера.

Как и в прошлый раз, статья будет полезна для ознакомления разработчикам младшего и среднего звена. В процессе изучения материала, Вы узнаете как можно обращаться к низкоуровневым DLL WinAPI в C# с помощью P/Invoke, как установить, настроить и удалить из системы мониторы печати, драйвера принтера, само устройство печати, открыть и связать порт для перенаправления входных данных с устройства печати на монитор, познакомитесь с ключевыми моментами применения маршалирования. Так же мы на практическом примере разберёмся, как с помощью нашего API можно удобно манипулировать устройствами печати в системе, узнаем как можно перехватить обработанные данные после печати с принтера и, например, отправить их на сервер.
Читать полностью »

Мейнтейнер ядра Linux забраковал патч для AMDGPU - 1

8 декабря 2016 года компания AMD выложила для скачивания последнюю версию проприетарного драйвера AMDGPU-PRO 16.50 для операционных систем на ядре Linux. Этот драйвер основан на свободном модуле ядра AMDGPU. В нём реализована поддержка DirectGMA для OpenGL и технологии FreeSync, которая в некоторых гибридных и графических процессорах AMD решает проблему коммуникации между процессором и монитором и устраняет разрывы изображения, особенно в играх. AMDGPU-PRO 16.50 поддерживает некоторые модели графических ускорителей GNC 1.0 AMD серии Southern Islands, а именно Radeon R7 M465X, AMD Radeon R7 M370 и AMD Radeon R7 M350. Опубликованы скрипты для установки на RedHat Enterprise Linux 7.3, CentOS 7.3, CentOS 6.8, and SLED/SLES 12 SP2.

Одновременно представитель компании AMD Гарри Уентлэнд (Harry Wentland) обратился в список рассылки разработчиков ядра Linux с предложением включить в ядро скромный патч размером около 100 000 строк кода со слоем аппаратных абстракций. Мейнтейнер ядра Дэйв Эйрли (Dave Airlie) доступно объяснил представителю AMD, почему такой патч не примут в ядро. Хотя мейнтейнер не вспоминал знаменитую фразу Линуса в адрес Nvidia, но многие помнят те слова. AMD тоже отправили в пешее путешествие, пусть и не в такой грубой форме.
Читать полностью »

RS232 устройство 3-в-1 для домашнего Linux сервера: Часть 2 (Серверная)

Для устранения некоторых недостатков сервера, собранного из бытовых комплектующих, разработал недавно устройство, которым хочу поделиться. Его подробное описание, со схемой и исходными кодами, доступно на Geektimes в первой части.

WRN устройство

Устройство получило наименование WRN от составляющих его подсистем:

  • Аппаратный сторожевой таймер, работающий с watchdog демоном;
  • Генератор истинно случайных чисел;
  • Радиомодуль nRF24L01+ для сбора данных с автономных датчиков.

В этой части статьи будет рассмотрено как взаимодействовать с последовательным портом из пространства ядра (kernel space) и как организовать работу с несколькими подсистемами устройства через RS232 в Linux.

Читать полностью »

Опять вернёмся в традиционную область разработки операционных систем (и приложений для микроконтроллеров) — написание драйверов.

Я попробую выделить некоторые общие правила и каноны в этой области. Как всегда — на примере Фантома.

Драйвер — функциональная компонента ОС, ответственная за отношения с определённым подмножеством аппаратуры компьютера.

С лёгкой руки того же Юникса драйвера делятся на блочные и байт-ориентированные. В былые времена классическими примерами были драйвер диска (операции — записать и прочитать сектор диска) и драйвер дисплея (прочитать и записать символ).

В современной реальности, конечно, всё сложнее. Драйвер — типичный инстанс-объект класса, и классов этих до фига и больше. В принципе, интерфейс драйверов пытаются как-то ужать в прокрустово ложе модели read/write, но это самообман. У драйвера сетевой карты есть метод «прочитать MAC-адрес карты» (который, конечно, можно реализовать через properties), а у драйвера USB — целая пачка USB-специфичных операций. Ещё веселее у графических драйверов — какой-нибудь bitblt( startx, starty, destx, desty, xsize, ysize, operation ) — обычное дело.

Цикл жизни драйвера, в целом, может быть описан так:

  • Инициализация: драйвер получает ресурсы (но не доступ к своей аппаратуре)
  • Поиск аппаратуры: драйвер получает от ядра или находит сам свои аппаратные ресурсы
  • Активация — драйвер начинает работу
  • Появление/пропадание устройств, если это уместно. См. тот же USB.
  • Засыпание/просыпание аппаратуры, если это уместно. В контроллерах часто неиспользуемая аппаратура выключается для экономии.
  • Деактивация драйвера — обслуживание запросов прекращается
  • Выгрузка драйвера — освобождаются все ресурсы ядра, драйвер не существует.

(Вообще я написал в прошлом году черновик открытой спецификации интерфейса драйвера — см. репозиторий и документ.)

Мне известны три модели построения драйвера:

  • Поллинг
  • Прерывания
  • Нити (threads)

Читать полностью »

Что такое «драйвер»

Драйвер устройства и с чем его едят - 1

Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.

Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.

Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает «рутину» (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило рутину, данные посылаются обратно в драйвер и уже оттуда в ОС.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js