Windows.Devices.HumanInterfaceDevice Namespace
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Esse namespace fornece ao aplicativo UWP acesso a dispositivos que dão suporte ao protocolo HID (Dispositivo de Interface Humana ).
Suporte ao dispositivo
Esse namespace dá suporte à maioria dos HIDs. No entanto, ele não fornece acesso a TLCs (coleções de aplicativos de nível superior) representadas pelos seguintes usos.
Usos inacessíveis.
UsagePage | UsageIds |
---|---|
HID_USAGE_PAGE_UNDEFINED (0x00 ) |
Todos |
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 ) |
Tudo |
HID_USAGE_PAGE_CONSUMER (0x0C ) |
Tudo |
HID_USAGE_PAGE_DIGITIZER (0x0D ) |
Todos |
HID_USAGE_PAGE_SENSOR (0x20 ) |
Tudo |
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59 ) |
HID_USAGE_LAMPARRAY (0x01 ) |
- Dispositivos de teclado e mouse são dispositivos reservados ao sistema
- Os HIDs de LampArray podem ser enumerados com HidDevice.GetDeviceSelector , mas devem ser instanciados com LampArray.FromIdAsync
- Os HIDs do sensor podem ser enumerados com HidDevice.GetDeviceSelector , mas devem ser instanciados com seu respectivo dispositivo Windows.Devices.Sensors (por exemplo , LightSensor.FromIdAsync)
Funcionalidades do dispositivo de interface humana
Um aplicativo UWP que acessa um HID deve incluir dados de funcionalidade de dispositivo específicos no nó de funcionalidades de seu manifesto. Esses dados identificam o dispositivo e sua finalidade (ou função). Observe que alguns dispositivos podem ter várias funções.
Desde Windows 10, versão 1809 (Atualização de outubro de 2018)
- <DeviceCapability>: o atributo Name deve ser
humanInterfaceDevice
.
<DeviceCapability Name="humanInterfaceDevice"/>
Se estiver direcionando um dispositivo de telefonia HID (UsagePage==0x0B
), a funcionalidade hidTelephony
adicional também deverá ser especificada.
<DeviceCapability Name="humanInterfaceDevice"/>
<DeviceCapability Name="hidTelephony"/>
Antes de Windows 10, versão 1809 (Atualização de outubro de 2018)
Desde 1809, o ProductId vendorId/ e o tipo de função não precisam mais ser especificados e serão ignorados em sistemas mais recentes. Se estiver direcionando sistemas antes de 1809, veja abaixo.
<DeviceCapability>: o atributo Name deve ser
humanInterfaceDevice
.<Dispositivo>: o atributo Id deve especificar o identificador do dispositivo. Esse elemento pode especificar uma combinação de ID do Fornecedor (vid) e ID do Produto (pid); ou pode especificar uma cadeia
any
de caracteres genérica . Além disso, oDevice Id
pode conter uma cadeia de caracteres de provedor opcional deusb
oubluetooth
.- <Função>: o atributo Type especifica a função do dispositivo. Esse elemento contém um ou mais valores de uso hid. Esses valores consistem em um
UsagePage
e um opcionalUsageId
, cada um dos quais são valores hexadecimal de 16 bits.
- <Função>: o atributo Type especifica a função do dispositivo. Esse elemento contém um ou mais valores de uso hid. Esses valores consistem em um
Nos seguintes dados de uso definidos pelo fornecedor, o dispositivo é identificado pela combinação ID do Fornecedor e ID do Produto .
<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:0A81 0701">
<Function Type="usage:ffa0 0001"/>
</Device>
</DeviceCapability>
O seguinte é idêntico ao primeiro, com exceção da cadeia de caracteres de provedor usb
adicional no Device Id
elemento .
<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:0A81 0701 usb">
<Function Type="usage:ffa0 0001"/>
</Device>
</DeviceCapability>
Nos dados do dispositivo de jogos a seguir, não há ID do fornecedor e ID do produto.
<!-- Any gamepad device -->
<DeviceCapability Name="humaninterfacedevice">
<Device Id="any">
<Function Type="usage:0005 *"/>
</Device>
</DeviceCapability>
Nos seguintes dados do joystick e do game pad, não há nenhuma ID do Fornecedor e ID do Produto
<!-- Any generic gaming device -->
<DeviceCapability Name="humaninterfacedevice">
<Device Id="any">
<Function Type="usage:0004 *"/>
<Function Type="usage:0005 *"/>
</Device>
</DeviceCapability>
Solução de problemas
- Verifique se a funcionalidade HID (
humanInterfaceDevice
) está no manifesto do aplicativo. Se um dispositivo de telefonia, verifique se ahidTelephony
funcionalidade também está incluída. - Verifique se o usuário concedeu permissão para o aplicativo utilizar HIDs.
- Verifique se o tipo de dispositivo não é um designado como inacessível.
- HIDs inacessíveis ainda podem ser enumerados por DeviceInformation.FindAllAsync(), mas não podem ser abertos por HumanInterfaceDevice.FromIdAsync(). O attemping para abrir esse dispositivo gerará uma exceção ou retornará
null
.
- HIDs inacessíveis ainda podem ser enumerados por DeviceInformation.FindAllAsync(), mas não podem ser abertos por HumanInterfaceDevice.FromIdAsync(). O attemping para abrir esse dispositivo gerará uma exceção ou retornará
- Os dispositivos internos do computador (
DEVPKEY_Device_InLocalMachineContainer == TRUE
) geralmente não são acessíveis, a menos que sejam executados em um SKU com o modo elowLevelDevices
a funcionalidade inseridos. - Os dispositivos com pilhas que contêm drivers de filtro superior/inferior geralmente não são acessíveis. Às vezes, eles são adicionados por terceiros para habilitar funcionalidades adicionais para hardware personalizado.
- A restrição de dispositivo é parcialmente determinada por
hidclass.sys
durante a enumeração do dispositivo, que pode definir a propriedadeDEVPKEY_DeviceInterface_Restricted
de interface do dispositivo comoTRUE
na InterfaceGUID_DEVINTERFACE_HID
do Dispositivo HID com base na presença de filtros de dispositivo/classe. - A presença de drivers UpperFilter/LowerFilter do dispositivo pode ser determinada usando DeviceManager procurando
UpperFilters
propriedades eLowerFilters
. - A presença dos drivers UpperFilter/LowerFilter da classe HID pode ser determinada usando DeviceManager procurando
Class upper filters
propriedades eClass lower filters
. - As propriedades da Interface do Dispositivo podem ser inspecionadas chamando
CM_Get_Device_Interface_Property
ondepszDeviceInterface
é a mesma cadeia de caracteres que seria passada para FromIdAsync.
- A restrição de dispositivo é parcialmente determinada por
- Essas restrições podem ser ignoradas ao criar um dispositivo personalizado trabalhando com o driver-desenvolvedor para criar um aplicativo de suporte de hardware
Classes
HidBooleanControl |
Representa um controle booliano simples em um dispositivo HID que retorna valores ativados/desativados. Um exemplo seria a luz LED em um teclado. |
HidBooleanControlDescription |
Descreve um controle booliano para um determinado dispositivo HID. |
HidCollection |
Recupera as informações de coleção de um grupo de controles relacionados. O protocolo HID usa coleções para agrupar um conjunto de controles semelhantes uns aos outros ou estão relacionados por proximidade física ou operacional. |
HidDevice |
Representa uma coleção de nível superior e o dispositivo correspondente. |
HidFeatureReport |
Representa um relatório de recursos hid. Os relatórios de recursos são emitidos pelo dispositivo e pelo host. Os dispositivos emitem relatórios de recursos para descrever seus recursos e configurações padrão para um host. Os hosts emitem relatórios de recursos para fazer solicitações do dispositivo. |
HidInputReport |
Representa um relatório de entrada HID. Os dispositivos emitem relatórios de entrada para descrever alterações de estado, entrada do usuário e outros dados específicos do dispositivo. Por exemplo, um dispositivo de teclado HID usaria um relatório de entrada para sinalizar uma tecla. Um sensor de presença hid usaria um relatório de entrada para sinalizar um evento de detecção de presença. |
HidInputReportReceivedEventArgs |
Representa os argumentos que a API HID envia como parte de um evento input-report. |
HidNumericControl |
Representa um controle numérico em um dispositivo HID que retorna um intervalo de valores. Um exemplo seria o controle de volume em um alto-falante. |
HidNumericControlDescription |
Descreve um controle numérico para um determinado dispositivo HID. |
HidOutputReport |
Representa um relatório de saída hid. Os hosts emitem relatórios de saída para solicitar alterações no dispositivo. Por exemplo, um host pode emitir uma solicitação para um teclado para ativar ou desativar um LED. |
Enumerações
HidCollectionType |
Identifica a relação que define um agrupamento de controles no dispositivo. As coleções são uma maneira de agrupar um conjunto de controles semelhantes uns aos outros; ou estão relacionados por proximidade física ou operacional. |
HidReportType |
Especifica um tipo de relatório HID. |