Freigeben über


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 eine PnP-Hardwarekonfiguration für einen USB-Joystick.

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

In dieser Abbildung wird der USB-Joystick an einen Anschluss auf einem USB-Hub angeschlossen. Der USB-Hub in diesem Beispiel befindet sich auf dem USB-Hostcontroller-Board und ist an den einzelnen Anschluss auf dem USB-Hostcontrollerboard angeschlossen. Der USB-Hostcontroller ist 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 Anschlüsse bereitstellen. Der Joystick ist kein Busgerät.

Die folgende Abbildung zeigt einen Beispielsatz von Treibern, die möglicherweise für die USB-Joystick-Hardware in der vorherigen Abbildung geladen werden.

Diagramm, das die Sample Plug-and-Play-Treiberschichten für einen USB-Joystick veranschaulicht.

Beginnend am unteren Rand der vorherigen Abbildung enthalten die Treiber im Beispielstapel:

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

  • Der Bustreiber für den USB-Hostcontroller wird als Klassen-/Miniklassentreiberpaar implementiert. Die USB-Hostcontrollerklasse und Miniclass-Treiber werden vom System von Microsoft bereitgestellt.

  • Der USB-Hubbustreiber, der den USB-Hub steuert. Der USB-Hubtreiber wird vom System von Microsoft bereitgestellt.

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

    Der Funktionstreiber, der Haupttreiber für das Joystickgerät, ist das Treiberpaar bestehend aus dem HID-Klassentreiber und dem HID-USB-Miniklassentreiber. (HID stellt "Human Interface Device" dar.) Der HID-USB-Miniklassentreiber unterstützt die USB-spezifische Semantik von HID-Geräten, die auf die HID-Klassentreiber-DLL für die allgemeine HID-Unterstützung angewiesen ist.

    Ein Funktionstreiber kann für ein bestimmtes Gerät spezifisch sein, oder, wie bei HID, kann ein Funktionstreiber eine Gruppe von Geräten bedienen. In diesem Beispiel bedient das HID-Klassentreiber-/HID-USB-Miniklassentreiberpaar jedes HID-konforme Gerät im System auf einem USB-Bus. Ein Paar aus einem HID-Klassentreiber und einem HID-1394-Miniklassentreiber würde jedes HID-kompatible Gerät auf einem 1394-Bus unterstützen.

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

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

    Der Filter der oberen Ebene wird von jemandem geschrieben, der den Joystick I/O filtern muss, und der Filtertreiber der unteren Ebene wird vom Joystickanbieter geschrieben.

  • Die Kernelmodus- und BENUTZERmodus-HID-Clients und die Anwendung sind keine Treiber, sondern werden zur Vollständigkeit angezeigt.