Windows.Devices.HumanInterfaceDevice Espace de noms

Cet espace de noms permet à votre application UWP d’accéder aux appareils qui prennent en charge le protocole HID (Human Interface Device).

Prise en charge des appareils

Cet espace de noms prend en charge la plupart des HID. Toutefois, il ne fournit pas l’accès aux collections d’applications de niveau supérieur (TLC) représentées par les utilisations suivantes.

Utilisations inaccessibles.

UsagePage UsageIds
HID_USAGE_PAGE_UNDEFINED (0x00) Tous
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) Tous
HID_USAGE_PAGE_CONSUMER (0x0C) Tous
HID_USAGE_PAGE_DIGITIZER (0x0D) Tous
HID_USAGE_PAGE_SENSOR (0x20) Tous
HID_USAGE_PAGE_LIGHTING_ILLUMINATION (0x59) HID_USAGE_LAMPARRAY (0x01)

Fonctionnalités de l’appareil d’interface humaine

Une application UWP qui accède à un fichier HID doit inclure des données de capacité d’appareil spécifiques dans le nœud de fonctionnalités de son manifeste. Ces données identifient l’appareil et son objectif (ou fonction). Notez que certains appareils peuvent avoir plusieurs fonctions.

Depuis Windows 10, version 1809 (mise à jour d’octobre 2018)

<DeviceCapability Name="humanInterfaceDevice"/>

Si vous ciblez un appareil de téléphonie HID (UsagePage==0x0B), la fonctionnalité hidTelephony supplémentaire doit également être spécifiée.

<DeviceCapability Name="humanInterfaceDevice"/>
<DeviceCapability Name="hidTelephony"/>

Avant Windows 10, version 1809 (mise à jour d’octobre 2018)

Depuis 1809, le ProductId vendorId/ et le type de fonction n’ont plus besoin d’être spécifiés et seront ignorés sur les systèmes plus récents. Si vous ciblez des systèmes avant 1809, voir ci-dessous.

  • <DeviceCapability> : l’attribut Name doit être humanInterfaceDevice.

    • <Appareil> : l’attribut Id doit spécifier l’identificateur de l’appareil. Cet élément peut spécifier une combinaison d’ID de fournisseur (vid) et d’ID de produit (pid) ; ou bien, il peut spécifier une chaîne anygénérique . En outre, peut Device Id contenir une chaîne de fournisseur facultative de usb ou bluetooth.

      • <Fonction> : l’attribut Type spécifie la fonction d’appareil. Cet élément contient une ou plusieurs valeurs d’utilisation HID. Ces valeurs se composent d’un UsagePage et d’un facultatif UsageId, qui sont chacune des valeurs hexadécimales 16 bits.

Dans les données d’utilisation définies par le fournisseur suivantes, l’appareil est identifié par la combinaison ID de fournisseur et ID de produit .

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

L’élément suivant est identique au premier, à l’exception de la chaîne usb de fournisseur supplémentaire dans l’élément Device Id .

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:0A81 0701 usb">
      <Function Type="usage:ffa0 0001"/>
    </Device>
</DeviceCapability>

Dans les données d’appareil de jeu suivantes, il n’y a pas d’ID de fournisseur et d’ID de produit.

<!-- Any gamepad device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

Dans les données de manette de jeu et de manette de jeu suivantes, il n’y a pas d’ID de fournisseur et d’ID de produit

<!-- Any generic gaming device  -->
<DeviceCapability Name="humaninterfacedevice">
    <Device Id="any">
      <Function Type="usage:0004 *"/>
      <Function Type="usage:0005 *"/>
    </Device>
</DeviceCapability>

