Udostępnij za pośrednictwem


Węzły urządzeń i stosy urządzeń

W systemie Windows urządzenia są reprezentowane przez węzły urządzeń w drzewie urządzeń Plug and Play (PnP). Zazwyczaj po wysłaniu żądania we/wy do urządzenia kilka sterowników pomaga w obsłudze żądania. Każdy z tych sterowników jest skojarzony z obiektem urządzenia, a obiekty urządzeń są rozmieszczone w stosie. Sekwencja obiektów urządzeń wraz ze skojarzonymi sterownikami jest nazywana stosem urządzeń. Każdy węzeł urządzenia ma własny stos urządzeń.

Węzły urządzeń i drzewo urządzeń Plug and Play

System Windows organizuje urządzenia w strukturze drzewa o nazwie drzewo urządzeń Plug and Playlub po prostu drzewo urządzeń . Zazwyczaj węzeł w drzewie urządzenia reprezentuje urządzenie lub pojedynczą funkcję na urządzeniu złożonym. Jednak niektóre węzły reprezentują składniki oprogramowania, które nie mają skojarzenia z urządzeniami fizycznymi.

Węzeł w drzewie urządzenia nazywa się węzłem urządzenia . Węzeł główny drzewa urządzeń jest nazywany węzłem urządzenia głównego . Zgodnie z konwencją węzeł urządzenia głównego jest rysowany w dolnej części drzewa urządzeń, jak pokazano na poniższym diagramie.

diagram drzewa urządzeń przedstawiający węzły urządzeń.

Drzewo urządzeń ilustruje relacje nadrzędne/podrzędne, które są nieodłączne w środowisku PnP. Kilka węzłów w drzewie urządzenia reprezentuje magistrale z podłączonymi do nich urządzeniami podrzędnymi. Na przykład węzeł PCI Bus reprezentuje fizyczną magistralę PCI na płycie głównej. Podczas uruchamiania menedżer PnP prosi kierowcę magistrali PCI o wyliczenie urządzeń podłączonych do magistrali PCI. Te urządzenia są reprezentowane przez węzły podrzędne węzła PCI Bus. Na powyższym diagramie węzeł PCI Bus ma węzły podrzędne dla kilku urządzeń podłączonych do magistrali PCI, w tym kontrolerów hosta USB, kontrolera audio i portu PCI Express.

Niektóre urządzenia podłączone do magistrali PCI są same w sobie magistralami. Menedżer PnP prosi każdy z tych autobusów o wyliczenie urządzeń, które są z nim połączone. Na powyższym diagramie widać, że kontroler audio jest magistralą, która ma podłączone urządzenie audio. Widzimy, że port PCI Express jest magistralą, która ma podłączoną kartę wyświetlania, a adapter wyświetlania jest magistralą, która ma podłączony jeden monitor.

Niezależnie od tego, czy węzeł reprezentuje urządzenie, czy magistralę, zależy od punktu widzenia. Można na przykład traktować adaptator wyświetlacza jako urządzenie, które odgrywa kluczową rolę w przygotowaniu ramek obrazu wyświetlanych na ekranie. Można jednak również traktować kartę wyświetlania jako magistralę, która może wykrywać i wyliczać podłączone monitory.

Obiekty urządzeń i stosy urządzeń

Obiekt urządzenia jest wystąpieniem struktury DEVICE_OBJECT. Każdy węzeł urządzenia w drzewie urządzeń PnP ma uporządkowaną listę obiektów urządzeń, a każdy z tych obiektów urządzenia jest skojarzony ze sterownikiem. Uporządkowana lista obiektów urządzeń wraz ze skojarzonymi sterownikami jest nazywana stosem urządzeń dla węzła urządzenia.

Stos urządzeń można postrzegać na kilka sposobów. W najbardziej formalnym sensie stos urządzeń jest uporządkowaną listą par (obiekt urządzenia, sterownik). Jednak w niektórych kontekstach warto traktować stos urządzeń jako uporządkowaną listę obiektów urządzeń. W innych kontekstach warto traktować stos urządzeń jako uporządkowaną listę sterowników.

Zgodnie z konwencją stos urządzenia ma górę i dół. Pierwszy obiekt urządzenia, który ma zostać utworzony w stosie urządzenia, znajduje się u dołu, a ostatni obiekt urządzenia, który ma zostać utworzony i dołączony do stosu urządzenia, znajduje się u góry.

Na poniższym diagramie węzeł urządzenia Proseware Gizmo zawiera stos urządzenia zawierający trzy pary (obiekt urządzenia, sterownik). Górny obiekt urządzenia jest skojarzony ze sterownikiem AfterThought.sys, obiekt środkowego urządzenia jest skojarzony ze sterownikiem Proseware.sys, a dolny obiekt urządzenia jest skojarzony ze sterownikiem Pci.sys. Węzeł PCI Bus na środku diagramu zawiera stos urządzenia zawierający dwie pary (obiekt urządzenia, sterownik) — obiekt urządzenia skojarzony z Pci.sys i obiekt urządzenia skojarzony z Acpi.sys.

diagram przedstawiający obiekty urządzeń uporządkowane w stosach urządzeń w węzłach urządzeń Gizmo Proseware i PCI.

Jak jest konstruowany stos urządzeń?

Podczas uruchamiania menedżer PnP prosi sterownik dla każdej magistrali o wykrycie i wyliczenie urządzeń podrzędnych podłączonych do magistrali. Na przykład menedżer PnP prosi sterownik magistrali PCI (Pci.sys) o wyliczenie urządzeń podłączonych do magistrali PCI. W odpowiedzi na to żądanie Pci.sys tworzy obiekt urządzenia dla każdego urządzenia podłączonego do magistrali PCI. Każdy z tych obiektów urządzenia jest nazywany obiektem urządzenia fizycznego (PDO). Wkrótce po utworzeniu zestawu obiektów PDO przez Pci.sys, drzewo urządzenia wygląda podobnie do tego, który pokazano na poniższym diagramie.

