Ce dispozitive au nevoie de drivere. De unde știu ce driver de sunet am nevoie

Dacă v-ați asamblat singur computerul, cumpărând componente pentru acesta separat, atunci în acest caz toate driverele pentru computer nu mai pot fi găsite pe site-ul web al unui singur producător, așa cum ar fi ușor de făcut atunci când cumpărați un computer finit (acest lucru este descris în articolul „Cum să găsiți drivere, dacă a fost achiziționat un laptop sau un computer desktop gata făcut!”). La urma urmei, ați cumpărat un computer neterminat care ar aparține unui producător, ar avea propriul model și drivere pentru care le puteți descărca toate odată de pe un singur site. Deoarece computerul este asamblat din piese de schimb pe care le-ați ales singur, înseamnă că nu va mai corespunde niciunui model și va aparține vreunui producător, deoarece aceasta este deja creația dvs. :) Prin urmare, va trebui să căutați drivere separat pentru toate dispozitivele de pe care a fost asamblat calculatorul. Aceasta include și cazul în care, după ce ați cumpărat un computer terminat (deja asamblat), după ceva timp ați decis să înlocuiți niște „bucăți de fier”.

Acum vă voi arăta cum să găsiți manual toate driverele necesare pentru un computer auto-configurat, prin Internet.

Despre ce este descris un șofer în articol:

Deci, tu însuți ai luat toate componentele, ai asamblat computerul, ai instalat Windows și vezi că driverele nu sunt instalate pentru toate dispozitivele și poate chiar nu sunt instalate pentru aproape niciunul. Puteți afla dacă toate driverele sunt instalate din utilitarul standard Device Manager. Cum să faci asta, am spus într-un articol separat.

Și pentru a instala drivere în acest caz, există mai multe opțiuni.

Notă!
Dacă nici măcar nu ați instalat automat drivere pentru plăcile de rețea, ceea ce nu vă oferă posibilitatea de a accesa Internetul de pe acest computer, atunci toți pașii de mai jos vor trebui efectuati de pe un alt computer cu acces la Internet. Și după ce descărcați toate driverele, va trebui să le transferați în calculatorul dorit, de exemplu, printr-o unitate flash sau un disc.

Opțiunea numărul 1. Căutați drivere manual după codul dispozitivului prin site-ul devid.drp.su

Consider că această opțiune este cea mai bună. Metoda este de a determina codul dispozitivului și de a căuta drivere pe Internet folosind acest cod pe diferite site-uri.

Să presupunem că în managerul de dispozitive vedem ceva de genul acesta:

Acestea. driverele pentru mai multe dispozitive nu sunt instalate pe computer. Cu toate acestea, este problematic să determinați prin intermediul managerului de dispozitive pentru care dispozitive nu există drivere, deoarece numele sunt oarecum neclare. Poate fi înțeles doar aproximativ. De exemplu, „controlerul Ethernet” este cel mai probabil Card de retea pentru conexiune la internet prin cablu. " Controlor de rețea” este probabil un adaptor Wi-Fi, adică. card de rețea pentru accesarea internetului prin Wi-Fi.

Dar fiecare dispozitiv are propriul său număr unic, pe care managerul de dispozitive ni-l poate arăta. Și după ce am aflat numărul, putem găsi driverul dispozitivului prin Internet.

Să ne uităm la câteva exemple despre cum să găsiți manual driverele după codul dispozitivului:

La început, voi găsi un driver pentru dispozitivul obscur „Simple Communications PCI Controller”.

    Determinați codul dispozitivului pentru care dorim să găsim un driver.

    Pentru a determina codul dispozitivului, faceți clic dreapta pe el în managerul dispozitivului și selectați „Proprietăți” din meniul care apare:

    În fereastra care se deschide, selectați fila „Detalii”, apoi mai jos, sub inscripția „Proprietăți”, selectați „ID hardware”:

    În primul rând, încercăm să căutăm după codul din linia cea mai de jos (a patra). Faceți clic dreapta mai jos pe a 4-a linie cu codul și selectați „Copiare”.

    Încerc să găsesc un driver după cod pe devid.drp.su.

    După ce copiați codul, deschideți site-ul:

    David.drp.su

    Să încercăm să găsim șoferul pe el. Acest site aparține programului DriverPack Solution, care colectează aproape toate driverele posibile. Aici, cu un grad mare de probabilitate, puteți găsi un driver pentru orice dispozitiv.

    După ce ați deschis site-ul, primul lucru pe care trebuie să-l faceți este să lipiți codul dispozitivului copiat în pasul anterior în linia cea mai lungă de sus și să ștergeți tot ce este din acest cod care vine de la simbolul „&” până la sfârșit.

    De exemplu, ați copiat codul:
    PCI\VEN_8086&DEV_0166 &CC_0300

    Deci, după ce eliminați caracterele din „&”, ar trebui să aveți codul:
    PCI\VEN_8086&DEV_0166

    Dacă nu știi ce sistem ai, atunci deschide Căutare Windowsși introduceți acolo „Informații de sistem”, apoi selectați programul care apare din listă:

    În programul care se deschide, în fereastra din stânga, selectează „Informații de sistem” iar în dreapta în linia „Nume OS” va fi afișată versiunea Windows-ului tău (în exemplul meu din imaginea de mai jos „Windows 10”) , iar în linia „Tip” - adâncimea de biți: x64 sau x86:

    Pe baza acestor date, indicăm tipul și adâncimea de biți a sistemului pe site-ul devid.drp.su.

    După ce este specificat codul dispozitivului și este selectată versiunea Windows, faceți clic pe butonul „Căutați drivere”.

    Ca rezultat, pagina va afișa o listă de drivere care se potrivesc cu codul hardware pe care l-ați specificat și pentru dvs versiuni Windows. Folosind butonul „Descărcare”, descărcați unul dintre drivere pe computer.

    Notă!
    Dacă sunt afișate mai multe drivere identice (ca în imaginea de mai sus), atunci descărcați driverul care are cea mai recentă dată de lansare în coloana Versiune driver.

    Făcând clic pe butonul „Descărcare”, driverul va fi descărcat pe computer și trebuie doar să îl instalați. Nu este nimic complicat în instalarea driverelor și am atins acest punct într-un articol separat.

    Notă!

    Se întâmplă ca în lista de drivere să fie afișate diferite drivere, de exemplu:

    Aceasta înseamnă că codul hardware poate fi similar pentru mai multe dispozitive. În acest caz, puteți pur și simplu să descărcați și să încercați să instalați toate opțiunile propuse până când se instalează driverul corect.

După cum puteți vedea, șoferul nu a fost greu de găsit. Acum mă voi uita la un alt exemplu pentru a fi mai clar :) De exemplu, voi găsi un driver pentru un dispozitiv care este desemnat ca „controler Ethernet” în managerul de dispozitive.

Dau clic dreapta pe dispozitiv, deschid proprietățile:

În fereastră, selectați fila „Detalii”, selectați elementul „ID hardware” din listă și copiați codul din a 4-a linie:

Deschid site-ul devid.drp.su, indică acolo numărul copiat, șterg tot ce este în el, începând de la simbolul „&”. Apoi, selectez versiunea de Windows și efectuez o căutare:

Pentru dispozitivul meu și versiunea de Windows pe care am selectat-o, există o singură versiune a driverului pe care o pot descărca și instala:

Asta e tot!

Cu toate acestea, încă ocazional se întâmplă ca site-ul devid.drp.su să nu găsească drivere pentru codul hardware pe care l-ați specificat. În acest caz, există o opțiune alternativă, pe care o vom lua în considerare mai jos.

O modalitate alternativă de a căuta drivere după codul dispozitivului

Dacă nu există drivere pentru dispozitivul de care aveți nevoie pe binecunoscutul site devid.drp.su, atunci puteți utiliza această metodă simplă:

    Determinați codul dispozitivului. În mod similar, copiați linia codului echipamentului (a 4-a):

    Cautam sofer pe diverse site-uri.

    Acum mergem pe site-ul Google.com și lipim codul copiat direct în bara de căutare, după care eliminăm simbolul „&” și tot ce urmează din cod, de exemplu:

    PCI\VEN_8086&DEV_1C3A &SS_0780= PCI\VEN_8086&DEV_1C3A

    Apăsăm butonul de căutare și vedem o listă de site-uri care se potrivesc cu interogarea noastră:

    Acum trebuie să deschideți site-urile pe rând, începând de la primul (sus) și să vedeți dacă puteți descărca drivere de pe site.

    Merită remarcat imediat că nu toate site-urile veți găsi driverul de care aveți nevoie, deoarece unele dintre ele nu vor avea un driver pentru versiunea dvs. de Windows, iar unele vor avea orice prostie în loc de drivere.

    În imaginea exemplu de mai sus, am încercuit acele site-uri unde driverele pot fi găsite cel mai des și descărcate fără probleme. Iată site-urile:

    Dacă aprofundați în căutare, puteți găsi alte site-uri de unde puteți descărca driverul de care aveți nevoie. Dar nu căutați drivere pe forumuri, deoarece aceasta este cea mai lungă cale. Va trebui să citiți toate mesajele la rând pentru a înțelege unde este dat linkul către driverul de care aveți nevoie.

    Și acum să ne uităm la câteva exemple de descărcare a driverelor de pe site-uri diferite.

    Un exemplu de descărcare a unui driver de pe driver.ru:

    Când ajungeți pe site din rezultatele căutării, pagina va afișa deja drivere, dintre care majoritatea sunt compatibile cu dispozitivul dvs.

    Aici puteți pur și simplu să descărcați pe rând toate driverele pe care site-ul le afișează și să încercați să instalați până când este instalat driverul dorit. Toate driverele incompatibile fie nu vor fi instalate, fie pur și simplu nu vor funcționa, așa că nu vă puteți teme să instalați ceva greșit.

    Nu uitați să acordați atenție versiunii de Windows pentru care este destinat driverul.

    Ține minte!
    Driverele pentru Windows 8, Windows 8.1 și Windows 10 sunt foarte des compatibile și dacă, de exemplu, nu ați putut găsi drivere special pentru Windows 8.1, atunci încercați să instalați drivere pentru Windows 8. Sau dacă nu ați găsit drivere pentru Windows 10, încercați instalarea din Windows 8.1 sau Windows 8. De asemenea, se întâmplă ca driverele pentru Windows 7 să fie compatibile cu Windows 8, 8.1 și Windows 10. Adică. Puteți încerca să instalați drivere de pe diferite sisteme.

    Luați în considerare un exemplu de proces de descărcare de pe acest site. După ce ați găsit driverul de care aveți nevoie, faceți clic pe butonul de descărcare de mai jos:

    În fereastra următoare, trebuie să confirmați că nu sunteți un robot bifând caseta furnizată (vezi imaginea de mai jos). Apoi faceți clic pe butonul „Descărcare” de mai jos:

    Și, în sfârșit, pe pagina următoare vom vedea în partea de sus un link de descărcare sub forma unui nume de fișier cu o extensie:

    Faceți clic pe el și descărcați fișierul.

    Un exemplu de descărcare a unui driver de pe members.driverguide.com:

    Accesând site-ul dintr-un motor de căutare, pagina va afișa o listă de drivere compatibile probabil cu dispozitivul dvs.:

    Făcând clic pe butonul de descărcare se va deschide pagina noua unde o cantitate mare de publicitate atrage atenția.

    Atenţie!
    Nu faceți clic nicăieri dacă sunt multe reclame pe site, aveți grijă, altfel puteți detecta viruși și alte infecții de pe computer!

    În fereastra următoare, va apărea o fereastră în centru pentru a confirma că sunteți o persoană reală și nu un program :) Trebuie să așteptați ca conținutul ferestrei să se încarce și să faceți clic pe butonul „Afișați”:

    Se va deschide o nouă fereastră, unde din nou așteptăm câteva secunde până se încarcă conținutul. În fereastra de lângă inscripția va apărea un cod: „Enter”. Acest cod trebuie rescris exact așa cum este în rândul de mai jos ("Răspunsul dvs.") și faceți clic pe "Întoarcere la pagină":

    Veți reveni la pagina originală unde va apărea acum butonul „Continuare”. Făcând clic pe acesta, va începe descărcarea driverului pe computer:

ca aceasta cale alternativă puteți încerca să găsiți manual drivere după codul dispozitivului. Desigur, pentru această opțiune, am arătat exemple de descărcare a unui driver de pe doar 2 site-uri și există un număr mare de ele. Dar principiul descărcării pe toate site-urile este același. Doar interfața diferă în cea mai mare parte și uneori ordinea de descărcare.

Dar sunt mai înclinat că puteți găsi cu ușurință drivere folosind metoda principală propusă în opțiunea #1.

Opțiunea numărul 2. Căutați drivere pe site-urile oficiale ale producătorilor de dispozitive

Dacă nu ați putut găsi drivere pentru dispozitivele dvs. folosind prima opțiune, atunci acest lucru se poate face în acest fel.

Va trebui să căutați producătorul și modelul fiecărui dispozitiv din computerul dvs. prin documentația lor sau programe speciale(de exemplu, Aida64 sau Sysinfo Detector) și apoi căutați separat drivere pentru fiecare dispozitiv prin site-ul oficial al producătorului sau (dacă nu există driver pe site-ul oficial) pe Internet, în funcție de modelul dispozitivului.

