Windows Driver Model - Windows Driver Model

I databehandling er Windows Driver Model ( WDM ) - også kjent på et tidspunkt som Win32 Driver Model  - et rammeverk for enhetsdrivere som ble introdusert med Windows 98 og Windows 2000 for å erstatte VxD , som ble brukt på eldre versjoner av Windows slik som Windows 95 og Windows 3.1 , samt Windows NT Driver Model .

Oversikt

WDM-drivere er lagdelt i en bunke og kommuniserer med hverandre via I / O-forespørselspakker (IRPer). Microsoft Windows Driver Model samlet drivermodellene for produktlinjene Windows 9x og Windows NT ved å standardisere kravene og redusere mengden kode som måtte skrives. WDM-drivere kjører ikke på operativsystemer tidligere enn Windows 98 eller Windows 2000, for eksempel Windows 95 (før OSR2-oppdateringen som sidelaster WDM-modellen), Windows NT 4.0 og Windows 3.1. Ved å overholde WDM kan drivere være binære og kildekompatible på tvers av Windows 98, Windows 98 Second Edition, Windows Me , Windows 2000, Windows XP , Windows Server 2003 og Windows Vista (for bakoverkompatibilitet) på x86- baserte datamaskiner. WDM-drivere er designet for å være fremoverkompatible slik at en WDM-driver kan kjøre på en nyere versjon av Windows enn det driveren opprinnelig ble skrevet for, men å gjøre det vil bety at driveren ikke kan dra nytte av noen nye funksjoner introdusert med den nye versjon. WDM er vanligvis ikke bakoverkompatibel , det vil si at en WDM-driver ikke garanteres å kjøre på noen eldre versjoner av Windows. For eksempel kan Windows XP bruke en driver skrevet for Windows 2000, men vil ikke bruke noen av de nye WDM-funksjonene som ble introdusert i Windows XP. Imidlertid kan en driver som er skrevet for Windows XP lastes inn eller ikke på Windows 2000.

WDM eksisterer i det mellomliggende laget av Windows 2000- kjernemodusdrivere og ble introdusert for å øke funksjonaliteten og lette skriverdrivere for Windows. Selv om WDM hovedsakelig ble designet for å være binær og kildekompatibel mellom Windows 98 og Windows 2000, er det ikke alltid dette er ønsket, og det kan derfor utvikles spesifikke drivere for begge operativsystemene.

Enhetskjernemodusdrivere

Med Windows Drivers Model (WDM) for enheter implementerer Microsoft en tilnærming til kjernemodusdrivere som er unik for Windows-operativsystemer . WDM implementerer en lagdelt arkitektur for enhetsdrivere , og hver enhet på en datamaskin serveres av en bunke med drivere. Imidlertid kan hver driver i den bunken kjede isolere maskinvareuavhengige funksjoner fra driveren over og under den. Så drivere i stabelen trenger ikke å samhandle direkte med hverandre. WDM definerer arkitektur og enhetsprosedyrer for en rekke enheter, for eksempel skjerm og nettverkskort , kjent som Network Driver Interface Specification (NDIS). I NDIS-arkitekturen inkluderer lagdelte nettverksdrivere drivere på lavere nivå som administrerer maskinvaren og drivere på øverste nivå som implementerer datatransport av nettverket, for eksempel TCP ( Transmission Control Protocol ).

Mens WDM definerer tre typer enhetsdrivere, inneholder ikke alle driverstabler for en gitt enhet alle typer enhetsdrivere. De tre WDM-enhetsdrivertypene er:

Bussjåfør : For hver buss på hovedkortet er det en bussjåfør, med hovedansvaret for identifisering av alle enheter som er koblet til den bussen, og som svarer på plug and play-hendelser. Microsoft vil tilby bussjåfører som en del av operativsystemet, som PCI , PnPISA , SCSI , USB og FireWire .

Funksjonsdriver : dette er hoveddriveren for en enhet, og den gir operasjonsgrensesnittet for en enhet ved å håndtere lese- og skriveoperasjoner. Funksjonsdrivere er skrevet av enhetsleverandørene, og for deres interaksjon med maskinvaren er de avhengige av at en bestemt bussjåfør er til stede i Windows-operativsystemet.

Filterdriver : Denne driveren er valgfri, og kan endre oppførselen til en enhet, for eksempel forespørsel om inngang og utgang. Disse driverne kan implementeres som filterdrivere på nedre og øvre nivå.

Objektorientert driverstabel

