Sdílet prostřednictvím


Uzly zařízení a zásobníky zařízení

Ve Windows jsou zařízení reprezentována uzly zařízení ve stromu zařízení Plug and Play (PnP). Obvykle platí, že když se do zařízení odešle vstupně-výstupní požadavek, pomůže několik ovladačů žádost zpracovat. Každý z těchto ovladačů je přidružený k objektu zařízení a objekty zařízení jsou uspořádány ve stohu. Posloupnost objektů zařízení spolu s přidruženými ovladači se nazývá stack zařízení. Každý uzel zařízení má vlastní zásobník zařízení.

Uzly zařízení a strom zařízení Plug and Play

Windows organizuje zařízení ve stromové struktuře nazývané strom zařízení Plug and Play, nebo jednoduše strom zařízení. Uzel ve stromu zařízení obvykle představuje buď zařízení, nebo jednotlivé funkce ve složeného zařízení. Některé uzly ale představují softwarové komponenty, které nemají žádné přidružení k fyzickým zařízením.

Uzel v device tree se nazývá device node. Kořenový uzel stromu zařízení se nazývá kořenový uzel zařízení. Podle konvence se uzel kořenového zařízení nakreslí v dolní části stromu zařízení, jak je znázorněno v následujícím diagramu.

diagram stromu zařízení zobrazující uzly zařízení.

Strom zařízení znázorňuje vztahy nadřazenosti a podřízenosti, které jsou součástí prostředí PnP. Několik uzlů ve stromu zařízení reprezentuje sběrnice, ke kterým jsou připojena podřízená zařízení. Například uzel sběrnice PCI představuje fyzickou sběrnici PCI na základní desce. Během spuštění správce PnP požádá ovladač sběrnice PCI, aby vyčíslil zařízení připojená ke sběrnici PCI. Tato zařízení jsou reprezentována podřízenými uzly uzlu sběrnice PCI. V předchozím diagramu má uzel sběrnice PCI podřízené uzly pro několik zařízení připojených ke sběrnici PCI, včetně hostitelských řadičů USB, zvukového kontroleru a portu PCI Express.

Některá zařízení připojená k sběrnici PCI jsou samotné autobusy. Vedoucí PnP požádá každého z těchto autobusů, aby vyčíslil zařízení, která jsou k němu připojená. V předchozím diagramu vidíme, že zvukový ovladač je sběrnice, která má připojené zvukové zařízení. Vidíme, že port PCI Express je sběrnice, která má připojený adaptér pro zobrazení, a adaptér displeje je sběrnice, která má připojený jeden monitor.

Bez ohledu na to, jestli si uzel myslíte jako představující zařízení nebo sběrnici, závisí na vašem pohledu. Adaptér displeje si můžete například představit jako zařízení, které hraje klíčovou roli při přípravě snímků, které se zobrazují na obrazovce. Adaptér displeje si ale můžete představit také jako sběrnici, která dokáže rozpoznat a vytvořit výčet připojených monitorů.

Objekty zařízení a zásobníky zařízení

Objekt zařízení je instance struktury DEVICE_OBJECT. Každý uzel zařízení ve stromu zařízení PnP má seřazený seznam objektů zařízení a každý z těchto objektů zařízení je přidružený k ovladači. Seřazený seznam objektů zařízení spolu s přidruženými ovladači se označuje jako zásobník zařízení pro uzel zařízení.

Zásobník zařízení si můžete představit několika způsoby. Ve svém nejformálnějším smyslu je strukturální seznam zařízení seřazený seznam dvojic (objekt zařízení, ovladač). V určitých kontextech ale může být užitečné si zásobník zařízení představit jako seřazený seznam objektů zařízení. V jiných kontextech může být užitečné si zásobník zařízení představit jako seřazený seznam ovladačů.

Podle konvence má zásobník zařízení horní a dolní část. První objekt zařízení, který se má vytvořit v zásobníku zařízení, je dole a poslední objekt zařízení, který se má vytvořit a připojit ke zásobníku zařízení, je nahoře.

V následujícím diagramu má uzel zařízení Proseware Gizmo zásobník zařízení, který obsahuje tři páry (objekt zařízení, ovladač). Horní objekt zařízení je přidružen k ovladači AfterThought.sys, prostřední objekt zařízení je přidružen k ovladači Proseware.sysa dolní objekt zařízení je přidružen k ovladači Pci.sys. Uzel sběrnice PCI uprostřed diagramu má zásobník zařízení, který obsahuje dva páry (objekt zařízení, ovladač) – objekt zařízení přidružený k Pci.sys a objekt zařízení přidružený k Acpi.sys.

diagram zobrazující objekty zařízení seřazené v zásobníkech zařízení v uzlech zařízení proseware gizmo a pci.

Jak se sestaví zásobník zařízení?

Během spuštění správce PnP požádá ovladač každé sběrnice, aby vypsal podřízená zařízení připojená ke sběrnici. Například manažer PnP požádá řidiče sběrnice PCI (Pci.sys) k vytvoření výčtu zařízení připojených ke sběrnici PCI. V reakci na tento požadavek Pci.sys vytvoří objekt zařízení pro každé zařízení připojené ke sběrnici PCI. Každý z těchto objektů zařízení se nazývá objekt fyzického zařízení (PDO). Krátce poté, co Pci.sys vytvoří sadu PDO (fyzických objektů zařízení), vypadá strom zařízení jako ten znázorněný v následujícím diagramu.

