Freigeben über


HID-Architektur

Die Architektur des HID-Treiberstapels in Windows basiert auf dem Klassentreiber namens hidclass.sys. Clients und Transportminitreiber greifen aus dem Benutzermodus oder Kernelmodus auf den Klassentreiber zu.

Der HID-Klassentreiber

Der vom System bereitgestellte HID-Klassentreiber ist der WDM-Funktionstreiber und Bustreiber für die HID-Geräteeinrichtungsklasse (HIDClass). Die ausführbare Komponente des HID-Klassentreibers ist hidclass.sys. Der HID-Klassentreiber ist das Bindeglied zwischen HID-Clients und verschiedenen Transportmedien, sodass ein HID-Client unabhängig von Transportmedien geschrieben werden kann. Diese Abstraktionsebene ermöglicht Es Clients, weiterhin (mit wenig bis ohne Änderungen) zu arbeiten, wenn ein neuer Standard oder ein Drittanbietertransport eingeführt wird.

Das folgende Diagramm ist eine Darstellung der HID-Architektur.

Diagramm eines vereinfachten HID-Driver-Stacks, der HID-Clients, den HID-Klassentreiber und die HID-Transportkomponenten zeigt.

Das vorangehende Diagramm enthält:

  • HID-Clients – Identifiziert die Windows- und Drittanbieterclients und deren Schnittstellen.
  • HID-Klassentreiber – Die hidclass.sys ausführbare Datei.
  • HID-Transport-Minidriver – Er erkennt die Windows- und Drittanbietertransporte und deren Schnittstellen.

Hier sehen Sie das Gerätestapeldiagramm eines generischen HID-Clients und -Transports.

Diagramm eines HID-Gerätestapels für einen generischen HID-Client und -Transport.

Hier ist ein weiteres Diagramm eines Gerätestapels, das HID-Tastatur- und Mauskollektionen über USB zeigt.

Diagramm eines HID-Gerätestapels für eine Tastatur und Maus über USB.

HID-Clients

Die HID-Clients sind Treiber, Dienste oder Anwendungen, die mit HIDClass.sys kommunizieren und häufig einen bestimmten Gerätetyp darstellen (z. B. Sensor, Tastatur, Maus usw.). Sie identifizieren das Gerät über eine Hardware-ID oder eine bestimmte HID-Sammlung und kommunizieren mit der HID-Sammlung über die folgende Anleitung.

Benutzermodustreiber und Benutzeranwendungen sowie Kernelmodustreiber führen die folgenden Schritte aus, um HID-Sammlungen zu betreiben.

  • Benutzermodustreiber und -anwendungen verwenden HIDClass-Supportroutinen (HidD_Xxx), um Informationen zu einer HID-Sammlung zu erhalten.
  • Kernelmodustreiber, Benutzermodustreiber und Anwendungen verwenden HID-Analyseunterstützungsroutinen (HidP_Xxx), und Kernelmodustreiber verwenden HID-Klassentreiber-IOCTLs, um HID-Berichte zu verarbeiten.

Die folgende Tabelle vereinfacht die Informationen.

Modus Fahrer Anträge
Benutzermodus HidD_Xxx HidP_Xxx
Kernelmodus HidD_Xxx ODER IOCTL_HID_xxx Nicht verfügbar

Weitere Informationen finden Sie unter Öffnen von HID-Auflistungen.

HID-Clients, die in Windows unterstützt werden

Windows unterstützt die folgenden Auflistungen der obersten Ebene:

Verwendungsseite Verwendung Hinweise Zugriffsmodus
0x0001 0x0001 - 0x0002 Mausklassentreiber und Mapper-Treiber Exklusiv
0x0001 0x0004 - 0x0005 Spielsteuergeräte Geteilt
0x0001 0x0006 - 0x0007 Tastatur-/Tastaturklassentreiber und Mappertreiber Exklusiv
0x0001 0x000C Flugmodusschalter Geteilt
0x0001 0x0080 Systemsteuerelemente (Strom) Geteilt
0x000C 0x0001 Verbrauchersteuerungen Geteilt
0x000D 0x0001 Externes Stiftgerät Exklusiv
0x000D 0x0002 Integriertes Stiftgerät Exklusiv
0x000D 0x0004 Berührungsbildschirm Exklusiv
0x000D 0x0005 Präzisionstouchpad (PTP) Exklusiv
0x0020 *Mehrfach Sensoren Geteilt
0x0084 0x0004 HID UPS Akku Geteilt
0x008C 0x0002 Strichcodescanner (hidscanner.dll) Geteilt

In der vorherigen Tabelle ist der Zugriffsmodus für HID-Eingabeclients exklusiv , um zu verhindern, dass andere HID-Clients den globalen Eingabezustand abfangen oder empfangen, wenn sie nicht der Zielempfänger dieser Eingabe sind. Aus Sicherheitsgründen öffnet Raw Input Manager (RIM) alle diese Geräte ausschließlich.

Wenn RIM ein Gerät im exklusiven Modus öffnet, kann der Benutzer weiterhin eine HID-Geräteschnittstelle öffnen, ohne Lese- und Schreibberechtigungen anzufordern und HID-Geräteinformationen über HIDClass-Supportroutinen (HidD_GetXxx) abzurufen.

Der Freigabemodus ermöglicht mehreren Anwendungen den Zugriff auf ein Gerät. Beispielsweise können mehrere Anwendungen auf einen Strichcodescanner zugreifen, um sich über Gerätefunktionen zu erkundigen und Statistiken abzurufen. Das Abrufen decodierter Daten von einem Strichcodescanner erfolgt jedoch im exklusiven Modus. Verwendungen werden in den USB-IF Verwendungstabellen definiert.

*Multiple: Sensornutzungen aus 0x00 – 0xFF werden zu unterschiedlichen Zwecken segmentiert. Beispielsweise gibt 0x10 einen biometrischen Sensor an; 0x40 gibt einen Lichtsensor an. Diese Zuordnungen sind nicht zusammenhängend. Eine Liste der Sensorverwendungen finden Sie unter USB-IF Geräteklassendefinitionen für HID. Informationen zu Sensorennutzungen, die in Windows unterstützt werden, finden Sie unter HID Sensors Usages.

Der HID-Transporttreiber

Der HID-Klassentreiber wurde für den Zugriff auf ein Hardwareeingabegerät mit HID-Minidrivern entwickelt. Ein HID-Minidriver abstrahiert den gerätespezifischen Betrieb der von ihm unterstützten Eingabegeräte. Der HID-Minidriver bindet seinen Vorgang an den HID-Klassentreiber, indem er sich beim HID-Klassentreiber registriert. Der HID-Klassentreiber kommuniziert mit einem HID-Minidriver, indem er die Supportroutinen des Minidrivers aufruft. Der HID-Minidriver sendet wiederum die Kommunikation nach unten an einen zugrunde liegenden Bus- oder Porttreiber.

HID-Transporte, die in Windows unterstützt werden

Eine Liste der unterstützten HID-Transporte finden Sie in der HID-Transportübersicht.

USB Generic HID Test im Windows Hardware Lab Kit (HLK) deckt HidUsb- und HidClass-Treiber ab. Es gibt keinen HLK-Test für HID-Minidriver von Drittanbietern.