Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Гори, пекарня! Управляем подсветкой игровых устройств вручную

Дата публикации: 11-09-2026 13:30:59

Для подписчиковНаверняка у тебя есть игровые девайсы с красивой RGB-подсветкой, но для ее настройки разработчики каждого бренда предлагают свой проприетарный софт. Сегодня разберем, как сделать свою утилиту для синхронизации цвета подсветки между устройствами.

Основное содержимое страницы с новостью.

Продукты «Хакера»
  • Ежеквартальный «Хакер» #3

    Ежеквартальный «Хакер» #3

    Лучшие статьи квартала на бумаге

    2 000 ₽

    Заказать журнал
  • Годовая подписка на Xakep.ru

    Годовая подписка на Xakep.ru

    Полный доступ к статьям и архиву выпусков

    6 000 ₽ в год

    Подписаться
  • «Пентест WEB» для начинающих

    «Пентест WEB» для начинающих

    Совместный курс «Хакера» и лаборатории «Хаксет»

    7 000 ₽

    Купить курс
  • Спецвыпуск «Хакера» #4

    Спецвыпуск «Хакера» #4

    Лучшие статьи за 2021–2022 годы на бумаге

    2 000 ₽

    Заказать журнал

На­вер­няка у тебя есть игро­вые девай­сы с кра­сивой RGB-под­свет­кой, но для ее нас­трой­ки раз­работ­чики каж­дого брен­да пред­лага­ют свой проп­риетар­ный софт. Сегод­ня раз­берем, как сде­лать свою ути­литу для син­хро­низа­ции цве­та под­свет­ки меж­ду устрой­ства­ми.

Воз­можно, ты уже стал­кивал­ся с тем, что прог­рамма для работы с под­свет­кой — это зачас­тую монс­тру­озное поделие, которое пос­тоян­но висит в фоне и отжи­рает дра­гоцен­ную опе­ратив­ку. Что­бы изба­вить­ся от этой зависи­мос­ти, энту­зиас­ты дела­ют софт для управле­ния под­свет­кой девай­сов раз­ных про­изво­дите­лей. Такой софт лег­че фир­менных ути­лит и поз­воля­ет нас­тра­ивать и син­хро­низи­ровать цвет под­свет­ки всей тво­ей перифе­рии.

Се­год­ня пос­мотрим, как управлять под­свет­кой и, при желании, дру­гими парамет­рами — нап­ример, DPI мыши или наз­начени­ем кла­виш, — обра­щаясь нап­рямую к устрой­ствам.

Работа с устройствами в Windows

Во­зить­ся с устрой­ства­ми будем в Вин­де: в Razer, Logitech и дру­гих ком­пани­ях не выпус­кают офи­циаль­ный софт для нас­трой­ки железа для Linux.

Что­бы записать информа­цию в устрой­ство, его нуж­но открыть. Для это­го есть фун­кция CreateFile из биб­лиоте­ки kernel32.dll (есть еще CreateFile2 и NtCreateFile, но их мы раз­бирать не будем). Да, в Windows с устрой­ством мож­но работать как с фай­лом. Вызов фун­кции выг­лядит так:

HANDLE CreateFileW(

[in] LPCWSTR lpFileName,

[in] DWORD dwDesiredAccess,

[in] DWORD dwShareMode,

[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,

[in] DWORD dwCreationDisposition,

[in] DWORD dwFlagsAndAttributes,

[in, optional] HANDLE hTemplateFile

);

Бук­ва W в кон­це име­ни фун­кции Windows API зна­чит, что она работа­ет со стро­ками в Юни­коде, а A — со стро­ками в ANSI. Для сов­ремен­ной Вин­ды Юни­код — натив­ная кодиров­ка, так что будем исполь­зовать имен­но его.

Под­робно рас­писывать каж­дый параметр я не буду, отме­чу толь­ко один нюанс: при откры­тии устрой­ства с фла­гами GENERIC_READ | GENERIC_WRITE в парамет­ре dwDesiredAccess может воз­никнуть ошиб­ка дос­тупа — ERROR_ACCESS_DENIED. При­чина — монополь­ный дос­туп сис­темных драй­веров клас­са (нап­ример, kbdclass.sys или mouclass.sys), которые защища­ют устрой­ства вво­да от перех­вата из поль­зователь­ско­го режима. Но если задать это­му парамет­ру зна­чение 0, сис­тема поз­волит открыть устрой­ство с дос­тупом для опро­са (Query Access). Это­го хва­тит для отправ­ки команд IOCTL с фла­гом FILE_ANY_ACCESS — под­робнее о нем рас­ска­жу даль­ше.

info

IOCTL (Input/Output Control) — это сис­темный механизм, который поз­воля­ет прик­ладным прог­раммам отправ­лять спе­циаль­ные коман­ды и обме­нивать­ся дан­ными нап­рямую с драй­верами устрой­ств и ком­понен­тами ядра опе­раци­онной сис­темы.

Итак, мы откры­ли устрой­ство и получи­ли его дес­крип­тор (handle). Теперь нуж­но отпра­вить устрой­ству коман­ду, что­бы изме­нить цвет. Тут есть нес­коль­ко вари­антов. Пер­вый — выз­вать фун­кцию WriteFile из kernel32.dll.

BOOL WriteFile(

[in] HANDLE hFile,

[in] LPCVOID lpBuffer,

[in] DWORD nNumberOfBytesToWrite,

[out, optional] LPDWORD lpNumberOfBytesWritten,

[in, out, optional] LPOVERLAPPED lpOverlapped

);

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Я уже участник «Xakep.ru»

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Как я настроил свой Android-смартфон для игр: что включить, а что — выключить06.7526-09-2026
2Это база! Делаем свою сотовую сеть с шифрованием08.4304-09-2026
3Best gaming monitor06.4908-09-2026
4Не тканью единой. Как тифо превратился из баннера в инженерное чудо07.6629-09-2026
5Какую тушь для ресниц выбрать: гид по видам, цветам и эффектам07.5626-09-2026
6Как проснуться в темное утро без кофе: три рабочих способа08.127-09-2026
7Хайлайты на темных волосах: 8 красивых окрашиваний для шатенок и брюнеток011.7725-09-2026
8Научно-технический реп - Тыж программист019.0927-09-2026
9Алкогольное Право: Мифы об алкоголе в ресторанном бизнесе08.9221-09-2026
10— Смотри, какие я тени нашла! Называются «Аврора», многохромные. Просто ...05.1727-09-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 13.11. Источник: xakep.ru.