diagram uzlu PCI a objektů fyzického zařízení pro podřízená zařízení.

Správce PnP přidruží uzel zařízení ke každému nově vytvořenému primárnímu objektu domény a vyhledá v registru, aby určil, které ovladače musí být součástí zásobníku zařízení pro uzel. Zásobník zařízení musí mít jeden (a pouze jeden) funkční ovladač a volitelně může mít jeden nebo více ovladačů filtru . Funkční ovladač je hlavním ovladačem vrstvy zařízení a zodpovídá za zpracování žádostí o čtení, zápis a řízení. Ovladače filtru hrají pomocné role při zpracování požadavků na čtení, zápis a řízení zařízení. Při načítání jednotlivých funkcí a ovladačů filtru vytvoří objekt zařízení a připojí se k zásobníku zařízení. Objekt zařízení vytvořený funkčním ovladačem se nazývá funkční objekt zařízení (FDO) a objekt zařízení vytvořený filtračním ovladačem se nazývá filtrační objekt zařízení (Filter DO). Strom zařízení teď vypadá podobně jako tento diagram.

diagram stromu zařízení, který zobrazuje objekty filtru, funkce a fyzického zařízení v uzlu zařízení proseware gizmo.

V diagramu si všimněte, že v jednom uzlu je ovladač filtru nad ovladačem funkce a v druhém uzlu je ovladač filtru pod ovladačem funkce. Ovladač filtrování, který se nachází nad funkčním ovladačem ve stohu zařízení, se nazývá horní filtr. Filtrační ovladač, který se nachází pod funkčním ovladačem, se nazývá spodní filtrační ovladač.

PDO je vždy dolním objektem zařízení v zásobníku zařízení. Toto vyplývá ze způsobu, jakým je konstruován zásobník zařízení. PDO je vytvořen jako první, a když jsou k zásobníku připojeny další objekty zařízení, připojí se k horní části existujícího zásobníku.

Poznámka Při instalaci ovladačů pro zařízení, instalační program použije informace v souboru informace (INF) k určení, který ovladač je ovladačem funkce, a které ovladače jsou filtry. Soubor INF obvykle poskytuje Společnost Microsoft nebo dodavatel hardwaru. Po instalaci ovladačů pro zařízení může správce PnP určit funkci a filtrovat ovladače zařízení vyhledáním v registru.

Řidiči autobusu

V předchozím diagramu vidíte, že ovladač Pci.sys hraje dvě role. Nejprve Pci.sys je přidružen k FDO v uzlu zařízení PCI Bus. Ve skutečnosti vytvořilo FDO v uzlu zařízení PCI Bus. Takže Pci.sys je ovladač funkce sběrnice PCI. Zadruhé, Pci.sys je přidružen k PDO v každém podřízeném uzlu sběrnice PCI. Mějte na paměti, že byly vytvořeny PDO pro podřízená zařízení. Ovladač, který vytvoří PDO pro uzel zařízení, se nazývá ovladač sběrnice pro uzel.

Pokud je vaším referenčním bodem sběrnice PCI, Pci.sys je ovladač funkce. Pokud je ale vaším referenčním bodem zařízení Proseware Gizmo, pak Pci.sys je ovladač sběrnice. Tato duální role je typická ve stromu zařízení PnP. Ovladač, který slouží jako ovladač funkce pro sběrnici, slouží také jako ovladač sběrnice pro podřízené zařízení této sběrnice.

Zásobníky zařízení v uživatelském režimu

Zatím jsme probírali zásobníky zařízení v režimu jádra. To znamená, že ovladače v zásobníkech běží v režimu jádra a objekty zařízení jsou mapovány do systémového prostoru, což je adresní prostor, který je k dispozici pouze pro kód spuštěný v režimu jádra. Informace o rozdílu mezi režimem jádra a uživatelským režimem naleznete v tématu Režim uživatele a režim jádra.

V některých případech má zařízení kromě zásobníku zařízení v režimu jádra i zásobník zařízení v uživatelském režimu. Ovladače uživatelského režimu jsou často založeny na User-Mode Driver Framework (UMDF), což je jeden z modelů ovladačů poskytovaných rozhraními WDF (Windows Driver Frameworks). V UMDF jsou ovladače DLL v uživatelském režimu a objekty zařízení jsou COM objekty, které implementují rozhraní IWDFDevice. Objekt zařízení v zásobníku zařízení UMDF se nazývá objekt zařízení WDF (WDF DO).

Následující diagram znázorňuje uzel zařízení, zásobník zařízení v režimu jádra a zásobník zařízení v uživatelském režimu pro zařízení USB-FX-2. Ovladače v uživatelském i jádrovém režimu se účastní vstupně-výstupních požadavků, které jsou směrovány na zařízení USB-FX-2.

diagram zobrazující zásobníky zařízení v uživatelském režimu a režimu jádra

koncepty pro všechny vývojáře ovladačů

vrstvy ovladačů