Să luăm acest exemplu. În managerul de dispozitive, pot vedea că driverul pentru placa video și un alt dispozitiv ciudat nu este instalat în sistem:

Cum ai stabilit ce era pe placa video? Dar pentru că dacă există un dispozitiv „Adaptor grafic VGA standard” în lista de dispozitive din secțiunea „Adaptoare video”, atunci nu există driver pentru placa video, altfel dispozitivul ar avea numele plăcii video, de exemplu „NVIDIA GeForce GTX980”.

Să ne uităm la succesiunea acțiunilor tale:

    Aflați producătorul și modelul dispozitivului.

    Notă!
    Dacă aveți un „Dispozitiv necunoscut” în managerul de dispozitive, atunci driverul pentru anumite dispozitive probabil nu este instalat placa de baza sau un program special pentru placa de baza. Prin urmare, mai întâi trebuie să instalați toate driverele pentru placa de bază și programele pentru aceasta.

    Dacă ați asamblat un computer din componente separate, atunci ați putea avea documente pentru fiecare dispozitiv achiziționat, care indică de ce avem nevoie - producătorul și modelul. Dacă nu mai există documentație, atunci unul dintre programele care determină hardware-ul computerului vă va ajuta să aflați modelul. Recomand Aida64 sau Sysinfo Detector. Primul este plătit, dar îl puteți folosi gratuit timp de 30 de zile. Iar al doilea are o ediție complet gratuită. Dacă vă gândiți ce să alegeți, atunci alegeți temporar - Aida64, deoarece calitatea acestui program va fi în continuare mai mare.

    Cum să instalați și să utilizați programul Aida64 este descris în articol:

    Cum să instalați și să utilizați Sysinfo Detector este descris în articol:

    Dacă detectați dispozitive prin programul Aida64 apoi puteți determina ce fel de dispozitive fără drivere selectând secțiunea „Dispozitive\u003e\u003e Dispozitive Windows” și apoi în dreapta deschideți categoria „Necunoscut” (necunoscut). Informațiile despre dispozitivul selectat vor apărea mai jos:

    Deci, în exemplul meu, dispozitivul necunoscut se numește „Asus ATK-110 ACPI Utility”.

    Am menționat mai sus că un dispozitiv necunoscut este cel mai probabil ceva pe placa de bază, așa că haideți să stabilim imediat ce placă de bază se află în dispozitiv. Pentru a face acest lucru, deschideți secțiunea „Plăci de bază” și accesați aceeași subsecțiune. În partea dreaptă a ferestrei vom vedea producătorul și modelul plăcii de bază: Asus P5KPL-AM EPU.

    Acum să ne ocupăm de placa video. Placa video este de obicei identificată corect în Aida64 sub „Afișaj” > „Video PCI/AGP”. După cum puteți vedea, programul a detectat placa video: „nVIDIA GeForce GT 430”:

    Dacă urmăriți dispozitive prin Sysinfo Detector, apoi puteți vedea dispozitivele cu drivere dezinstalate în 2 moduri. Prima se află în secțiunea „Abateri”:

    După cum puteți vedea, același dispozitiv a fost detectat ca prin programul Aida64: ACPI / ATK0110

    Și a doua modalitate - în secțiunea „Dispozitive PCI”, selectați subsecțiunea „Dispozitive necunoscute”. Aici programul a văzut imediat 3 dispozitive „cu probleme” și unul dintre ele, doar placa de bază: Asus P5KPL-AM EPU.

    Este mai bine să vă uitați la producătorul și modelul plăcii video în secțiunea „Dispozitive PCI”. În listă, găsiți subsecțiunea „Controller de afișare”:

    Exemplul arată că producătorul plăcii este NVIDIA, iar modelul este GeForce GT 430.

    Așadar, am aflat datele necesare și acum vom căuta șoferul.

    Căutăm un driver pe site-urile producătorilor de dispozitive.

    Am aflat că driverul lipsește, cel mai probabil pentru un dispozitiv de pe placa de bază, sau poate vreun program special pentru placa de bază. Producătorul plăcii este Asus, iar modelul din exemplul meu este P5KPL-AM EPU. Deoarece producătorul este Asus, atunci vom căuta pe site-ul site-ului web oficial al Asus.

    Cum să căutați site-ul web oficial al producătorului dispozitivului și să descărcați driverele de pe acesta este descris în detaliu. Pe scurt, trebuie să deschideți un motor de căutare sistemul Google, introduceți acolo numele producătorului și deschideți primul site în rezultatele căutării. Apoi, accesați secțiunea „Service” sau „Suport” și specificați modelul dispozitivului, de exemplu:

    Pe lângă drivere, acordați atenție secțiunii „Utilități” (se poate vedea în lista din imaginea de mai sus), deoarece uneori „Dispozitiv neidentificat” este un fel de program special pentru placa de bază care nu este instalat. Este mai bine să instalați întregul kit de placă de bază furnizat pe site pentru a verifica dacă aceasta a fost problema.

    Acest exemplu demonstrează găsirea driverelor pentru placa de bază. Dacă instalați toate driverele și utilitățile pentru acesta, atunci „Dispozitivul necunoscut” din managerul de dispozitive ar trebui să dispară.

    Acum să găsim driverul pentru placa video. Judecând după datele preluate din programele Aida64 și Sysinfo Detector, producătorul plăcii video este NVIDIA, iar modelul este GeForce GT 430. Deoarece producătorul este NVIDIA, atunci căutăm site-ul oficial al acestei companii în același drum prin Google:

    Pe site, vedem imediat secțiunea „Drivere” și în ea elementul „Descărcare drivere”. Deschidem:

    Se va deschide o fereastră în care trebuie să specificați datele despre placa video. Tipul de produs din exemplul meu este „GeForce”, dacă modelul este GeForce GT 430, atunci seria de produse este „GeForce 400 Series”. Nu este greu să vă orientați aici. Apoi, în lista „Familie de produse”, selectați modelul specific - „GeForce GT 430”. Și rămâne să alegeți doar versiunea de Windows instalată pe computer și limba driverului. Apoi faceți clic pe „Căutare”:

    Se va deschide pagina pentru descărcarea driverului corect. Faceți clic pe butonul „Descărcați acum”:

    Pe pagina următoare, acceptăm termenii acordului și facem clic pe butonul „Accept și descărcare”:

În același mod, puteți descărca un driver, în principiu, pentru orice dispozitiv, cunoscându-i producătorul și modelul. Va fi necesar doar să găsiți site-ul oficial al producătorului și să indicați modelul acolo.

În ultimă instanță, dacă, de exemplu, nu puteți găsi drivere pe site-ul oficial, le puteți căuta pe alte site-uri specificând cautare Google Un exemplu de solicitare este: „driver pentru Asus P5KPL-AM EPU”. În loc de Asus P5KPL-AM EPU, trebuie, în consecință, să specificați producătorul și modelul anumitor dispozitive pentru care căutați drivere.

Ei bine, în concluzie, observ că dacă utilizați Windows 8 și mai vechi, atunci cel mai probabil nu veți avea probleme cu driverele. Aceste sisteme instalează în majoritatea cazurilor toate driverele automat imediat după instalarea Windows. Am încercat să reinstalez Windows 8.1 și Windows 10 pe mai multe laptop-uri și toate driverele au fost instalate automat pe fiecare, drept care nu a fost nevoie să le caut eu.

Pe acest articol îl consider finalizat. Acum puteți găsi driverul potrivit după codul dispozitivului sau după producător și model. Permiteți-mi să vă reamintesc că este posibil să aveți nevoie de astfel de opțiuni de căutare a driverului dacă ați selectat independent componente pentru computerul dvs. sau ați modificat unele detalii într-un computer finalizat achiziționat.

De asemenea, este posibil să instalați automat drivere pe un computer folosind programe speciale. Această posibilitate este descrisă într-un articol separat:

Toate cele bune! Ne vedem in alte postari :)

Astăzi ne vom uita la:

Există diverse motive pentru care aveți nevoie de un computer personal. Acest lucru nu se face întotdeauna folosind programe cu selecția automată a driverelor.

În plus, ce driver de sunet este necesar pentru computerul dvs., trebuie să știți și motivele deteriorării dispozitivelor de sunet de pe computer.

Placa de sunet nu a fost detectată de sistemul de operare

Să luăm în considerare cazurile în care sistemul de operare nu este capabil să selecteze independent un driver pentru placa de sunet a unui computer personal. În procesul de reinstalare a sistemului și repornire ulterioară a acestuia, acest lucru este determinat de absența semnalelor sonore.

Motivul creării unei astfel de situații poate fi cel stabilit echipament de sunet pe un computer personal, care este: rar; data lansării este mai veche decât sistemul de operare instalat.
În acest caz, trebuie să instalați manual driverul de sunet. Există mai multe moduri de a determina driverul de sunet corect pentru computerul dvs.

Microsoft ajută la identificarea unui driver de sunet

Sistemul de operare al computerului oferă asistență în determinarea driverului de sunet corect. Este necesar să direcționați cursorul către folderul „My Computer”, apăsați butonul dreapta al mouse-ului (RMB), apoi „Properties”, apoi „Hardware”. Puteți face acest lucru mai ușor: folderul „Computerul meu”, faceți clic dreapta, accesați secțiunea Manager dispozitive.

Se va deschide o listă în managerul de dispozitive, selectați o placă de sunet (nu există driver, există un semn de exclamare lângă ea). Selectăm linia, în partea de sus există opțiunea „Actualizare driver”, apoi elementul „Căutare drivere”, când totul se întâmplă cu un rezultat pozitiv, va fi oferită fereastra „Instalare”.

Opțiune manuală pentru căutarea unui driver de sunet

Când selecția automată a unui driver de sunet eșuează, trebuie să încercați să îl găsiți manual, pentru aceasta mergem la orice motor de căutare (Google, Yandex). Apoi, în caseta de căutare, introduceți numele dispozitivului dvs. de sunet pe computer și adăugați „+ driver”, în fereastra care se deschide, selectați-l pe cel de care aveți nevoie pentru noi.

Ce driver este necesar pentru un computer personal? Acest lucru este ușor de văzut în fila Device Manager. Se recomandă descărcarea driverului de pe site-ul oficial al producătorului plăcii de bază instalate (când placa de sunetîncorporat în ea). De asemenea, se recomandă descărcarea driverului de pe un site web specializat în actualizarea hardware-ului acestui PC.

După ce driverul a fost descărcat, revenim la fila „Manager dispozitive”, deschidem „Căutați drivere pe computer”, indicăm locul în care a fost salvat, „Instalare”.

Instalarea driverului de sunet cu programul

Există momente în care este dificil pentru un utilizator de computer să găsească un driver de sunet manual și folosind sistemul de operare, atunci este oferit un program special pentru a-l căuta. În prezent, există mai multe programe în aceste scopuri: Driver Checker, Sam Drivers, Device Doctor și alte programe.

Pentru a lucra cu interfața unor programe de acest gen, este clar, la nivel intuitiv.

Există diferite cazuri în care trebuie să determinați driverul de sunet pentru computerul dvs., recomandă experții:

  • Determinați modelul dispozitivului de sunet instalat pe computer (citiți pe computer). Poate că lipsa sunetului se datorează echipamentului neinstalat, interzicând utilizarea acestuia în BIOS.
  • Când sunetul este integrat pe PC, se recomandă descărcarea driverului de sunet numai de pe site-ul producătorului „plăcii de bază”, sau în cazul instalare separată placa de sunet pentru a șterge marcajul cipului de pe ea. Găsiți driverul necesar prin sistemul de căutare de marcare.
  • Este recomandat să utilizați programul AIDA 64, acesta va afișa nu numai driverul de sunet necesar, ci totul echipamente instalate, puteți determina marcarea cipului.

Aflați cum să găsiți driverele potrivite pentru a rula fără efort orice dispozitiv conectat la computer.

În ciuda faptului că secolul 21 este deja în curte și aproape toată lumea are computere, mulți le tratează ca pe un fel de miracol inviolabil al tehnologiei. Mai mult decât atât, crezând cu fermitate că au cel mai bun PC (pentru că așa a spus vânzătorul :)), astfel de utilizatori nu instalează niciun program pe el și nu se obosesc să verifice dacă computerul funcționează corect...

De ce sunt? În plus, recent am avut de-a face cu un caz în care niște camarazi de aproape un an și jumătate după cumpărarea unui computer nu aveau un driver normal de placă video !!! Plângerea a fost de obicei - "" :) Și de ce să nu încetinească dacă nu există șofer?!

În general, astăzi vom verifica computerele noastre pentru prezența tuturor driverelor necesare în ele ...

Ce este un driver și cum se instalează?

Un driver este un set de componente software care asigură interacțiunea normală a unui computer cu echipamentele conectate la acesta și plăcile de expansiune. Cu alte cuvinte, acesta este un program utilitar special care poate transfera comenzi de la periferice la procesor și invers.

