HID Architecture
L’architecture de la pile de pilotes HID dans Windows repose sur le pilote de classe nommé hidclass.sys. Les clients et les minidrivers de transport accèdent au pilote de classe à partir du mode utilisateur ou du mode noyau.
Pilote de classe HID
Le pilote de classe HID fourni par le système est le pilote de fonction WDM et le pilote de bus pour la classe d’installation de périphérique HID (HIDClass). Le composant exécutable du pilote de classe HID est hidclass.sys. Le pilote de classe HID est le lien entre les clients HID et divers transports. Cela permet à un client HID d’être écrit de manière indépendante des transports. Ce niveau d’abstraction permet aux clients de continuer à travailler (avec peu ou pas de modifications) lorsqu’une nouvelle norme ou un transport tiers est introduit.
Voici une représentation architecturale.
Le diagramme précédent comprend les éléments suivants :
- Clients HID : identifie les clients Windows et tiers et leurs interfaces.
- Pilote de classe HID : exécutable hidclass.sys .
- Hid Transport Minidriver : identifie les transports Windows et tiers et leurs interfaces.
Voici le diagramme de pile d’appareils d’un client hid générique et d’un transport.
Voici un autre diagramme de pile d’appareils montrant les regroupements de claviers et de souris HID sur USB.
HID Clients
Les clients HID sont des pilotes, des services ou des applications qui communiquent avec HIDClass.sys et représentent souvent un type d’appareil spécifique (par exemple, capteur, clavier, souris, etc.). Ils identifient l’appareil via un ID matériel ou un regroupement HID spécifique et communiquent avec la collection HID via les instructions suivantes.
Les pilotes et applications en mode utilisateur, ainsi que les pilotes en mode noyau, procédez comme suit pour utiliser les regroupements HID :
- Les pilotes et applications en mode utilisateur utilisent des routines de prise en charge HIDClass (HidD_Xxx) pour obtenir des informations sur une collection HID.
- Les pilotes en mode noyau, les pilotes et les applications en mode utilisateur utilisent des routines de prise en charge de l’analyse HID (HidP_Xxx), et les pilotes en mode noyau utilisent des IOCTL de pilotes de classe HID pour gérer les rapports HID.
Le tableau suivant simplifie les informations répertoriées ci-dessus.
Mode | Pilotes | Applications |
---|---|---|
Mode utilisateur | HidD_Xxx | HidP_Xxx |
Mode noyau | HidD_Xxx OU IOCTL_HID_xxx | N/A |
Pour plus d’informations, consultez Ouverture de collections HID.
Clients HID pris en charge dans Windows
Windows prend en charge les collections de niveau supérieur suivantes :
Page d’utilisation | Utilisation | Windows 7 | Windows 8 | Windows 10 | Notes | Mode d’accès |
---|---|---|---|---|---|---|
0x0001 | 0x0001 - 0x0002 | Oui | Oui | Oui | Pilote de classe de souris et pilote de mappeur | Exclusif |
0x0001 | 0x0004 - 0x0005 | Oui | Oui | Oui | Contrôleurs de jeu | Partagé |
0x0001 | 0x0006 - 0x0007 | Oui | Oui | Oui | Pilote de classe clavier/clavier et pilote de mappeur | Exclusif |
0x0001 | 0x000C | Non | Oui | Oui | Commutateur de mode de vol | Partagé |
0x0001 | 0x0080 | Oui | Oui | Oui | Contrôles système (alimentation) | Partagé |
0x000C | 0x0001 | Oui | Oui | Oui (pour les Windows 10 et les Windows 10 Mobile) | Contrôles consommateur | Partagé (pour les Windows 10 et les Windows 10 Mobile) |
0x000D | 0x0001 | Oui | Oui | Oui | Périphérique de stylet externe | Exclusif |
0x000D | 0x0002 | Oui | Oui | Oui | Périphérique de stylet intégré | Exclusif |
0x000D | 0x0004 | Oui | Oui | Oui | Touchscreen | Exclusif |
0x000D | 0x0005 | Non | Oui | Oui | Pavé tactile de précision (PTP) | Exclusif |
0x0020 | *Plusieurs | Non | Oui | Oui | Capteurs | Partagé |
0x0084 | 0x0004 | Oui | Oui | Oui | Batterie HID UPS | Partagé |
0x008C | 0x0002 | Non | Oui (Windows 8.1 et versions ultérieures) | Yes | Scanneur de codes-barres (hidscanner.dll) | Partagé |
Dans le tableau précédent, le mode d’accès pour les clients HID d’entrée est exclusif pour empêcher d’autres clients HID d’intercepter ou de recevoir l’état d’entrée global lorsqu’ils ne sont pas le destinataire cible de cette entrée. Pour des raisons de sécurité, Raw Input Manager (RIM) ouvre tous ces appareils exclusivement.
Si un appareil est ouvert en mode exclusif par RIM, l’utilisateur peut toujours ouvrir une interface d’appareil HID sans demander des autorisations de lecture et d’écriture et obtenir des informations sur l’appareil HID via les routines de support HIDClass (HidD_GetXxx).
Le mode de partage permet à plusieurs applications d’accéder à un appareil. Par exemple, plusieurs applications peuvent accéder à un scanneur de codes-barres pour se renseigner sur les fonctionnalités de l’appareil et récupérer des statistiques. Toutefois, la récupération des données décodées à partir d’un scanneur de codes-barres s’effectue en mode exclusif . Les utilisations sont définies par les tables d’utilisation USB-IF.
*Multiple : utilisations des capteurs à partir de 0x00 : les 0xFF sont segmentées à des fins différentes. Par exemple, 0x10 indique un capteur biométrique ; 0x40 indique un capteur de lumière. Ces allocations ne sont pas contiguës. Pour obtenir la liste des utilisations des capteurs, consultez Définitions de classe de périphérique USB-IF pour HID. Pour plus d’informations sur les utilisations des capteurs prises en charge dans Windows, consultez Utilisations des capteurs HID.
Le pilote de transport HID
Le pilote de classe HID est conçu pour utiliser des minidrivers HID pour accéder à un périphérique d’entrée matérielle. Un minidriver HID extrait l’opération spécifique à l’appareil des périphériques d’entrée qu’il prend en charge. Le minidriver HID lie son opération au pilote de classe HID en s’inscrivant auprès du pilote de classe HID. Le pilote de classe HID communique avec un minidriver HID en appelant les routines de support du minidriver. Le minidriver HID, à son tour, envoie des communications dans la pile des pilotes à un pilote de bus ou de port sous-jacent.
Transports HID pris en charge dans Windows
Consultez cette page pour obtenir la liste des transports HID pris en charge.
Le test HID générique USB dans le kit HLK (Windows Hardware Lab Kit) couvre les pilotes HidUsb et HidClass. Il n’existe aucun test HLK pour les mini-pilotes HID tiers.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour