Windows Driver Model - Windows Driver Model
I computeren er Windows Driver Model ( WDM ) - også kendt på et tidspunkt som Win32 Driver Model - en ramme for enhedsdrivere, der blev introduceret med Windows 98 og Windows 2000 til at erstatte VxD , som blev brugt på ældre versioner af Windows, f.eks. som Windows 95 og Windows 3.1 samt Windows NT Driver Model .
Oversigt
WDM-drivere er lagdelt i en stak og kommunikerer med hinanden via I / O-anmodningspakker (IRP'er). Microsoft Windows-drivermodellen forenede drivermodeller til produktlinjerne Windows 9x og Windows NT ved at standardisere kravene og reducere den mængde kode, der skulle skrives. WDM-drivere kører ikke på operativsystemer tidligere end Windows 98 eller Windows 2000, såsom Windows 95 (før OSR2-opdateringen, der sidelaster WDM-modellen), Windows NT 4.0 og Windows 3.1. Ved at overholde WDM kan drivere være binære kompatible og kildekompatible på tværs af Windows 98, Windows 98 Second Edition, Windows Me , Windows 2000, Windows XP , Windows Server 2003 og Windows Vista (for bagudkompatibilitet) på x86- baserede computere. WDM-drivere er designet til at være fremadkompatible, så en WDM-driver kan køre på en version af Windows nyere end det, driveren oprindeligt blev skrevet til, men at gøre det ville betyde, at driveren ikke kan udnytte de nye funktioner, der blev introduceret med den nye version. WDM er generelt ikke bagudkompatibel , det vil sige, at en WDM-driver ikke garanteres at køre på nogen ældre version af Windows. For eksempel kan Windows XP bruge en driver, der er skrevet til Windows 2000, men bruger ikke nogen af de nye WDM-funktioner, der blev introduceret i Windows XP. En driver, der er skrevet til Windows XP, kan dog muligvis ikke indlæses i Windows 2000.
WDM findes i det mellemliggende lag af Windows 2000- kernetilstandsdrivere og blev introduceret for at øge funktionaliteten og lette skrivning af drivere til Windows. Selvom WDM hovedsageligt var designet til at være binær og kilde-kompatibel mellem Windows 98 og Windows 2000, er dette ikke altid ønsket, og så specifikke drivere kan udvikles til begge operativsystemer.
Enheds kerne-tilstand drivere
Med Windows Drivers Model (WDM) til enheder implementerer Microsoft en tilgang til drivere til kernetilstand, der er unik for Windows-operativsystemer . WDM implementerer en lagdelt arkitektur til enhedsdrivere , og hver enhed på en computer betjenes af en stak drivere. Imidlertid kan hver driver i den stak kæde isolere hardwareuafhængige funktioner fra driveren ovenfor og under den. Så chauffører i stakken behøver ikke at interagere direkte med hinanden. WDM definerer arkitektur og enhedsprocedurer for en række enheder, såsom skærm og netværkskort , kendt som Network Driver Interface Specification (NDIS). I NDIS-arkitekturen inkluderer lagdelte netværksdrivere drivere på lavere niveau, der administrerer hardware og drivere på øverste niveau, der implementerer netværksdatatransport, såsom Transmission Control Protocol (TCP).
Mens WDM definerer tre typer enhedsdrivere, indeholder ikke alle driverstakke for en given enhed alle typer enhedsdrivere. De tre typer WDM-enhedsdrivere er:
Buschauffør : For hver bus på bundkortet er der en buschauffør med det primære ansvar for identifikation af alle enheder, der er tilsluttet den bus, og som reagerer på plug and play-begivenheder. Microsoft leverer busdrivere som en del af operativsystemet, såsom PCI , PnPISA , SCSI , USB og FireWire .
Funktionsdriver : dette er hoveddriveren til en enhed, og den giver den operationelle grænseflade til en enhed ved at håndtere læse- og skriveoperationer. Funktionsdrivere er skrevet af enhedsleverandørerne, og for deres interaktion med hardwaren er de afhængige af, at en bestemt busdriver er til stede i Windows-operativsystemet.
Filterdriver : Denne driver er valgfri og kan ændre en enheds opførsel, såsom input- og outputanmodninger. Disse drivere kan implementeres som filterdrivere på lavere og øvre niveau.
Objektorienteret driverstak
Funktionsdrivere og buschauffører implementeres ofte som driver / minidriver-par, som i praksis enten er en klasse / miniklasse eller et port / miniport-par.
Busdrivere til enheder, der er knyttet til en bus, implementeres som klassedrivere og er hardware-agnostiske. De understøtter driften af en bestemt type enhed. Windows-operativsystemer inkluderer et antal klassedrivere, såsom kbdclass.sys-driveren til tastaturer. Miniklassedrivere på den anden side leveres af leverandøren af en enhed og understøtter kun enhedsspecifikke operationer til en bestemt enhed i en given klasse.
Portdrivere understøtter generelle input / output (I / O) operationer til en perifer hardware interface. Portdrivernes kernefunktionalitet er pålagt af operativsystemet, og Windows-operativsystemer integrerer en række portdrivere. For eksempel forbinder i8042prt.sys-portdriveren til 8042-mikrocontrolleren PS / 2- tastaturer til bundkortets perifere bus. Miniport-driverne, som miniclass-drivere, leveres af hardwareleverandørerne og understøtter kun enhedsspecifikke operationer af perifer hardware, der er forbundet til en port på bundkortet.
Hver driver, der behandler en I / O-anmodning om en enhed, har et tilsvarende objekt, der indlæses i hovedhukommelsen . Et enhedsobjekt oprettes af Windows-operativsystemet fra den tilknyttede enhedsklasse. Enhedsobjekter indeholder strukturer af typen DEVICE_OBJECT, som gemmer markører til deres driver. På kørselstid bruges disse markører til at finde en chaufførs afsendelsesrutine og medlemsfunktioner. I WDM-driverstakken modtager objektet til filterdriverenheden, kendt som det øvre filter, en I / O-anmodningspakke (IRP) for en enhed fra I / O-manager. Hvis den øverste filterdriver ikke kan betjene anmodningen, finder den driverens objekt et trin ned i driverstakken. IRP'en sendes ned i driverstakken ved at kalde funktionen IoCallDrive () og behandles af funktionsdriverenhedens objekt, også kendt som funktionelt enhedsobjekt. Funktionsdriverenhedsobjektet kan til gengæld sende IRP til det nederste filter, et andet objekt til filterenheden. Derefter kan IRP'en sendes ned til buschaufføren, der fungerer som det fysiske enhedsobjekt. Busdriverobjektet er i bunden af driverstakken og interagerer med hardware-abstraktionslaget , som er en del af Windows-operativsystemets kerne og giver Windows-operativsystemer mulighed for at køre på en række processorer , forskellige arkitektoniske hukommelsesstyringsenhedsarkitekturer og en række computersystemer med forskellige I / O-busarkitekturer. Udførelsen af en IRP er afsluttet, når nogen af driverobjekterne i stakken returnerer anmodningen tilbage til I / O-manager med resultatet og et statusflag.
Enhedsdrivere til forskellige Windows-operativsystemer
WDM-rammen blev udviklet af Microsoft for at forenkle kommunikationen mellem operativsystemet og drivere inde i kernen. I Windows-operativsystemer implementeres drivere som Dynamic Link Libraries .DLL- eller .SYS-filer. WDM-kompatible drivere skal følge reglerne for design, initialisering, plug-and-play, strømstyring og hukommelsestildeling. I praksis genbruger WDM-driverprogrammerere store stykker kode, når de bygger nye objektorienterede drivere. Dette betyder, at drivere i WDM-stakken kan indeholde restfunktionalitet, som ikke er dokumenteret i specifikationerne. Drivere, der har bestået Microsofts kvalitetstest, signeres digitalt af Microsoft. Den Microsoft Hardware Compatibility Tests og Driver Development Kit inkluderer pålidelighed og stresstest.
En enhedsdriver, der ikke er designet til en bestemt hardwarekomponent, tillader muligvis, at en anden enhed fungerer. Dette skyldes, at den grundlæggende funktionalitet i en hardwareenhedsklasse er ens. Funktionen i grafikkortklassen tillader f.eks. Microsoft Basic Display Adapter-driveren at arbejde med en lang række videokort. Imidlertid vil installation af den forkerte driver til en enhed betyde, at enhedens fulde funktionalitet ikke kan bruges, og det kan resultere i dårlig ydelse og destabilisering af Windows-operativsystemet. Leverandører af hardwareenheder frigiver muligvis opdaterede enhedsdrivere til bestemte Windows-operativsystemer for at forbedre ydeevnen, tilføje funktionalitet eller rette fejl . Hvis en enhed ikke fungerer som forventet, skal de nyeste enhedsdrivere downloades fra leverandørens websted og installeres.
Enhedsdrivere er designet til bestemte Windows-operativsystemversioner, og enhedsdrivere til en tidligere version af Windows fungerer muligvis ikke korrekt eller overhovedet med andre versioner. Fordi mange enhedsdrivere kører i kernetilstand, kan installation af drivere til en tidligere operativsystemversion destabilisere Windows-operativsystemet. Overførsel af en computer til en højere version af et Windows-operativsystem kræver derfor, at der installeres nye enhedsdrivere til alle hardwarekomponenter. At finde opdaterede enhedsdrivere og installere dem til Windows 10 har introduceret komplikationer i migrationsprocessen.
Almindelige problemer med enhedsdriverkompatibilitet inkluderer: en 32-bit enhedsdriver kræves til et 32-bit Windows-operativsystem, og en 64-bit enhedsdriver er påkrævet til et 64-bit Windows-operativsystem. 64-bit enhedsdrivere skal underskrives af Microsoft, fordi de kører i kernetilstand og har ubegrænset adgang til computerhardwaren. For operativsystemer før Windows 10 tillod Microsoft leverandører at underskrive deres 64-bit drivere selv, forudsat at leverandører havde foretaget kompatibilitetstest. Dog skal Windows 10 64-bit drivere nu underskrives af Microsoft. Derfor skal enhedsleverandører sende deres drivere til Microsoft til test og godkendelse. Driverinstallationspakken indeholder alle filer i .inf-biblioteket, og alle filer i pakken skal installeres, ellers kan installationen af enhedsdriveren muligvis mislykkes. For operativsystemversioner før Windows 10 blev ikke alle nødvendige filer til driverinstallationen inkluderet i pakken, da dette krav ikke konsekvent blev håndhævet. Nogle enhedsdriverinstallatører har en brugergrænseflade GUI , der ofte kræver input af brugerkonfiguration. Fraværet af en brugergrænseflade betyder ikke, at installationen af enhedsdriveren ikke er vellykket. Desuden er Windows 10-enhedsdrivere ikke tilladt at inkludere en brugergrænseflade. Den Network driver Interface Specification (NDIS) 10.x bruges til netværksenheder i Windows 10 operativsystemet. Netværksenhedsdrivere til Windows XP bruger NDIS 5.x og fungerer muligvis med efterfølgende Windows-operativsystemer, men af ydeevneårsager skal netværksenhedsdrivere implementere NDIS 6.0 eller højere. Tilsvarende er WDDM drivermodellen til Windows Vista og nyere, som erstatter XPDM, der bruges i grafikdrivere.
Enhedshåndtering
Den Enhedshåndtering er en Kontrolpanel applet i Microsoft Windows operativsystemer. Det giver brugerne mulighed for at se og kontrollere den hardware, der er knyttet til computeren. Det giver brugerne mulighed for at se og ændre hardwareenhedsegenskaber og er også det primære værktøj til at styre enhedsdrivere.
Kritik
Windows Driver Model, mens en betydelig forbedring i forhold til VxD og Windows NT Driver Model, der blev brugt før den, er blevet kritiseret af driversoftwareudviklere, mest markant for følgende:
- Interaktion med strømstyringsbegivenheder og plug and play er vanskelig. Dette kan føre til situationer, hvor Windows-maskiner ikke kan gå ind eller afslutte dvaletilstand korrekt på grund af fejl i førerkoden.
- I / O-aflysning er vanskelig at få ret.
- Kompleks kedelpladestøttekode kræves til hver driver.
- Der er ingen understøttelse af at skrive rene drivere til brugertilstand .
Der var også en række bekymringer over kvaliteten af dokumentation og prøver, som Microsoft leverede.
På grund af disse problemer har Microsoft frigivet et nyt sæt rammer oven på WDM, kaldet Windows Driver Frameworks (WDF; tidligere Windows Driver Foundation), som inkluderer Kernel-Mode Driver Framework (KMDF) og User-Mode Driver Framework (UMDF ). Windows Vista understøtter både ren WDM og den nyere WDF. KMDF er også tilgængelig til download til Windows XP og endda Windows 2000, mens UMDF er tilgængelig til Windows XP og nyere.
Se også
-
Windows Driver Frameworks (WDF)
- Kernel-Mode Driver Framework (KMDF)
- User Framework Driver Framework (UMDF)
- Windows Display Driver Model (WDDM)
Referencer
- Finnel, Lynn (2000). MCSE eksamen 70-215, Microsoft Windows 2000 Server . Microsoft Press . ISBN 1-57231-903-8 .
- Oney, Walter (2003). Programmering af Windows Driver Model , Microsoft Press , ISBN 0-7356-1803-8 .
eksterne links
- WDM Input Output Concepts - Denne artikel giver et overblik over højt niveau af I / O-koncepterne som defineret i Windows Driver Model.
- Grundlæggende om Windows driver API - Denne artikel informerer dig om det grundlæggende bag lydkortdrivere som WDM, ASIO , MME , DirectX osv.
- Channel 9 Video - Interview med Device Management and Installation-teamet hos Microsoft, der primært dækker Plug-and-play .
- Forelæsningsnotater om Windows Kernel Programming på Wayback Machine (arkiveret 3. marts 2016) - Gratis forelæsningsnotater bogfragment, der beskriver grundlæggende oprettelse af Windows-drivere, Kernel Mode-programmering og Memory Management