Fără driver, echipamentul conectat fie nu va funcționa deloc (imprimante, scanere și alte echipamente de birou), fie va funcționa, dar nu în modul cel mai optim (plăci video, chipset-uri etc.). De aceea pt operatie normala Nu este suficient doar să reinstalați sistemul pentru un PC, este important și să găsiți drivere pentru toate componentele sale!

Driverul poate fi furnizat în trei versiuni:

  1. instalare Fișierul EXE(sau MSI);
  2. carcasă grafică cu posibilitatea de selecție și instalare în masă;
  3. un set de biblioteci și fișiere de serviciu, completate de un fișier INF.

Prima opțiune de livrare a driverelor se găsește cel mai adesea pe Internet și pe discurile de instalare care vin cu echipamentul achiziționat. Este suficient să descărcați (sau să deschideți pe disc) și să rulați fișierul EXE, iar în fața noastră va apărea Expertul de instalare, care vă va permite să configurați totul pas cu pas. În acest caz, instalarea driverului nu este mai dificilă decât instalarea oricărui program.

A doua opțiune de livrare poate fi găsită pe discuri cu diferite ansambluri care conțin mai multe drivere diferite (de exemplu, drivere pentru placa de bază sau așa-numitele pachete de drivere). Astfel de ansambluri vă permit de obicei să instalați în mod selectiv drivere individuale (sau toate deodată) și nu sunt mai complicate decât instalatorii obișnuiți, dar sunt mari.

Instalarea driverului în a treia cale este cea mai neevidentă. Astfel de drivere se găsesc adesea pentru tehnologia veche și nu conțin un program de instalare grafic, dar includ un fișier (uneori mai mult de unul) cu extensia INF, care conține toate căile de instalare pentru pachetul de bibliotecă pentru ca echipamentul conectat să funcționeze:

Pentru a instala driverul în acest fel, trebuie să deschideți meniul contextual al unui dispozitiv necunoscut în „Manager dispozitive” (pictograma „Computer” - RMB - „Proprietăți” (pe sisteme mai vechi, fila „Hardware”)) și selectați elementul „Actualizare drivere” acolo.

Se va deschide o fereastră din care trebuie să mergem în acest fel (făcând clic pe butoanele corespunzătoare): „Căutați drivere pe acest computer” - „Selectați un driver din lista celor deja instalate” - „Instalați de pe disc”, apoi faceți clic pe butonul „Răsfoiți” și specificați locația fișierului INF de care aveți nevoie:

După confirmarea alegerii fișierului INF, va apărea un mesaj fie despre instalarea cu succes, fie că fișierul pe care l-ați selectat nu este potrivit și trebuie să selectați altul (dacă există). Dacă niciunul dintre fișierele INF nu vă permite să instalați driverul corect, atunci va trebui să căutați un software alternativ sau chiar să schimbați hardware-ul sau sistemul pentru a face dispozitivul compatibil cu computerul dvs.

Ei bine, acum că știți ce este un driver, de ce aveți nevoie de el și cum să îl instalați, este timpul să vă dați seama cum să găsiți drivere.

Căutați după numele dispozitivului

Orice dispozitiv (dacă nu este o ambarcațiune chinezească fără nume) are propriul său nume. Cunoscând acest nume și versiunea sistemului dumneavoastră, în cele mai multe cazuri, puteți formula corect interogare de căutare a intra in motor de căutare. De exemplu: „șofer Imprimanta Canon IP1500 pentru Windows 7 pe 64 de biți” sau „driver Radeon HD 8700M Windows 8”.

Rezultatele căutării vor conține site-uri de pe care puteți descărca driverul de care aveți nevoie. Cu toate acestea, nu toate site-urile pot descărca gratuit! Pentru a evita grijile inutile din cauza finanțelor sau a instalării de software de calitate scăzută, vă recomand să utilizați un portal dovedit în limba rusă:

Acest site conține unul dintre colecții complete drivere de pe tot Internetul cu un volum total de peste 300 TB! Aici puteți căuta un driver atât după tipul de dispozitiv (lista principală „Categorii de hardware”), cât și după numele producătorului (index alfabetic în partea de sus a paginii).

Pe pagina cu componenta necesară, vor exista o serie de opțiuni de descărcare. Acordați atenție câmpurilor „Tipul programului” (cuvântul „driver” trebuie să fie prezent acolo, altfel puteți descărca doar un utilitar de serviciu sau un plug-in), „Descriere” (mai spune pentru ce este acest sau acel fișier), și, de asemenea, „Sistem”. Puteți descărca driverul propriu-zis din linkul de după descriere, confirmând că nu sunteți robot :)

Pe lângă căutarea de drivere pe depozite specializate, uneori are sens să cauți pe site-urile dezvoltatorilor! De exemplu, driverele pentru plăcile video populare sunt actualizate destul de des și se descarcă ultima versiune Puteți, adesea, doar pe site-ul oficial. Prin urmare, voi oferi o mică listă de link-uri pentru a descărca pagini pentru șoferi din cele mai comune iluzii.

Plăci video:

placi de sunet:

Echipamente de birou:

Descărcând drivere din surse de încredere, nu trebuie să vă faceți griji că nu vor funcționa sau vor conține viruși. De asemenea, avantajul descărcării de pe site-urile oficiale este garanția că vei descărca driverele cele mai actualizate și proaspete, ceea ce, din păcate, nu poate fi garantat la descărcarea din resurse terțe.

Căutați după ID-ul dispozitivului

Găsirea unui driver după numele dispozitivului este o sarcină destul de simplă. Cu toate acestea, dacă dispozitivul în sine provine de la un producător necunoscut, atunci nu-i putem ști nici numele! Dacă vă confruntați cu o astfel de situație, atunci o metodă alternativă de căutare vă va ajuta - prin identificatorul de echipament.

Fiecare dispozitiv, chiar și în interiorul unității de sistem, chiar și conectat printr-un cablu extern, are propriul său identificator sau ID în sistem. Îl putem recunoaște în „Device Manager” deja familiar apelând „Proprietăți” componentei dorite, mergând la fila „Detalii” și selectând elementul „Hardware ID” sau „ID” din meniul drop-down „Property” listă:

Incepand cu Windows Vista, Puteți copia valoarea șirului de identificare în clipboard folosind meniul contextual. În versiunile anterioare, nu există nicio funcție de copiere, așa că ID-ul va trebui rescris manual.

Acum, cunoscând identificatorul dispozitivului de care avem nevoie, putem găsi drivere potrivite pentru acesta folosind servicii specializate. Din nou, deja menționat Driver.ru ne poate ajuta:

Pentru a face acest lucru, faceți clic pe butonul „Căutare” din colțul din dreapta sus și inserați ID-ul dispozitivului copiat în câmpul din pagina care se deschide, apoi asigurați-vă că bifați elementul „Căutare după ID” și faceți clic pe butonul „Căutare” de sub câmpul de intrare. Printre rezultatele care se deschid, puteți găsi cu ușurință un driver potrivit pentru sistemul dvs. și îl puteți descărca.

Mai multe portaluri mari pentru căutarea driverelor funcționează în mod similar. Cele mai bune sunt DevID.info și DevID.drp.su. Apropo, ambele servicii au propriii clienți care vă permit să detectați automat driverele de care aveți nevoie și să le instalați. Despre astfel de software specializat vom vorbi mai departe.

Programe pentru găsirea de drivere

Mai sus, am luat în considerare cazurile în care trebuie să căutați manual drivere. Cu toate acestea, pentru aceasta există și programe speciale care vă permit să găsiți și să descărcați totul în mod automat. Toate pot fi împărțite în două tipuri.

Programele de primul tip sunt de obicei module client mici (până la zece megaocteți) care vă permit să scanați computerul pentru drivere învechite sau dezinstalate, apoi să le descărcați de pe Internet și să le instalați în câteva clicuri. Pe site-ul nostru, un reprezentant proeminent al programelor de acest fel este:

Cu toate acestea, majoritatea decizii similare Există un mare minus: puteți descărca gratuit doar câteva drivere pe zi. Dacă depășiți limita, fie vi se va interzice complet descărcarea, fie viteza de descărcare va fi redusă la minimum, astfel încât să ajungeți oricum să cumpărați un cont premium.

Din acest motiv, programele de acest tip pot fi folosite gratuit doar pentru o singură actualizare a driverului, dar nu și pentru instalarea în lot pe un Windows proaspăt instalat. Dacă vrei totul deodată, alegerea ta sunt pachetele de șoferi!

Pachet de șoferi (din engleză." pachet de șoferi"-"un set de drivere ") este, cel mai adesea, un set al unei baze de date offline cu drivere selectate și un program shell. Programul vă scanează computerul, după care vă oferă să instalați sau să actualizați un număr de drivere. Trebuie doar să aveți nevoie pentru a le marca pe cele de care aveți nevoie și a confirma alegerea dvs. Instalarea se va face automat!

În vastitatea Runet, cel mai complet și popular pachet de șoferi este:

Până în prezent, dimensiunea pachetului maxim de livrare al acestui pachet de driver este mai mare de 10 gigaocteți. Aceasta nu este la fel de impresionantă ca baza de date de 30 de terabyți a Driver.ru, dar, cu toate acestea, un astfel de număr de drivere este suficient, astfel încât după reinstalarea sistemului să nu fie nevoie să căutați discuri de instalare care a venit cu placa de baza, placa video și alte componente ale computerului sau laptopului dvs.

Dacă nu doriți să descărcați 10 gigaocteți de drivere, atunci puteți descărca versiunea Lite a DriverPack Online. Este doar un program de scanare care determină driverele de care aveți nevoie, se conectează la o bază de date online și vă permite să descărcați doar ceea ce aveți nevoie.

concluzii

Astăzi, găsirea driverelor pentru un computer și laptop nu este dificilă. Cu toate acestea, ca orice program, au nevoie de actualizări din când în când, de care mulți oameni uită. Și apropo, actualizările pot ajuta foarte mult!

Deci, de exemplu, din primăvară, „” a început să apară din când în când cu plângeri despre un fel de bibliotecă DLL. De ceva vreme am suportat această stare de lucruri, dar apoi am obosit și am decis să caut o soluție la problemă. S-a dovedit că de vină a fost o eroare în driverul plăcii video. După actualizarea driverului, totul s-a mai bine și de câteva luni „zborul” este normal :)

Morala tuturor celor de mai sus este aceasta: dacă începi brusc să ai „gafe” în PC sau au fost observate de la achiziționarea computerului / reinstalarea windows-ului, verificați dacă există actualizări de drivere critice componente importante computerul dvs. Dacă există, încercați să le instalați și poate că sistemul dumneavoastră va funcționa din nou corect!

P.S. Este permisă copierea și citarea liberă a acestui articol, cu condiția ca un link activ deschis către sursă să fie indicat și paternitatea lui Ruslan Tertyshny să fie păstrată.

Probabil că toți cei care au reinstalat singuri sistemul de operare au avut o întrebare populară: cum să aflați ce drivere trebuie instalate pe computer pentru funcționarea stabilă a acestuia? Aceasta este întrebarea la care vom încerca să răspundem în acest articol. Să înțelegem mai detaliat.

În teorie, trebuie să instalați software pentru toate dispozitivele care îl necesită pe un computer sau laptop. De-a lungul timpului, dezvoltatorii sisteme de operare extinderea constantă a bazei de date a driverelor Microsoft. Și dacă în ori Windows XP a trebuit să instaleze manual aproape toate driverele, dar în cazul sistemelor de operare mai noi, multe drivere sunt deja instalate automat. Cu toate acestea, există dispozitive pentru care software-ul trebuie instalat manual. Vă aducem în atenție o serie de modalități care vă vor ajuta să rezolvați această problemă.

Metoda 1: site-urile web oficiale ale producătorilor

