Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
Существует три категории HID API: обнаружение и настройка устройств, перемещение данных и создание/интерпретация отчетов.
Эти API-интерфейсы HID используются для определения свойств устройства HID и для установления связи с этим устройством. Приложения используют эти API для идентификации коллекции верхнего уровня.
Эти HID API используются для перемещения данных между приложением и выбранным устройством.
Разработчики специального оборудования знают размер и формат каждого отчета, выдаваемого их устройством. В этом случае приложение может привести входные и выходные буферы отчета к структурам и использовать данные.
Разработчики приложений HID, предназначенных для связи со всеми устройствами, предоставляющими общие функции (например, музыкальное приложение, которое должно определять нажатие кнопки воспроизведения), могут не знать размер и формат отчетов HID. Эта категория приложений понимает определенные коллекции верхнего уровня и определенные виды использования.
Для интерпретации отчетов, полученных от устройства, или для создания отчетов для отправки приложение должно использовать дескриптор отчета, чтобы определить, находится ли конкретное использование в отчетах и (потенциально) единицы значений в отчетах. В этих случаях требуется парсинг HID. Windows предоставляет синтаксический анализатор HID для использования драйверами и приложениями через API (HidP_*), который можно использовать для обнаружения типов использования, поддерживаемых устройством, определения состояния таких использований в отчете или для создания отчета для изменения состояние использования в устройстве.
Это API парсера HID.
Просмотреть все отзывы о странице
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
Архитектура стека драйверов HID в Windows основана на драйвере класса с именем hidclass.sys . Клиенты и транспортные минидрайверы обращаются к драйверу класса из режима пользователя или режима ядра.
Системный драйвер класса HID представляет собой драйвер функции WDM и драйвер шины для класса настройки устройства HID (HIDClass). Исполняемый компонент драйвера класса HID — hidclass.sys . Драйвер класса HID является связующим звеном между клиентами HID и различными транспортными средствами. Это позволяет писать HID-клиента независимо от транспорта. Этот уровень абстракции позволяет клиентам продолжать работу (с небольшими изменениями или вообще без них), когда вводится новый стандарт или сторонний транспорт.
Ниже приведено архитектурное представление.
Предыдущая диаграмма включает следующее:
Вот схема стека устройств универсального клиента HID и транспорта.
Вот еще одна диаграмма стека устройств, показывающая наборы HID-клавиатуры и мыши через USB.
Клиенты HID — это драйверы, службы или приложения, которые взаимодействуют с HIDClass.sys и часто представляют определенный тип устройства (например, сенсор, клавиатуру, мышь и т. д.). Они идентифицируют устройство с помощью идентификатора оборудования или конкретной коллекции HID и взаимодействуют с коллекцией HID с помощью следующего руководства.
Драйверы и приложения пользовательского режима, а также драйверы режима ядра выполняют следующие действия для управления коллекциями HID:
Следующая таблица представляет собой упрощенную информацию, указанную выше.
Режим | Драйверы | Приложения |
---|---|---|
Режим пользователя | HidD_Xxx | HidP_Xxx |
Режим ядра | HidD_Xxx ИЛИ IOCTL_HID_xxx | Н/Д |
Дополнительные сведения см. в разделе Открытие коллекций HID.
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).
Режим общего доступа позволяет нескольким приложениям получать доступ к устройству. Например, несколько приложений могут получить доступ к сканеру штрих-кода, чтобы узнать о возможностях устройства и получить статистику. Однако извлечение декодированных данных со сканера штрих-кода выполняется в эксклюзивном режиме .
*Несколько: Использование датчиков от 0x00 до 0xFF сегментировано для разных целей. Например, 0x10 указывает на биометрический датчик; 0x40 указывает на датчик освещенности. Эти выделения не являются смежными. Список применений датчиков см. в разделе «Определения классов устройств USB-IF для HID». Сведения об использовании датчиков, поддерживаемых в Windows, см. в разделе Использование датчиков HID.
Драйвер класса HID предназначен для использования минидрайверов HID для доступа к аппаратному устройству ввода. Минидрайвер HID абстрагирует специфичную для устройства операцию поддерживаемых им устройств ввода. Минидрайвер HID связывает свою работу с драйвером класса HID, регистрируясь в драйвере класса HID. Драйвер класса HID связывается с минидрайвером HID, вызывая процедуры поддержки минидрайвера. Минидрайвер HID, в свою очередь, отправляет сообщения вниз по стеку драйверов к базовой шине или драйверу порта.