Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Abschnitt werden die Geräteobjekte beschrieben, die von einer Reihe von Treibern für USB-Hardware erstellt werden können. Der Text veranschaulicht WDM-Geräteobjekte und wie sie in Schichten angeordnet sind.
Die folgende Abbildung zeigt die Geräteobjekte, die von den Beispieltreibern erstellt werden. Weitere Informationen finden Sie unter WDM-Treiberebenen: Ein Beispiel.
Ab dem unteren Rand dieser Abbildung umfassen die Geräteobjekte in den Beispielgerätestapeln:
Ein PDO und ein FDO für den PCI-Bus.
Der Stammbustreiber listet den internen Systembus (den Stammbus) auf und erstellt für jedes gefundene Gerät einen PDO. Einer dieser PDOs ist für den PCI-Bus. (Die Abbildung zeigt nicht die PDO und FDO für den Stammbus.)
Der PnP-Manager identifiziert den PCI-Treiber als Funktionstreiber für den PCI-Bus, lädt den Treiber (sofern er noch nicht geladen ist), und übergibt den PDO an den PCI-Treiber. In seiner AddDevice-Routine erstellt der PCI-Treiber einen FDO für den PCI-Bus (IoCreateDevice) und fügt den FDO an den Gerätestapel (IoAttachDeviceToDeviceStack) für den PCI-Bus an. Der PCI-Treiber erstellt und fügt diesen FDO als Teil seiner Verantwortlichkeiten als Funktionstreiber für den PCI-Bus an.
Dieses Beispiel enthält keine Filtertreiber für den PCI-Bus.
Ein PDO (Physical Device Object) und ein FDO (Functional Device Object) für den USB-Hostcontroller.
Der PnP-Manager leitet den PCI-Treiber an, um sein Gerät (IRP_MN_START_DEVICE) zu starten und fragt dann den PCI-Treiber nach seinen untergeordneten Elementen ab (IRP_MN_QUERY_DEVICE_RELATIONS mit dem Beziehungstyp von BusRelations). Als Reaktion zählt der PCI-Treiber die Geräte auf seinem Bus auf. In diesem Beispiel findet der PCI-Treiber einen USB-Hostcontroller und erstellt einen PDO für dieses Gerät. Der breite Pfeil in der Abbildung zeigt an, dass der USB-Hostcontroller ein "untergeordnetes" Element des PCI-Bus ist. Der PCI-Treiber erstellt PDOs für seine untergeordneten Geräte als Teil seiner Verantwortlichkeiten als Bustreiber für den PCI-Bus.
Der PnP-Manager identifiziert das USB-Hostcontroller-Miniklassen-/Klassentreiberpaar als den Funktionstreiber für den USB-Hostcontroller und lädt es. Der PnP-Manager ruft das Treiberpaar zur entsprechenden Zeit auf, um einen FDO für den USB-Hostcontroller zu erstellen und anzufügen.
Dieses Beispiel enthält keine Filtertreiber für den USB-Hostcontroller.
Ein PDO und ein FDO für den USB-Hub.
Der USB-Hostcontroller listet seinen Bus auf, sucht den USB-Hub im alleinigen Anschluss und erstellt einen PDO für den Hub. Der USB-Hubtreiber erstellt und fügt einen FDO für den Hub an.
Dieses Beispiel enthält keine Filtertreiber für den USB-Hub.
Ein PDO, ein FDO und zwei Filter-DOs für das Joystickgerät.
Der USB-Hubtreiber listet seinen Bus auf, sucht ein HID-Gerät (den Joystick) und erstellt einen PDO für den Joystick.
In diesem Beispiel wird ein Filtertreiber auf niedrigerer Ebene in der Registrierung für Joystickgeräte eingerichtet, sodass der PnP-Manager den Filtertreiber lädt. Der Filtertreiber bestimmt, dass es für das Gerät relevant ist, und erstellt und fügt eine Filter-DO an den Gerätestapel an.
Der PnP-Manager bestimmt, dass der Funktionstreiber für das Joystickgerät das HID-Klassen-/Miniklassen-Treiberpaar ist und diese Treiber lädt. Das Treiberpaar besteht aus einem Miniklassentreiber, der mit einer Klassentreiber-DLL verknüpft ist. Zusammen fungieren sie als Funktionstreiber für das Gerät. Das Klassen-/Miniklassentreiberpaar erstellt ein Geräteobjekt, den FDO und fügt es an den Gerätestapel an.
Ein Filtertreiber auf oberster Ebene erstellt und fügt eine Filter-DO an den Gerätestapel an, ähnlich wie der Filter auf niedrigerer Ebene.
Der übergeordnete Bustreiber erstellt das PDO stets am unteren Ende des Gerätestapels für ein bestimmtes Gerät. Wenn Treiber PnP- oder Energieverwaltungs-IRPs verarbeiten, müssen sie jeden IRP durch den gesamten Gerätestapels bis zum PDO und dem zugehörigen Bustreiber übergeben.
Die folgende Abbildung zeigt die gleichen Gerätestapel wie die vorherige Abbildung, betont jedoch, welche Geräteobjekte jeder Treiber erstellt und verwaltet.
Ein Bus-Treiber erstreckt sich über mehr als einen Geräte-Stapel. Ein Bustreiber erstellt das FDO für seinen Busadapter oder Controller und erstellt ein PDO für jedes seiner Kindgeräte.