Pentru a instala toate driverele necesare, trebuie să instalați software-ul pentru toate plăcile de pe computer. Aceasta se referă la placa de bază, placa video și plăcile externe ( adaptoare de rețea, plăci de sunet etc.). În același timp, în "Manager de dispozitiv" este posibil să nu indice că hardware-ul necesită drivere. La instalarea sistemului de operare, s-a folosit pur și simplu software-ul standard pentru dispozitiv. Cu toate acestea, software-ul pentru astfel de dispozitive trebuie să fie instalat original. Majoritatea software-ului instalat cade pe placa de bază și cipurile integrate în aceasta. Prin urmare, mai întâi vom căuta toate driverele pentru placa de bază, iar apoi pentru placa video.

  1. Aflați producătorul și modelul plăcii de bază. Pentru a face acest lucru, apăsați tastele Win+R pe tastatură și în fereastra care se deschide, introduceți comanda cmd pentru a deschide o linie de comandă.
  2. LA Linie de comanda trebuie să introduceți comenzile una câte una:
    placa de bază wmic obține Producător
    placa de bază wmic obține produsul
    Nu uitați să apăsați "Introduce" după introducerea fiecărei comenzi. Ca urmare, veți vedea pe ecran producătorul și modelul plăcii de bază.
  3. Acum căutăm site-ul producătorului pe internet și mergem la el. În cazul nostru, acesta este.
  4. Pe site, căutăm un câmp de căutare sau butonul corespunzător sub formă de lupă. De regulă, făcând clic pe acest buton veți vedea un câmp de căutare. În acest câmp, trebuie să introduceți modelul plăcii de bază și să faceți clic "Introduce".
  5. Pe pagina următoare, veți vedea rezultatul căutării. Trebuie să vă selectați placa de bază din listă. De obicei, există mai multe subsecțiuni sub denumirea modelului de placă. Dacă există o secțiune „Șoferi” sau „Descărcări”, faceți clic pe numele unei astfel de secțiuni și accesați-o.
  6. În unele cazuri, pagina următoare poate fi împărțită în subsecțiuni software. Dacă da, atunci căutați și selectați o subsecțiune „Șoferi”.
  7. Următorul pas este să selectați sistemul de operare și adâncimea de biți din lista derulantă. Vă rugăm să rețineți că, în unele cazuri, pot exista diferențe în listele de drivere atunci când alegeți un sistem de operare diferit. Prin urmare, vizualizați nu numai sistemul pe care l-ați instalat, ci și versiunile de mai jos.
  8. După selectarea sistemului de operare, veți vedea o listă cu toate software-urile de care placa de bază are nevoie pentru a interacționa cu alte componente ale computerului. Trebuie să le descărcați și să le instalați pe toate. Descărcarea are loc automat după ce faceți clic pe butonul, Descarca sau pictograma corespunzătoare. Dacă ați descărcat arhiva cu driverele, atunci înainte de instalare, asigurați-vă că ați extras tot conținutul într-un folder separat. După aceea, instalați software-ul.
  9. După ce ați instalat tot software-ul pentru placa de bază, să trecem la placa video.
  10. Apăsați din nou combinația de taste Win+R iar în fereastra care apare, introduceți comanda "dxdiag". Apasă pentru a continua "Introduce" sau butonul "O.K"în aceeași fereastră.
  11. În fereastra instrumentului de diagnosticare care se deschide, accesați fila "Ecran". Aici puteți afla producătorul și modelul adaptorului dvs. grafic.
  12. Dacă ai un laptop, atunci trebuie să mergi și la fila "Convertor". Aici puteți vedea informații despre a doua placă grafică discretă.
  13. După ce ați aflat producătorul și modelul plăcii video, trebuie să accesați site-ul oficial al companiei. Iată o listă cu paginile de descărcare ale marilor producători de plăci grafice.
  14. Trebuie să specificați modelul plăcii video și sistemul de operare cu bitness pe aceste pagini. După aceea, puteți descărca software-ul și îl puteți instala. Vă rugăm să rețineți că este de preferat să instalați software-ul pentru adaptorul grafic de pe site-ul oficial. Numai în acest caz vor fi instalate componente speciale care vor crește performanța plăcii video și vor permite reglarea fină a acesteia.
  15. Când instalați software-ul pentru adaptorul grafic și placa de bază, trebuie să verificați rezultatul. Pentru asta deschidem "Manager de dispozitiv". Apăsați o combinație de butoane Victorieși "R" pe tastatură, iar în fereastra care se deschide, scrieți comanda devmgmt.msc. După aceea apăsăm "Introduce".
  16. Ca rezultat, veți vedea o fereastră "Manager de dispozitiv". Nu trebuie să conțină dispozitive și echipamente neidentificate, lângă numele cărora există interogative sau semne de exclamare. Dacă acesta este cazul, atunci ați instalat toate driverele necesare. Și dacă astfel de componente sunt prezente, vă recomandăm să utilizați una dintre următoarele metode.

Metoda 2: Utilitare de actualizare automată a software-ului

Dacă vă este prea lene să căutați și să instalați manual toate programele, atunci ar trebui să aruncați o privire mai atentă la programele care sunt concepute pentru a facilita această sarcină. Am analizat cele mai populare programe pentru căutarea și actualizarea automată a software-ului într-un articol separat.

Puteți utiliza oricare dintre utilitățile descrise. Dar vă recomandăm totuși să utilizați DriverPack Solution sau Driver Genius. Acestea sunt programele cu cea mai mare bază de date de drivere și hardware acceptat. V-am spus deja despre cum să utilizați Soluția DriverPack.

Prin urmare, permiteți-ne să vă spunem cum să găsiți și să instalați toate driverele folosind programul. Geniul șoferului. Deci, să începem.

  1. Începem programul.
  2. Te vei găsi imediat pe ea pagina principala. Există un buton verde în mijloc „Începe verificarea”. Apăsăm cu îndrăzneală pe el.
  3. Procesul de scanare a computerului sau laptopului dvs. va începe. După câteva minute, veți vedea o listă cu toate dispozitivele pentru care trebuie să descărcați și să instalați software. Deoarece nu căutăm un driver specific, verificăm toate elementele disponibile. După aceea, apăsați butonul "Mai departe"în partea de jos a ferestrei programului.
  4. În fereastra următoare, veți vedea o listă de dispozitive pentru care driverele au fost deja actualizate folosind acest utilitar și acele dispozitive pentru care software-ul trebuie încă descărcat și instalat. Ultimul tip de dispozitiv este marcat cu un cerc gri lângă nume. Pentru fiabilitate, doar apăsați butonul "Descarca toate".
  5. După aceea, programul va încerca să se conecteze la servere pentru a descărca fișierele necesare. Dacă totul merge bine, veți reveni la fereastra anterioară, unde puteți urmări progresul descărcării software-ului în linia corespunzătoare.
  6. Când toate componentele sunt descărcate, pictograma de lângă numele dispozitivului va deveni verde cu o săgeată în jos. Din păcate, instalarea întregului software cu un singur buton nu va funcționa. Prin urmare, selectați linia cu dispozitivul necesar și apăsați butonul "Instalare".
  7. Opțional, creați un punct de restaurare. Vi se va solicita acest lucru în următoarea casetă de dialog. Alegeți răspunsul care se potrivește cu decizia dvs.
  8. După aceea, va începe procesul de instalare a driverului pentru dispozitivul selectat, timp în care pot apărea casete de dialog standard. În ele, trebuie doar să citiți acordurile de licență și să apăsați butoanele "Mai departe". Nu ar trebui să aveți probleme în această etapă. După instalarea acestui sau acela software, vi se poate solicita să reporniți sistemul. Dacă apare un astfel de mesaj, vă recomandăm să faceți acest lucru. Când driverul este instalat cu succes, va apărea o bifă verde lângă linia cu hardware-ul din programul Driver Genius.
  9. Astfel, trebuie să instalați software pentru toate echipamentele din listă.
  10. La sfârșit, puteți scana computerul din nou pentru a fi convingător. Dacă ați instalat toate driverele, veți vedea un mesaj similar.
  11. În plus, puteți verifica dacă tot software-ul este instalat cu "Manager de dispozitiv" așa cum este descris la sfârșitul primei metode.
  12. Dacă există încă dispozitive neidentificate, încercați următoarea metodă.

Metoda 3: Servicii online

Dacă metodele anterioare nu v-au ajutat, rămâne să sperați la această opțiune. Înțelesul său este că vom căuta manual software-ul după un identificator unic de dispozitiv. Pentru a nu duplica informațiile, vă recomandăm să vă familiarizați cu lecția noastră.

În el veți găsi informații detaliate despre cum să găsiți ID-ul și ce să faceți cu acesta în continuare. Precum și un ghid pentru utilizarea celor mai mari două servicii online de căutare a șoferilor.

Metoda 4: Actualizare manuală a driverului

Această metodă este cea mai ineficientă dintre toate cele de mai sus. Cu toate acestea, în cazuri foarte rare, el este cel care va putea ajuta la instalarea software-ului. Iată ce este nevoie.


Acestea sunt cele mai multe moduri eficiente determinați dispozitivele pentru care trebuie să instalați software-ul. Sperăm că una dintre opțiunile propuse vă va ajuta să rezolvați această problemă. Nu uitați să actualizați software-ul pentru dispozitivele dvs. la timp. Dacă aveți dificultăți în găsirea sau instalarea driverelor, scrieți în comentarii. Împreună vom repara totul.

După cum știm, la nivel hardware, un computer modern este format din unități funcționale, care sunt diverse componente electronice. Gamă largă de utilizatori calculatoare personale familiarizat cu blocuri funcționale precum: procesor, memorie, placă video, placă de sunet, HDD, controler I/O (care asigură funcționarea tastaturii, mouse-ului, joystick-ului, suportului USB (unități flash)), imprimantei, scanerului și a altora. La nivel fizic, aceste dispozitive interacționează între ele prin autobuze și protocoale speciale, creând o combinație a interacțiunii lor cu o simbioză de operații, care, în cazul general, caracterizează funcționarea unui computer. Dar este un computer doar o colecție de componente electronice? Bineînțeles că nu, deoarece unul dintre modulele hardware principale, procesorul central, este proiectat să execute instrucțiuni ale mașinii, ale căror secvențe, după cum știm, sunt programe, având în vedere acest lucru, ar fi oportun să menționăm încă un nivel - software. Acum să ne întoarcem la trecutul nu atât de îndepărtat; în primele zile ale erei computerelor, codul programului (care era adesea scris direct în coduri de mașină/limbaje de nivel scăzut) putea interacționa cu ușurință direct cu hardware-ul, deoarece arhitectura hardware era relativ simplă. Cu toate acestea, de-a lungul timpului, tehnologiile au evoluat, nivelurile hardware și software au evoluat interconectat, iar primul a venit la apariția unei varietăți mari de dispozitive, iar al doilea la apariția unei varietăți uriașe. module software, ceea ce a dus ulterior la apariția sistemelor de operare. Sistemul de operare a reprezentat o piatră de hotar cheie în istoria dezvoltării industriei calculatoarelor, deoarece acesta a fost, printre altele, cel care a acționat ca o legătură, un fel de coordonator (dispecer) care asigura interacțiunea între dispozitive și programe: a acceptat solicitările de la nivelul software (de exemplu, programele utilizator) pentru schimbul de date cu acest sau acel dispozitiv și invers, adică a servit de fapt ca o interfață între părțile hardware și software. Nici sistemele de operare nu au stat pe loc, iar dacă la început interacțiunea sistemului de operare cu hardware-ul computerului a fost relativ simplă, atunci pe măsură ce arhitectura a devenit mai complexă și au fost introduse noi capabilități hardware, structura sistemului de operare a devenit mai complicată. Pe parcursul dezvoltării sistemelor de operare, dezvoltatorii au încercat să creeze cod care să ofere interacțiune deplină cu numărul maxim posibil de dispozitive hardware disponibile pe piață. Cu toate acestea, o astfel de abordare, pe măsură ce arhitectura computerelor personale x86 a devenit mai complexă, a condus la apariția conceptului unui strat software separat numit driver responsabil pentru interacțiunea cu o anumită clasă/tip de dispozitiv. Conceptul de driver s-a dovedit a fi atât de reușit încât pe lângă direcția principală - suport pentru dispozitive fizice, a fost extrapolat la unele categorii de dispozitive logice / virtuale. În acest articol vom vorbi despre ce este driver de Windows.

Teorie

Să ne îndepărtăm puțin de conceptul de șofer și să ne uităm la teoria generală. Pentru a înțelege ce este un driver într-un sistem, trebuie mai întâi să parcurgeți un minim de teorie pe arhitectura generală x86-64. De ce x86, da, pentru că această platformă anume: a) a fost aleasă de mine pentru experimente, b) este cea mai comună în segmentul de clienți de operare sisteme Windows. Caracteristicile exprimate în această secțiune ne vor oferi o înțelegere a multor aspecte ale funcționării atât a sistemului de operare în sine, cât și, în consecință, a driverelor din compoziția sa.

Moduri de funcționare a procesorului

Structura internă a oricărui sistem de operare se bazează pe caracteristicile hardware ale platformei pe care rulează. Legătura centrală este procesorul, procesoarele cu arhitectură x86-64 au mai multe moduri de funcționare:

  • Modul real;
  • Mod virtual (mod virtual);
  • Mod protejat;
  • Mod lung (mod lung).

În zorii erei dezvoltării computerelor personale cu arhitectură x86, procesorul funcționa în modul real. Cu toate acestea, modul real a devenit treptat un lucru al trecutului, deoarece avea o serie de caracteristici care făceau imposibilă dezvoltarea în continuare a tehnologiilor: o magistrală de date pe 16 biți și o magistrală de adresă de 20 de biți (limitarea adresei), adresarea segmentului cu dimensiunea segmentului de 64 kilobytes (inconvenient de utilizare a spațiului de adrese), lipsa restricțiilor de acces la spațiul de adrese. Pentru a elimina restricțiile existente, a fost dezvoltat un mod protejat, care a oferit o serie de caracteristici importante pentru dezvoltarea sistemelor de operare: „multitasking”, un mecanism de protecție (acces la comenzi privilegiate), care asigură controlul accesului diferitelor secțiuni. de cod (programe) unul la altul, cel memorie virtuala. În modul protejat procesoare Intel Arhitecturile x86 implementează așa-numitele inele de protecție sau niveluri de privilegii. Sunt patru dintre ele: 0 (cel mai privilegiat), 1, 2 și 3 (cel mai puțin privilegiat). Nivelurile de privilegii sunt menite să protejeze codul în modul kernel de programele utilizatorului și programele utilizator unul de celălalt, deoarece acest lucru poate duce la corupție. Cu toate acestea, sistemul de operare Windows nu utilizează toate nivelurile enumerate, doar două dintre ele sunt implicate în el: 0 și 3.
Pentru claritatea înțelegerii, vă prezentăm o diagramă simplificată a interacțiunii componentelor Windows:

