Windows.Devices.HumanInterfaceDevice Espacio de nombres
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Este espacio de nombres proporciona a la aplicación para UWP acceso a los dispositivos que admiten el protocolo de dispositivo de interfaz humana (HID ).
Compatibilidad con dispositivos
Este espacio de nombres admite la mayoría de los HID. Sin embargo, no proporciona acceso a colecciones de aplicaciones de nivel superior (TLC) representadas por los siguientes usos.
Usos inaccesibles.
UsagePage | UsageIds |
---|---|
HID_USAGE_PAGE_UNDEFINED (0x00 ) |
Todo |
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 ) |
Todo |
HID_USAGE_PAGE_CONSUMER (0x0C ) |
Todo |
HID_USAGE_PAGE_DIGITIZER (0x0D ) |
Todo |
HID_USAGE_PAGE_SENSOR (0x20 ) |
Todo |
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59 ) |
HID_USAGE_LAMPARRAY (0x01 ) |
- Los dispositivos de teclado y mouse son dispositivos reservados por el sistema
- Los HID de LampArray se pueden enumerar con HidDevice.GetDeviceSelector , pero deben crearse instancias con LampArray.FromIdAsync
- Los HID del sensor se pueden enumerar con HidDevice.GetDeviceSelector , pero deben crearse instancias de ellos con su dispositivo Windows.Devices.Sensors respectivo (por ejemplo , LightSensor.FromIdAsync)
Funcionalidades del dispositivo de interfaz humana
Una aplicación para UWP que acceda a un HID debe incluir datos específicos de funcionalidad del dispositivo en el nodo de funcionalidades de las funcionalidades de su manifiesto. Estos datos identifican el dispositivo y su propósito (o función). Tenga en cuenta que algunos dispositivos pueden tener varias funciones.
Desde Windows 10, versión 1809 (actualización de octubre de 2018)
- <DeviceCapability>: el atributo Name debe ser
humanInterfaceDevice
.
<DeviceCapability Name="humanInterfaceDevice"/>
Si el destino es un dispositivo de telefonía HID (UsagePage==),0x0B
también se debe especificar la funcionalidad hidTelephony
adicional.
<DeviceCapability Name="humanInterfaceDevice"/>
<DeviceCapability Name="hidTelephony"/>
Antes de Windows 10, versión 1809 (actualización de octubre de 2018)
Desde 1809, ya no es necesario especificar vendorId/ProductId ni el tipo de función y se omitirán en los sistemas más recientes. Si el destino de los sistemas es anterior a 1809, consulte a continuación.
<DeviceCapability>: el atributo Name debe ser
humanInterfaceDevice
.<Dispositivo>: el atributo Id debe especificar el identificador del dispositivo. Este elemento puede especificar una combinación id. de proveedor (vid) e id. de producto (pid); o bien, puede especificar una cadena
any
genérica . Además,Device Id
puede contener una cadena de proveedor opcional deusb
obluetooth
.- <Función>: el atributo Type especifica la función del dispositivo. Este elemento contiene uno o varios valores de uso de HID. Estos valores constan de y
UsagePage
un elemento opcionalUsageId
, cada uno de los cuales son valores hexadecimales de 16 bits.
- <Función>: el atributo Type especifica la función del dispositivo. Este elemento contiene uno o varios valores de uso de HID. Estos valores constan de y
En los siguientes datos de uso definidos por el proveedor, el dispositivo se identifica mediante la combinación Id. de proveedor e Id. de producto .
<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:0A81 0701">
<Function Type="usage:ffa0 0001"/>
</Device>
</DeviceCapability>
Lo siguiente es idéntico al primero con la excepción de la cadena usb
de proveedor adicional en el Device Id
elemento .
<DeviceCapability Name="humaninterfacedevice">
<Device Id="vidpid:0A81 0701 usb">
<Function Type="usage:ffa0 0001"/>
</Device>
</DeviceCapability>
En los siguientes datos de dispositivo de juegos no hay ningún id. de proveedor ni id. de producto.
<!-- Any gamepad device -->
<DeviceCapability Name="humaninterfacedevice">
<Device Id="any">
<Function Type="usage:0005 *"/>
</Device>
</DeviceCapability>
En el siguiente joystick y los datos del panel de juegos no hay ningún id. de proveedor ni id. de producto
<!-- Any generic gaming device -->
<DeviceCapability Name="humaninterfacedevice">
<Device Id="any">
<Function Type="usage:0004 *"/>
<Function Type="usage:0005 *"/>
</Device>
</DeviceCapability>
Solución de problemas
- Compruebe que la funcionalidad HID (
humanInterfaceDevice
) está en el manifiesto de aplicación. Si un dispositivo de telefonía, asegúrese de que también se incluye lahidTelephony
funcionalidad. - Compruebe que el usuario ha concedido permiso para que la aplicación use HID.
- Compruebe que el tipo de dispositivo no es accesible.
- Los HID inaccesibles pueden seguir siendo enumerados por DeviceInformation.FindAllAsync(), pero no se pueden abrir mediante HumanInterfaceDevice.FromIdAsync(). Al abrir este tipo de dispositivo, se producirá una excepción o se devolverá
null
.
- Los HID inaccesibles pueden seguir siendo enumerados por DeviceInformation.FindAllAsync(), pero no se pueden abrir mediante HumanInterfaceDevice.FromIdAsync(). Al abrir este tipo de dispositivo, se producirá una excepción o se devolverá
- Los dispositivos internos de la máquina (
DEVPKEY_Device_InLocalMachineContainer == TRUE
) no suelen ser accesibles a menos que se ejecuten en una SKU con el modo incrustado ylowLevelDevices
la funcionalidad. - Los dispositivos con pilas que contienen controladores de filtro superior o inferior no suelen ser accesibles. A veces, se agregan por terceros para habilitar la funcionalidad adicional para el hardware personalizado.
- La restricción de dispositivos se determina parcialmente durante
hidclass.sys
la enumeración de dispositivos, que puede establecer la propiedadTRUE
DEVPKEY_DeviceInterface_Restricted
de interfaz de dispositivo en en la interfazGUID_DEVINTERFACE_HID
de dispositivo HID en función de la presencia de filtros de dispositivo o clase. - La presencia de controladores UpperFilter/LowerFilter del dispositivo se puede determinar mediante DeviceManager buscando
UpperFilters
propiedades yLowerFilters
. - La presencia de controladores UpperFilter/LowerFilter de la clase HID se puede determinar mediante DeviceManager buscando
Class upper filters
propiedades yClass lower filters
. - Las propiedades de la interfaz de dispositivo se pueden inspeccionar llamando a
CM_Get_Device_Interface_Property
dondepszDeviceInterface
es la misma cadena que se pasaría a FromIdAsync.
- La restricción de dispositivos se determina parcialmente durante
- Estas restricciones se pueden omitir al realizar un dispositivo personalizado trabajando con el desarrollador de controladores para crear una aplicación de soporte técnico de hardware.
Clases
HidBooleanControl |
Representa un control booleano simple en un dispositivo HID que devuelve valores activados y desactivados. Un ejemplo sería la luz LED en un teclado. |
HidBooleanControlDescription |
Describe un control booleano para un dispositivo HID determinado. |
HidCollection |
Recupera la información de la colección para un grupo de controles relacionados. El protocolo HID usa colecciones para agrupar un conjunto de controles que son similares entre sí, o que están relacionados por proximidad física o operativa. |
HidDevice |
Representa una colección de nivel superior y el dispositivo correspondiente. |
HidFeatureReport |
Representa un informe de características HID. Tanto el dispositivo como el host emiten informes de características. Los dispositivos emiten informes de características para describir sus funcionalidades y la configuración predeterminada para un host. Hospeda informes de características de problemas para realizar solicitudes del dispositivo. |
HidInputReport |
Representa un informe de entrada HID. Los dispositivos emiten informes de entrada para describir los cambios de estado, la entrada del usuario y otros datos específicos del dispositivo. Por ejemplo, un dispositivo de teclado HID usaría un informe de entrada para indicar una pulsación de tecla. Un sensor de presencia HID usaría un informe de entrada para indicar un evento de detección de presencia. |
HidInputReportReceivedEventArgs |
Representa los argumentos que la API HID envía como parte de un evento de informe de entrada. |
HidNumericControl |
Representa un control numérico en un dispositivo HID que devuelve un intervalo de valores. Un ejemplo sería el control de volumen en un altavoz. |
HidNumericControlDescription |
Describe un control numérico para un dispositivo HID determinado. |
HidOutputReport |
Representa un informe de salida HID. Hosts emite informes de salida para solicitar cambios en el dispositivo. Por ejemplo, un host podría emitir una solicitud a un teclado para activar o desactivar un LED. |
Enumeraciones
HidCollectionType |
Identifica la relación que define una agrupación de controles en el dispositivo. Las colecciones son una manera de agrupar un conjunto de controles similares entre sí; o bien, están relacionados por proximidad física o operativa. |
HidReportType |
Especifica un tipo de informe HID. |