Share via


WDM-Treiberebenen: Ein Beispiel

In diesem Abschnitt wird ein möglicher Satz von WDM-Treibern für USB-Hardware beschrieben, um WDM-Treiberebenen zu veranschaulichen.

Die folgende Abbildung zeigt ein Beispiel für die PnP-Hardwarekonfiguration für einen USB-Joystick.

Diagramm zur Veranschaulichung der Plug-and-Play-Beispielhardware für einen USB-Joystick.

In dieser Abbildung wird der USB-Joystick an einen Anschluss an einem USB-Hub angeschlossen. Der USB-Hub in diesem Beispiel befindet sich auf der USB-Hostcontroller-Platine und ist an den einzelnen Anschluss des USB-Hostcontrollerboards angeschlossen. Der USB-Hostcontroller wird an einen PCI-Bus angeschlossen. Aus PnP-Sicht sind der USB-Hub, der USB-Hostcontroller und der PCI-Bus alle Busgeräte, da sie jeweils Ports bereitstellen. Der Joystick ist kein Busgerät.

Die folgende Abbildung zeigt einen Beispielsatz von Treibern, die für die USB-Joystickhardware in der vorherigen Abbildung geladen werden können.

Diagramm zur Veranschaulichung von Plug-and-Play-Treiberebenen für einen USB-Joystick.

Beginnend am Unteren Rand der vorherigen Abbildung umfassen die Treiber im Beispielstapel Folgendes:

  • Ein PCI-Treiber, der den PCI-Bus antreibt. Dies ist ein PnP-Bustreiber. Der PCI-Bustreiber wird mit dem System von Microsoft bereitgestellt.

  • Der Bustreiber für den USB-Hostcontroller wird als Klassen-/Miniklassentreiberpaar implementiert. Die USB-Hostcontroller-Klasse und Miniklassentreiber werden mit dem System von Microsoft bereitgestellt.

  • Der USB-Hubbustreiber, der den USB-Hub antreibt. Der USB-Hubtreiber wird mit dem System von Microsoft bereitgestellt.

  • Drei Treiber für das Joystick-Gerät; eines davon ist ein Klassen-/Miniklassenpaar.

    Der Funktionstreiber, der Standard Treiber für das Joystickgerät, ist das HID-Klassentreiber-/HID-USB-Miniklassentreiberpaar. (HID steht für "Human Interface Device".) Der HID-USB-Miniklassentreiber unterstützt die USB-spezifische Semantik von HID-Geräten, wobei die HID-Klassentreiber-DLL für die allgemeine HID-Unterstützung verwendet wird.

    Ein Funktionstreiber kann für ein bestimmtes Gerät spezifisch sein, oder wie im Fall von HID kann ein Funktionstreiber eine Gruppe von Geräten bedienen. In diesem Beispiel werden vom HID-Klassentreiber-/HID-USB-Miniklassentreiberpaar alle HID-konformen Geräte im System auf einem USB-Bus verwendet. Ein HID-Klassentreiber-/HID 1394-Miniklassentreiberpaar würde jedes HID-konforme Gerät auf einem 1394-Bus bedienen.

    Ein Funktionstreiber kann vom Gerätehersteller oder von Microsoft geschrieben werden. In diesem Beispiel wird der Funktionstreiber (das HID-Klasse/HID-USB-Miniklassentreiberpaar) von Microsoft geschrieben.

    In diesem Beispiel gibt es zwei Filtertreiber für das Joystickgerät: einen Klassenfilter der oberen Ebene, der eine Makroschaltfläche hinzufügt, und einen Gerätefilter auf niedrigerer Ebene, mit dem der Joystick ein Mausgerät emulieren kann.

    Der Filter der oberen Ebene wird von einer Person geschrieben, die die Joystick-E/A filtern muss, und der Filtertreiber der unteren Ebene wird vom Joystickanbieter geschrieben.

  • Die HID-Clients für Kernelmodus und Benutzermodus und die Anwendung sind keine Treiber, werden jedoch aus Gründen der Vollständigkeit angezeigt.