Freigeben über


Treiberstacks

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ätestacks. 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 Begriff Treiberstapel, um gestapelte Treiberschichten für eine bestimmte Technologie zu bezeichnen.

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.syserstellt. Dies ist der Funktionstreiber im Gerätestapel für den Knoten "Mein USB-Speichergerät". Disk.sys übergibt das IRP im Gerätestapel an Usbstor.sys.

  2. Beachten Sie, dass Usbstor.sys der PDO-Treiber für den Knoten „My USB Storage Device“ ist und der FDO-Treiber für den Knoten „USB-Massenspeichergerät“. Es ist in diesem Moment nicht wichtig, zu entscheiden, ob das IRP dem Paar (PDO, Usbstor.sys) oder dem Paar (FDO, Usbstor.sys) zugeordnet ist. Das IRP gehört dem Treiber, Usbstor.sys, und er hat Zugriff auf das PDO und das 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 Paares (FDO, Usbhub.sys) ist. Das IRP gehört dem Treiber, Usbhub.sys, und der Treiber hat Zugriff auf das PDO und das FDO.

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

    Usbuhci.sys ist ein Miniporttreiber und Usbport.sys ein Porttreiber. Das Paar (Miniport, Port) spielt die Rolle eines einzigen Treibers. In diesem Fall werden sowohl der Miniporttreiber als auch der Porttreiber von Microsoft geschrieben. Das (Usbuhci.sys, Usbport.sys) -Paar 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äteobjekten 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 Treiber-Stack für eine E/A-Anforderung nicht unbedingt in einem Zweig des Gerätebaums verbleibt.

Technologietreiberstapel

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

Diagramm eines Treiberstapels mit freundlichen Namen für die Treiber: Oben der Datenträgerklassentreiber, gefolgt vom USB-Speicherporttreiber, dann der USB-Hub-Treiber und der (USB 2 Miniport, USB-Port)-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