Dela via


WDM-drivrutinslager: Ett exempel

I det här avsnittet beskrivs en möjlig uppsättning WDM-drivrutiner för USB-maskinvara för att illustrera WDM-drivrutinslager.

Följande bild visar ett exempel på PnP-maskinvarukonfiguration för en USB-joystick.

diagram som illustrerar exempel plug and play-maskinvara för en USB-joystick.

I den här bilden ansluter USB-joysticken till en port på en USB-hubb. USB-hubben i det här exemplet finns på USB-värdstyrenhetskortet och är ansluten till den enda porten på USB-värdstyrenhetskortet. USB-värdstyrenheten ansluts till en PCI-buss. Från ett PnP-perspektiv är USB-hubben, USB-värdstyrenheten och PCI-bussen alla bussenheter eftersom de alla tillhandahåller portar. Joysticken är inte en bussenhet.

Följande bild visar en exempeluppsättning med drivrutiner som kan läsas in för USB-joystickmaskinvaran i föregående bild.

diagram som illustrerar exempel plug and play drivrutinsskikt för en usb joystick.

Med början längst ned i föregående bild innehåller drivrutinerna i exempelstacken:

  • En PCI-drivrutin som kör PCI-bussen. Det här är en PnP-busschaufför. PCI-bussdrivrutinen levereras med systemet av Microsoft.

  • Bussdrivrutinen för USB-värdstyrenheten implementeras som en kombination av klass- och miniklassdrivrutiner. USB-värdstyrenhetsklassen och drivrutiner för miniklasser tillhandahålls med systemet av Microsoft.

  • USB-hubbens bussdrivrutin som kör USB-hubben. USB-hubbens drivrutin levereras med systemet av Microsoft.

  • Tre drivrutiner för joystick-enheten; en av dem är ett klass-/miniklasspar.

    Funktionsdrivrutinen, som är huvuddrivrutinen för joystickenheten, är kombinationen av HID-klassdrivrutinen och HID USB-miniklassdrivrutinen. (HID representerar "Human Interface Device".) HID USB-miniklassdrivrutinen stöder USB-specifika semantik för HID-enheter och förlitar sig på HID-klassdrivrutins-DLL för allmän HID-support.

    En funktionsdrivrutin kan vara specifik för en viss enhet, eller, som i fallet med HID, en funktionsdrivrutin kan betjäna en grupp enheter. I det här exemplet betjänar HID-klassdrivrutinen och HID USB-miniklassdrivrutinen alla HID-kompatibla enheter på en USB-buss i systemet. Ett HID-klassdrivrutin/HID 1394 miniklass-drivrutinspar skulle tjänstgöra för alla HID-kompatibla enheter på en 1394-buss.

    En funktionsdrivrutin kan skrivas av enhetsleverantören eller av Microsoft. I det här exemplet skrivs funktionsdrivrutinen (HID-klassen/HID USB miniclass-drivrutinsparet) av Microsoft.

    Det finns två filterdrivrutiner för joystickenheten i det här exemplet: ett klassfilter på den övre nivån som lägger till en makroknappfunktion och ett filtrering på lägre nivå som gör att joysticken kan emulera en musenhet.

    Det övre filtret skrivs av någon som behöver filtrera joysticken I/O och filterdrivrutinen på lägre nivå är skriven av joystickleverantören.

  • HID-klienterna i kernelläge och användarläge och programmet är inte drivrutiner utan visas för fullständighet.