Stuurprogrammastacks
De meeste aanvragen die naar apparaatstuurprogramma's worden verzonden, worden verpakt in I/O-aanvraagpakketten (IRP's). Elk apparaat wordt vertegenwoordigd door een apparaatknooppunt en elk apparaatknooppunt heeft een apparaatstack. Zie Apparaatknooppunten en apparaatstacksvoor meer informatie. Als u een aanvraag voor lezen, schrijven of beheren naar een apparaat wilt verzenden, zoekt de I/O-manager het apparaatknooppunt voor het apparaat en verzendt vervolgens een IRP naar de apparaatstack van dat knooppunt. Soms is er meer dan één apparaatstack betrokken bij het verwerken van een I/O-aanvraag. Ongeacht het aantal betrokken apparaatstacks wordt de algehele reeks stuurprogramma's die aan een I/O-verzoek deelnemen, de stuurprogrammastack voor het verzoek genoemd. We gebruiken ook de term stuurprogrammastack om te verwijzen naar de gelaagde set stuurprogramma's voor een bepaalde technologie.
I/O-aanvragen die worden verwerkt door verschillende apparaatstacks
In sommige gevallen is meer dan één apparaatstack betrokken bij het verwerken van een IRP. In het volgende diagram ziet u een geval waarin vier apparaatstacks betrokken zijn bij het verwerken van één IRP.
Hier ziet u hoe de IRP wordt verwerkt in elke genummerde fase in het diagram:
De IRP wordt gemaakt door Disk.sys. Dit is het functiestuurprogramma in de apparaatstack voor het knooppunt Mijn USB-opslagapparaat. Disk.sys geeft de IRP door naar beneden in de apparaatstack aan Usbstor.sys.
U ziet dat Usbstor.sys het PDO-stuurprogramma is voor het knooppunt Mijn USB-opslagapparaat en het FDO-stuurprogramma voor het knooppunt usb-apparaat voor massaopslag. Op dit punt is het niet belangrijk om te bepalen of de IRP eigendom is van het (PDO, Usbstor.sys) paar of het (FDO, Usbstor.sys) paar. De IRP is eigendom van het stuurprogramma, Usbstor.sysen het stuurprogramma heeft toegang tot zowel de PDO als de FDO.
Wanneer Usbstor.sys klaar is met het verwerken van de IRP, wordt de IRP doorgegeven aan Usbhub.sys. Usbhub.sys is het PDO-stuurprogramma voor het USB-Massaopslagapparaat-knooppunt en het FDO-stuurprogramma voor het USB-Root Hub-knooppunt. Het is niet belangrijk om te bepalen of de IRP eigendom is van het (PDO, Usbhub.sys) of het (FDO, Usbhub.sys) paar. De IRP is eigendom van het stuurprogramma, Usbhub.sysen het stuurprogramma heeft toegang tot zowel de PDO als de FDO.
Wanneer Usbhub.sys klaar is met het verwerken van het IRP, wordt de IRP doorgegeven aan het paar (Usbuhci.sys, Usbport.sys).
Usbuhci.sys is een minipoortstuurprogramma en Usbport.sys is een poortstuurprogramma. Het (miniport, poort)-paar fungeert als één stuurprogramma. In dit geval worden zowel het minipoortstuurprogramma als het poortstuurprogramma geschreven door Microsoft. Het paar (Usbuhci.sys, Usbport.sys) is het PDO-stuurprogramma voor het USB-hoofdknooppunt en het (Usbuhci.sys, Usbport.sys) paar is ook het FDO-stuurprogramma voor het USB-hostcontrollerknooppunt. Het (Usbuhci.sys, Usbport.sys) paar voert de daadwerkelijke communicatie uit met de hostcontrollerhardware, dat op zijn beurt communiceert met de fysieke USB-opslag.
De stuurprogrammastack voor een I/O-aanvraag
Houd rekening met de volgorde van vier stuurprogramma's die hebben deelgenomen aan de I/O-aanvraag die in het voorgaande diagram is geïllustreerd. We kunnen een andere weergave van de volgorde krijgen door ons te richten op de stuurprogramma's in plaats van op de apparaatknooppunten en hun afzonderlijke apparaatstacks. In het volgende diagram ziet u de bestuurders in volgorde van boven naar beneden. U ziet dat Disk.sys is gekoppeld aan één apparaatobject, maar elk van de andere drie stuurprogramma's is gekoppeld aan twee apparaatobjecten.
De volgorde van stuurprogramma's die deelnemen aan een I/O-aanvraag wordt de stuurprogrammastack genoemd voor de I/O-aanvraag. Om een stuurprogrammastack voor een I/O-aanvraag te illustreren, tekenen we de stuurprogramma's van boven naar beneden in de volgorde waarin ze deelnemen aan de aanvraag.
U ziet dat de stuurprogrammastack voor een I/O-aanvraag heel anders is dan de apparaatstack voor een apparaatknooppunt. U ziet ook dat de stuurprogrammastack voor een I/O-aanvraag niet noodzakelijkerwijs binnen een tak van de apparatenstructuur blijft.
Stacks van technologiestuurprogramma's
Bekijk de stuurprogrammastack voor de I/O-aanvraag die wordt weergegeven in het voorgaande diagram. Als we elk van de stuurprogramma's een beschrijvende naam geven en enkele kleine wijzigingen aanbrengen in het diagram, hebben we een blokdiagram dat vergelijkbaar is met veel van de stuurprogramma's die worden weergegeven in de Windows Driver Kit (WDK)-documentatie.
In het diagram is de stuurprogrammastack onderverdeeld in drie secties. We kunnen elke sectie beschouwen als behorend tot een bepaalde technologie of een bepaald onderdeel of een bepaald gedeelte van het besturingssysteem. We kunnen bijvoorbeeld zeggen dat de eerste sectie boven aan de stuurprogrammastack behoort tot volumebeheer, de tweede sectie behoort tot het opslagonderdeel van het besturingssysteem en de derde sectie behoort tot het kern-USB-gedeelte van het besturingssysteem.
Houd rekening met de stuurprogramma's in de derde sectie. Deze stuurprogramma's zijn een subset van een grotere set kern-USB-stuurprogramma's die Microsoft biedt voor het verwerken van verschillende soorten USB-aanvragen en USB-hardware. In het volgende diagram ziet u hoe het volledige USB-kernblokdiagram eruit kan zien.
Een blokdiagram met alle stuurprogramma's voor een bepaalde technologie of een bepaald onderdeel of een bepaald deel van het besturingssysteem wordt een technologiestuurprogrammastackgenoemd. Normaal gesproken krijgen technologiestuurprogrammastacks namen zoals de USB Core Driver Stack, de opslagstack, de 1394-stuurprogrammastack en de audiostuurprogrammastack.
Opmerking: het USB-kernblokdiagram in dit artikel toont een van de mogelijke manieren om de stuurprogramma-stacks voor USB 1.0 en 2.0 te illustreren. Raadpleeg de officiële diagrammen van de USB-stuurprogramma-stack voor USB 1.0, 2.0 en 3.0 in USB-stuurprogramma-stackarchitectuur.
Verwante artikelen
apparaatknooppunten en apparaatstapelingen