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


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

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

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

  • HidP_GetValueCaps возвращает массив возможностей значений, описывающий все значения, содержащиеся в типе отчета, указанном вызывающим объектом.

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

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

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

  • Идентификатор отчета, содержащего значение

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

  • Указывает, является ли использование псевдонимом

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

  • Размер (в битах) значения и количество отчетов (количество отдельных значений, описанных в структуре).

  • Атрибуты каждого значения, в том числе: имеет ли оно значение NULL, единицы измерения и степень, а также логические и физические диапазоны.

  • Сведения о дескрипторах строк и конструкторах, связанных с использованием или диапазоном использования

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

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

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

  • Можно использовать псевдонимы. Диапазон использования не может быть псевдонимом. Псевдонимированные значения связываются в массиве возможностей значений так же, как кнопки с псевдонимами, связанные вместе в массиве возможностей кнопок. См . раздел Использование кнопок в основном элементе переменной.

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

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

Описание назначения индексов данных значениям см. в разделе Индексы данных.

Массив значений использования

Массив значений использования — это последовательный набор значений, указанных в элементе main, всем из которых назначается одно и то же использование. Это происходит, если для элемента main указано только одно использование, количество отчетов которого больше единицы.

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

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

В предыдущем примере структура возможностей значения для такого массива значений использования будет иметь значение FALSE для элемента IsRange, для элемента NotRange.Usage — значение 17, для элемента ReportCount — значение 5, а для элемента BitSize — значение 6.

Если в отчете используется значение 1, используйте HidP_GetUsageValue для извлечения значения использования. Если значение отчета об использовании больше 1, HidP_GetUsageValue возвращает только первый элемент данных в массиве значений использования. Чтобы извлечь все элементы данных в массиве значений использования, используйте HidP_GetUsageValueArray.