Sdílet prostřednictvím


Příklad zásobníku zařízení WDM

Tato část popisuje objekty zařízení, které může sada ovladačů vytvořit pro hardware USB. Znázorňuje objekty zařízení WDM a jejich vrstvu.

Následující obrázek znázorňuje objekty zařízení, které vytvoří ukázkové ovladače. Další informace naleznete v tématu Vrstvy ovladačů WDM: Příklad.

diagram znázorňující ukázkové vrstvy objektů zařízení wdm pro joystick usb

Začínaje od spodní části tohoto obrázku, objekty zařízení v ukázkových zásobnících zařízení zahrnují:

  1. PDO a FDO pro sběrnici PCI.

    Kořenový ovladač sběrnice vyjmenovává interní systémovou sběrnici (kořenovou sběrnici) a vytvoří PDO pro každé zařízení, které najde. Jedním z těchto PDO je pro sběrnici PCI. (Obrázek nezobrazuje PDO a FDO kořenové sběrnice.)

    Správce PnP identifikuje ovladač PCI jako funkční ovladač sběrnice PCI, načte ovladač (pokud ještě není načten) a předá PDO ovladači PCI. V rutině AddDevice ovladač PCI vytvoří FDO pro sběrnici PCI (IoCreateDevice) a připojí FDO k zásobníku zařízení (IoAttachDeviceToDeviceStack) pro sběrnici PCI. Ovladač PCI vytvoří a připojí tento objekt, známý jako FDO, jako součást své odpovědnosti jako funkční ovladač sběrnice PCI.

    Tento příklad nezahrnuje ovladače filtru sběrnice PCI.

  2. PdO a FDO pro hostitelský řadič USB.

    Správce PnP nasměruje ovladač PCI, aby spustil své zařízení (IRP_MN_START_DEVICE), a poté požádá ovladač PCI o informace o jeho podřízených zařízeních (IRP_MN_QUERY_DEVICE_RELATIONS s typem relace BusRelations). V reakci na to ovladač PCI detekuje zařízení na své sběrnici. V tomto příkladu ovladač PCI najde řadič hostitele USB a vytvoří pro toto zařízení PDO. Široká šipka na obrázku označuje, že hostitelský řadič USB je "podřízený" sběrnice PCI. Ovladač PCI vytváří pro svá podřízená zařízení PDO jako součást svých odpovědností jako ovladač sběrnice pro sběrnici PCI.

    Správce PnP rozpoznává dvojici ovladačů minitřídy/třídy jako funkční ovladač pro řadič USB hostitele a načte tento pár ovladačů. Správce PnP volá dvojici ovladačů v odpovídající době k vytvoření a připojení FDO pro hostitelský řadič USB.

    Tento příklad neobsahuje ovladače filtru pro hostitelský řadič USB.

  3. PdO a FDO pro rozbočovač USB.

    USB hostitelský kontrolér provádí číslování sběrnice, vyhledá rozbočovač USB v jediném portu a vytvoří PDO pro rozbočovač. Ovladač USB rozbočovače vytvoří a připojí FDO pro rozbočovač.

    Tento příklad nezahrnuje ovladače filtru pro rozbočovač USB.

  4. PdO, FDO a dva filtrované objekty DO pro zařízení joystick.

    Ovladač rozbočovače USB vytvoří výčet sběrnice, vyhledá zařízení HID (joystick) a vytvoří PDO pro joystick.

    V tomto příkladu je v registru nastaven ovladač filtru nižší úrovně pro zařízení joystick, takže správce PnP načte ovladač filtru. Ovladač filtru určuje, že je pro zařízení relevantní, a vytvoří a připojí filtr DO ke zásobníku zařízení.

    Správce PnP určuje, že ovladač funkce pro zařízení joystick je dvojice ovladačů třídy /minitřídy HID a načte tyto ovladače. Dvojice ovladačů se skládá z ovladače minitřídy propojeného s knihovnou DLL ovladače třídy. Společně fungují jako jeden ovladač funkce pro zařízení. Dvojice ovladačů třídy/minitřídy vytvoří jeden objekt zařízení, objekt FDO a připojí ho ke zásobníku zařízení.

    Ovladač filtru vyšší úrovně vytvoří a připojí filtr DO ke zásobníku zařízení podobným způsobem jako filtr nižší úrovně.

Rodičovský ovladač sběrnice vždy vytvoří PDO na nejspodnější úrovni zásobníku zařízení pro konkrétní zařízení. Když ovladače zpracovávají PnP nebo power IRP, musí předat každý IRP po celý zásobník zařízení až k PDO a jeho přidruženému ovladači sběrnice.

Následující obrázek znázorňuje stejné zásobníky zařízení jako na předchozím obrázku, ale zdůrazňuje, které objekty zařízení každý ovladač vytváří a spravuje.

diagram znázorňující ukázkové vrstvy objektů zařízení z pohledu ovladače

Ovladač sběrnice pokrývá více než jednu vrstvu zařízení. Ovladač sběrnice vytvoří objekt FDO pro adaptér nebo řadič sběrnice a vytvoří PDO pro každé z jeho podřízených zařízení.