Treiberstapel

Die meisten Anforderungen, die an Gerätetreiber gesendet werden, werden in E/A-Anforderungspaketen (IRPs) verpackt. Jedes Gerät wird durch einen Geräteknoten dargestellt, und jeder Geräteknoten verfügt über einen Gerätestapel. Weitere Informationen finden Sie unter Geräteknoten und Gerätestapel. Um eine Lese-, Schreib- oder Steuerelementanforderung an ein Gerät zu senden, sucht der E/A-Manager den Geräteknoten für das Gerät und sendet dann einen IRP an den Gerätestapel dieses Knotens. Manchmal ist mehr als ein Gerätestapel an der Verarbeitung einer E/A-Anforderung beteiligt. Unabhängig davon, wie viele Gerätestapel beteiligt sind, wird die Gesamtsequenz von Treibern, die an einer E/A-Anforderung teilnehmen, als Treiberstapel für die Anforderung bezeichnet. Außerdem verwenden wir den Begriffstreiberstapel, um auf die schichtige Gruppe von Treibern für eine bestimmte Technologie zu verweisen.

E/A-Anforderungen, die von mehreren Gerätestapeln verarbeitet werden

In einigen Fällen ist mehr als ein Gerätestapel an der Verarbeitung eines IRP beteiligt. Das folgende Diagramm zeigt einen Fall, in dem vier Gerätestapel an der Verarbeitung eines einzelnen IRP beteiligt sind.

Diagramm mit vier Geräteknoten, jeweils mit einem Gerätestapel.

So wird das IRP in jeder nummerierten Phase im Diagramm verarbeitet:

  1. Das IRP wird von Disk.sys erstellt. Dabei handelt es sich um den Funktionstreiber im Gerätestapel für den Knoten "Mein USB-Speichergerät". Disk.sys übergibt das IRP an den Gerätestapel an Usbstor.sys.

  2. Beachten Sie, dass Usbstor.sys der PDO-Treiber für den Knoten "My USB Storage Device" und den FDO-Treiber für den USB-Speichergerätknoten ist. An diesem Punkt ist es nicht wichtig zu entscheiden, ob das IRP im Besitz des Paares (PDO, Usbstor.sys) oder des Paares (FDO, Usbstor.sys) ist. Das IRP gehört dem Treiber, Usbstor.sys, und der Treiber hat Zugriff auf die PDO und die FDO.

  3. Wenn Usbstor.sys die Verarbeitung des IRP abgeschlossen hat, übergibt es das IRP an Usbhub.sys. Usbhub.sys ist der PDO-Treiber für den USB-Massenspeichergerätknoten und den FDO-Treiber für den USB-Root Hub-Knoten. Es ist nicht wichtig zu entscheiden, ob das IRP im Besitz des Paares (PDO, Usbhub.sys) oder des (FDO, Usbhub.sys) Paares ist. Das IRP gehört dem Treiber, Usbhub.sys, und der Treiber hat Zugriff auf die PDO und die FDO.

  4. Wenn Usbhub.sys die Verarbeitung des IRP abgeschlossen hat, übergibt es das IRP an das Paar (Usbuhci.sys, Usbport.sys).

    Usbuhci.sys ist ein Miniporttreiber und Usbport.sys ein Porttreiber. Das Paar (Miniport, Port) spielt die Rolle eines einzelnen Treibers. In diesem Fall werden sowohl der Miniporttreiber als auch der Porttreiber von Microsoft geschrieben. Das Paar (Usbuhci.sys, Usbport.sys) ist der PDO-Treiber für den USB-Root Hub-Knoten, und das (Usbuhci.sys, Usbport.sys) Paar ist auch der FDO-Treiber für den USB-Hostcontroller-Knoten. Das (Usbuhci.sys,Usbport.sys)-Paar führt die tatsächliche Kommunikation mit der Hostcontrollerhardware durch, die wiederum mit dem physischen USB-Speichergerät kommuniziert.

Der Treiberstapel für eine E/A-Anforderung