Funksjonsdrivere og bussjåfører blir ofte implementert som driver / minidriver-par, som i praksis enten er et klasse / miniklass eller et port / miniport-par.

Bussjåfører for enheter som er koblet til en buss er implementert som klassedrivere og er maskinvare-agnostiske. De vil støtte driften av en bestemt type enhet. Windows-operativsystemer inkluderer en rekke klassedrivere, for eksempel kbdclass.sys-driveren for tastaturer. Miniklassedrivere leveres derimot av leverandøren av en enhet og støtter bare enhetsspesifikke operasjoner for en bestemt enhet i en gitt klasse.

Portdrivere støtter generelle inngangs- / utgangsoperasjoner (I / O) for et perifert maskinvaregrensesnitt. Kjernefunksjonaliteten til portdrivere er pålagt av operativsystemet, og Windows-operativsystemer integrerer en rekke portdrivere. For eksempel kobler i8042prt.sys-portdriveren for 8042-mikrokontrolleren PS / 2- tastaturer til hovedbussens periferibuss. Miniport-driverne, som mini-driverne, leveres av maskinvareleverandørene og støtter bare enhetsspesifikke operasjoner av perifer maskinvare som er koblet til en port på hovedkortet.

Hver driver som behandler en I / O-forespørsel for en enhet, har et tilsvarende objekt som lastes inn i hovedminnet . Et enhetsobjekt opprettes av Windows-operativsystemet fra den tilhørende enhetsklassen. Enhetsobjekter inneholder strukturer av typen DEVICE_OBJECT, som lagrer pekere til driveren. På kjøretid brukes disse pekerne for å lokalisere førerens utsendelsesrutine og medlemsfunksjoner. I WDM-driverstakken vil filterdriverens enhetsobjekt, kjent som det øvre filteret, motta en I / O-forespørselspakke (IRP) for en enhet fra I / O-administratoren. Hvis den øvre filterdriveren ikke kan betjene forespørselen, vil den finne gjenstanden til driveren ett trinn ned i driverstakken. IRP blir sendt ned driverstakken ved å kalle funksjonen IoCallDrive (), og behandles av funksjonsdriverenhetsobjektet, også kjent som funksjonelt enhetsobjekt. Funksjonsdriverenhetsobjektet kan i sin tur føre IRP til det nedre filteret, et annet filterenhetsobjekt. Deretter kan IRP sendes ned til bussjåføren, som fungerer som det fysiske enhetsobjektet. Bussdriverobjektet er nederst i driverstakken, og samhandler med hardware-abstraksjonslaget , som er en del av Windows-operativsystemkjernen og lar Windows-operativsystemene kjøre på en rekke prosessorer , forskjellige minnestyringsenhetsarkitekturer og en rekke datasystemer med forskjellige I / O-bussarkitekturer. Utførelsen av en IRP er fullført når noen av driverobjektene i stakken returnerer forespørselen tilbake til I / O-manager, med resultatet og et statusflagg.

Enhetsdrivere for forskjellige Windows-operativsystemer

WDM-rammeverket ble utviklet av Microsoft for å forenkle kommunikasjonen mellom operativsystemet og drivere inne i kjernen. I Windows-operativsystemer implementeres drivere som Dynamic Link Libraries .DLL- eller .SYS-filer. WDM-kompatible drivere må følge regler for design, initialisering, plug-and-play, strømstyring og minnetildeling. I praksis bruker WDM-driverprogrammerere store koder når de bygger nye objektorienterte drivere. Dette betyr at drivere i WDM-stakken kan inneholde gjenværende funksjonalitet, som ikke er dokumentert i spesifikasjonene. Drivere som har bestått Microsofts kvalitetstest er signert digitalt av Microsoft. Den Microsoft Hardware Compatibility Tester og Driver Development Kit inkluderer pålitelighet og stresstester.

En enhetsdriver som ikke er designet for en bestemt maskinvarekomponent, kan tillate at en annen enhet fungerer. Dette er fordi den grunnleggende funksjonaliteten til en maskinvareenhetsklasse er lik. Funksjonaliteten til skjermkortklassen, for eksempel, gjør at Microsoft Basic Display Adapter-driveren kan jobbe med et bredt utvalg av skjermkort. Imidlertid vil installasjon av feil driver for en enhet bety at enhetens fulle funksjonalitet ikke kan brukes, og kan føre til dårlig ytelse og destabilisering av Windows-operativsystemet. Maskinvareleverandørleverandører kan gi ut oppdaterte enhetsdrivere for bestemte Windows-operativsystemer for å forbedre ytelsen, legge til funksjonalitet eller fikse feil . Hvis en enhet ikke fungerer som forventet, bør de nyeste enhetsdriverne lastes ned fra leverandørens nettsted og installeres.

