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


Массивы возможностей кнопки

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

Для получения сведений о возможностях кнопки одно из следующих подпрограмм поддержки HIDClass используется приложением в пользовательском режиме или драйвером в режиме ядра:

  • HidP_GetButtonCaps возвращает массив возможностей кнопки, описывающий все использование кнопок, содержащихся в указанном типе отчета.

  • HidP_GetSpecificButtonCaps фильтрует информацию о характеристиках кнопки, возвращаемую с учетом заданных вызывающим пользователем страницы использования, идентификатора использования и коллекции ссылок.

Массив возможностей кнопки содержит структуры HIDP_BUTTON_CAPS, каждая из которых содержит следующие сведения об использовании HID или диапазоне использования:

  • Страница назначения для использования или диапазона использования

  • Идентификатор отчета, содержащий данные кнопки

  • Идентификатор использования или диапазон использования

  • Флаг, указывающий, является ли использование перенаправленным использованием

  • Коллекция ссылок, содержащая диапазон использования или применение

  • Дескрипторы строк и идентификаторы, связанные с использованием или диапазоном использования (см. элемент "Индекс идентификатора" и элемент "Индекс строки")

  • Индексы данных, назначенные средством синтаксического анализа HID для использования или диапазона использования.

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

  • Каждая структура возможностей представляет одно использование или диапазон использования, связанный с переменным основным элементом или основным элементом массива.

  • Связанные использования применяются с основным элементом переменной. Использование, связанное с элементом массива, не может быть псевдонимом. Не удается псевдонимировать диапазон использования.

  • Средство синтаксического анализа HID использует только минимальное необходимое количество операций для назначения использования каждой кнопке. Средство синтаксического анализа назначает использование в порядке, в котором они указаны в дескрипторе отчета. Использования в дескрипторе отчета, которые не являются обязательными, отбрасываются. Массив возможностей кнопки не содержит никаких сведений об отменённых использованиях.

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

  • Средство синтаксического анализа HID назначает уникальный индекс данных каждому использованию, описанному в массиве возможностей.

В следующих разделах рассматривается, как организованы структуры возможностей и выполняется их настройка в массиве параметров кнопок.

Использование кнопок в переменной главного элемента

Каждое использование или диапазон использования, указанное в дескрипторе отчета, описывается собственной структурой возможностей в массиве возможностей кнопки.

Член структуры возможностей IsAlias используется для указания набора связанных способов использования следующим образом:

  • IsAlias имеет значение TRUE в первых структурах возможностей n-1, добавленных в массив возможностей. IsAlias имеет значение FALSE в структуре возможностей n. Предпочтительное использование — это последнее использование псевдонима в последовательности.

Приложение или драйвер может определить, какие параметры использования кнопки являются псевдонимами, проверяя наличие таких последовательностей.

В следующей таблице приведен пример использования трех псевдонимов.

Порядок использования псевдонимов в дескрипторе отчета Порядок использования в массиве возможностей Значение члена IsAlias
использование 1 использование 3 ИСТИННЫЙ
использование 2 использование 2 ИСТИННЫЙ
использование 3 использование 1 ЛОЖНЫЙ

Сведения о том, как взаимосвязываются использования и индексы данных, см. в Индексы данных.

Использование кнопки в основном элементе массива

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

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

Порядок использования в дескрипторе отчета Порядок использования в массиве возможностей DataIndex или из DataIndexMin в DataIndexMax
использование 1 Диапазон использования 2 от n+7 до n+8
диапазон использования 1 (с 4 использований) использование 2 n+5
использование 2 Диапазон использования 1 от n+1 до n+4
диапазон использования 2 (с 2 использованиями) использование 1 n