Model de driver Windows - Windows Driver Model

În calcul , Windows Driver Model ( WDM ) - cunoscut la un moment dat sub numele de Win32 Driver Model  - este un cadru pentru driverele de dispozitiv care a fost introdus cu Windows 98 și Windows 2000 pentru a înlocui VxD , care a fost utilizat pe versiunile mai vechi de Windows, cum ar fi precum Windows 95 și Windows 3.1 , precum și modelul de driver Windows NT .

Prezentare generală

Driverele WDM sunt stratificate într-un teanc și comunică între ele prin pachete de solicitare I / O (IRP). Modelul de driver Microsoft Windows a unificat modelele de driver pentru liniile de produse Windows 9x și Windows NT, standardizând cerințele și reducând cantitatea de cod care trebuia scris. Driverele WDM nu vor rula pe sisteme de operare mai vechi de Windows 98 sau Windows 2000, cum ar fi Windows 95 (înainte de actualizarea OSR2 care descarcă modelul WDM), Windows NT 4.0 și Windows 3.1. Conform WDM, driverele pot fi compatibile cu sursele binare și compatibile cu sursa în Windows 98, Windows 98 Ediția a doua, Windows Me , Windows 2000, Windows XP , Windows Server 2003 și Windows Vista (pentru compatibilitate inversă) pe computerele bazate pe x86 . Driverele WDM sunt concepute pentru a fi compatibile cu transmiterea, astfel încât un driver WDM să poată rula pe o versiune de Windows mai nouă decât cea pentru care a fost scris inițial driverul, dar acest lucru ar însemna că driverul nu poate profita de orice funcții noi introduse cu noul versiune. WDM nu este, în general , compatibil cu versiunile anterioare , adică un driver WDM nu este garantat să ruleze pe nicio versiune mai veche de Windows. De exemplu, Windows XP poate utiliza un driver scris pentru Windows 2000, dar nu va folosi niciuna dintre noile caracteristici WDM care au fost introduse în Windows XP. Cu toate acestea, un driver scris pentru Windows XP se poate încărca sau nu pe Windows 2000.

WDM există în stratul intermediar al driverelor în modul kernel Windows 2000 și a fost introdus pentru a spori funcționalitatea și ușurința scrierii driverelor pentru Windows. Deși WDM a fost conceput în principal pentru a fi binar și compatibil sursă între Windows 98 și Windows 2000, acest lucru nu este întotdeauna dorit și astfel pot fi dezvoltate drivere specifice pentru fiecare sistem de operare.

Drivere în modul kernel de dispozitiv

Cu Windows Drivers Model (WDM) pentru dispozitive Microsoft implementează o abordare a driverelor în modul kernel, care este unică pentru sistemele de operare Windows . WDM implementează o arhitectură stratificată pentru driverele de dispozitiv și fiecare dispozitiv al unui computer este deservit de un teanc de drivere. Cu toate acestea, fiecare driver din acel stack poate izola caracteristici independente de hardware de driverul de deasupra și dedesubt. Deci, driverele din stivă nu trebuie să interacționeze direct între ele. WDM definește arhitectura și procedurile dispozitivelor pentru o serie de dispozitive, cum ar fi afișajul și placa de rețea , cunoscute sub numele de Network Driver Interface Specification (NDIS). În arhitectura NDIS, driverele de rețea stratificate includ drivere de nivel inferior care gestionează hardware-ul și drivere de nivel superior care implementează transportul de date în rețea, cum ar fi Protocolul de control al transmisiei (TCP).

În timp ce WDM definește trei tipuri de drivere de dispozitiv, nu toate pilele de drivere pentru un anumit dispozitiv conțin toate tipurile de drivere de dispozitiv. Cele trei tipuri de drivere de dispozitiv WDM sunt:

Șofer de autobuz : pentru fiecare autobuz de pe placa de bază există un șofer de autobuz, cu responsabilitatea principală pentru identificarea tuturor dispozitivelor conectate la autobuzul respectiv și pentru a răspunde la evenimentele plug and play. Microsoft va furniza drivere de autobuz ca parte a sistemului de operare, cum ar fi PCI , PnPISA , SCSI , USB și FireWire .

Driver de funcții : acesta este driverul principal pentru un dispozitiv și oferă interfața operațională pentru un dispozitiv prin gestionarea operațiilor de citire și scriere. Driverele de funcții sunt scrise de furnizorii de dispozitive și, pentru interacțiunea lor cu hardware-ul, depind de un anumit driver de autobuz care este prezent în sistemul de operare Windows.

Driver de filtru : Acest driver este opțional și poate modifica comportamentul unui dispozitiv, cum ar fi cererile de intrare și ieșire. Aceste drivere pot fi implementate ca drivere de filtru de nivel inferior și superior.

Stivă de driver orientată obiect

Driverele de funcții și driverele de autobuz sunt adesea implementate ca perechi driver / minidriver, care în practică este fie o pereche clasă / miniclass, fie o pereche port / miniport.

