Delen via


Voorbeeld van WDM-apparaatstack

In deze sectie worden de apparaatobjecten beschreven die door een set stuurprogramma's voor USB-hardware kunnen worden gemaakt. Het illustreert WDM-apparaatobjecten en hoe ze worden gelaagd.

In de volgende afbeelding ziet u de apparaatobjecten die door de voorbeeldstuurprogramma's worden gemaakt. Zie wdm-stuurprogrammalagen: een voorbeeld voor meer informatie.

diagram met voorbeelden van wdm-apparaatobjectlagen voor een USB-stick.

Beginnend vanaf de onderkant van deze afbeelding bevatten de apparaten in de voorbeeldapparaatstacks:

  1. Een PDO en een FDO voor de PCI-bus.

    Het hoofdbusstuurprogramma inventariseert de interne systeembus (de hoofdbus) en maakt een PDO voor elk apparaat dat wordt gevonden. Een van deze PPO's is voor de PCI-bus. (In de afbeelding worden de PDO en FDO voor de hoofdbus niet weergegeven.)

    De PnP-manager identificeert het PCI-stuurprogramma als het functiestuurprogramma voor de PCI-bus, laadt het stuurprogramma (als deze nog niet is geladen) en geeft de PDO door aan het PCI-stuurprogramma. In de AddDevice-routine maakt het PCI-stuurprogramma een FDO voor de PCI-bus (IoCreateDevice) en koppelt de FDO aan de apparaatstack (IoAttachDeviceToDeviceStack) voor de PCI-bus. Het PCI-stuurprogramma maakt en koppelt deze FDO als onderdeel van zijn verantwoordelijkheden als functiestuurprogramma voor de PCI-bus.

    Dit voorbeeld bevat geen filterstuurprogramma's voor de PCI-bus.

  2. Een PDO en een FDO voor de USB-hostcontroller.

    De PnP-manager stuurt het PCI-stuurprogramma om het apparaat te starten (IRP_MN_START_DEVICE) en vraagt vervolgens het PCI-stuurprogramma op voor de kinderen (IRP_MN_QUERY_DEVICE_RELATIONS met het relationele type BusRelations). Als antwoord geeft het PCI-stuurprogramma de apparaten op de bus op. In dit voorbeeld vindt het PCI-stuurprogramma een USB-hostcontroller en maakt het een PDO voor dat apparaat. De brede pijl in de afbeelding geeft aan dat de USB-hostcontroller een onderdeel van de PCI-bus is. Het PCI-stuurprogramma maakt 'PDO's' voor de onderliggende apparaten als onderdeel van zijn verantwoordelijkheden als busstuurprogramma van de PCI-bus.

    De PnP-manager identificeert het miniklasse-/klassestuurprogrammapaar van de USB-hostcontroller als het functiestuurprogramma voor de USB-hostcontroller en laadt het stuurprogrammapaar. De PnP-manager roept het stuurprogrammapaar op het juiste moment aan om een FDO voor de USB-hostcontroller te maken en te koppelen.

    Dit voorbeeld bevat geen filterstuurprogramma's voor de USB-hostcontroller.

  3. Een PDO en een FDO voor de USB-hub.

    De USB-hostcontroller inventariseert de bus, zoekt de USB-hub in de enige poort en maakt een PDO voor de hub. Het USB-hubstuurprogramma maakt en koppelt een FDO voor de hub.

    Dit voorbeeld bevat geen filterstuurprogramma's voor de USB-hub.

  4. Een PDO, een FDO en twee filter-DO's voor het joystickapparaat.

    Het USB-hubstuurprogramma inventariseert de bus, zoekt een HID-apparaat (de joystick) en maakt een PDO voor de joystick.

    In dit voorbeeld wordt een filterstuurprogramma op lager niveau ingesteld in het register voor stickapparaten, zodat de PnP-manager het filterstuurprogramma laadt. Het filterstuurprogramma bepaalt dat het relevant is voor het apparaat en maakt en koppelt een filter DO aan de apparaatstack.

    De PnP-manager bepaalt dat de functionele bestuurder voor het joystick-toestel het HID-class/miniclass bestuurderspaar is en laadt deze bestuurders. Het stuurprogrammapaar bestaat uit een miniclassestuurprogramma dat gekoppeld is aan een klassestuurprogramma-DLL. Samen fungeren ze als één functiestuurprogramma voor het apparaat. Het stuurprogrammapaar van de klasse/miniklasse maakt één apparaatobject, de FDO en koppelt het aan de apparaatstack.

    Een filterstuurprogramma op het hoogste niveau maakt en koppelt een filter DO aan de apparaatstack, op een manier die vergelijkbaar is met het filter op lager niveau.

Het bovenliggende busstuurprogramma maakt altijd de PDO onderaan de apparaatstack voor een bepaald apparaat. Wanneer stuurprogramma's PnP of power IRPs verwerken, moeten ze elke IRP helemaal langs de apparaatstack doorgeven aan de PDO en het bijbehorende busstuurprogramma.

In de volgende afbeelding ziet u dezelfde apparaatstacks als de vorige afbeelding, maar wordt benadrukt welke apparaatobjecten elk stuurprogramma maakt en beheert.

diagram met voorbeelden van apparaatobjectlagen vanuit het perspectief van het stuurprogramma.

Een busstuurprogramma omvat meer dan één apparaatstack. Een buschauffeur maakt de FDO voor de busadapter of controller en maakt een PDO voor elk van de onderliggende apparaten.