Résolution des problèmes

  • Vérifiez que la fonctionnalité HID (humanInterfaceDevice) figure dans le manifeste de l’application. Si vous utilisez un appareil de téléphonie, vérifiez que la hidTelephony fonctionnalité est également incluse.
  • Vérifiez que l’utilisateur a accordé l’autorisation à l’application d’utiliser des HID.
  • Vérifiez que le type d’appareil n’est pas désigné comme inaccessible.
  • Les appareils internes à l’ordinateur (DEVPKEY_Device_InLocalMachineContainer == TRUE) ne sont généralement pas accessibles, sauf s’ils s’exécutent sur une référence SKU avec le mode et lowLevelDevices la fonctionnalité incorporés.
  • Les appareils avec des piles qui contiennent des pilotes de filtre supérieur/inférieur ne sont généralement pas accessibles. Ceux-ci sont parfois ajoutés par des tiers pour activer des fonctionnalités supplémentaires pour le matériel personnalisé.
    • La restriction d’appareil est partiellement déterminée par hidclass.sys lors de l’énumération de l’appareil, ce qui peut définir la propriété DEVPKEY_DeviceInterface_RestrictedTRUE d’interface de l’appareil sur sur l’interface GUID_DEVINTERFACE_HID d’appareil HID en fonction de la présence de filtres d’appareil/classe.
    • La présence de pilotes UpperFilter/LowerFilter d’appareil peut être déterminée à l’aide de DeviceManager en recherchant UpperFilters les propriétés et LowerFilters .
    • La présence de pilotes UpperFilter/LowerFilter de classe HID peut être déterminée à l’aide de DeviceManager en recherchant Class upper filters des propriétés et Class lower filters .
    • Les propriétés de l’interface d’appareil peuvent être inspectées en appelant CM_Get_Device_Interface_PropertypszDeviceInterface est la même chaîne que celle qui serait passée à FromIdAsync.
  • Ces restrictions peuvent être contournées lors de la création d’un appareil personnalisé en travaillant avec le pilote-développeur pour créer une application de support matériel

Classes

HidBooleanControl

Représente un contrôle booléen simple sur un appareil HID qui retourne des valeurs activées/désactivées. Par exemple, le voyant LED d’un clavier.

HidBooleanControlDescription

Décrit un contrôle booléen pour un appareil HID donné.

HidCollection

Récupère les informations de collecte pour un groupe de contrôles associés.

Le protocole HID utilise des regroupements pour regrouper un ensemble de contrôles qui sont similaires les uns aux autres, ou qui sont liés par la proximité physique ou opérationnelle.

HidDevice

Représente une collection de niveau supérieur et l’appareil correspondant.

HidFeatureReport

Représente un rapport de fonctionnalités HID.

Les rapports de fonctionnalités sont émis par l’appareil et l’hôte. Les appareils émettent des rapports de fonctionnalités pour décrire leurs fonctionnalités et leurs paramètres par défaut à un hôte. Héberge des rapports de fonctionnalités de problème pour effectuer des demandes de l’appareil.

HidInputReport

Représente un rapport d’entrée HID.

Les appareils émettent des rapports d’entrée pour décrire les modifications d’état, l’entrée utilisateur et d’autres données spécifiques à l’appareil. Par exemple, un périphérique clavier HID utilise un rapport d’entrée pour signaler une pression sur la touche. Un capteur de présence HID utilise un rapport d’entrée pour signaler un événement de détection de présence.

HidInputReportReceivedEventArgs

Représente les arguments que l’API HID envoie dans le cadre d’un événement input-report.

HidNumericControl

Représente un contrôle numérique sur un appareil HID qui retourne une plage de valeurs. Par exemple, le contrôle de volume sur un haut-parleur.

HidNumericControlDescription

Décrit un contrôle numérique pour un appareil HID donné.

HidOutputReport

Représente un rapport de sortie HID.

Les hôtes émettent des rapports de sortie pour demander des modifications sur l’appareil. Par exemple, un hôte peut envoyer une demande à un clavier pour activer ou désactiver une LED.

Énumérations

HidCollectionType

Identifie la relation qui définit un regroupement de contrôles sur l’appareil.

Les regroupements permettent de regrouper un ensemble de contrôles similaires les uns aux autres ; ou sont liés par la proximité physique ou opérationnelle.

HidReportType

Spécifie un type de rapport HID.

Voir aussi