8-900-374-94-44
[email protected]
Slide Image
Меню

Устройства hid: HID Application Programming Interface (API) — Windows drivers

Интерфейс прикладного программирования HID (API) — драйверы Windows

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья

Существует три категории HID API: обнаружение и настройка устройств, перемещение данных и создание/интерпретация отчетов.

Обнаружение и настройка устройства

Эти API-интерфейсы HID используются для определения свойств устройства HID и для установления связи с этим устройством. Приложения используют эти API для идентификации коллекции верхнего уровня.

  • HidD_GetAttributes
  • HidD_GetHidGuid
  • HidD_GetIndexedString
  • HidD_GetManufacturerString
  • HidD_GetPhysicalDescriptor
  • HidD_GetPreparsedData
  • HidD_GetProductString
  • HidD_GetSerialNumberString
  • HidD_GetNumInputBuffers
  • HidD_SetNumInputBuffers

Перемещение данных

Эти HID API используются для перемещения данных между приложением и выбранным устройством.

  • HidD_GetInputReport
  • HidD_SetFeature
  • HidD_SetOutputReport
  • Чтение файла
  • Запись в файл

Создание и интерпретация отчетов

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

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

Для интерпретации отчетов, полученных от устройства, или для создания отчетов для отправки приложение должно использовать дескриптор отчета, чтобы определить, находится ли конкретное использование в отчетах и ​​(потенциально) единицы значений в отчетах. В этих случаях требуется парсинг HID. Windows предоставляет синтаксический анализатор HID для использования драйверами и приложениями через API (HidP_*), который можно использовать для обнаружения типов использования, поддерживаемых устройством, определения состояния таких использований в отчете или для создания отчета для изменения состояние использования в устройстве.

Это API парсера HID.

  • HidP_GetButtonCaps
  • HidP_GetButtons
  • HidP_GetButtonsEx
  • HidP_GetCaps
  • HidP_GetData
  • HidP_GetExtendedAttributes
  • HidP_GetLinkCollectionNodes
  • HidP_GetScaledUsageValue
  • HidP_GetSpecificButtonCaps
  • HidP_GetSpecificValueCaps
  • HidP_GetUsages
  • HidP_GetUsagesEx
  • HidP_GetUsageValue
  • HidP_GetUsageValueArray
  • HidP_GetValueCaps
  • HidP_InitializeReportForID
  • HidP_IsSameUsageAndPage
  • HidP_MaxDataListLength
  • HidP_MaxUsageListLength
  • HidP_SetButtons
  • HidP_SetData
  • HidP_SetScaledUsageValue
  • HidP_SetUsages
  • HidP_SetUsageValue
  • HidP_SetUsageValueArray
  • HidP_UnsetButtons
  • HidP_UnsetUsages
  • HidP_UsageAndPageListDifference
  • HidP_UsageListDifference

Обратная связь

Просмотреть все отзывы о странице

Архитектура HID — драйверы Windows

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья

Архитектура стека драйверов HID в Windows основана на драйвере класса с именем hidclass.sys . Клиенты и транспортные минидрайверы обращаются к драйверу класса из режима пользователя или режима ядра.

Драйвер класса HID

Системный драйвер класса HID представляет собой драйвер функции WDM и драйвер шины для класса настройки устройства HID (HIDClass). Исполняемый компонент драйвера класса HID — hidclass.sys . Драйвер класса HID является связующим звеном между клиентами HID и различными транспортными средствами. Это позволяет писать HID-клиента независимо от транспорта. Этот уровень абстракции позволяет клиентам продолжать работу (с небольшими изменениями или вообще без них), когда вводится новый стандарт или сторонний транспорт.

Ниже приведено архитектурное представление.

Предыдущая диаграмма включает следующее:

  • Клиенты HID — идентифицирует клиентов Windows и сторонних производителей и их интерфейсы.
  • Драйвер класса HID — исполняемый файл hidclass.sys .
  • HID Transport Minidriver — идентифицирует транспорты Windows и сторонних производителей и их интерфейсы.