După cum puteți vedea, mediul intern al sistemului de operare Windows este împărțit în două părți și acceptă două moduri de execuție:

  • Modul utilizator- modul neprivilegiat, asociat cu inelul de protecție hardware al 3-lea procesor;
  • Modul Kernel este un mod privilegiat asociat cu inelul de protecție hardware al procesorului 0;

Această caracteristică este poate cel mai important punct în înțelegerea structurii interne a Windows: la nivel global, sistemul de operare este, parcă, împărțit în două părți principale: modul utilizator și modul kernel.

Merită înțeles, realizat și amintit odată pentru totdeauna, pentru că, de fapt, acesta este unul dintre conceptele de bază, de bază, ale atâtor sisteme de operare moderne.
Modurile utilizator și modul kernel au următoarele diferențe:

  • Spații de adrese virtuale izolate (nesuprapune): spațiul în modul utilizator ocupă partea inferioară (adresele de la până), spațiul în modul kernel ocupă partea superioară (adresele de la până);
  • Diferite privilegii de acces la cod la resurse (memorie, procesor, dispozitive etc.).

Următoarele procese rulează în modul utilizator:

Subsistemul Descriere
Procese de suport de sistem
  • Procesul de conectare Winlogon (winlogon.exe)
  • Proces server local Autentificare lsass (lsass.exe)
  • Procesul Service Control Manager (services.exe)
  • Procesul manager de sesiune (smss.exe)
  • Procesul consolei (conhost.exe)
  • Proces local de manager de sesiune (lsm.exe)
  • . . .
Procese de service
  • Proces gazdă pentru servicii (svchost.exe)
  • Procesul de spool (spoolsv.exe)
  • Procesul de gestionare a serviciilor WMI (winmgmt.exe)
  • . . .
Aplicații
  • Aplicații utilizator (toate aplicațiile nu sunt incluse în celelalte categorii).
  • Manager de activități (taskmgr.exe)
  • Explorer (explorer.exe)
  • Consola de administrare (mmc.exe)
  • . . .
Subsisteme de mediu
  • Subsistemul Win32 (csrss.exe, kernel32.dll, advapi32.dll, user32.dll, gdi32.dll, ...)
  • Subsistemul Linux (lxss.sys , lxcore.sys )
  • Subsistemul POSIX (psxss.exe, psxrun.exe, posix.exe, psxdll.dll)
  • Subsistem OS/2 (os2.exe, os2ss.exe, os2srv.exe)
  • Subsistemul WOW/WOW64 ( wow64win.dll , wow64.dll , wow64cpu.dll )
  • . . .
Interfață cu funcțiile nucleului
  • Oferă transferul de control către nucleu pentru funcțiile care necesită acest lucru. Sprijinit de ntdll.dll

În modul kernel:

Subsistemul Descriere
Sistem executiv (executiv)
  • Manager I/O
  • Manager de proces
  • Manager de fire
  • Manager de memorie virtuală
  • Manager de obiecte
  • Manager PnP
  • Manager de putere
  • Manager de ferestre
  • . . .
Nucleu inițializarea driverelor critice pentru sistem în timpul fazei de pornire, sincronizarea interprocesorului, programarea și expedierea proceselor/thread-urilor/întreruperilor, gestionarea/expedierea excepțiilor/erorilor și a altor funcții (ntoskrnl.exe , ntkrnlmp.exe , ntkrnlpa.exe , ntkrnlpa.exe , ntkrnlpa.exe , . .executabil ).
Drivere de dispozitiv drivere de dispozitiv fizic/logic/virtual: sistem de fișiere, rețea, disc și alte drivere.
Subsistem de ferestre/grafică (Sistem de ferestre și grafică) Subsistem de suport pentru ferestre și grafică care oferă suport pentru funcțiile grafice. interfața cu utilizatorul(Interfață grafică cu utilizatorul, GUI). (win32k.sys)
Strat de abstractizare hardware (HAL) oferă independență față de hardware-ul platformei, izolează componentele kernel-ului de specificul hardware-ului. (hal.dll)

Deoarece orice sistem de operare pur și simplu trebuie să poată funcționa cu hardware, kitul de distribuție (kit de instalare / fișiere de sistem) conține drivere pentru componente hardware cheie, fără de care sistemul va pierde literalmente accesul la hardware cu toate problemele care decurg: nu va poate funcționa sau nu va trece deloc prin procesul de instalare. Aceste drivere „interne” sunt prezentate sub forma unei așa-numite biblioteci de drivere încorporate, care se modifică în compoziție de la versiune la versiune, în funcție de etapele evoluției hardware și de tendințele pieței. Driverele din această bibliotecă, dacă este necesar, sunt instalate în etapa de instalare a sistemului de operare, în funcție de detectarea (identificarea) anumitor dispozitive din computer. În general, în timpul instalării, codul de detectare hardware detectează dispozitivele instalate pe computer și verifică biblioteca acestuia pentru drivere comparabile. Pentru acele dispozitive pentru care există drivere de sistem, instalarea se realizează în modul automat (în fundal). Astfel, „la ieșire”, după instalarea sistemului de operare, putem obține setul minim de drivere de sistem necesare funcționării, ceea ce ne permite să organizăm un mediu de lucru inițial funcțional. Dar merită să rețineți că nu trebuie să vă limitați la driverele încorporate în kitul de distribuție, deoarece funcționarea completă a majorității dispozitivelor poate necesita drivere furnizate de producătorul dispozitivului.

Întrebarea rămâne: toate componentele în modul kernel interacționează cu hardware-ul exclusiv prin stratul HAL? exista exceptii? Pe Web, multe surse oferă diagrame în care driverele adaptoarelor grafice interacționează cu plăcile video ca și cum ar fi „direct”, ocolind HAL. Din câte îmi amintesc, graficii au primit cea mai mare prioritate în unele versiuni de Windows, așa că au fost separate într-o categorie separată de dispozitive care lucrează direct cu adaptor grafic, iar acest lucru a fost făcut pentru a accelera GUI sisteme.

Niveluri de solicitare de întrerupere (IRQL)

Printre mecanismele interne cheie care determină funcționarea sistemului de operare Windows, există un subiect destul de important pentru înțelegerea principiilor de funcționare a driverelor, care este puțin probabil să fie ocolit. Acest mecanism se numește nivelul cererii de întrerupere(Interrupt Request Level, IRQ Level, IRQL) și este destul de greu de înțeles, așa că studiul său aprofundat depășește cu mult sfera materialului prezentat, totuși, în acest articol vom încerca un rezumat (ei bine, în viitor vom îi va aloca un articol separat). Sincer, eu însumi sunt încă confuz în privința conceptului de IRQL, așa că îmi voi afirma propria înțelegere sistematic, pas cu pas, pe baza cunoștințelor acumulate la fiecare dintre etape.
Termenul de întrerupere a fost întotdeauna asociat la mine cu modul real de funcționare al procesorului, transferându-se pe vremurile sistemului de operare MSDOS, în care totul era destul de simplu: era un set de 256 de întreruperi disponibile prin tabelul de vectori de întreruperi. Unele dintre aceste întreruperi erau hardware, respectiv, generate independent de unele evenimente hardware externe, în timp ce altele erau software, respectiv, puteau fi apelate din codul aplicației. Intrările din tabelul de întreruperi puteau fi redefinite, adică vectorul de gestionare a întreruperilor era disponibil pentru a se schimba după propria sa procedură de procesare. Concepte precum nivelul cererilor de întrerupere nu existau, totul era simplu și clar. Cu toate acestea, odată cu evoluția procesoarelor și a sistemelor de operare, a apărut mai întâi modul protejat, apoi Windows, din acel moment totul a început să se complice rapid.
Literal brusc, în primele versiuni de Windows 95 / NT, a apărut un fel de tabel (constând din 32 de niveluri de solicitare de întrerupere), ale căror niveluri sunt clasificate de la cel mai mic 0 (pasiv) la cel mai mare 31 (mare):

Nume Clasă Scop Nivel Intel x86-64
ÎNALT hardware Cel mai înalt nivel. NMI și alte tipuri. 31
PUTERE hardware Evenimente de pană de curent 30
IPI hardware Semnal interprocesor. Semnale de comunicare interprocesor. 29
CEAS hardware Ciclul temporizatorului sistemului 28
PROFIL hardware Controlul performanței. Timer de profilare a nucleului (mecanism de măsurare a performanței sistemului). 27
DISPOZITIV hardware DIRQL (Dispozitive IRQL). Dispozitiv întreruperi hardware. 3-26
EXPEDIERE Program Operațiuni de planificare/apeluri de procedură amânată (DPC). 2
APC Program Apeluri de procedură asincronă. 1
PASIV Program Nivel pasiv. Nu există întreruperi. Nivel normal de execuție a codului în modul utilizator 0

După cum puteți vedea, există o caracteristică foarte interesantă în tabelul de mai sus: atât nivelurile software, cât și cele hardware sunt reunite (0-2 sunt niveluri software, iar 3-31 sunt niveluri hardware).

IRQL este un atribut de programare proprietar introdus de dezvoltatorii Microsoft. Acest mecanism nu are suport hardware de la procesor. Sistemul gestionează în mod independent toate tipurile de întreruperi care apar prin mecanismul de mapare a nivelurilor de întrerupere ale controlerului de întreruperi hardware (PIC) și propriile niveluri de software într-un singur tabel de niveluri de întrerupere independent de hardware.

Din această declarație rezultă că modelul este propriu, software, iar nivelurile din acesta nu sunt legate de nicio specificație hardware, acest lucru permite sistemului să asambla tipurile de întreruperi hardware și non-hardware într-o singură ierarhie de priorități. Nivelurile inferioare (non-hardware/software) IRQL (PASSIVE, APC, DPC/DISPATCH) sunt utilizate pentru a sincroniza subsistemele software ale sistemului de operare: declanșează operațiuni de programare, cum ar fi comutarea firelor sau procesarea de finalizare a I/O. Să le privim în detaliu:

  • Prioritate 0 (cea mai joasă) IRQL (PASIV): este nivelul tipic de cerere de întrerupere la care se lucrează în sistemul de operare, atât în ​​modul utilizator, cât și în modul kernel. Cod (program) în execuție nivelul dat, pot fi pur și simplu întrerupte (preemptate) de orice: de exemplu, firele care se execută cu nivelul IRQ PASSIVE sunt preemptate de planificator după expirarea cuantumului de timp alocat pentru ele.
  • IRQL-urile APC și DPC/DISPATCH sunt niveluri de întrerupere software asociate cu planificatorul.
  • Nivelul 1 IRQL (APC): La acest nivel sunt executate așa-numitele proceduri APC, adică proceduri care se execută asincron în contextul unui anumit fir de execuție, cu alte cuvinte, organizează I/O asincron, sau adresează/așteaptă eliberarea oricărui (extern, global) obiecte de sistem. Utilizarea funcțiilor APC (de exemplu, WaitForSingleObjectEx) în cod nu duce la executarea instantanee a funcției, în schimb, firul de execuție (în contextul căruia este executată funcția) intră într-o stare specială și se generează o întrerupere software APC, apelul de funcție este plasat într-o coadă internă. Data viitoare când este timpul ca acel fir să ruleze, funcția APC programată este executată la nivelul APC. Firele care rulează la nivelul APC nu primesc, prin urmare, solicitări de la propriul nivel APC, pe care sistemul le utilizează pentru operațiunile de finalizare a I/O.
  • Nivelul 2 IRQL (DPC/DISPATCH):
    • utilizat pentru a gestiona apeluri de procedură amânată (DPC): apelurile de procedură amânată sunt rutine de apel invers care sunt amânate pentru execuție până când apare o trecere la nivelul IRQL DISPATCH; De obicei, DPC-urile sunt solicitate de la IRQL-uri ridicate pentru a efectua lucrări suplimentare pentru care timpul CPU nu este critic. Aceasta este o etapă destul de importantă pentru performanță și acum voi explica de ce. Driverele de dispozitiv încearcă să efectueze numărul minim posibil de operațiuni în cadrul propriilor rutine de servicii de întrerupere (ISR) pentru a nu dura mult timp la nivelul DIRQL, astfel încât să nu blocheze alte întreruperi și să nu încetinească, ca urmare, întregul sistem. .

      Cu cât nivelul IRQL este mai mare, cu atât capacitatea procesului este mai mică. Acest lucru încurajează dezvoltatorii să nivel inalt IRQL pentru a efectua numai cele mai necesare operațiuni și pentru a efectua toate celelalte acțiuni la nivel scăzut.

      Dacă șoferul înțelege că este nevoie de muncă suplimentară, ceea ce ocupă un timp semnificativ al procesorului, atunci solicită DPC-ul și îi transferă această sarcină. Când IRQL scade la DISPATCH, funcția driverului amânat este apelată înapoi și face restul procesării. Prin implementarea unui algoritm similar la nivelul IRQL DISPATCH, driverul petrece mai puțin timp la nivelul DIRQL și, în consecință, reduce timpul de întârziere pentru procesarea propriei întreruperi, eliberându-l astfel pentru alte dispozitive de sistem.

    • folosit pentru a executa sarcini de planificare: După cum știți, sistemele de operare Windows NT implementează multitasking preventiv, ceea ce înseamnă că fiecare proces care rulează pe sistemul de operare este alocat pentru a executa anumit timp. Deoarece IRQL-ul planificatorului de fire și DPC este 2, este mai mare decât prioritatea firelor de execuție ale utilizatorului (execută la nivelul 0). La rândul său, prioritatea planificatorului este mai mică decât prioritatea întreruperilor hardware (întreruperi de la dispozitive), adică poate fi întreruptă de întreruperi hardware.