Driverele de autobuz pentru dispozitivele atașate la un autobuz sunt implementate ca drivere de clasă și sunt hardware-agnostice. Acestea vor sprijini operațiunile unui anumit tip de dispozitiv. Sistemele de operare Windows includ un număr de drivere de clasă, cum ar fi driverul kbdclass.sys pentru tastaturi. Driverele Miniclass, pe de altă parte, sunt furnizate de furnizorul unui dispozitiv și acceptă numai operațiuni specifice dispozitivului, pentru un anumit dispozitiv dintr-o anumită clasă.

Driverele de port acceptă operațiuni generale de intrare / ieșire (I / O) pentru o interfață hardware periferică. Funcționalitatea de bază a driverelor de port este impusă de sistemul de operare, iar sistemele de operare Windows integrează o varietate de drivere de port. De exemplu, driverul de port i8042prt.sys pentru microcontrolerul 8042 conectează tastaturile PS / 2 la magistrala periferică a plăcii principale . Drivere miniport, cum ar fi drivere miniclass, sunt furnizate de furnizorii de hardware și acceptă numai operațiuni specifice dispozitivului de hardware periferic care este conectat la un port de pe placa principală.

Fiecare driver care procesează o cerere I / O pentru un dispozitiv are un obiect corespunzător, care este încărcat în memoria principală . Un obiect de dispozitiv este creat de sistemul de operare Windows din clasa de dispozitiv asociată. Obiectele dispozitivului conțin structuri de tip DEVICE_OBJECT, care stochează indicii către driverul lor. În timpul rulării, aceste indicatoare sunt utilizate pentru a localiza rutina de expediere a șoferului și funcțiile de membru. În stiva de drivere WDM, obiectul dispozitivului driverului de filtru, cunoscut sub numele de filtru superior, va primi un pachet de solicitare I / O (IRP) pentru un dispozitiv de la managerul I / O. Dacă driverul de filtru superior nu poate răspunde cererii, acesta va localiza obiectul driverului cu un pas în jos în stiva de driver. IRP este transmis în stiva de drivere apelând funcția IoCallDrive () și procesat de obiectul dispozitivului funcției driver, cunoscut și sub numele de obiect dispozitiv funcțional. La rândul său, obiectul dispozitivului driverului funcției poate trece IRP la filtrul inferior, un alt obiect dispozitiv de filtrare. Apoi IRP-ul poate fi transmis conducătorului de autobuz, care funcționează ca obiect fizic al dispozitivului. Obiectul driverului de autobuz se află în partea de jos a stivei de drivere și interacționează cu stratul de abstracție hardware , care face parte din nucleul sistemului de operare Windows și permite sistemelor de operare Windows să ruleze pe o varietate de procesoare , diferite arhitecturi ale unității de gestionare a memoriei și o varietate de sisteme de calculatoare cu diferite arhitecturi de magistrală I / O. Executarea unui IRP este terminată când oricare dintre obiectele driver din stivă returnează cererea înapoi managerului I / O, cu rezultatul și un steag de stare.

Drivere de dispozitiv pentru diferite sisteme de operare Windows

Cadrul WDM a fost dezvoltat de Microsoft pentru a simplifica comunicarea dintre sistemul de operare și driverele din nucleu. În sistemele de operare Windows, driverele sunt implementate ca fișiere .DLL sau .SYS din Dynamic Link Libraries . Driverele compatibile WDM trebuie să respecte regulile de proiectare, inițializare, plug-and-play, gestionarea energiei și alocarea memoriei. În practică, programatorii de drivere WDM refolosesc bucăți mari de cod atunci când construiesc drivere noi orientate obiect . Aceasta înseamnă că driverele din stiva WDM pot conține funcționalități reziduale, care nu sunt documentate în specificații. Driverele care au trecut testul de calitate Microsoft sunt semnate digital de Microsoft. Microsoft Hardware teste de compatibilitate și Driver Development Kit includ teste de fiabilitate și de stres.

Un driver de dispozitiv care nu este conceput pentru o anumită componentă hardware poate permite funcționarea unui alt dispozitiv. Acest lucru se datorează faptului că funcționalitatea de bază a unei clase de dispozitive hardware este similară. Funcționalitatea clasei de plăci video, de exemplu, permite driverului Microsoft Basic Display Adapter să funcționeze cu o mare varietate de plăci video. Cu toate acestea, instalarea unui driver greșit pentru un dispozitiv va însemna că funcționalitatea completă a dispozitivului nu poate fi utilizată și poate duce la performanțe slabe și la destabilizarea sistemului de operare Windows. Furnizorii de dispozitive hardware pot lansa drivere de dispozitiv actualizate pentru anumite sisteme de operare Windows, pentru a îmbunătăți performanța, pentru a adăuga funcționalități sau pentru a remedia erorile . Dacă un dispozitiv nu funcționează conform așteptărilor, cele mai recente drivere de dispozitiv ar trebui să fie descărcate de pe site-ul web al furnizorului și instalate.

