Architecture HID
L’architecture de la pile de pilotes HID dans Windows est basée 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 de configuration 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 collage entre les clients HID et divers transports, ce qui 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 à aucune modification) lorsqu’un nouveau standard ou un transport tiers est introduit.
Le diagramme suivant est une représentation de l’architecture HID.
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 .
- Minidriver de transport HID : identifie les transports Windows et tiers et leurs interfaces.
Voici le diagramme de pile d’appareils d’un client HID générique et du transport.
Voici un autre diagramme de pile d’appareils montrant les collections de clavier et de souris HID sur USB.
Clients HID
Les clients HID sont des pilotes, des services ou des applications qui communiquent avec HIDClass.sys et représentent souvent un type spécifique d’appareil (par exemple, capteur, clavier, souris, etc.). Ils identifient l’appareil via un ID matériel ou une collection HID spécifique et communiquent avec la collection HID via les instructions suivantes.
Les pilotes et les applications en mode utilisateur, ainsi que les pilotes en mode noyau, effectuent les opérations suivantes pour utiliser des collections 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 en mode utilisateur et les applications utilisent des routines de prise en charge de l’analyse HID (HidP_Xxx), et les pilotes en mode noyau utilisent des iocTLs de pilotes de classe HID pour gérer les rapports HID.
Le tableau suivant simplifie les informations.
Mode | Pilotes | Applications |
---|---|---|
Mode utilisateur | HidD_Xxx | HidP_Xxx |
Mode noyau | HidD_Xxx OR IOCTL_HID_xxx | S/O |
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 Utilisation | Utilisation | Notes | Mode d’accès |
---|---|---|---|
0x0001 | 0x0001 - 0x0002 | Pilote de classe souris et pilote de mappeur | Exclusif |
0x0001 | 0x0004 - 0x0005 | Contrôleurs de jeu | Partagés |
0x0001 | 0x0006 - 0x0007 | Pilote de classe clavier / Clavier clavier et pilote de mappeur | Exclusif |
0x0001 | 0x000C | Commutateur en mode version d’évaluation | Partagés |
0x0001 | 0x0080 | Contrôles système (Power) | Partagés |
0x000C | 0x0001 | Contrôles consommateur | Partagés |
0x000D | 0x0001 | Périphérique de stylet externe | Exclusif |
0x000D | 0x0002 | Appareil de stylet intégré | Exclusif |
0x000D | 0x0004 | Touchscreen | Exclusif |
0x000D | 0x0005 | Pavé tactile de précision (PTP) | Exclusif |
0x0020 | *Multiple | Capteurs | Partagés |
0x0084 | 0x0004 | BATTERIE HID UPS | Partagés |
0x008C | 0x0002 | Scanneur de codes-barres (hidscanner.dll) | Partagés |
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é, le Gestionnaire d’entrée brut (RIM) ouvre tous ces appareils exclusivement.
Si RIM ouvre un appareil en mode exclusif , l’utilisateur peut toujours ouvrir une interface d’appareil HID sans demander d’autorisations de lecture et d’écriture et obtenir des informations d’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 vous 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 est effectuée en mode exclusif . Les utilisations sont définies dans les tables d’utilisation USB-IF.
*Multiple : les utilisations des capteurs de 0x00 – 0xFF sont segmentées à des fins différentes. Par exemple, 0x10 indique un capteur biométrique ; 0x40 indique un capteur lumineux. Ces allocations ne sont pas contiguës. Pour obtenir la liste des utilisations du capteur, consultez les 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.
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ériel. Un minidriver HID extrait l’opération spécifique à l’appareil des appareils 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 envoie à son tour les communications vers la pile des pilotes vers un bus ou un pilote de port sous-jacent.
Transports HID pris en charge dans Windows
Pour obtenir la liste des transports HID pris en charge, consultez la vue d’ensemble du transport HID.
Le test HID générique USB dans le Kit de laboratoire matériel Windows (HLK) couvre les pilotes HidUsb et HidClass. Il n’existe aucun test HLK pour les minidrivers HID tiers.