Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
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.
Hier volgt een ander apparaatstackdiagram met HID-toetsenbord- en muisverzamelingen via 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.