Delen via


HID-architectuur

De architectuur van de HID-stuurprogrammastack in Windows is gebouwd op het klassestuurprogramma genaamd hidclass.sys. Clients en transport-minidrivers hebben toegang tot het klassestuurprogramma vanuit de gebruikersmodus of kernel-modus.

Het HID-klassestuurprogramma

Het door het systeem geleverde HID-klassestuurprogramma is het WDM-functiestuurprogramma en busstuurprogramma voor de HID-apparaatinstallatieklasse (HIDClass). Het uitvoerbare onderdeel van het HID-klassestuurprogramma is hidclass.sys. Het HID-klasse stuurprogramma is de verbinding tussen HID-clients en verschillende transportmiddelen, waardoor een HID-client op een manier die onafhankelijk is van transporten kan worden geschreven. Met dit abstractieniveau kunnen klanten blijven werken (met weinig tot geen wijzigingen) wanneer een nieuwe standaard of een transport van derden wordt geïntroduceerd.

Het volgende diagram is een weergave van de HID-architectuur.

Diagram van een vereenvoudigde HID-stuurprogrammastack met HID-clients, het HID-klassestuurprogramma en HID-transportonderdelen.

Het voorgaande diagram bevat:

  • HID-clients : identificeert de Windows- en externe clients en hun interfaces.
  • HID-klassestuurprogramma: het uitvoerbare bestand hidclass.sys.
  • HID transport minidriver - Identificeert de Windows- en externe transporten en hun interfaces.

Hier volgt het apparaatstackdiagram van een algemene HID-client en -transport.

Diagram van een HID-apparaatstack voor een algemene HID-client en -transport.

Hier volgt een ander apparaatstackdiagram met HID-toetsenbord- en muisverzamelingen via USB.

Diagram van een HID-apparaatstack voor een toetsenbord en muis over USB.

HID-clients

De HID-clients zijn stuurprogramma's, services of toepassingen die communiceren met HIDClass.sys en vaak een specifiek type apparaat vertegenwoordigen (bijvoorbeeld sensor, toetsenbord, muis, enzovoort). Ze identificeren het apparaat via een hardware-id of een specifieke HID-verzameling en communiceren met de HID-verzameling via de volgende richtlijnen.

Stuurprogramma's en toepassingen in de gebruikersmodus, en stuurprogramma's in de kernelmodus, doen het volgende om HID-verzamelingen te gebruiken:

  • Stuurprogramma's en toepassingen in de gebruikersmodus maken gebruik van HIDClass-ondersteuningsroutines (HidD_Xxx) om informatie te verkrijgen over een HID-verzameling.
  • Kernelmodusstuurprogramma's, stuurprogramma's voor de gebruikersmodus en toepassingen maken gebruik van HID-parseringsroutines (HidP_Xxx) en stuurprogramma's voor kernelmodus gebruiken IOCTL's voor HID-stuurprogramma's voor het afhandelen van HID-rapporten.

De volgende tabel vereenvoudigt de informatie.

Wijze stuurprogramma's Toepassingen
Gebruikersmodus HidD_Xxx HidP_Xxx
Kernelmodus HidD_Xxx OR IOCTL_HID_xxx Niet van toepassing.

Zie Hid-verzamelingen openen voor meer informatie.

Ondersteunde HID-clients in Windows

Windows ondersteunt de volgende verzamelingen op het hoogste niveau:

Gebruikspagina Gebruik Opmerkingen Toegangsmodus
0x0001 0x0001 - 0x0002 Stuurprogramma van de muisklasse en mapperstuurprogramma Exclusief
0x0001 0x0004 - 0x0005 Gamecontrollers Gedeeld
0x0001 0x0006 - 0x0007 Toetsenbord / toetsenpaneel klasse-stuurprogramma en mapper-stuurprogramma Exclusief
0x0001 0x000C Schakeloptie voor de vluchtmodus Gedeeld
0x0001 0x0080 Systeembesturingselementen (Power) Gedeeld
0x000C 0x0001 Besturingselementen voor consumenten Gedeeld
0x000D 0x0001 Extern penapparaat Exclusief
0x000D 0x0002 Geïntegreerd penapparaat Exclusief
0x000D 0x0004 Aanraakscherm Exclusief
0x000D 0x0005 Precisie-touchpad (PTP) Exclusief
0x0020 Veelvoud Sensoren Gedeeld
0x0084 0x0004 HID UPS-batterij Gedeeld
0x008C 0x0002 Streepjescodescanner (hidscanner.dll) Gedeeld

In de voorgaande tabel is de toegangsmodus voor invoer-HID-clients exclusief om te voorkomen dat andere HID-clients de status van globale invoer onderscheppen of ontvangen wanneer ze niet de doelontvanger van die invoer zijn. Om veiligheidsredenen opent Raw Input Manager (RIM) alle dergelijke apparaten uitsluitend.

Als RIM een apparaat in de exclusieve modus opent, kan de gebruiker nog steeds een HID-apparaatinterface openen zonder lees- en schrijfmachtigingen aan te vragen en HID-apparaatgegevens te verkrijgen via HIDClass-ondersteuningsroutines (HidD_GetXxx).

Met de modus Delen kunnen meerdere toepassingen toegang krijgen tot een apparaat. Meerdere toepassingen hebben bijvoorbeeld toegang tot een streepjescodescanner om informatie te verkrijgen over de mogelijkheden van apparaten en statistieken op te halen. Het ophalen van gedecodeerde gegevens van een streepjescodescanner wordt echter uitgevoerd in de exclusieve modus. Gebruiksrechten worden gedefinieerd in de USB-IF gebruikstabellen.

*Meerdere: sensoren van 0x00 – 0xFF zijn gesegmenteerd voor verschillende doeleinden. 0x10 geeft bijvoorbeeld een biometrische sensor aan; 0x40 geeft een lichtsensor aan. Deze toewijzingen zijn niet aaneengesloten. Zie USB-IF Device Class Definitions voor HID voor de lijst met sensorgebruiken. Zie HID Sensors Usages voor informatie over het gebruik van sensoren die worden ondersteund in Windows.

De HID-transportstuurprogramma

Het HID-klassestuurprogramma is ontworpen om HID-minidrivers te gebruiken voor toegang tot een hardware-invoerapparaat. Een HID minidriver abstraheert de apparaatspecifieke werking van de invoerapparaten die worden ondersteund. De HID minidriver koppelt zijn werking aan het HID-klassestuurprogramma door zich te registreren bij het HID-klassestuurprogramma. Het HID-klassestuurprogramma communiceert met een HID mini-stuurprogramma door de ondersteuningsroutines van het mini-stuurprogramma aan te roepen. De HID-minidriver stuurt op zijn beurt communicatie langs de stuurprogrammastack naar het onderliggende bus- of poortstuurprogramma.

HID-transporten ondersteund in Windows

Zie het HID-transportoverzicht voor een lijst met ondersteunde HID-transporten.

USB Generic HID Test in de Windows Hardware Lab Kit (HLK) behandelt HidUsb- en HidClass-stuurprogramma's. Er is geen HLK-test voor HID-minidrivers van derden.