diagram węzła PCI i obiektów fizycznych urządzeń dla podrzędnych urządzeń.

Menedżer PnP kojarzy węzeł urządzenia z każdym nowo utworzonym Obiektem urządzenia fizycznego (PDO) i przeszukuje rejestr, aby ustalić, które sterowniki muszą być częścią stosu urządzeń dla tego węzła. Stos urządzenia musi mieć jeden (i tylko jeden) sterownik funkcji i opcjonalnie może mieć co najmniej jeden sterownik filtru . Sterownik funkcji jest głównym sterownikiem stosu urządzeń i jest odpowiedzialny za obsługę żądań odczytu, zapisu i sterowania urządzeniami. Sterowniki filtrów odgrywają role pomocnicze w przetwarzaniu żądań odczytu, zapisu i sterowania urządzeniami. Podczas ładowania każdej funkcji i każdego sterownika filtru, tworzy obiekt urządzenia i podłącza się do stosu urządzenia. Obiekt urządzenia utworzony przez sterownik funkcjonalny jest nazywany obiektem urządzenia funkcjonalnego (FDO), a obiekt urządzenia utworzony przez sterownik filtrowania jest nazywany obiektem filtru urządzenia (Filtr DO). Teraz drzewo urządzeń wygląda podobnie do tego diagramu.

Schemat drzewa urządzeń przedstawiający obiekty filtru, funkcji i urządzenia fizycznego w węźle urządzenia Proseware Gizmo.

Na diagramie zwróć uwagę, że w jednym węźle sterownik filtru znajduje się powyżej sterownika funkcji, a w drugim węźle sterownik filtru znajduje się poniżej sterownika funkcji. Sterownik filtru, który znajduje się powyżej sterownika funkcji w stosie urządzenia, jest nazywany górnym sterownikiem filtru. Sterownik filtra, który znajduje się poniżej sterownika funkcji, nazywany jest dolnym sterownikiem filtra.

PDO jest zawsze najniższym obiektem w stosie urządzenia. Wynika to ze sposobu konstruowania stosu urządzeń. PDO jest tworzony jako pierwszy, a dodatkowe obiekty urządzeń są dołączane do stosu od góry istniejącego stosu.

Uwaga Gdy sterowniki dla urządzenia są zainstalowane, instalator używa informacji w pliku informacyjnym (INF), aby określić, który sterownik jest sterownikiem funkcji i które sterowniki są filtrami. Zazwyczaj plik INF jest dostarczany przez firmę Microsoft lub przez dostawcę sprzętu. Po zainstalowaniu sterowników urządzenia menedżer PnP może określić funkcję i sterowniki filtrów dla urządzenia, wyszukując w rejestrze.

Kierowcy autobusów

Na powyższym diagramie widać, że sterownik Pci.sys odgrywa dwie role. Najpierw Pci.sys jest skojarzony z FDO w węźle urządzenia PCI Bus. W rzeczywistości utworzono FDO w węźle urządzenia PCI Bus. Dlatego Pci.sys jest sterownikiem funkcji dla magistrali PCI. Po drugie, Pci.sys jest skojarzony z PDO w każdym podrzędnym węźle magistrali PCI. Pamiętaj, że system utworzył obiekty PDO dla urządzeń podrzędnych. Sterownik, który tworzy PDO dla węzła urządzenia, jest nazywany sterownikiem magistrali dla tego węzła.

Jeśli punktem odniesienia jest magistrala PCI, Pci.sys jest sterownikiem funkcji. Ale jeśli punktem odniesienia jest urządzenie Proseware Gizmo, Pci.sys jest kierowcą autobusu. Ta podwójna rola jest typowa w drzewie urządzeń PnP. Sterownik, który działa jako sterownik funkcji dla magistrali, służy również jako sterownik magistrali dla urządzenia podrzędnego magistrali.

Stosy urządzeń w trybie użytkownika

Do tej pory omawialiśmy stosy urządzeń w trybie jądra. Oznacza to, że sterowniki w stosach działają w trybie jądra, a obiekty urządzeń są mapowane na przestrzeń systemową, czyli przestrzeń adresową dostępną tylko do kodu uruchomionego w trybie jądra. Aby uzyskać informacje o różnicy między trybem jądra a trybem użytkownika, zobacz Tryb użytkownika i tryb jądra.

W niektórych przypadkach urządzenie ma stos sterowników w trybie użytkownika oprócz stosu sterowników w trybie jądra. Sterowniki trybu użytkownika są często oparte na User-Mode Driver Framework (UMDF), który jest jednym z modeli sterowników dostarczanych przez Windows Driver Frameworks (WDF). W UMDF sterowniki są bibliotekami DLL trybu użytkownika, a obiekty urządzeń są obiektami COM, które implementują interfejs IWDFDevice. Obiekt w stosie urządzeń UMDF nazywany jest obiektem urządzenia WDF (WDF DO).

Na poniższym diagramie przedstawiono węzeł urządzenia, stos urządzenia w trybie jądra oraz stos urządzenia w trybie użytkownika dla urządzenia USB-FX-2. Sterowniki w stosach zarówno trybu użytkownika, jak i trybu jądra uczestniczą w żądaniach we/wy kierowanych do urządzenia USB-FX-2.

diagram przedstawiający stosy urządzeń w trybie użytkownika i trybie jądra.

Pojęcia dotyczące wszystkich deweloperów sterowników

Stosy sterowników