Enhetsdrivere er designet for bestemte Windows-operativsystemversjoner, og enhetsdrivere for en tidligere versjon av Windows fungerer kanskje ikke riktig eller i det hele tatt med andre versjoner. Fordi mange enhetsdrivere som kjører i kjernemodus, kan installasjonsdrivere for en tidligere operativsystemversjon destabilisere Windows-operativsystemet. Overføring av en datamaskin til en høyere versjon av et Windows-operativsystem krever derfor at nye enhetsdrivere er installert for alle maskinvarekomponenter. Å finne oppdaterte enhetsdrivere og installere dem for Windows 10 har introdusert komplikasjoner i migreringsprosessen.

Vanlige problemer med enhetsdriverkompatibilitet inkluderer: en 32-biters enhetsdriver kreves for et 32-biters Windows-operativsystem, og en 64-biters enhetsdriver er nødvendig for et 64-biters Windows-operativsystem. 64-biters enhetsdrivere må signeres av Microsoft, fordi de kjører i kjernemodus og har ubegrenset tilgang til maskinvaren. For operativsystemer før Windows 10 tillot Microsoft leverandører å signere sine 64-biters drivere selv, forutsatt at leverandører hadde gjennomført kompatibilitetstester. Imidlertid må Windows 10 64-biters drivere nå signeres av Microsoft. Derfor må enhetsleverandører sende driverne til Microsoft for testing og godkjenning. Driverinstallasjonspakken inneholder alle filene i .inf-katalogen, og alle filene i pakken må installeres, ellers kan installasjonen av enhetsdriveren mislykkes. For operativsystemversjoner før Windows 10 var ikke alle filer som var nødvendige for driverinstallasjonen inkludert i pakken, da dette kravet ikke ble håndhevet konsekvent. Noen installasjonsprogrammer for enhetsdrivere har et brukergrensesnitt- GUI , som ofte krever brukerkonfigurasjon. Fraværet av et brukergrensesnitt betyr ikke at installasjonen av enhetsdriveren ikke lykkes. Dessuten har Windows 10-enhetsdrivere ikke lov til å inkludere et brukergrensesnitt. The Network Driver Interface Specification (NDIS) 10.x brukes for nettverksenheter ved Windows 10 operativsystem. Nettverksenhetsdrivere for Windows XP bruker NDIS 5.x og kan fungere med påfølgende Windows-operativsystemer, men av ytelsesårsaker bør nettverksenhetsdrivere implementere NDIS 6.0 eller høyere. Tilsvarende er WDDM drivermodellen for Windows Vista og nyere, som erstatter XPDM som brukes i grafikkdrivere.

Enhetsbehandling

Den Device Manager er en kontrollpanelappleten i Microsoft Windows operativsystemer. Det lar brukerne se og kontrollere maskinvaren som er koblet til datamaskinen. Det lar brukerne se og endre egenskaper for maskinvareenheter, og er også det primære verktøyet for å administrere enhetsdrivere.

Kritikk

Windows Driver Model, mens en betydelig forbedring i forhold til VxD og Windows NT Driver Model som ble brukt før den, har blitt kritisert av driverprogramvareutviklere, mest betydelig for følgende:

  • Interaksjoner med strømstyringshendelser og plug and play er vanskelige. Dette kan føre til situasjoner der Windows-maskiner ikke kan gå inn eller ut av hvilemodus riktig på grunn av feil i førerkoden.
  • I / O-kansellering er vanskelig å få rett.
  • Kompleks kjelestøttekode kreves for hver sjåfør.
  • Det er ingen støtte for å skrive rene brukermodusdrivere .

Det var også en rekke bekymringer om kvaliteten på dokumentasjon og eksempler som Microsoft ga.

På grunn av disse problemene har Microsoft gitt ut et nytt sett med rammeverk på toppen av WDM, kalt Windows Driver Frameworks (WDF; tidligere Windows Driver Foundation), som inkluderer Kernel-Mode Driver Framework (KMDF) og User-Mode Driver Framework (UMDF ). Windows Vista støtter både ren WDM og den nyere WDF. KMDF er også tilgjengelig for nedlasting for Windows XP og til og med Windows 2000, mens UMDF er tilgjengelig for Windows XP og nyere.

Se også

Referanser

Eksterne linker