Windows.Devices.HumanInterfaceDevice Пространство имен

Это пространство имен предоставляет приложению UWP доступ к устройствам, которые поддерживают протокол HID .

Поддержка устройств

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

Недоступное использование.

UsagePage UsageIds
HID_USAGE_PAGE_UNDEFINED (0x00) Все
HID_USAGE_PAGE_GENERIC (0x01) HID_USAGE_GENERIC_MOUSE (0x02)
HID_USAGE_GENERIC_KEYBOARD (0x06)
HID_USAGE_GENERIC_KEYPAD (0x07)
HID_USAGE_GENERIC_SYSTEM_CTL (0x80)
HID_USAGE_PAGE_KEYBOARD (0x07) Все
HID_USAGE_PAGE_CONSUMER (0x0C) Все
HID_USAGE_PAGE_DIGITIZER (0x0D) Все
HID_USAGE_PAGE_SENSOR (0x20) Все
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59) HID_USAGE_LAMPARRAY (0x01)

Возможности устройств с человеческим интерфейсом

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

С Windows 10, версия 1809 (обновление за октябрь 2018 г.)

  • <DeviceCapability>: атрибут Name должен иметь значение humanInterfaceDevice.
<DeviceCapability Name="humanInterfaceDevice"/>

При нацеливание на устройство hid телефонии (UsagePage==),0x0B необходимо также указать дополнительную возможность hidTelephony .

<DeviceCapability Name="humanInterfaceDevice"/>
<DeviceCapability Name="hidTelephony"/>

До Windows 10, версия 1809 (обновление за октябрь 2018 г.)

Начиная с версии 1809, ProductId VendorId/ и тип функции больше не нужно указывать, и они будут игнорироваться в более новых системах. Если нацеливание на системы до 1809, см. ниже.

  • <DeviceCapability>: атрибут Name должен иметь значение humanInterfaceDevice.

    • <Устройство>. Атрибут Id должен указывать идентификатор устройства. Этот элемент может указывать сочетание идентификатора поставщика (vid) и идентификатора продукта (pid); или может указать универсальную строку any. Кроме того, Device Id может содержать необязательную строку usb поставщика или bluetooth.

      • <Функция>. Атрибут Type указывает функцию устройства. Этот элемент содержит одно или несколько значений использования HID. Эти значения состоят из UsagePage и необязательных UsageId, каждое из которых является 16-разрядными шестнадцатеричными значениями.

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

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

Следующий код идентичен первому за исключением дополнительной строки usb поставщика в элементе Device Id .

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701 usb">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

В следующих данных игрового устройства нет идентификатора поставщика и продукта.

<!-- Any gamepad device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

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

<!-- Any generic gaming device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0004 *"/>
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

Устранение неполадок

  • Убедитесь, что в манифесте приложения есть возможность HID (humanInterfaceDevice). Если устройство телефонии, убедитесь, что hidTelephony эта возможность также включена.
  • Убедитесь, что пользователь предоставил приложению разрешение на использование HID.
  • Убедитесь, что тип устройства не указан как недоступный.
  • Внутренние устройства компьютера (DEVPKEY_Device_InLocalMachineContainer == TRUE) обычно недоступны, если только они не работают на номере SKU со встроенным режимом и lowLevelDevices возможностями.
  • Устройства со стеками, содержащими верхние и нижние драйверы фильтров, как правило, недоступны . Они иногда добавляются сторонними разработчиками для включения дополнительных функций для пользовательского оборудования.
    • Ограничение устройства частично определяется hidclass.sys во время перечисления устройств, которое может присвоить свойству DEVPKEY_DeviceInterface_Restricted интерфейса устройства значение TRUE в интерфейсе GUID_DEVINTERFACE_HID устройства HID в зависимости от наличия фильтров устройства или класса.
    • Наличие драйверов UpperFilterLowerFilter/ устройства можно определить с помощью DeviceManager, выполнив поиск UpperFilters свойств и LowerFilters .
    • Наличие драйверов класса HID UpperFilter/LowerFilter можно определить с помощью DeviceManager, выполнив поиск Class upper filters свойств и Class lower filters .
    • Свойства интерфейса устройства можно проверить путем вызова CM_Get_Device_Interface_Property , где pszDeviceInterface — это та же строка, которая была бы передана в FromIdAsync.
  • Эти ограничения можно обойти при создании пользовательского устройства, работая с разработчиком драйвера для создания приложения поддержки оборудования.

Классы

HidBooleanControl

Представляет простой логический элемент управления на устройстве HID, который возвращает значения включения и выключения. Например, светодиодный индикатор на клавиатуре.

HidBooleanControlDescription

Описывает логический элемент управления для данного устройства HID.

HidCollection

Извлекает сведения о коллекции для группы связанных элементов управления.

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

HidDevice

Представляет коллекцию верхнего уровня и соответствующее устройство.

HidFeatureReport

Представляет отчет о функциях HID.

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

HidInputReport

Представляет входной отчет HID.

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

HidInputReportReceivedEventArgs

Представляет аргументы, которые API HID отправляет в рамках события входного отчета.

HidNumericControl

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

HidNumericControlDescription

Описывает числовой элемент управления для данного устройства HID.

HidOutputReport

Представляет выходной отчет HID.

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

Перечисления

HidCollectionType

Определяет связь, определяющую группу элементов управления на устройстве.

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

HidReportType

Указывает тип отчета HID.

См. также раздел