Поделиться через


Драйверы кнопок HID

Используйте драйвер кнопки, предоставленный Корпорацией Майкрософт, для кнопок GPIO; в противном случае реализуйте драйвер, который внедряет данные HID в операционную систему.

Кнопки (Power, Windows, громкость и блокировка поворота) обычно используются для задач, возникающих в то время как физическая клавиатура недоступна пользователю, в форм-факторах, таких как преобразуемые или slates. Кнопки объявляют себя операционной системе как устройства HID, предоставляя дескрипторы отчетов о кнопках HID. Это позволяет системе интерпретировать назначение и события этих кнопок стандартизированным образом. При изменении состояния кнопки это событие сопоставляется с использованием HID. Мини-driver транспорта HID сообщает об этих событиях драйверам верхнего уровня, которые затем отправляют сведения клиентам HID в режиме пользователя или в режиме ядра.

Для кнопок ввода-вывода (GPIO) физического общего назначения мини-накопитель HID — это встроенный драйвер, предоставляемый корпорацией Майкрософт, который сообщает о событиях на основе прерываний, полученных на определенных аппаратных ресурсах GPIO.

Драйвер в коробке не может обслуживать кнопку, которая не подключена к строке прерывания. Для таких кнопок необходимо написать драйвер, который предоставляет кнопку в виде кнопки HID и сообщает о изменении состояния драйвера класса HID (майкрософт). Ваш водитель может быть драйвером источника HID или драйвером транспорта HID.

Руководство по поддержке кнопок HID

Ниже приведены некоторые общие указатели, которые помогут вам решить, какую реализацию следует следовать, если вы создаете кнопки HID.

диаграмма принятия решений для реализации кнопок.

Использование драйвера кнопки, предоставленного корпорацией Майкрософт

Описание ACPI кнопки HID.

Если вы реализуете кнопку GPIO, опишите кнопку в системе ACPI, чтобы Windows могли загрузить встроенный драйвер Hidinterrupt.sys в качестве драйвера кнопки, который сообщает о событиях в операционной системе.

Корпорация Майкрософт рекомендует использовать встроенные мини-накопители по возможности.

Запись драйвера источника HID в режиме ядра

Кнопки с помощью Виртуальной платформы HID.

Если вы реализуете кнопку без GPIO, например поток данных в формате HID, который необходимо внедрить другим программным компонентом, можно написать драйвер в режиме ядра. Начиная с Windows 10, вы можете написать исходный драйвер HID, вызвав интерфейсы программирования, взаимодействующие с Virtual HID Framework (VHF), и получает и задает отчеты HID в драйвер класса HID и из драйвера класса HID.

Кроме того, можно написать мини-накопитель транспорта HID в режиме ядра, поддерживаемый более ранними версиями Windows. Однако мы не рекомендуем этот подход, так как плохо написанные мини-накопители транспорта KMDF HID могут завершить работу системы.

Создание мини-driver UMDF HID

Мини-driver транспорта HID.

Если вы реализуете кнопку, отличной от GPIO, вместо того чтобы использовать предыдущую модель написания исходного драйвера HID, вы можете написать мини-накопитель транспорта HID в пользовательском режиме. Эти драйверы проще разрабатывать, чем драйверы в режиме ядра и ошибки в этом драйвере, не проверяют всю систему.

Универсальные драйверы Windows для кнопок HID

Начиная с Windows 10, интерфейсы программирования драйвера HID являются частью выпусков Windows на основе OneCoreUAP. С помощью этого общего набора интерфейсов можно написать драйвер кнопки с помощью интерфейсов Virtual HID Framework или Transport Minidrivers . Эти драйверы будут работать в Windows 10 для классических выпусков (Home, Pro, Enterprise и Education) и Windows 10 Mobile, а также других версий Windows 10.

Пошаговые инструкции см. в разделе "Использование универсального INF-файла".

Устройство пользовательского интерфейса