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.
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.
So wird das IRP in jeder nummerierten Phase im Diagramm verarbeitet:
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.
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.
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.
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.
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.
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.
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.