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. |