Bine, dar încă nu înțeleg de ce nu a fost posibil să abandonez toate aceste niveluri și să faci un model de coadă „plat”, sau să execut toate aceste tipuri de sarcini pe măsură ce vin? Să simulăm o situație de lucru:
imaginați-vă un cod de genul program mic scris „pe genunchi”. Așa că l-am lansat pentru execuție, respectiv, s-a format un proces în sistem pentru programul nostru, în contextul căruia a început să se execute firul principal. Un fir obișnuit (modul utilizator sau modul kernel) rulează la cel mai scăzut nivel IRQL PASIV. Pe tot parcursul executării firului de execuție, ceasul (cipul de cronometru) generează periodic propriile întreruperi pentru a număra intervalele de timp, care sunt folosite pentru a indica sistemului de operare că a trecut o anumită perioadă de timp. Procedura de gestionare a întreruperilor de ceas este efectuată la nivelul IRQL CLOCK, care (dacă te uiți la tabel) are prioritate mai mare decât majoritatea nivelurilor: atât nivelul DISPATCH, care rulează planificatorul, cât și nivelul PASIV, care rulează programul nostru. Astfel, cronometrul înlocuiește constant munca atât a programatorului, cât și a programului nostru. Odată cu fiecare bifă a temporizatorului trecut, rutina de întrerupere a temporizatorului scade timpul rămas al temporizatorului acest moment cuantumul de timp al firului utilizatorului nostru. În momentul în care intervalul de timp al firului de execuție scade la zero, handlerul de întrerupere a ceasului generează o întrerupere la nivel DISPATCH, determinând astfel rularea planificatorului pentru a selecta următorul thread de executat. La generarea unei întreruperi la nivel DISPATCH, handlerul de întrerupere a temporizatorului încheie execuția codului său și controlul este returnat nucleului de sistem. Nucleul găsește următoarea întrerupere cu cel mai înalt nivel de prioritate în coada de cereri, care este în modul de așteptare. Fiecare întrerupere este deservită pe rând. Când toate întreruperile de peste nivelul DISPATCH sunt deservite, se execută rutina de întrerupere la nivelul DISPATCH. Acest handler de întrerupere procesează lista DPC și apoi apelează planificatorul. Scheduler detectează că cuantumul de timp al firului curent a fost epuizat, adică redus la zero, după care Scheduler execută algoritmul de programare pentru a selecta următorul thread de executat. Codul firului de execuție care este setat să fie executat va fi executat atunci când sistemul scade la nivelul IRQL PASIV.
Acesta este modul în care prioritățile sunt implementate și, în consecință, multitasking preventiv. Acum imaginați-vă că eliminați ierarhia nivelurilor de solicitare de întrerupere din sistem, cum se va comporta sistemul în acest caz? În această situație, nu ar fi clar ce să execute și când, sistemul va executa pe rând toate sarcinile primite, ceea ce ar duce la faptul că firele de execuție ar putea anticipa cu ușurință planificatorul și, în general, ar putea distruge sau dezactiva complet multitasking-ul preventiv, ceea ce ar duce în spatele unei operațiuni imprevizibile a sistemului de operare. În acest fel:

IRQL este un nivel de prioritizare hardware-software utilizat pentru sincronizarea în sistemele de operare din familia Windows, adică nivelurile IRQL sunt metoda principală folosită pentru a prioritiza toate acțiunile efectuate în sistemul de operare Windows pe parcursul ciclului de lucru.

respectiv:

IRQL indică prioritatea codului care rulează pe procesor în ceea ce privește întreruperile și alte evenimente asincrone (brute).

Scopul nivelurilor IRQL din sistem este următorul:

  1. Mascare: Creșterea nivelului de întrerupere vă permite să tăiați (mascarea) nivelurile de întrerupere hardware subiacente pe controlerul PIC. Acest lucru vă permite să ignorați temporar întreruperile care apar la niveluri inferioare, câștigând astfel timp pentru a executa rutina de întreruperi hardware la acest nivel.
  2. Sincronizare hardware: sincronizarea datelor între firele de execuție care rulează pe diferite procesoare/nuclee într-un sistem multiprocesor.
  3. Cronometrare software: pentru a determina când pot fi deservite diferite rutine APC/DPC, pentru a determina când aplicațiile în modul utilizator pot fi deservite.

Astfel, la nivel global, mecanismul IRQL permite unei subrutine de sistem de operare să:

  • Gestionați reintrarea (reintrarea)
  • Asigurați-vă că poate continua să ruleze fără a fi preemptat (preemptat) de o altă activitate.

Sincronizarea proceselor este un mecanism care vă permite să asigurați integritatea unei resurse (fișier, date din memorie) atunci când aceasta este utilizată de mai multe procese sau fire într-o ordine aleatorie.

Bine, dar cum îi afectează acest lucru pe șoferi? Știm că driverele pot fi în modul utilizator și, respectiv, în modul kernel, rulează în modul utilizator și în modul kernel. Din aceasta rezultă că:

Codul driverului poate rula la diferite niveluri IRQL.

Și acest lucru duce la două concluzii destul de importante:

  1. Codul șoferului este preemptibil și întreruptibil. Ca orice alt cod din sistem, acesta poate fi întrerupt în orice moment după încheierea intervalului de timp alocat;
  2. Codul șoferului trebuie să utilizeze anumite seturi funcțiile sistemului in functie de nivelul IRQL la care se executa.

Imaginați-vă o situație în care codul driverului se execută la un IRQL scăzut, modifică un obiect (de exemplu, un fișier file.txt ), apoi un alt cod la un IRQL mai mare își întrerupe brusc execuția și modifică același fișier.txt cu date diferite. Când controlul revine la driverul nostru, acesta va continua să modifice fișierul cu propriile sale date, suprascriind astfel datele care au venit din altă sursă. Astfel, fișierul va intra într-o stare inconsistentă. Au fost introduse diverse obiecte de sistem de sincronizare pentru a rezolva aceste probleme. Pentru ca codul la nivel de kernel să modifice anumite tipuri de date, obiecte mutex, trebuie mai întâi să dobândească dreptul de proprietate asupra lacătelor.

Conceptul de șofer

Nucleul sistemului de operare Windows nu a fost conceput pentru a interacționa singur cu dispozitivele.

În consecință, concluziile care decurg din această afirmație sunt evidente: pentru interacțiunea sistemului cu dispozitivele sunt necesare interfețe separate, poate chiar o combinație complexă de mai multe interfețe. Conceptul de driver a fost dezvoltat pentru a rezolva problema împerecherii și este folosit în modelele celor mai multe sisteme moderne, se bazează pe lucrul în spațiul de adrese al nucleului a unui cod special care asigură interacțiunea nucleului de sistem cu orice tip de dispozitive logice/fizice.
Având în vedere orientarea generală a resursei, în articol vom acoperi doar specificul driverelor sistemului de operare Windows. Prin urmare Drivere Windows, ca, în general, driverele altor sisteme de operare, următoarele afirmații sunt adevărate:

Driver (Driver) - software cu ajutorul căruia sistemul de operare (programe utilizator, nucleu și alte componente) obține acces la funcționalitatea unui dispozitiv fizic sau logic.

la fel, dar cu alte cuvinte:

Driver - interfață între codul modului utilizator, codul modului kernel și funcțiile dispozitivului fizic/logic/virtual.

Una dintre definițiile de mai sus evidențiază o caracteristică importantă a unui driver: este o greșeală să ne gândim la un driver exclusiv în interacțiunea cu un dispozitiv fizic, deoarece un driver nu trebuie să ofere acces la funcțiile niciunui hardware, poate oferi, de asemenea, numai funcționalități software. Exemple de astfel de soluții sunt driverele instalate în sistem de către antivirusuri, sistemele de criptare a datelor și sistemele de monitorizare. Algoritmul general de funcționare al oricărui driver este următorul: aplicațiile, prin funcțiile unei interfețe speciale de utilizator (în Windows, acesta este API-ul Win32) sau solicitările I/O, accesează indirect/direct funcțiile unui driver de dispozitiv. Driverul, la rândul său, oferă acces la caracteristicile funcționale ale dispozitivului de interes și, de asemenea, controlează procesul de interacțiune dintre solicitările aplicației și dispozitivul în sine. Desigur, șoferul trebuie să definească (descrie) toate principiile de interacțiune cu dispozitivul deservit (sclav, propriu), trebuie să existe un set de date despre obiectul gestionat, instrucțiuni (un set de comenzi), cu ajutorul cărora codul de sistem / utilizator poate inițializa corect dispozitivul și poate începe interacțiunea cu acesta.

Încărcarea driverelor la pornirea sistemului de operare

Ar fi foarte interesant de văzut în ce stadiu al pornirii sistemului de operare începe să se încarce și începe să ruleze primul driver Windows? Cu toate acestea, într-o prezentare detaliată, acest proces este mai degrabă nebanal și pentru o înțelegere profundă necesită inversarea codului multor componente de boot, pe lângă toate, este necesar să se țină cont de multe puncte conexe, precum: boot-ul secvență datorită dependenței dintre șoferi, datorită căreia șoferii pot fi grupați în așa-numitele „grupuri de încărcare”, încărcarea șoferilor în sine poate fi împărțită în mai multe etape etc. În același timp, trebuie remarcat faptul că pe Web există un număr mare de materiale referitoare la sistemele de operare deja învechite, așa că vom încerca să actualizăm procesul de încărcare a driverelor Windows folosind exemplul (cel mai apropiat de mine în spirit) Sistemul de operare Windows 7. Și, pentru început, nu ar strica să vorbim despre principalele componente ale nucleului Windows care sunt implicate activ în procesul de încărcare a driverului:

  • Intrare/ieșire manager (manager) (Manager I/O)- un modul în mod kernel, care face parte din subsistemul executiv, care gestionează procesele de intrare/ieșire, oferă o abstractizare a dispozitivelor fizice și logice pentru aplicațiile utilizator și componentele de sistem și conectează aplicațiile în modul utilizator cu drivere. Controlează etapele procesului de interacțiune a șoferului. Întregul schimb de date al managerului I/O cu șoferii se realizează prin apelarea procedurilor de apel invers ale șoferului și transmiterea acestora unei structuri de date IRP standardizate, care descrie întreaga esență a apelului către șofer;
  • Manager Plug-and-Play (Manager PnP)- modul kernel și modul utilizator, care face parte din subsistemul executiv, responsabil cu adăugarea, recunoașterea, eliminarea dispozitivelor din sistemul de operare. O parte din modul kernel interacționează cu restul componentelor sistemului și driverelor în timpul procesului de instalare (pornire). software necesare pentru deservirea dispozitivelor din sistem. Partea mod utilizator este responsabilă pentru interacțiunea cu programele în modul utilizator (pentru experiența utilizatorului interactiv) în situații care necesită instalarea de noi drivere sau ajustarea parametrilor de funcționare în cele existente. Gestionează distribuția resurselor hardware în sistem, știe, de asemenea, să recunoască dispozitivele, să răspundă la conexiunea/deconectarea acestora, să încarce driverele corespunzătoare atunci când sunt detectate noi dispozitive;
  • Manager de control al serviciului (SCM)- un proces de sistem responsabil pentru crearea, ștergerea, pornirea și oprirea serviciilor și a driverelor sistemului de operare. De asemenea, oferă: operarea jurnalului de evenimente, suport pentru tehnologia de apel de procedură la distanță (RPC);