Вот схема стека устройств универсального клиента HID и транспорта.

Вот еще одна диаграмма стека устройств, показывающая наборы HID-клавиатуры и мыши через USB.

Клиенты HID

Клиенты HID — это драйверы, службы или приложения, которые взаимодействуют с

HIDClass.sys и часто представляют определенный тип устройства (например, сенсор, клавиатуру, мышь и т. д.). Они идентифицируют устройство с помощью идентификатора оборудования или конкретной коллекции HID и взаимодействуют с коллекцией HID с помощью следующего руководства.

Драйверы и приложения пользовательского режима, а также драйверы режима ядра выполняют следующие действия для управления коллекциями HID:

  • Драйверы и приложения пользовательского режима используют процедуры поддержки HIDClass (HidD_Xxx) для получения информации о коллекции HID.
  • Драйверы режима ядра, драйверы пользовательского режима и приложения используют процедуры поддержки синтаксического анализа HID (HidP_Xxx), а драйверы режима ядра используют IOCTL драйвера класса HID для обработки отчетов HID.

Следующая таблица представляет собой упрощенную информацию, указанную выше.

Режим Драйверы Приложения
Режим пользователя HidD_Xxx HidP_Xxx
Режим ядра HidD_Xxx ИЛИ IOCTL_HID_xxx Н/Д

Дополнительные сведения см. в разделе Открытие коллекций HID.

Клиенты HID, поддерживаемые в Windows

Windows поддерживает следующие коллекции верхнего уровня:

Страница использования Использование Windows 7 Windows 8 Windows 10 Примечания Режим доступа
0x0001 0x0001 — 0x0002 Да Да Да Драйвер класса мыши и драйвер сопоставления Эксклюзив
0x0001 0x0004 — 0x0005 Да Да Да Игровые контроллеры Общий
0x0001 0x0006 — 0x0007 Да Да Да Драйвер класса Keyboard/Keypad и драйвер сопоставления Эксклюзив
0x0001 0x000C Да Да Переключатель режимов полета Общий
0x0001 0x0080 Да Да Да Элементы управления системой (питание) Общий
0x000C 0x0001 Да Да Да (как для Windows 10, так и для Windows 10 Mobile) Потребительские средства контроля Общий (для Windows 10 и Windows 10 Mobile)
0x000D 0x0001 Да Да Да Внешнее перьевое устройство Эксклюзив
0x000D 0x0002 Да Да Да Интегрированное перьевое устройство Эксклюзив
0x000D 0x0004 Да Да Да Сенсорный экран Эксклюзив
0x000D 0x0005 Да Да Прецизионная сенсорная панель (PTP) Эксклюзив
0x0020 *Несколько Да Да Датчики Общий
0x0084 0x0004 Да Да Да Батарея ИБП HID Общий
0x008C 0x0002 Да (Windows 8. 1 и более поздние версии) Да Сканер штрих-кода (hidscanner.dll) Общий

В предыдущей таблице режим доступа для входных HID-клиентов — эксклюзивный , чтобы другие HID-клиенты не могли перехватывать или получать глобальное состояние ввода, если они не являются целевыми получателями этого ввода. Из соображений безопасности Raw Input Manager (RIM) открывает все такие устройства исключительно.

Если RIM открывает устройство в эксклюзивном режиме , пользователь по-прежнему может открыть интерфейс устройства HID без запроса разрешений на чтение и запись и получить информацию об устройстве HID с помощью процедур поддержки HIDClass (HidD_GetXxx).

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

Использование определяется таблицами использования USB-IF.

*Несколько: Использование датчиков от 0x00 до 0xFF сегментировано для разных целей. Например, 0x10 указывает на биометрический датчик; 0x40 указывает на датчик освещенности. Эти выделения не являются смежными. Список применений датчиков см. в разделе «Определения классов устройств USB-IF для HID». Сведения об использовании датчиков, поддерживаемых в Windows, см. в разделе Использование датчиков HID.

Драйвер транспорта HID

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *