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) |
- Устройства клавиатуры и мыши являются зарезервированными в системе устройствами
- HiD LampArray можно перечислить с помощью HidDevice.GetDeviceSelector, но их необходимо создать с помощью LampArray.FromIdAsync.
- HiD датчика можно перечислить с помощью HidDevice.GetDeviceSelector , но их необходимо создать с соответствующим устройством Windows.Devices.Sensors (например , LightSensor.FromIdAsync).
Возможности устройств с человеческим интерфейсом
Приложение 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-разрядными шестнадцатеричными значениями.
-
<Функция>. Атрибут Type указывает функцию устройства. Этот элемент содержит одно или несколько значений использования HID. Эти значения состоят из
В следующих данных об использовании, определяемых поставщиком, устройство определяется сочетанием идентификатора поставщика и идентификатора продукта .
<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.
- Убедитесь, что тип устройства не указан как недоступный.
- Недоступные HID по-прежнему могут быть перечислены с помощью DeviceInformation.FindAllAsync(), но не могут быть открыты с помощью HumanInterfaceDevice.FromIdAsync(). При открытии такого устройства создается исключение или возвращается
null.
- Недоступные HID по-прежнему могут быть перечислены с помощью DeviceInformation.FindAllAsync(), но не могут быть открыты с помощью HumanInterfaceDevice.FromIdAsync(). При открытии такого устройства создается исключение или возвращается
- Внутренние устройства компьютера (
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. |