Acești doi manageri, adică managerul I/O și managerul PnP, interacționează activ unul cu celălalt.
Acum vom descrie procesul de încărcare a sistemului de operare, cu toate acestea, nu o vom face în forma cu care ne-am obișnuit, ci vom nota pe scurt punctele cheie privind funcționarea componentelor descrise ale sistemului de operare cu drivere:

  1. Bootmgr(.efi) încarcă modulul winload(.efi) și îi transmite controlul.
  2. Winload(.efi) scanează stupul de registry HKEY_LOCAL_MACHINE\System\servicesși primește o listă cu toate driverele instalate pe sistem. Acest hive de registry conține chei care se mapează la driverele țintă și conțin diferite setări legate de driver, cum ar fi Group , Start , Type , LoadOrderGroup , DependOnGroup , DependOnServices , care determină anumite criterii de încărcare a driverului.
  3. Winload(.efi) încarcă drivere care sunt critice pentru etapa inițială de încărcare/funcționare a sistemului de operare, cum ar fi driverele de controler de unitate, driverele de sistem de fișiere. Evident, astfel de drivere au cea mai mare prioritate, deoarece creează baza pentru încărcarea altor drivere, prin urmare, din aceste și alte motive, acestea trebuie să fie în memorie în momentul în care controlul este transferat în nucleu. În consecință, acestea sunt marcate cu un tip special SERVICE_BOOT_START . Șoferi pentru această etapăîncepe descărcarea în funcție de grupurile din care aparțin.
  4. Winload(.efi) încarcă direct nucleul din ntoskrnl.exe și îi transmite controlul.
  5. Nucleul încarcă Managerul I/O și Managerul PnP.
  6. Managerul I/O creează un catalog global. Acest director este folosit ulterior pentru a înregistra obiecte dispozitiv.
  7. Managerul PnP pornește driverele deja încărcate în memorie la pasul anterior (de tip SERVICE_BOOT_START) apelând procedura DriverEntry a fiecărui șofer. În această etapă, sunt încărcați și șoferii dependenți.
  8. Managerul PnP construiește arborele de dispozitive al sistemului, îl traversează de la rădăcină și încarcă drivere de dispozitiv care nu au fost încă încărcate.
  9. Managerul PnP încarcă driverele de dispozitiv rămase descărcate, indiferent de valoarea parametrului Start. Multe dintre aceste drivere sunt de tip SERVICE_DEMAND_START .
  10. Managerul PnP încarcă drivere cu funcționalități avansate. Aceste drivere includ driverul adaptorului video, driverele pentru dispozitive externe, driverele pentru stiva TCP/IP. Astfel de drivere sunt de tip SERVICE_SYSTEM_START .
  11. Nucleul încarcă Session Manager Subsystem Service (SMSS), care la rândul său încarcă Service Control Manager (SCM). SCM scanează stupul de registry ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services) și, pe baza informațiilor primite, montează o bază de date internă a serviciilor/driverelor, formează o interfață de programare pentru deservirea serviciilor/driverelor instalate. SCM încarcă drivere „autostart” non-PnP (de tip SERVICE_AUTO_START) și orice drivere de care depind.

Din acest întreg algoritm de încărcare a driverelor, trebuie să înțelegem următoarele reguli de bază: un driver poate fi încărcat (în funcție de stadiul/clasa driverului) folosind un manager PnP sau folosind SCM, dar I/O Manager participă activ în procesul de funcționare a șoferului .

Structura driverului Windows

Cum ar putea arăta un șofer din punct de vedere al structurii? Este într-adevăr o clasă specială de programe aranjate într-un mod pur specific? Și eu, cândva, așa credeam naiv, dar dacă vă gândiți bine, de ce ar trebui dezvoltatorii sistemului de operare să-și complice viața și să inventeze un nou format specializat al imaginii fișierului executabil pentru unele componente nucleare? Este mult mai ușor să-l adaptezi pe cel vechi, care a fost mult timp depanat și dovedit de o sută de ori.

Un driver este un fel de „bibliotecă în mod kernel”, de obicei fișier DLL, al cărui antet PE (struct IMAGE_NT_HEADERS , substructură OptionalHeader) are valoarea câmpului Subsystem = 1 (IMAGE_SUBSYSTEM_NATIVE).

Tipul de subsistem poate fi setat la build modul executabil. Subsistemul nativ în sine este tipic pentru aplicațiile care funcționează după alte reguli decât cele clasice: în etapa de pregătire a imaginii pentru execuție, nu au nevoie să inițializeze subsistemul Win32. Printre altele, subsistemul nativ este folosit pentru codul în modul kernel, care este ceea ce sunt aproape toate driverele.

Prin analogie cu un DLL, ne putem gândi simplist la un driver ca la un set de proceduri (numite de aplicații externe), fiecare dintre acestea fiind concepută pentru a gestiona un anumit tip de apel către driver.

Să facem o mică digresiune și să vorbim despre un astfel de concept ca obiect. Faptul este că întregul proces de funcționare a driverului Windows, ca orice alte module ale sistemului de operare, depinde de o varietate de structuri de date ale sistemului. Aceste structuri sunt gestionate de nucleu și pot conține fire de execuție, evenimente, solicitări I/O, dispozitive și alte entități.

  • Obiecte. Blocuri de date care conțin înregistrări ale proprietăților unei anumite entități a sistemului de operare. Gestionat de dispecerul (managerul) de obiecte. Multe obiecte au descriptori (descriptori) care fac obiectul disponibil pentru aplicații.
  • Structuri de date. Blocuri de date care conțin înregistrări ale proprietăților unei anumite entități a sistemului de operare. gestionate de nucleu. Se disting de obiecte, dar (din cauza inerției) se mai numesc și obiecte

De aceea (cu multă presiune) toate structurile interne ale sistemului de operare Windows se numesc obiecte.
Acum, revenind la procedurile driverului, de fapt, așa-numitele „proceduri” ale driverului sunt obiecte COM de apel invers care procesează evenimente care provin de la obiectele de infrastructură ale sistemului de operare corespunzătoare, se spune că driverul oferă nucleului sistemului de operare un COM. interfață specificată printr-o serie de proceduri implementate de șofer. Exportul, adică publicarea (declararea) procedurilor conducătorului auto pentru accesul ulterioar la acestea din exterior, se realizează prin înregistrarea în procedura driver principal (standard pentru toți șoferii), numită DriverEntry.

Scopul principal al funcției DriverEntry este ca dezvoltatorul de driver să implementeze în ea completarea obiectului (înregistrările struct) ale driverului cu indicatoare către diferite proceduri interne ale driverului care oferă una sau alta funcționalitate. În procedura DriverEntry, puteți seta (modifica) numele unui obiect dispozitiv, care este apoi folosit de aplicații pentru a deschide un handle de dispozitiv și a trimite pachete de solicitare I/O (IRP).

Funcția DriverEntry este de fapt o funcție de inițializare globală și este executată o dată în timpul încărcării driverului. Această funcție poate fi cât se poate de simplă sau poate conține funcționalități avansate (subrutine suplimentare), cum ar fi, de exemplu, crearea de obiecte dispozitiv suplimentare, interogarea dispozitivului, faze suplimentare de configurare și inițializare a dispozitivului (dispozitivului).
După publicarea propriilor funcții, driverul devine nucleul „vizibil” al sistemului de operare. Pentru a nu complica o teorie deja destul de complicată, vom presupune că din punctul de vedere al nucleului Windows, orice dispozitiv este un fel de „dispozitiv virtual” abstract care operează cu un set standardizat de comenzi și este accesibil prin interfețe interne. . După cum am menționat mai sus, în nucleul sistemului de operare Windows există un modul special al sistemului executiv numit Manager I/O, care oferă o singură interfață de interoperabilitate pentru toate driverele în modul kernel, inclusiv driverele de dispozitiv fizic, driverele de dispozitiv logic și driverele de sistem de fișiere. În consecință, sistemul I/O kernel gestionează driverele sau putem spune că driverele folosesc interfața manager I/O pentru a funcționa în sistemul de operare. Pe de altă parte, driverul asigură conversia (conversia) „comenzilor standard” venite din sistemul de operare în comenzi care sunt „înțelese” de dispozitivul controlat de acesta (dacă există) și invers. Managerul I/O definește un set (set) de rutine care pot fi implementate într-un driver deoarece:

Driverul conține un set de rutine de apel invers care oferă diferite etape ale procesului I/O.

Pentru o înțelegere mai profundă a funcționalității pe care ar trebui să le ofere un driver, să oferim o descriere generală a procedurilor cheie ale driverului:

De fapt, privind diagrama de mai sus, devine clar exact ce tipuri de interacțiune, și anume, grupuri de proceduri, driverul Windows abstract ar trebui să implementeze. Să enumerăm acum câteva dintre aceste proceduri:

  • Inițializare - Managerul I/O pornește o procedură de inițializare (numită DriverEntry) care are scopul de a efectua acțiuni pe configurare inițială obiectul driver, înregistrând toate celelalte rutine de driver, configurand slave și efectuând alte acțiuni în numele dezvoltatorului.
  • Adăugați dispozitiv - adăugați un obiect dispozitiv (opțional). În această procedură, driverul creează de obicei obiecte dispozitiv pentru fiecare dispozitiv pe care driverul îl deservește. Utilizat de obicei pentru driverele Plug-and-Play.
  • Procesare - un set de proceduri de expediere (prelucrarea diferitelor stări). Deschiderea, închiderea, citirea, scrierea pe un dispozitiv, stările de putere de procesare, evenimentele PnP și stările sistemului, precum și alte tipuri de interacțiune sunt descrise în procedurile de expediere. De fapt, acestea sunt procedurile principale, deoarece operațiunile tipice de I/O sunt procesate prin proceduri de expediere.
  • Pornirea (începerea) I/O este a doua etapă a procesării unei cereri de I/O către un dispozitiv, pornind direct I/O-ul dispozitivului. Această procedură poate fi utilizată pentru a începe transferul de date către/de la dispozitiv.
  • Procedura de service întrerupere - când dispozitivul generează o întrerupere, managerul de întreruperi transferă controlul acestei proceduri.
  • Gestionarea apelurilor cu procedură amânată - Rutina DPC preia cea mai mare parte a gestionării întreruperilor după ce ISR este executat. Apelurile de procedură amânată rulează la niveluri IRQL mai mici (DPC/DISPATCH) decât procedura ISR în sine. Un algoritm similar este implementat pentru a evita blocarea altor întreruperi.
  • Rutina de finalizare I/O - Un driver pe mai multe niveluri poate avea rutine de completare I/O care notifică finalizarea procesării IRP de către driverul de nivel scăzut.
  • Proceduri de anulare I/O - Dacă operațiunile I/O pot fi întrerupte, șoferul poate defini una sau mai multe astfel de proceduri. Când un driver primește un IRP pentru o solicitare I/O care poate fi anulată, acesta atribuie o procedură de anulare IRP și IRP parcurge diferiți pași de procesare pe care procedura le poate modifica sau elimina dacă operațiunea curentă nu poate fi anulată.
  • Rutină de trimitere rapidă - Driverele care folosesc în mod intens Cache Manager, cum ar fi driverele de sistem de fișiere, oferă de obicei rutine similare pentru a permite nucleului să ocolească algoritmii obișnuiți de manipulare a I/O.
  • Procedura de descărcare trebuie implementată în fiecare driver care funcționează (eliberează/împrumută) cu resurse de sistem pentru ca I/O Manager să descarce driverul din memorie.
  • Procedura de alertă de oprire - Permite șoferului să elibereze toate resursele ocupate atunci când sistemul se oprește.

Devine evident că în procesul de dezvoltare a unui driver Windows nu este necesară implementarea întregului set de proceduri descrise mai sus, fiecare driver este unic și dezvoltatorul este liber să ofere propriul set de implementări susținute de driver. Când un driver este încărcat în sistem utilizând un manager PnP sau SCM, managerul I/O creează un obiect driver în spațiul de nume și apelează rutina de inițializare a driverului (de obicei o DriverEntry) care efectuează pași de inițializare suplimentari.

Obiectul driver reprezintă imaginea driverului încărcat în memoria kernelului, iar sistemul controlează driverul prin acest obiect.

Obiectul driver reprezintă codul șoferului și datele din nucleu: printre altele, driverul exportă punctele de intrare ale procedurilor sale prin acest obiect. Procedura de inițializare a driverului scrie în atributele acestui obiect punctele de intrare ale tuturor procedurilor driverului exportate. Odată încărcat, driverul poate crea obiecte dispozitiv pentru a reprezenta dispozitive sau chiar pentru a forma interfața driverului. Majoritatea driverelor creează obiecte dispozitiv astfel:

  • Driverele PnP creează obiecte dispozitiv prin rutinele lor de adăugare a dispozitivului atunci când managerul PnP îi informează despre prezența unui dispozitiv pe care îl administrează.
  • Driverele non-PnP creează obiecte dispozitiv atunci când managerul lor I/O apelează rutinele de inițializare.

Atunci când se creează un obiect de tip „dispozitiv” (dispozitiv), driverul trebuie să aloce acest obiect Nume. Acest obiect nou creat este apoi plasat în spațiul de nume manager de obiecte(Manager de obiecte), care, ca și managerul I/O (manager), face parte din subsistemul executiv al nucleului. Managerul de obiecte este conceput pentru a menține o bază de date cu toate resursele sistemului de operare reprezentate ca obiecte. Numele obiectului poate fi definit în mod explicit de driverul însuși sau generat automat de managerul I/O. Prin convenție, obiectele dispozitivului trebuie să se afle în directorul \Device al spațiului de nume al managerului de obiecte, care este inaccesibil aplicațiilor prin API-ul Win32. Și pentru ca obiectul „dispozitiv” să devină disponibil aplicațiilor, driverul trebuie să creeze în \GLOBAL?? link simbolic la numele acestui obiect din directorul \Device. Driverele non-Plug-and-Play și de sistem de fișiere creează de obicei o legătură simbolică cu un nume binecunoscut (de exemplu, \Device\VMwareKbdFilter). Numai după toate acțiunile enumerate, șoferul devine „vizibil” în sistem și disponibil pentru apelarea aplicațiilor utilizatorului.