Driverele de dispozitiv sunt proiectate pentru anumite versiuni ale sistemului de operare Windows, iar driverele de dispozitiv pentru o versiune anterioară de Windows pot să nu funcționeze corect sau deloc cu alte versiuni. Deoarece multe drivere de dispozitiv rulează în modul kernel, instalarea driverelor pentru o versiune anterioară a sistemului de operare poate destabiliza sistemul de operare Windows. Migrarea unui computer către o versiune superioară a unui sistem de operare Windows necesită, prin urmare, instalarea de noi drivere de dispozitiv pentru toate componentele hardware. Găsirea driverelor de dispozitiv actualizate și instalarea lor pentru Windows 10 a introdus complicații în procesul de migrare.

Problemele obișnuite de compatibilitate cu driverul de dispozitiv includ: un driver de dispozitiv pe 32 de biți este necesar pentru un sistem de operare Windows pe 32 de biți și un driver de dispozitiv pe 64 de biți este necesar pentru un sistem de operare Windows pe 64 de biți. Driverele de dispozitiv pe 64 de biți trebuie să fie semnate de Microsoft, deoarece rulează în modul kernel și au acces nerestricționat la hardware-ul computerului. Pentru sistemele de operare anterioare Windows 10, Microsoft a permis furnizorilor să semneze singuri driverele lor pe 64 de biți, presupunând că furnizorii au efectuat teste de compatibilitate. Cu toate acestea, driverele Windows 10 pe 64 de biți trebuie acum să fie semnate de Microsoft. Prin urmare, furnizorii de dispozitive trebuie să-și trimită driverele la Microsoft pentru testare și aprobare. Pachetul de instalare a driverului include toate fișierele din directorul .inf și toate fișierele din pachet trebuie instalate, în caz contrar instalarea driverului de dispozitiv ar putea eșua. Pentru versiunile de sistem de operare înainte de Windows 10 nu toate fișierele necesare pentru instalarea driverului au fost incluse în pachet, deoarece această cerință nu a fost aplicată în mod consecvent. Unii instalatori de drivere de dispozitiv au o interfață grafică GUI , necesitând adesea intrarea de configurare a utilizatorului. Absența unei interfețe cu utilizatorul nu înseamnă că instalarea driverului de dispozitiv nu are succes. În plus, driverele de dispozitiv Windows 10 nu au voie să includă o interfață cu utilizatorul. Driverul de rețea Interface Specification (NDIS) 10.x este utilizat pentru dispozitive de rețea de către sistemul de operare Windows 10. Driverele de dispozitiv de rețea pentru Windows XP utilizează NDIS 5.x și pot funcționa cu sistemele de operare Windows ulterioare, dar din motive de performanță driverele de dispozitiv de rețea ar trebui să implementeze NDIS 6.0 sau o versiune ulterioară. În mod similar, WDDM este modelul de driver pentru Windows Vista și versiuni ulterioare, care înlocuiește XPDM utilizat în driverele grafice.

Manager de dispozitiv

Device Manager este un applet Panoul de control în sistemele de operare Microsoft Windows. Permite utilizatorilor să vizualizeze și să controleze hardware-ul atașat la computer. Permite utilizatorilor să vizualizeze și să modifice proprietățile dispozitivelor hardware și este, de asemenea, instrumentul principal pentru gestionarea driverelor de dispozitiv.

Critică

Modelul de driver Windows, în timp ce o îmbunătățire semnificativă față de modelul de driver VxD și Windows NT utilizat anterior, a fost criticat de dezvoltatorii de software de driver, cel mai semnificativ pentru următoarele:

  • Interacțiunile cu evenimentele de gestionare a energiei și plug and play sunt dificile. Acest lucru poate duce la situații în care mașinile Windows nu pot intra sau ieși corect din modurile de repaus din cauza erorilor din codul driverului.
  • Anularea I / O este dificil de corectat.
  • Pentru fiecare șofer este necesar un cod de asistență complex pentru cazan.
  • Nu există suport pentru scrierea driverelor în modul utilizator pur .

Au existat, de asemenea, o serie de îngrijorări cu privire la calitatea documentației și a mostrelor furnizate de Microsoft.

Din cauza acestor probleme, Microsoft a lansat un nou set de cadre pe WDM, numit Windows Driver Frameworks (WDF; fosta Windows Driver Foundation), care include Kernel-Mode Driver Framework (KMDF) și User-Mode Driver Framework (UMDF) ). Windows Vista acceptă atât WDM pur, cât și WDF mai nou. KMDF este disponibil și pentru descărcare pentru Windows XP și chiar Windows 2000, în timp ce UMDF este disponibil pentru Windows XP și versiuni ulterioare.

Vezi si

Referințe

linkuri externe