Stosy sterowników
Większość żądań wysyłanych do sterowników urządzeń jest pakowana w pakietach żądań we/wy (IRPs). Każde urządzenie jest reprezentowane przez węzeł urządzenia, a każdy węzeł urządzenia ma stos urządzenia. Aby uzyskać więcej informacji, zobacz Węzły urządzeń i stosy urządzeń. Aby wysłać żądanie odczytu, zapisu lub sterowania do urządzenia, menedżer wejścia/wyjścia lokalizuje węzeł tego urządzenia, a następnie wysyła IRP do stosu urządzenia na tym węźle. Czasami więcej niż jeden stos urządzeń jest zaangażowany w przetwarzanie żądania we/wy. Niezależnie od liczby stosów urządzeniowych, ogólna kolejność sterowników dla tego żądania, uczestniczących w żądaniu we/wy, jest nazywana stosem sterowników . Używamy również terminu stosu sterowników, aby odwoływać się do warstwowego zestawu sterowników dla określonej technologii.
Żądania I/O przetwarzane przez kilka stosów urządzeń
W niektórych przypadkach więcej niż jeden stos urządzeń jest zaangażowany w przetwarzanie protokołu IRP. Na poniższym diagramie przedstawiono przypadek, w którym cztery stosy urządzeń są zaangażowane w przetwarzanie pojedynczego protokołu IRP.
Poniżej przedstawiono sposób przetwarzania protokołu IRP na każdym etapie numerowanego na diagramie:
Protokół IRP jest tworzony przez Disk.sys, który jest sterownikiem funkcji w stosie urządzenia dla węzła Moje urządzenie magazynujące USB. Disk.sys przekazuje protokół IRP w dół stosu urządzenia do Usbstor.sys.
Zwróć uwagę, że Usbstor.sys jest sterownikiem PDO dla węzła My USB Storage Device i sterownikiem FDO dla węzła USB Mass Storage Device. W tym momencie nie ważne jest, aby zdecydować, czy IRP jest własnością pary (PDO, Usbstor.sys) lub pary (FDO, Usbstor.sys). IRP jest własnością sterownika, Usbstor.sys, a sterownik ma dostęp zarówno do PDO, jak i FDO.
Po zakończeniu przetwarzania IRP Usbstor.sys przekazuje IRP do Usbhub.sys. Usbhub.sys jest sterownikiem PDO dla węzła urządzenia pamięci masowej USB i sterownikiem FDO dla węzła głównego hubu USB. Nie jest ważne, aby zdecydować, czy IRP jest własnością pary (PDO, Usbhub.sys) czy pary (FDO, Usbhub.sys). IRP jest własnością sterownika, Usbhub.sys, a sterownik ma dostęp zarówno do PDO, jak i FDO.
Po zakończeniu przetwarzania IRP, Usbhub.sys przekazuje IRP do pary (Usbuhci.sys, Usbport.sys).
Usbuhci.sys jest sterownikiem miniportu, a Usbport.sys jest sterownikiem portu. Para (miniport, port) odgrywa rolę jednego sterownika. W takim przypadku zarówno sterownik miniportu, jak i sterownik portu są zapisywane przez firmę Microsoft. Para (Usbuhci.sys, Usbport.sys) jest sterownikiem PDO dla węzła głównego koncentratora USB, a para (Usbuhci.sys, Usbport.sys) jest również sterownikiem FDO dla węzła kontrolera hosta USB. Para (Usbuhci.sys, Usbport.sys) wykonuje rzeczywistą komunikację ze sprzętem kontrolera hosta, który z kolei komunikuje się z fizycznym urządzeniem pamięci masowej USB.
Stos sterowników dla żądania I/O
Rozważmy sekwencję czterech sterowników, które uczestniczyły w żądaniu I/O przedstawionym na poprzednim diagramie. Możemy uzyskać inny widok sekwencji, koncentrując się na sterownikach, a nie na węzłach urządzenia i ich poszczególnych stosach urządzeń. Na poniższym diagramie przedstawiono sterowniki w kolejności od góry do dołu. Zwróć uwagę, że Disk.sys jest skojarzony z jednym obiektem urządzenia, ale każdy z pozostałych trzech sterowników jest skojarzony z dwoma obiektami urządzenia.
Sekwencja sterowników uczestniczących w żądaniu we/wy jest nazywana stosem sterowników dla żądania we/wy. Aby zilustrować stos sterowników dla żądania we/wy, rozmieszczamy sterowniki od góry do dołu w kolejności, w której uczestniczą w żądaniu.
Zwróć uwagę, że stos sterowników dla żądania we/wy jest zupełnie inny niż stos urządzenia dla węzła urządzenia. Zwróć również uwagę, że stos sterowników dla żądania wejścia/wyjścia niekoniecznie pozostaje w jednej gałęzi drzewa urządzeń.
Stosy sterowników technologicznych
Rozważ stos sterowników dla żądania I/O przedstawionego na wcześniejszym diagramie. Jeśli podamy każdemu sterownikowi przyjazną nazwę i wprowadzimy niewielkie zmiany w diagramie, mamy diagram blokowy podobny do wielu z tych, które pojawiają się w dokumentacji zestawu Windows Driver Kit (WDK).
Na diagramie stos sterowników jest podzielony na trzy sekcje. Każdą sekcję można traktować jako należącą do określonej technologii lub do określonego składnika lub części systemu operacyjnego. Na przykład możemy powiedzieć, że pierwsza sekcja w górnej części stosu sterowników należy do Menedżera woluminów, druga sekcja należy do składnika magazynu systemu operacyjnego, a trzecia sekcja należy do podstawowej części USB systemu operacyjnego.
Rozważ sterowniki w trzeciej sekcji. Sterowniki te są podzbiorem większego zestawu podstawowych sterowników USB, które firma Microsoft zapewnia do obsługi różnych rodzajów żądań USB i sprzętu USB. Na poniższym diagramie przedstawiono, jak może wyglądać cały diagram bloków rdzenia USB.
Diagram blokowy przedstawiający wszystkie sterowniki dla określonej technologii lub określonego składnika lub części systemu operacyjnego jest nazywany stosem sterowników technologii . Zazwyczaj stosy sterowników technologicznych nazywane są, takie jak stos sterowników USB Core (USB Core Driver Stack), stos pamięci masowej (Storage Stack), stos sterowników 1394 (1394 Driver Stack) i stos sterowników audio (Audio Driver Stack).
Uwaga: Diagram bloków rdzeni USB w tym artykule przedstawia jeden z kilku możliwych sposobów zilustrowania stosów sterowników technologii dla USB 1.0 i 2.0. Aby zapoznać się z oficjalnymi diagramami stosów sterowników USB 1.0, 2.0 i 3.0, zobacz USB Driver Stack Architecture.