Berücksichtigen Sie die Abfolge von vier Treibern, die an der im vorherigen Diagramm dargestellten E/A-Anforderung teilgenommen haben. Wir können eine andere Ansicht der Sequenz erhalten, indem wir uns auf die Treiber und nicht auf die Geräteknoten und ihre einzelnen Gerätestapel konzentrieren. Das folgende Diagramm zeigt die Treiber von oben nach unten. Beachten Sie, dass Disk.sys einem Geräteobjekt zugeordnet ist, aber jeder der anderen drei Treiber ist zwei Geräteobjekte zugeordnet.

Diagramm eines Treiberstapels, der den obersten Treiber anzeigt, der nur einem fdo zugeordnet ist, und die anderen drei Treiber, die einem Pdo und einem FDO zugeordnet sind.

Die Sequenz der Treiber, die an einer E/A-Anforderung teilnehmen, wird als Treiberstapel für die E/A-Anforderung bezeichnet. Um einen Treiberstapel für eine E/A-Anforderung zu veranschaulichen, zeichnen wir die Treiber von oben nach unten in der Reihenfolge, in der sie an der Anforderung teilnehmen.

Beachten Sie, dass sich der Treiberstapel für eine E/A-Anforderung von dem Gerätestapel für einen Geräteknoten unterscheidet. Beachten Sie außerdem, dass der Treiberstapel für eine E/A-Anforderung nicht unbedingt in einem Zweig der Gerätestruktur verbleibt.

Technologietreiberstapel

Berücksichtigen Sie den Treiberstapel für die im vorherigen Diagramm gezeigte E/A-Anforderung. Wenn wir jedem der Treiber einen Anzeigenamen geben und einige geringfügige Änderungen am Diagramm vornehmen, haben wir ein Blockdiagramm, das vielen ähnlich ist, die in der Dokumentation zum Windows Driver Kit (WDK) angezeigt werden.

Diagramm eines Treiberstapels mit Anzeigenamen für die Treiber: Datenträgerklassentreiber oben gefolgt vom USB-Speicherporttreiber und dann USB-Hubtreiber und (USB 2 Miniport, USB-Anschluss)-Treiber.

Im Diagramm ist der Treiberstapel in drei Abschnitte unterteilt. Wir können uns jeden Abschnitt als Zugehörigkeit zu einer bestimmten Technologie oder zu einer bestimmten Komponente oder einem bestimmten Teil des Betriebssystems vorstellen. Angenommen, der erste Abschnitt oben im Treiberstapel gehört zum Volume-Manager, der zweite Abschnitt gehört zur Speicherkomponente des Betriebssystems, und der dritte Abschnitt gehört zum kernigen USB-Teil des Betriebssystems.

Berücksichtigen Sie die Treiber im dritten Abschnitt. Diese Treiber sind eine Teilmenge eines größeren Satzes von Kern-USB-Treibern, die Microsoft für die Behandlung verschiedener Arten von USB-Anforderungen und USB-Hardware bereitstellt. Das folgende Diagramm zeigt, wie das gesamte USB-Kernblockdiagramm aussehen könnte.

Diagramm mit dem Technologietreiberstapel für möglichen USB-Kernblock.

Ein Blockdiagramm, das alle Treiber für eine bestimmte Technologie oder eine bestimmte Komponente oder einen bestimmten Teil des Betriebssystems zeigt, wird als Technologietreiberstapel bezeichnet. In der Regel werden Technologietreiberstapel wie der USB Core Driver Stack, der Speicherstapel, der 1394-Treiberstapel und der Audiotreiberstapel genannt.

Hinweis: Das USB-Kernblockdiagramm in diesem Artikel zeigt eine von mehreren möglichen Möglichkeiten, um die Technologietreiberstapel für USB 1.0 und 2.0 zu veranschaulichen. Die offiziellen Diagramme der USB 1.0-, 2.0- und 3.0-Treiberstapel finden Sie unter USB-Treiberstapelarchitektur.

Geräteknoten und Gerätestapel

Minidriver und Treiberpaare

Konzepte für alle Treiberentwickler