Windows.Devices.HumanInterfaceDevice Namespace

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)

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 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 anyde caracteres genérica . Além disso, o Device Id pode conter uma cadeia de caracteres de provedor opcional de usb ou bluetooth.

      • <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 opcional UsageId, cada um dos quais são valores hexadecimal de 16 bits.

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 a hidTelephony 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.
  • 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 propriedade DEVPKEY_DeviceInterface_Restricted de interface do dispositivo como TRUE na Interface GUID_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 e LowerFilters .
    • A presença dos drivers UpperFilter/LowerFilter da classe HID pode ser determinada usando DeviceManager procurando Class upper filters propriedades e Class lower filters .
    • As propriedades da Interface do Dispositivo podem ser inspecionadas chamando CM_Get_Device_Interface_Property onde pszDeviceInterface é a mesma cadeia de caracteres que seria passada para FromIdAsync.
  • 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.

Confira também