Interacțiunea șoferului

Cum poate un program de utilizator să interacționeze cu un driver din sistem? Există două moduri de a face acest lucru:

  1. Implicit -- apelarea unei funcții API Win32 generice;
  2. Explicit -- o cerere I/O directă către driver;

Ei bine, cu primul caz, totul este destul de simplu, în program de aplicare este numită o funcție obișnuită Win32 API (de exemplu, CreateFile), care, apoi, în funcție de obiectul țintă (fișier, director), poate apela funcția de schimb cu driverul din lanțul apelurilor sale. De fapt, în acest caz, codul aplicației nu își stabilește sarcina de a interacționa cu niciun driver, doar de-a lungul lanțului de apeluri de procedură, la o anumită etapă, execuția intră în modul kernel și funcția driver este apelată acolo. Toate acestea rămân ascunse dezvoltatorului, dar este posibil să urmăriți interacțiunea folosind instrumente de depanare.
Al doilea caz este mai interesant, apare atunci când un apel de șofer nu înseamnă un apel indirect (prin apelarea unei funcții generice), ci un transfer folosind o funcție specială (de exemplu, DeviceIoControl) a așa-numitei cereri de control I/O , care, în continuare, inițiază formarea unui bloc de date numit pachet de cerere I/O.

I/O Request Packet (IRP) este o structură de date a nucleului Windows care conține informații care descriu o solicitare I/O.

Formal, IRP este un pachet, dar de fapt este un obiect kernel, adică o structură de date (bloc) cu un set de proceduri pentru managerul I/O, care asigură schimbul de date între program și driver, sau între șoferul și șoferul. După cum am menționat deja, arhitectura Windows este construită în așa fel încât să nu permită interacțiunea directă între programul în modul utilizator și driver, astfel încât un astfel de schimb se reduce la trimiterea codului IOCTL de către program, ceea ce duce deja la managerul I/O generând un pachet de solicitare IRP. Managerul I/O, ca responsabil pentru interacțiunea cu driverele, este cel care operează IRP-urile. Managerul I/O primește o solicitare I/O de la programul utilizator, apoi generează un IRP și îl transmite driverului corespunzător.
Pachetul IRP constă din două părți:

  • parte permanentă;
  • Stiva de plasare I/O.

În partea constantă, IRP conține un cod de funcție major și (nu întotdeauna) unul minor. Старшие коды: irp_mj_create, irp_mj_close, irp_mj_read, irp_mj_write, irp_mj_cleanup, irp_mj_device_control, irp_mj_internal_device_control, irp_mj_scsi, irp_mjj_control, irp_mj_scsi, irp_mjj_control, irp_mj_scsi, irp_mjj_control, irp_mj_scsi, irp_mjj_control, irp_mj_scSi, irp_mjj_control, irp_mj_scSi, irp_mjj Pachetul conține și o stivă de plasare I/O - o structură specială IO_STACK_LOCATION care conține anumiți parametri: acesta este setul de dispozitive care vor procesa acest pachet IRP. Mai mult, acest pachet este transmis secvenţial de la dispozitiv la dispozitiv de-a lungul stivei. Mai mult de o plasare a stivei indică faptul că un IRP poate fi gestionat de mai mulți drivere. „Celulele de stivă” ale IRP sunt proiectate pentru a stoca informații „variabile” atunci când pachetul IRP traversează stiva de drivere. IRP parcurge procedurile publicate de fiecare șofer, fiecare preia informațiile de care are nevoie din locația „sa” de plasare a I/O. Procedurile șoferului sunt denumite în mod tradițional „proceduri de apel invers”. După cum am menționat deja, funcția de inițializare a DriverEtnry spune nucleului (publică) numele acestor proceduri și mai târziu nucleul însuși apelează cutare sau cutare procedură în anumite circumstanțe.
Spre deosebire de un program standard, un driver nu este un proces clasic cu propriul spațiu de adrese și nu are un fir de execuție. În schimb, funcția driver se execută în contextul firului de execuție și al procesului în care a fost apelată. Contextul (spațiul de execuție a codului) al unui șofer depinde de cine cheamă (cheamă) șoferul. Se poate iniția contestație:

  1. Program de aplicație (program în modul utilizator). În acest caz, contextul de execuție al driverului este exact cunoscut și se potrivește cu contextul programului de aplicație;
  2. Un alt șofer (terț). În acest caz, contextul de execuție este mai greu de determinat, poate fi fie cunoscut, fie aleatoriu, depinde de contextul de execuție al funcției de driver care apelează.
  3. Întreruperea hardware/software. În acest caz, contextul de execuție este aleatoriu, deoarece o întrerupere (și, în consecință, trecerea la codul driverului) poate apărea atunci când este executat absolut orice cod din sistemul de operare.

Din nou, spre deosebire de programul standard, driverul nu poate apela funcții standard Win32 API, poate opera doar pe funcții disponibile în nucleu care încep cu prefixele Ex.. , Hal.. , Io.. , Ke.. , Ks.. , Mm.. , Ob.. , Po.. , Ps.. , Rtl.. , Se.. , Zw.. și alții.

Tipuri (tipuri) de drivere Windows

În procesul de evoluție și, în consecință, de complicare a conceptului de șofer, șoferii au început să fie împărțiți în categorii (sau tipuri) în funcție de scop. Iată pe cele principale:

  • Șoferi de clasă(Driver de clasă) - drivere dezvoltate de Microsoft pentru o anumită clasă de dispozitive.
  • Drivere de sistem de fișiere(File System Drivers) - drivere care implementează sisteme de fișiere pe diverse medii.
  • Drivere vechi(Drifere vechi) - drivere „învechite” (compatibile cu structură cu versiunile mai vechi ale sistemului de operare) în mod kernel care controlează în mod independent dispozitivul slave, fără drivere suplimentare. De ce au un astfel de nume? Pentru că acesta este un tip de driver care a fost păstrat din primele versiuni ale liniei de sisteme de operare Windows NT.
  • Driver de autobuz - Drivere care oferă funcționalitatea oricărei magistrale de computer (ISA, PCI, USB, IEEE1394 și altele);
  • Drivere de filtrare(Driver de filtru) - drivere utilizate pentru a monitoriza / schimba logica altui driver lucrând cu datele care trec prin acesta.
    • Top drivere de filtrare(Drivere de filtru superior) - un subtip de drivere de filtru situat deasupra driverului funcțional din stivă. Toate solicitările trec prin driverele de filtrare superioare, ceea ce înseamnă că acestea pot modifica și/sau filtra informațiile mergând către driverul funcțional, și apoi, eventual, către dispozitiv. Exemple ar fi un driver de filtru care monitorizează/filtrează traficul, criptează/interceptează solicitările de citire/scriere. Astfel de drivere sunt folosite în firewall-uri.
    • Drivere pentru filtrul de jos(Lower-filter drivers) - un subtip de drivere de filtru, situate sub driverul funcțional din stivă. De regulă, mai puține solicitări trec prin astfel de drivere de filtru inferioare decât alte drivere de filtru, deoarece majoritatea solicitărilor sunt executate și completate de driverul funcțional însuși.
  • Drivere funcționale(Function driver) - drivere care funcționează independent și determină toate aspectele legate de dispozitiv.
  • Driver PnP (Driver PnP) - un driver care acceptă tehnologia Plug-and-Play;
  • Minidriver (miniport, miniclass)(Driver Miniport, Minidriver, Driver Miniclass) - drivere care se ocupă de sarcini legate de dispozitivul țintă și folosesc drivere de clasă pentru a controla dispozitivul. Acționează ca o parte a unei perechi de drivere, în care această categorie acționează ca drivere de dispozitiv final care îndeplinesc anumite sarcini de dispozitiv.

În funcție de nivelul de componentizare, driverele sunt:

  • Single-level - Procesarea I/O este implementată într-un singur modul executabil (driver).
  • Multilevel - Procesarea I/O este distribuită între mai multe drivere.

Driverele PnP sub Windows sunt împărțite în:

  • Driver de funcție
  • Șofer de autobuz (sofer de autobuz)
  • Driver-filter (filtru-driver)

După modul de execuție, driverele Windows sunt clasificate:

  • Driver pentru modul utilizator.
  • Driver pentru modul Kernel.

Modele de drivere

De-a lungul existenței sistemului de operare, dezvoltatorii au încercat să standardizeze și să simplifice dezvoltarea driverelor. Drept urmare, au apărut modele.

Model WDM

Cândva, existau două direcții principale pentru dezvoltarea conceptului de driver Windows:

  1. Windows 95/98 a folosit modelul VxD (Virtual Device Driver);
  2. în Windows NT3.51, modelul NT-driver (driver în stil NT, NT Driver) s-a dezvoltat în paralel.

Totuși, începând cu versiunea Windows 98/NT4.0, dezvoltatorii au făcut o încercare de a unifica (universaliza) dezvoltarea driverelor, drept urmare modelele menționate au fost înlocuite cu un nou model WDM.

WDM (Model de driver Windows, Driver Windows Model) este un mediu de dezvoltare unificat (cadru) pentru driverele de dispozitiv ale sistemului de operare Windows. A fost creat pentru a reduce cerințele de standardizare a codului pentru șoferi.

Modelul WDM a fost un pas în redefinirea stivei clasice de drivere Windows pentru a oferi suport pentru tehnologiile revoluționare Plug-and-Play și ACPI de atunci. Modelul face posibilă încărcarea/descărcarea driverelor din mers, fără a fi necesară repornirea sistemului de operare, dezvoltarea driverelor ca extensii (filtre) la standard drivere de sistem, gestionați economisirea energiei și configurarea dispozitivului mai flexibil și așa mai departe.
În cadrul modelului WDM, orice dispozitiv hardware susținut de cel puțin doi șoferi:

  • Function driver (Function driver) - responsabil pentru aproape toate caracteristicile funcționale ale dispozitivului deservit: operațiuni I/O, manipularea întreruperilor și controlul dispozitivului;
  • Driver de magistrală - responsabil pentru menținerea conexiunii dintre dispozitiv și computer, de fapt, sprijinind magistrala de comunicație (de exemplu, PCI, USB etc.).

Model WDF

De-a lungul dezvoltării, modelul WDM a suferit multe modificări, crescând semnificativ. Începând cu Windows Vista, s-a făcut o altă încercare de dezvoltare a conceptului de driver Windows, în esență modelul WDM care exista deja la acel moment, rezultând un nou model (add-on la WDM) numit WDF.

WDF (Windows Driver Foundation, Windows Driver Foundation) este un mediu de dezvoltare (un set de instrumente) care facilitează dezvoltarea driverelor de dispozitiv pentru sistemele de operare Windows (Windows 2000 și versiuni ulterioare).

Acest lucru s-a datorat faptului incontestabil că dezvoltatorii nu au reușit să atingă un nivel suficient de abstractizare a modelului WDM, și anume, integrarea insuficientă a subsistemului I/O cu tehnologia Plug-and-Play și managementul energiei. Acest lucru l-a lăsat pe dezvoltatorul de drivere cu o povară enormă de a sincroniza aceleași solicitări I/O cu evenimente Plug-and-Play și solicitări de alimentare. Evident, era necesară o simplificare suplimentară a modelului de șofer. WDF a înlocuit WDM și este considerat cel mai modern model.
WDF implementează următoarele caracteristici:

  1. „Eliminarea” unor clase de drivere care nu sunt critice pentru modul de execuție în modul utilizator, ceea ce a redus numărul total de blocări în kernel.
  2. O mare parte din gestionarea interacțiunii subsistemului I/O cu Plug-and-Play și gestionarea energiei este acum gestionată de mecanismele încorporate ale modelului WDF.
  3. Furnizarea de noi interfețe interne modelului WDF care permit abstracția de la interfețe de sistem mai greu de înțeles; În modelul WDM / moștenit, este destul de dificil să implementați logica unor părți ale interacțiunii cu driverul fără a învăța toate elementele de bază ale arhitecturii complexe ale nucleului, în timp ce WDF vă permite să automatizați multe tipuri de interacțiune; O cantitate mare de cod atunci când se dezvoltă un driver WDM poate fi acum înlocuită cu apeluri de procedură WDF.
  4. Abilitatea de a crea un driver „canonic”. Prezența șabloanelor care oferă unui dezvoltator terță parte capacitatea de a suprascrie criteriile unice pentru driverul lor, reducând astfel timpul de dezvoltare.

Modelul WDF este împărțit în două zone:

  • UMDF (Kernel-Mode Driver Framework) este un mediu de dezvoltare a driverelor în modul kernel.
  • KMDF (User-Mode Driver Framework) este un mediu de dezvoltare a driverelor în modul utilizator.

Împărțirea mediilor în moduri utilizator și kernel în modelul WDF este destul de arbitrară, deoarece scopul principal al acestei distincții este de a clasifica dezvoltarea driverelor pentru anumite clase de dispozitive.



Se încarcă...
Top