Creăm un kit de distribuție Windows XP cu un set selectat de drivere. Totul despre drivere în Windows XP

07.05.2019 Video

Fiecare utilizator de computer se va confrunta mai devreme sau mai târziu cu problema găsirii, instalării și dezinstalării driverelor. Acest lucru va fi cauzat de achiziționarea unui nou dispozitiv, reinstalare sistem de operare, dorința de a crește performanța sau de a îmbunătăți alte caracteristici ale sistemului - nu contează. În acest articol vreau să ofer câteva informatii teoretice despre șoferi și, de asemenea, discutați despre unele subtilități și tehnici de manipulare a acestora

Ce este

Sofer - set utilitati, permițând sistemului de operare (OS) să lucreze cu un anumit computer. Sarcina sa este de a procesa cererile venite din aplicație și programe de sistem, traduceți-le într-un limbaj ușor de înțeles de dispozitivul fizic, gestionați procesele de inițializare a acestuia, setarea parametrilor, schimbul de date, trecerea de la o stare la alta etc. Un driver permite sistemului de operare să interacționeze cu un anumit dispozitiv printr-o interfață generală care nu ține cont de caracteristicile specifice ale dispozitivului respectiv. Cu alte cuvinte, șoferul traduce cererile nivel înaltîn interogări de nivel scăzut în limbajul mașinii, accesând direct resursele hardware ale computerului.

Nu orice dispozitiv necesită un driver. Dacă există un standard strict care descrie setul de comenzi, secvența și sincronizarea operațiunilor și alte caracteristici de lucru cu o anumită clasă de dispozitive, este posibil să nu fie nevoie de un driver, deoarece sistemul de operare include deja toate procedurile necesare pentru acest. În principiu, acesta poate fi numit un driver încorporat. Exemple - tastatură, temporizator, porturi de comunicare, modem (extern). Dar dacă dispozitivul poate fi înlocuit cu altul care diferă în funcție de funcționalitate, atunci driverul pentru acesta va trebui instalat.

Driverul poate fi inclus și în distribuția sistemului de operare. Atunci problema căutării lui dispare în sine. Cu toate acestea, dispozitivele care au apărut după lansarea oficială a sistemului de operare vor necesita instalarea unui driver separat dezvoltat de producător. În plus, setul de drivere inclus cu sistemul de operare este mic și acoperă doar o mică parte din dispozitivele cele mai comune sau complet standard.

Drivere și ferestre

În sălile de operație sisteme Microsoft un driver Windows este format din mai multe fișiere, de obicei stocate în directoare sistem, sistem32și subdirectoarele acestora. Nucleul driverului este stocat în fișiere cu extensii. vxd, .drv, .sysși altele, iar procedurile suplimentare sunt colectate în biblioteci dinamice .dll. În plus, driverul poate include fișiere de ajutor, utilitare, module de dezinstalare etc.

Secvența operațiunilor de instalare și dezinstalare a driverului este stocată într-un fișier de informații special .inf. Cu el folosind Windows determină tipul, producătorul, modelul dispozitivului, clasa driverului, resursele și fișierele necesare. Acest fișier descrie, de asemenea, operațiunile de despachetare, rulare, copiere, ștergere, redenumire a fișierelor, adăugare și ștergere a cheilor din registry etc. Toate fișierele .inf sunt stocate în directorul inf, iar driverele instalate de origine non-Microsoft (nu sunt furnizate împreună cu sistemul de operare) sunt stocate într-un subdirector separat inf/altele.

Windows poate găsi automat un driver pentru un dispozitiv. Pentru a face acest lucru, ea folosește tehnologia plug&play, mai exact, partea sa responsabilă de autoidentificarea dispozitivului. În special, dispozitivele PCI sunt detectate de bios și listate într-o zonă specială escd(date extinse de configurare a sistemului). Windows îl poate folosi sau poate sonda independent magistrala pci și poate afla de pe fiecare dispozitiv codurile producătorului, modelului și versiunii sale, resursele necesare și alte informații. Apoi, baza de date este verificată (fișiere drvdata.binŞi drvidx.bin) pentru toate dispozitivele cunoscute și este localizat fișierul .inf necesar. Dacă există fișiere noi în directorul .inf, acestea vor fi indexate automat și introduse în baza de date.

De asemenea, trebuie amintit că sistemele de operare Windows 98 se și Windows 2000, precum și descendenții acestora, acceptă model nou drivere, numite wdm ( driver de Windows model). Aceasta este o încercare de implementare sprijin deplin plug&playși acpi, adică face posibilă încărcarea și descărcarea driverelor „din mers”, fără a reporni sistemul, conectați-le sub formă de extensii de filtru la drivere standard Microsoft, gestionează mai flexibil economisirea energiei și configurarea dispozitivului etc. Driverele wdm sunt stocate în directorul system32/drivers. În special, noua generație de interfețe usb și ieee-1394 (firewire) funcționează numai sub controlul driverelor wdm.

„Referință” sau „de marcă”?

De obicei, funcționalitatea fiecărui dispozitiv computerizat este determinată de controlerele acestuia. Controlerele sunt sub formă de circuite integrate instalate pe placa de circuit imprimat. Interacțiunea dispozitivului cu alte componente ale sistemului se reduce la schimbul de date și comenzi între controlerul dispozitivului și procesor central(sau alt controler, de exemplu, un arbitru de magistrală, un controler dma etc.). Putem spune că un driver este un program care permite procesorului să „vorbească” cu controlerul

Foarte des, dezvoltatorii de cipuri (așa-numitul chipset) scriu ei înșiși drivere pentru dispozitivul pe care controlerul lor îl va controla. De obicei, astfel de drivere sunt numite drivere de referință. Acestea pot fi fie disponibile public și postate pe internet pe site-ul web al dezvoltatorului, fie furnizate exclusiv producătorilor de echipamente pentru modificare și adaptare. Evident, în primul caz, puteți și ar trebui să instalați drivere de referință pentru dispozitiv, care sunt actualizate mult mai des decât cele „de marcă” și conțin remedieri de erori și funcții noi. Cu toate acestea, este posibil să pierdeți accesul la unele funcții specifice dispozitivului.

Driverele „proprietare” ale producătorului de echipamente pot fi destul de învechite, dar în același timp iau în considerare unele caracteristici ale dispozitivului de care dezvoltatorii de chipset nu le cunosc. În orice caz, este întotdeauna logic să încercați mai întâi driverul „de referință” (dacă este disponibil pentru descărcare), iar dacă dintr-un motiv oarecare nu funcționează, reveniți la cele „de marcă”.

Versiuni de driver

Ca orice alt software, driverele au propriile versiuni. Formatul versiunii este gratuit - fiecare dezvoltator decide singur de câte cifre are nevoie pentru numerotare și în ce ordine ar trebui să apară. În unele cazuri, există încă un sistem: drivere Windows pentru cele mai interesante dispozitive din punctul nostru de vedere, cum ar fi video de jocuri și plăci de sunet, care acceptă directx, sunt numerotate într-un anumit fel. Prima cifră este numărul versiunii sistemului de operare Windows. 4 = win9x/winnt, 5 = win2000. Urmează după ce vine punctul versiunea directx. 12 = dx7, 13 = dx8. Ultimele cifre sunt numărul versiunii driverului în sine. De exemplu, driverul afișat în captura de ecran pentru plăci video nvidia are versiunea 4.13.01.1241 ceea ce înseamnă conceput pentru win9x și directx8, versiunea sa este 1241

Pentru a afla versiunea driverului, despachetați-o până când este separată. vxdŞi .dll-fisare. Apoi, trebuie să faceți clic pe oricare dintre fișierele din Explorer (de preferință cu extensia .vxd) clic dreapta mouse-ul, selectați „Proprietăți”, apoi fila „Versiune”. Versiunea driverului va fi evidențiată în culoare

Uneori, producătorii însoțesc driverul cu propriul lor program de instalare (setup.exe, install.exe etc.). Atunci nu este posibil să vedeți fișierele driverului. Căutați fișierul citiți-mă.txt, versiune.txt, eliberare.txt sau ceva similar, deoarece adesea indică și versiunile fișierelor sau întregul set

De asemenea, merită menționat așa-numitele drivere beta. Dezvoltatorii de chipset-uri și dispozitive încearcă adesea să stimuleze interesul pentru ei înșiși, postând drivere experimentale pe site-urile lor web. O altă tehnică cunoscută este furnizarea de șoferi proprietarilor diferitelor site-uri tematice de internet sub masca unora furate sau lăsate accidental pe paginile interne ale corporației (așa-numitele șoferi „scurgeri”). Desigur, dezvoltatorii le renunță în avans și nu promit suport tehnicîn caz de probleme, dar, mi se pare, ei încă analizează fluxul de scrisori de la utilizatori și, prin urmare, economisesc procesul de depanare și depanare

Pentru a preveni blocările sistemului din cauza driverelor beta, Microsoft a introdus o certificare specială. Driverele sunt testate în laboratorul de calitate hardware Microsoft Windows (whql), iar după finalizarea cu succes a tuturor procedurilor primesc un certificat. Acesta ia forma unui fișier „catalog de securitate” (extensia .cat), care listează toate componentele driverului certificat. Dacă un astfel de fișier nu este inclus în pachetul de drivere, atunci există o probabilitate foarte mare ca aceasta să fie o versiune beta

Apropo, verifica fișiere .cat, rulându-le dublu clicșoareci, deoarece pot fi falși (goali).

Cum să determinați producătorul și modelul unui dispozitiv

Desigur, este mai bine să cumpărați componente producători celebri, din fericire astăzi există o astfel de oportunitate. Atunci întrebarea ce șofer să căutați nu va apărea. Dar, uneori, utilizatorul nu are idee despre model sau chiar despre producătorul dispozitivului - de exemplu, dacă computerul nu este foarte nou și altcineva l-a asamblat. Înainte de a începe căutarea, va trebui să determinați numele exact dispozitiv sau chipset-ul acestuia.

Toate cipurile trebuie să fie marcate cu numele producătorului, modelul, seria, versiunea și revizuirea cipului și data lansării. Chipset-urile au de obicei cea mai complexă structură, au un corp mare și multe contacte, deci sunt mai mari ca dimensiuni decât alte cipuri. Prin marcare, folosind motoarele de căutare http://www.google.com/, http://www.altavista.com/, http://www.yandex.ru/ și altele, puteți găsi rapid site-ul web al chipset-ului producător și „de referință” „-driver.

Va fi mai ușor să găsiți producătorul dispozitivului în sine. În primul rând, toate informațiile necesare trebuie să fie înscrise pe placa de circuit imprimat. Chiar dacă nu ați găsit numele, există șansa de a-l identifica după numărul său fcc. Căutați linia „fcc id:”, care va indica cod de înregistrare, atribuit producătorului dispozitivului. După aceasta, trebuie să accesați site-ul web fcc și să introduceți codul în bara de căutare.

În al doilea rând, undeva va exista cu siguranță un model de dispozitiv notat, cu ajutorul căruia puteți încerca să găsiți site-ul web al producătorului pe Internet.

În al treilea rând, dacă dispozitivul este instalat în slot pci sau agp, apoi folosind utilitare puteți determina codul de producător al acestui dispozitiv sau chipset. Îți pot recomanda sandra, powerstrip. Principiul care stă la baza identificării se bazează pe analiza informațiilor produse de un dispozitiv PCI. Cel puțin, puteți obține coduri de producător (ID furnizor) și model (ID dispozitiv), care pot fi descifrate folosind tabele. În special, tabelul Sandra conține mai mult de 6 mii de coduri pentru diferite dispozitive

De unde să iei șoferul

Desigur, nu trebuie să vă faceți griji și să instalați toate driverele direct de pe CD-ul care vine cu dispozitivul. Această decizie este destul de justificată, dar numai pentru prima dată. Șoferii (în special pentru dispozitive interne) tind să fie actualizate frecvent, așa că este util să căutați ocazional pe Internet versiuni noi. În caz contrar, există o mare probabilitate ca dispozitivul să fie incompatibil cu noul software sau cu alte componente.

Daca stii sigur nume de domeniu site-ul web al producătorului (sau ghiciți ce - www.manufacturer.com, www.manufacturer.com.tw), apoi puteți începe să căutați. Pe pagina de titlu caută un buton „descărcare”, „drivere”, „asistență” sau un buton similar. Apoi, trebuie să selectați din listă exact dispozitivul pe care îl aveți. Este foarte posibil să vedeți mai multe dispozitive cu aceleași nume, ale căror diferențe vor fi doar în sufixe sau chiar numere de revizuire. Acordați atenție acestui lucru, altfel șoferul ar putea să nu funcționeze. Apoi, dacă este posibil, descărcați drivere nu numai pentru sistemul de operare pe care l-ați instalat, ci și pentru alte sisteme de operare: în timpul instalării ferestre noi Va fi neplăcut să descoperi că lipsește șoferul necesar.

Dacă nu găsiți site-ul de care aveți nevoie, contactați site-urile de șoferi specializate (http://www.windrivers.com/, http://www.driverhq.com/, http://www.drv.ru/ etc. .) d.). Puteți descărca fișierele driver direct de acolo doar într-un singur caz: compania de dezvoltare a încetat deja să existe și site-ul său web nu este fizic pe Internet. Este mult mai bine să utilizați căutarea nu pentru driver, ci pe site-ul web al producătorului sau pe pagina sa de asistență tehnică.

Cum se instalează

Instalarea driverului este după cum urmează: Windows detectează fișierul .inf și caută șiruri de identificare în el plug&play- dispozitive, iar dacă se potrivesc cu informațiile emise de dispozitivul însuși, sistemul efectuează acțiunile prescrise pentru a copia fișiere, a adăuga intrări în registru etc. Trebuie să furnizați locația fișierului când vi se solicită de către Expertul de actualizare hardware. Expertul pornește fie automat după ce apare un mesaj despre un dispozitiv găsit, fie manual. În ultimul caz, accesați „Proprietăți sistem” (apăsați I+pauză), selectați fila „Gestionare dispozitiv”, apoi proprietăți dispozitivul dorit, fila „Driver”, „Actualizare driver”.

Dacă driverul vine cu propriul său program de instalare, atunci este mai bine să îl utilizați. Pentru a face acest lucru, după ce apare mesajul despre un dispozitiv găsit, apăsați „esc”, încărcați Windows fără driver și rulați programul de instalare. Acesta va copia toate fișierele driverului în alt folder Windows, unde driverul va fi găsit după o repornire. În plus, va fi instalat programe suplimentare, inclus in kit. De asemenea, este important ca, în majoritatea cazurilor, instalatorul să poată elimina corect driverul fără a lăsa urme ale prezenței acestuia (Panou de control/Adăugați sau eliminați programe).

Cum se elimina manual

Dacă driverul pe care l-ați instalat nu face față funcțiilor sale și chiar provoacă erori și blocări, trebuie să îl eliminați. Doar apăsați „del” în lista de dispozitive și apoi așteptați un mesaj despre un dispozitiv nou?... Uneori, acest lucru ajută, alteori nu. Faptul este că data viitoare este posibil ca Windows să nu îți ceară un driver, ci pur și simplu să te informeze despre dispozitivul pe care l-a găsit și să returneze imediat totul la locul său. Pentru a șterge informații despre driver, va trebui în plus să ieșiți din dos, să mergeți la directorul Windows/inf și să găsiți acolo fișierul .inf al driverului necesar (mai precis, nu mai este necesar) și să îl ștergeți. În continuare, puteți trimite fișiere .vxd, care de obicei se află în windows/system, dar aici trebuie să aveți grijă, deoarece puteți exagera. Acum după reporniți Windowsîși va actualiza baza de date și nu va găsi vechiul driver, ceea ce înseamnă că îl puteți instala unul nou sau îl puteți returna pe cel vechi, care a funcționat bine înainte de a începe să reparați ceea ce nu a fost stricat

Fiecare utilizator de computer se va confrunta mai devreme sau mai târziu cu problema găsirii, instalării și dezinstalării driverelor. Indiferent dacă acest lucru este cauzat de achiziționarea unui nou dispozitiv, reinstalarea sistemului de operare, dorința de a crește performanța sau de a îmbunătăți alte caracteristici ale sistemului - nu contează. În acest articol vreau să ofer câteva informații teoretice despre șoferi, precum și să discut câteva dintre subtilitățile și tehnicile de manipulare a acestora.

Ce este
Un driver este un set de programe utilitare care permit sistemului de operare (OS) să lucreze cu un anumit computer. Sarcina sa este de a procesa cererile provenite din programele de aplicație și de sistem, să le traducă într-un limbaj ușor de înțeles de dispozitivul fizic, să gestioneze procesele de inițializare a acestuia, setările parametrilor, schimbul de date, trecerea de la o stare la alta etc. Un driver permite sistemului de operare să interacționeze cu un anumit dispozitiv printr-o interfață generală care nu ține cont de caracteristicile specifice ale dispozitivului respectiv. Cu alte cuvinte, driverul traduce cererile de nivel înalt în cereri de limbaj mașină de nivel scăzut, accesând direct resursele hardware ale computerului.

Nu orice dispozitiv necesită un driver. Dacă există un standard strict care descrie setul de comenzi, secvența și sincronizarea operațiunilor și alte caracteristici de lucru cu o anumită clasă de dispozitive, este posibil să nu fie nevoie de un driver, deoarece sistemul de operare include deja toate procedurile necesare pentru acest. În principiu, acesta poate fi numit un driver încorporat. Exemple - tastatură, temporizator, porturi de comunicare, modem (extern). Dar dacă dispozitivul poate fi înlocuit cu altul care diferă în funcție de funcționalitate, atunci driverul pentru acesta va trebui instalat.

Driverul poate fi inclus și în distribuția sistemului de operare. Atunci problema căutării lui dispare în sine. Cu toate acestea, dispozitivele care au apărut după lansarea oficială a sistemului de operare vor necesita instalarea unui driver separat dezvoltat de producător. În plus, setul de drivere inclus cu sistemul de operare este mic și acoperă doar o mică parte din dispozitivele cele mai comune sau complet standard.

Drivere și ferestre
În sistemele de operare Microsoft Windows, driverul este format din mai multe fișiere, de obicei stocate în sistem, directoare system32 și subdirectoare ale acestora. Nucleul driverului este stocat în fișiere cu extensiile .vxd, .drv, .sys și altele, iar procedurile suplimentare sunt colectate în dynamic libraries.dll. În plus, driverul poate include fișiere de ajutor, utilitare, module de dezinstalare etc.

Secvența operațiunilor de instalare și dezinstalare a driverului este stocată într-un fișier de informații special.inf. Cu ajutorul său, Windows determină tipul, producătorul, modelul dispozitivului, clasa driverului, resursele și fișierele necesare. Acest fișier descrie, de asemenea, operațiunile de despachetare, rulare, copiere, ștergere, redenumire a fișierelor, adăugare și ștergere a cheilor din registry etc. Toate fișierele .inf sunt stocate în directorul inf, iar driverele instalate de origine non-Microsoft (nu sunt furnizate împreună cu sistemul de operare) sunt stocate într-un subdirector separat inf/other.

Windows poate găsi automat un driver pentru un dispozitiv. Pentru a face acest lucru, folosește tehnologia plug&play sau, mai precis, partea din aceasta care este responsabilă de autoidentificarea dispozitivului. În special, dispozitivele PCI sunt detectate de bios și listate într-o zonă specială escd (date de configurare a sistemului extinse). Windows îl poate folosi sau poate sonda în mod independent magistrala pci și poate afla de pe fiecare dispozitiv codurile producătorului său, modelul și versiunea, resursele necesare și alte informații. Apoi, baza de date (fișierele drvdata.bin și drvidx.bin) este verificată pentru toate dispozitivele cunoscute și este găsit fișierul .inf necesar. Dacă există fișiere noi în directorul .inf, acestea vor fi indexate automat și introduse în baza de date.

De asemenea, trebuie amintit că sistemele de operare windows 98 se și windows 2000, precum și descendenții acestora, acceptă un nou model de driver numit wdm (windows driver model). Aceasta este o încercare de a implementa suport complet pentru plug&play și acpi, adică pentru a face posibilă încărcarea și descărcarea driverelor „din mers”, fără a reporni sistemul, conectați-le sub formă de extensii de filtru la driverele standard Microsoft, mai mult gestionați în mod flexibil economisirea energiei și configurarea dispozitivului etc. Driverele wdm sunt stocate în directorul system32/drivers. În special, noua generație de interfețe usb și ieee-1394 (firewire) funcționează numai sub controlul driverelor wdm.

„Referință” sau „de marcă”?
De obicei, funcționalitatea fiecărui dispozitiv computerizat este determinată de controlerele acestuia. Controlerele sunt sub formă de circuite integrate montate pe o placă de circuit imprimat. Interacțiunea dispozitivului cu restul componentelor sistemului se reduce la schimbul de date și comenzi între controlerul dispozitivului și procesorul central (sau un alt controler, de exemplu, un arbitru de magistrală, controler dma etc.). Putem spune că un driver este un program care permite procesorului să „vorbească” cu controlerul.

Foarte des, dezvoltatorii de cipuri (așa-numitul chipset) scriu ei înșiși drivere pentru dispozitivul pe care controlerul lor îl va controla. De obicei, astfel de drivere sunt numite drivere „de referință”. Acestea pot fi fie disponibile public și postate pe internet pe site-ul web al dezvoltatorului, fie furnizate exclusiv producătorilor de echipamente pentru modificare și adaptare. Evident, în primul caz, puteți și ar trebui să instalați drivere de referință pentru dispozitiv, care sunt actualizate mult mai des decât cele „de marcă” și conțin remedieri de erori și funcții noi. Cu toate acestea, este posibil să pierdeți accesul la unele funcții specifice dispozitivului.

Driverele „proprietare” ale producătorului de echipamente pot fi destul de învechite, dar în același timp iau în considerare unele caracteristici ale dispozitivului de care dezvoltatorii de chipset nu le cunosc. În orice caz, este întotdeauna logic să încercați mai întâi driverul „de referință” (dacă este disponibil pentru descărcare), iar dacă dintr-un motiv oarecare nu funcționează, reveniți la cele „de marcă”.

Versiuni de driver
Ca orice alt software, driverele au propriile versiuni. Formatul versiunii este gratuit - fiecare dezvoltator decide singur de câte cifre are nevoie pentru numerotare și în ce ordine ar trebui să apară. În unele cazuri, există încă un sistem: driverele Windows pentru cele mai interesante dispozitive din punctul nostru de vedere, precum plăcile video pentru jocuri și plăcile de sunet care acceptă directx, sunt numerotate într-un anumit fel. Prima cifră este numărul versiunii sistemului de operare Windows. 4 = win9x/winnt, 5 = win2000. Următoarea după punct este versiunea directx. 12 = dx7, 13 = dx8. Ultimele cifre sunt numărul versiunii driverului în sine. De exemplu, driverul pentru plăcile video nvidia prezentat în captură de ecran are versiunea 4.13.01.1241, ceea ce înseamnă că este destinat pentru win9x și directx8, versiunea sa este 1241.

Pentru a afla versiunea driverului, despachetați-o în fișiere separate .vxd și .dll. Apoi, trebuie să faceți clic dreapta pe oricare dintre fișierele din Explorer (de preferință cu extensia .vxd), selectați „Proprietăți”, apoi fila „Versiune” (vezi captura de ecran). Versiunea driverului va fi evidențiată în culoare.

Uneori, producătorii însoțesc driverul cu propriul lor program de instalare (setup.exe, install.exe etc.). Atunci nu este posibil să vedeți fișierele driverului. Căutați un readme.txt, version.txt, release.txt sau ceva similar, deoarece adesea listează și versiunile fișierelor sau întregul pachet.

De asemenea, merită menționat așa-numitele drivere beta. Dezvoltatorii de chipset-uri și dispozitive încearcă adesea să stimuleze interesul pentru ei înșiși, postând drivere experimentale pe site-urile lor web. O altă tehnică cunoscută este furnizarea de șoferi proprietarilor diferitelor site-uri tematice de internet sub masca unora furate sau lăsate accidental pe paginile interne ale corporației (așa-numitele șoferi „scurgeri”). Desigur, dezvoltatorii le renunță în avans și nu promit asistență tehnică în caz de probleme, dar, mi se pare, încă analizează fluxul de scrisori de la utilizatori și, astfel, economisesc procesul de găsire a defecțiunilor și depanare.

Pentru a preveni blocările sistemului din cauza driverelor beta, Microsoft a introdus o certificare specială. Driverele sunt testate în laboratorul de calitate hardware Microsoft Windows (whql), iar după finalizarea cu succes a tuturor procedurilor primesc un certificat. Acesta ia forma unui fișier „catalog de securitate” (extensia .cat), care listează toate componentele driverului certificat. Dacă un astfel de fișier nu este inclus în pachetul de drivere, atunci există o probabilitate foarte mare ca aceasta să fie o versiune beta.

Apropo, verificați fișierele .cat făcând dublu clic pe ele, deoarece acestea pot fi false (goale).

Cum să determinați producătorul și modelul unui dispozitiv
Desigur, este mai bine să cumpărați componente de la producători cunoscuți, din fericire astăzi există o astfel de oportunitate. Atunci întrebarea ce șofer să căutați nu va apărea. Dar, uneori, utilizatorul nu are idee despre model sau chiar despre producătorul dispozitivului - de exemplu, dacă computerul nu este foarte nou și altcineva l-a asamblat. Înainte de a începe căutarea, va trebui să determinați numele exact al dispozitivului sau al chipset-ului acestuia.

Va fi mai ușor să găsiți producătorul dispozitivului în sine. În primul rând, toate informațiile necesare trebuie să fie înscrise pe placa de circuit imprimat. Chiar dacă nu ați găsit numele, există șansa de a-l identifica după numărul său fcc. Căutați linia „fcc id:”, care va indica codul de înregistrare atribuit producătorului dispozitivului. După aceasta, trebuie să accesați site-ul web fcc și să introduceți codul în bara de căutare.

În al doilea rând, undeva va exista cu siguranță un model de dispozitiv notat, cu ajutorul căruia puteți încerca să găsiți site-ul web al producătorului pe Internet.

În al treilea rând, dacă dispozitivul este instalat într-un slot pci sau agp, atunci folosind utilitare puteți determina codul de producător al acestui dispozitiv sau chipset. Îți pot recomanda sandra, powerstrip. Principiul care stă la baza identificării se bazează pe analiza informațiilor produse de un dispozitiv PCI. Cel puțin, puteți obține coduri de producător (ID furnizor) și model (ID dispozitiv), care pot fi descifrate folosind tabele. În special, tabelul Sandra conține mai mult de 6 mii de coduri pentru diferite dispozitive.

De unde să iei șoferul
Desigur, nu trebuie să vă faceți griji și să instalați toate driverele direct de pe CD-ul care vine cu dispozitivul. Această decizie este destul de justificată, dar numai pentru prima dată. Driverele (în special pentru dispozitivele interne) tind să fie actualizate frecvent, așa că este o idee bună să căutați ocazional pe internet versiuni noi. În caz contrar, există o mare probabilitate ca dispozitivul să fie incompatibil cu noul software sau cu alte componente.

Dacă știți exact numele de domeniu al site-ului web al producătorului (sau puteți ghici - www.manufacturer.com, www.manufacturer.com.tw), atunci puteți începe să căutați. Pe pagina de titlu, căutați un buton „descărcare”, „drivere”, „asistență” sau un buton similar. Apoi, trebuie să selectați din listă exact dispozitivul pe care îl aveți. Este foarte posibil să vedeți mai multe dispozitive cu aceleași nume, ale căror diferențe vor fi doar în sufixe sau chiar numere de revizuire. Acordați atenție acestui lucru, altfel șoferul ar putea să nu funcționeze. Apoi, dacă este posibil, descărcați drivere nu numai pentru sistemul de operare pe care l-ați instalat, ci și pentru alte sisteme de operare: în timpul instalării unui nou Windows, va fi neplăcut să descoperiți că lipsește driverul necesar.

Dacă nu găsiți site-ul de care aveți nevoie, contactați site-urile de șoferi specializate (http://www.windrivers.com/, http://www.driverhq.com/, http://www.drv.ru/ etc. .) d.). Puteți descărca fișierele driver direct de acolo doar într-un singur caz: compania de dezvoltare a încetat deja să existe și site-ul său web nu este fizic pe Internet. Este mult mai bine să utilizați căutarea nu pentru driver, ci pe site-ul web al producătorului sau pe pagina sa de asistență tehnică.

Cum se instalează
Instalarea driverului este după cum urmează: Windows detectează fișierul .inf, caută în el șiruri de identificare a dispozitivului plug&play și, dacă acestea se potrivesc cu informațiile emise de dispozitivul însuși, sistemul efectuează acțiunile prescrise pentru a copia fișiere, a adăuga intrări în registry , etc. Trebuie să furnizați locația fișierului când vi se solicită de către Expertul de actualizare hardware. Expertul pornește fie automat după ce apare un mesaj despre un dispozitiv găsit, fie manual. În acest din urmă caz, accesați „Proprietăți sistem” (apăsați I+pauză), selectați fila „Gestionare dispozitiv”, apoi proprietățile dispozitivului dorit, fila „Driver”, „Actualizare driver”.

Dacă driverul vine cu propriul său program de instalare, atunci este mai bine să îl utilizați. Pentru a face acest lucru, după ce apare mesajul despre un dispozitiv găsit, apăsați „esc”, încărcați Windows fără driver și rulați programul de instalare. Acesta va copia toate fișierele driverului în alt folder Windows, unde driverul va fi găsit după o repornire. În plus, vor fi instalate programe suplimentare incluse în pachet. De asemenea, este important ca, în majoritatea cazurilor, instalatorul să poată elimina corect driverul fără a lăsa urme ale prezenței acestuia (Panou de control/Adăugați sau eliminați programe).

Cum se elimina manual
Dacă driverul pe care l-ați instalat nu face față funcțiilor sale și chiar provoacă erori și blocări, trebuie să îl eliminați. Doar apăsați „del” în lista de dispozitive și apoi așteptați un mesaj despre un dispozitiv nou?... Uneori, acest lucru ajută, alteori nu. Faptul este că data viitoare este posibil ca Windows să nu îți ceară un driver, ci pur și simplu să te informeze despre dispozitivul pe care l-a găsit și să returneze imediat totul la locul său. Pentru a șterge informații despre driver, va trebui în plus să ieșiți din dos, să mergeți la directorul Windows/inf și să găsiți acolo fișierul .inf al driverului necesar (mai precis, nu mai este necesar) și să îl ștergeți. În continuare, puteți trimite fișiere .vxd, care de obicei se află în windows/system, dar aici trebuie să aveți grijă, deoarece puteți exagera. Acum, după o repornire, Windows își va actualiza baza de date și nu va găsi vechiul driver, ceea ce înseamnă că îl puteți instala unul nou sau îl puteți returna pe cel vechi, care a funcționat bine înainte de a începe să reparați ceea ce nu a fost stricat.

Evident, fiecare utilizator computer personal, din când în când, este nevoie să conectați un dispozitiv la computer. Motivul pentru care se întâmplă acest lucru nu ne interesează prea mult acum, ar putea fi o actualizare familiară pentru mulți, pentru a crește performanța nodurilor individuale și, ca urmare a performanței generale a sistemului, ar putea fi pur și simplu adăugarea de noi echipamente; pentru a extinde funcționalitatea configurației existente, ca, de exemplu, în cazul conectării unei noi controler de joc, aceasta poate fi și necesitatea de a utiliza date de pe o unitate flash. Indiferent de exact modul în care conectăm un nou dispozitiv, sistemul de operare Windows este forțat să răspundă la apariția noului hardware prin efectuarea unor manipulări pentru a asigura suportul pentru noul hardware pe nivelul programului. În multe sisteme de operare, pentru a asigura interacțiunea software-ului cu dispozitivele, se folosește o interfață între hardware și stratul software numită driver, astfel încât sistemul de operare încearcă prin toate mijloacele pe care le are la dispoziție să instaleze un driver pentru un dispozitiv nou pentru a-l furniza. pentru acces la programele în modul utilizator și codul în modul kernel, deoarece fără echipamentul din sistem pur și simplu nu va putea funcționa cu acest driver foarte notoriu.

Driverul este un software cu ajutorul căruia sistemul de operare și modulele software care rulează în el obțin acces la hardware.

Dar cine poate fi surprins instalând drivere acum? Acest proces este deja atât de familiar pentru toți utilizatorii de PC-uri de la mulți ani de practică, încât unii, sunt sigur, pot face acest lucru ochii inchisi:) Dar te-ai gândit la detaliile acestui proces, te-ai gândit vreodată algoritm de instalare a driverului? Te-ai întrebat vreodată ce acțiuni efectuează sistemul de operare atunci când conectează un dispozitiv nou și instalează drivere?

De acord că, din punctul de vedere al utilizatorului, procesul de instalare a unui driver în Windows, în cele mai multe cazuri, arată destul de prozaic. Pictograma animată obișnuită a asistentului de instalare apare în bara de sistem și, după un timp, sistemul poate emite un raport privind finalizarea cu succes sau nereușită a procedurii de instalare pentru un nou driver de dispozitiv în sistem. Mai mult decât atât, adesea asistentul de instalare, în afară de această pictogramă din tavă, nu oferă nicio confirmare vizuală a încercărilor de a instala un nou dispozitiv, în timp ce adaugă „în liniște” echipamente noi la lista de dispozitive și îl marchează. cu o icoană specialăîn Manager dispozitive, solicitând utilizatorului să facă acest lucru modul manual continuați configurarea echipamentului. Toate aceste procese externe, deja bine cunoscute atât pentru tine, cât și pentru mine, au fost prezente într-o formă sau alta în toate versiunile de sisteme de operare Windows aproape de la apariția acestui sistem de operare, diferind puțin unele de altele doar în detalii. Au devenit atât de familiari și obișnuiți, încât nici măcar nu m-am gândit la ce se întâmplă „de cealaltă parte a ecranului”, în adâncul sistemului de operare, ce se ascundea sub această aparentă trivialitate? După cum veți vedea mai jos, instalare Drivere Windows pentru un dispozitiv fizic sau logic ascunde procese destul de interesante și complexe. Algoritm de instalare a driveruluiîn Windows pot fi împărțite în următoarele sarcini globale cheie:

  • Copierea fișierului binar al driverului în directorul corespunzător de pe sistem;
  • Înregistrarea șoferului în sistem Windows indicarea metodei de încărcare;
  • Plus informatiile necesare la registrul de sistem;
  • Copiați/instalați componentele de suport aferente din pachetul de drivere;

În plus față de principalele sarcini efectuate ca parte a algoritmului de instalare a driverului în Windows, ar fi bine să clasificăm condițiile în care începe procesul de instalare a driverului Windows:

  • Utilizatorul instalează un nou dispozitiv într-un computer oprit. În acest caz, procesul de detectare a unui nou dispozitiv și de instalare a driverului începe deja în etapa de încărcare a sistemului de operare.
  • Un utilizator cu drepturi de administrator local, folosind snap-inul Device Manager, inițiază instalarea sau actualizarea unui driver pentru un dispozitiv deja instalat.
  • Utilizatorul „din mers” conectează un dispozitiv nou la un computer care rulează. În acest caz despre care vorbim despre o anumită categorie de dispozitive care se pot conecta din mers, cum ar fi dispozitivele cu interfata externa eSata, USB etc. La urma urmei, nu veți instala o placă video internă atunci când este alimentată sloturile PCIe? Eu personal nu am facut asta inca :)
  • Utilizatorul lansează independent programul de instalare a pachetului de drivere de dedesubt cont cu drepturi de administrator local. Această metodă poate fi folosită atât pentru a instala drivere pentru dispozitive fizice care acceptă standardul Plug and Play, cât și pentru a instala drivere non-PnP (veghete) care nu pot fi detectate automat de sistem și care nu pot fi instalate decât în ​​modul manual. Un exemplu tipic pot exista antivirusuri sau mașini virtuale, care își instalează driverele de dispozitiv logic în sistem.
  • Utilizatorul face clic dreapta pe fișierul .inf din directorul driverului și selectează Instalare dintr-un cont cu drepturi de administrator local.

Dar ce este pachetul de driver în sine? La urma urmei, așa cum am văzut de mai multe ori, acesta este un întreg set de fișiere cu scopuri complet diferite, la prima vedere. Fără o revizuire mai aprofundată a structurii pachetului de instalare a driverului, ne va fi dificil să înțelegem algoritmul de instalare a driverului în sine, așa că vom prezenta componentele generale:

  • fișier(e) .inf. Un fișier care descrie procesul de instalare a driverului. Componenta cheie a pachetului de instalare a driverului. inf constă în instrucțiuni care îi spun Windows exact cum să instaleze driverul: descrieți dispozitivul care urmează să fie instalat, locațiile sursă și de destinație ale tuturor componentelor driverului, diverse modificări, care trebuie introdus în registry la instalarea unui driver Windows, informații despre dependențele driverului etc. Fișierele .inf asociază un dispozitiv fizic cu un driver care controlează acest dispozitiv.
  • Fișier(e) binar al driverului. Pachetul trebuie să conțină cel puțin un fișier .sys sau .dll pentru nucleul driverului.
  • Executabile de instalare. De obicei, acestea sunt deja binecunoscute utilitare de instalare, care poartă numele setup.exe, install.exe și altele.
  • Eliminarea executabilelor. Acestea sunt de obicei utilitare de dezinstalare numite uninstall.exe.
  • Fișier(e) cu proceduri și biblioteci suplimentare. De obicei acestea sunt biblioteci auxiliare în format .dll, co-instalare.
  • fișier(e) .cat. Fișier catalog semnat digital. Aceste fișiere conțin semnături de directoare digitale și acționează ca o semnătură pentru fișierele pachet, cu ajutorul cărora utilizatorul poate determina originea pachetului și poate verifica integritatea fișierelor pachetului de driver. Necesar pe 64 de biți versiuni Windows, începând cu Vista și mai târziu și recomandat pentru toți ceilalți.
  • Module de control în modul utilizator. De obicei, acestea sunt diverse aplicații de comandă care rulează în modul utilizator, cum ar fi ATI Catalist Centru de control, VIA HD Audio Desk, Realtek HD Audio Panoul de control si asemanatoare.
  • Fișiere de ajutor. Unde am fi noi fără ei?

Termeni și definiții

În acest articol voi descrie o singură metodă de instalare, care, în orice caz, descrie aproape toate etapele algoritmului de instalare a driverului în Windows, care sunt aplicabile și altor metode. Și acum vom vorbi despre situația în care utilizatorul introduce un echipament nou, de exemplu o placă video, în conectorul intern al unui computer oprit. Dar mai întâi, să introducem câteva definiții de care avem nevoie în procesul de studiu al algoritmului de instalare a driverului.
Manager (dispecer) Plug and Play (Manager PnP, Manager PnP)- un nor de mod kernel și cod de mod de utilizator, responsabil pentru adăugarea, recunoașterea, eliminarea dispozitivelor din sistem. Blocul modului kernel interacționează cu restul sistemului în timpul procesului de pornire/instalare software necesare pentru deservirea dispozitivelor disponibile în sistem. Blocarea modului utilizator ( %Windir%\System32\umpnpmgr.dll, rulează în contextul procesului principal de sistem svchost.exe) este responsabil pentru interacțiunea utilizatorului în situațiile care necesită instalarea de noi drivere sau ajustarea parametrilor de operare în cele deja instalate. Responsabil pentru atribuirea și alocarea ulterioară a resurselor hardware, cum ar fi întreruperi (IRQ-uri), porturi I/O, canale de acces direct la memorie (DMA) și adrese de memorie. Are funcționalitatea de a determina driverul necesar pentru a suporta un anumit dispozitiv și funcționalitatea de descărcare/instalare a acestui driver. Capabil să recunoască dispozitive noi, să răspundă la conexiunea și deconectarea acestora. Face parte din codul subsistemului executiv Windows.

Enumerarea dispozitivelor

Nu are rost să descriem de la bun început întreaga etapă de încărcare și vom începe doar cu etapa care ne interesează, la care modulul Winload(.efi) încarcă nucleul sistemului de operare Windows 7 din fișierul ntoskrnl. exe. Nucleul este lansat de managerul PnP, care face parte din subsistemul executiv. Managerul PnP începe procesul de enumerare a dispozitivelor din dispozitivul rădăcină, un driver de magistrală virtual numit ROOT, care reprezintă întregul sistem și este un driver de magistrală pentru toate dispozitivele PnP și non-PnP, precum și HAL (abstracții la nivel hardware) . HAL în această etapă funcționează ca un driver de magistrală care enumerează dispozitivele conectate direct placa de baza. Cu toate acestea, în loc să listeze efectiv HAL, se bazează pe descrierea hardware deja prezentă în registry. Scopul HAL în această etapă este de a descoperi magistralele primare, cum ar fi PCI. Șoferul principal Autobuze PCI, la rândul său, listează dispozitivele conectate la această magistrală, găsește alte autobuze pentru care managerul PnP încarcă imediat drivere. Acești șoferi de autobuz, la rândul lor, detectează dispozitivele din autobuzele lor. Acest proces recursiv de enumerare, încărcare drivere și apoi enumerare continuă până când toate dispozitivele din sistem au fost descoperite și configurate. În timpul procesului de enumerare, managerul PnP construiește un arbore de dispozitive care descrie în mod unic relațiile dintre toate dispozitivele din sistem. Nodurile din acest arbore, numite devnodes (prescurtare pentru nodurile dispozitivului), conțin informații despre un obiect dispozitiv, care, la rândul său, descrie dispozitivul în detaliu.
Înregistrările tuturor dispozitivelor care au fost detectate de la instalarea sistemului sunt stocate în stupul de registry HKLM\SYSTEM\CurrentControlSet\Enum. Pluginurile acestui stup descriu dispozitivele din următorul format:

HKLM\SYSTEM\CurrentControlSet\Enum\Enumerator\DeviceID\InstanceID

HKLM\SYSTEM\CurrentControlSet\Enum\

  • Enumerator - numele șoferului de autobuz. Poate lua valori: ACPI, DISPLAY, HDAUDIO, HID, HDTREE, IDE, PCI, PCIIDE, Root, STORAGE, SW, UMB, USB, USBSTOR și altele;
  • DeviceID - identificator unic pentru de acest tip dispozitive;
  • InstanceID - un identificator unic pentru diferite instanțe ale aceluiași dispozitiv.

Cert este că șoferul autobuzului la care este conectat dispozitivul întreabă dispozitivul diverși parametri(identificatorul producătorului, dispozitivului, reviziei etc.) și formează așa-numitul identificator hardware (HardwareID), care descrie în mod unic dispozitivul și este un șir de parametri separați prin semne & și format din următoarele părți:

  • Un prefix care descrie magistrala la care este conectat dispozitivul.
  • ID dispozitiv. Constă din mai multe părți, cum ar fi identificatorul producătorului, identificatorul produsului (modelului), revizuirea dispozitivului.

HardwareID este un șir de identificare care depinde de parametrii dispozitivului (producător, model, revizuire, versiune etc.) pe care Windows îi folosește pentru a potrivi dispozitivul cu fișierul .inf driver.

Structura tipică HardwareID:

PCI\VEN_10DE&DEV_1341&SUBSYS_2281103C&REV_A2

În plus față de HardwareID, dispozitivului i se atribuie parametrul(i) CompatibleID, care au un format similar, dar conțin doar valori mai generale care nu conțin parametri specifici dispozitivului (unii identificatori de dispozitiv) și sunt necesari pentru inițializarea unui gamă mai largă de dispozitive compatibile.

HardwareID și CompatibleID sunt folosite de codul executiv Windows pentru a găsi un driver de dispozitiv.

Detectare șofer

Dacă, în faza de enumerare a dispozitivului și de încărcare a driverului, managerul PnP în modul kernel întâlnește un dispozitiv care nu are un driver asociat, interogează driverul magistralei pe care este conectat noul dispozitiv și obține HardwareID și, opțional , ID-ul compatibil al dispozitivului. Managerul PnP în modul kernel informează managerul PnP în modul utilizator cu un eveniment special că acest dispozitiv necesită instalare, transmițându-i identificatorii primiti. Managerul PnP în modul utilizator încearcă mai întâi să instaleze dispozitivul automat fără intervenția utilizatorului. Pentru a face acest lucru, managerul PnP în modul utilizator rulează utilitarul rundll32.exe pentru a lansa Expertul de instalare a driverului de dispozitiv (%Windir%\System32\Newdev.dll).

Expertul de instalare a driverului dispozitivului inițiază o căutare a unui driver adecvat pentru dispozitiv utilizând informații din toate fișierele de informații de sistem aflate în următoarele locații de sistem de încredere:

  • Depozitul de drivere;
  • Windows Update;
  • Directorul de sistem al fișierelor INF;

În scopurile de mai sus de căutare și instalare a driverului, sunt utilizate funcțiile bibliotecilor setupapi.dll (funcții de suport pentru instalare) și cfgmgr32.dll (manager de configurare). În timpul procesului de căutare sunt folosite cele deja obținute. în acest moment Identificatori HardwareID și (opțional) CompatibleID, ale căror valori descriu totul opțiuni posibile identificarea hardware-ului în fișierul de instalare a driverului, adică fișierul inf. Valorile de identificare ale dispozitivului instalat sunt comparate cu cele descrise în secțiunile Modele ale fișierelor inf înregistrate în sistem. Listele de identificatori sunt ordonate astfel încât descriptori hardware mai specifici sunt prezentați mai întâi în liste. Dacă s-au găsit potriviri ID în mai multe fișiere inf, potrivirea mai exactă este considerată a fi preferată față de potrivirea mai puțin exactă, fișierele inf semnate sunt preferate fișierelor inf nesemnate și fișierele inf semnate ulterior sunt preferate fișierelor inf semnate anterior. Dacă nu este găsită o potrivire bazată pe HardwareID, atunci se folosește CompatibleID, dacă este disponibil, desigur. Dacă nu se găsește o potrivire pe baza ID-ului compatibil, Expertul Adăugare hardware vă poate solicita să specificați o locație șofer proaspăt echipamente. Să aruncăm o privire mai atentă la toate aceste surse de informații despre șoferi.

Depozitul de drivere

Expertul de instalare a driverelor încearcă să găsească un fișier inf adecvat în magazinul de drivere de sistem, aflat în directorul %Windir%\System32\DriverStore, care conține toate, fără excepție, driverele de sistem incluse în pachetul de distribuție Windows, obținute prin intermediul " Windows Update", sau instalat în sistem de către utilizator.

Depozitul de drivere este o locație de sistem sigură, un director conceput pentru a stoca toate pachetele de drivere care au fost instalate vreodată pe sistem.

Depozitul de drivere a fost introdus pentru prima dată în Windows Vista. Înainte de a instala orice driver pe sistem, mai întâi codul specializat verifică semnătura digitală a driverului, apoi sintaxa fișierelor inf driver, apoi privilegiile utilizatorului curent, abia după aceea plasează toate componentele driverului în stocarea sistemuluișoferii. Dar apoi driverul situat în depozitul de drivere poate fi folosit pentru a instala dispozitive pe sistem. Deoarece procedura de plasare a unui driver în depozit este destul de sofisticată, depozitul de drivere este cea mai de încredere sursă de informații despre drivere.

Directorul de sistem al fișierelor INF

În paralel, sistemul caută driverul în locația sistemului descrisă de valoarea parametrului DevicePath situat în ramura de registru HKLM\Software\Microsoft\Windows\CurrentVersion. De obicei, valoarea este %SystemRoot%\inf, care pe majoritatea sistemelor este echivalentă cu locația C:\Windows\inf.

Fișierul INF

Aș dori să fac o mică digresiune și să discut separat despre fișiere de informații pachet de șofer. inf este una dintre componentele cheie ale setului de drivere. Stochează secvența operațiunilor de instalare și dezinstalare a driverului, descrisă de directive speciale care indică locația fișierelor driverului funcțional. Fișierul conține comenzi care adaugă informații la registrul responsabil pentru listarea (Enum) driverul și clasa acestuia (Class) și poate conține instrucțiuni pentru ca asistentul de instalare hardware să lanseze așa-numitele programe de instalare principale (Class Installer) și instalatorii suplimentari ( CoInstaller , Co-instalator) pentru clasa dispozitivului și dispozitivul în sine. În plus, fișierul inf determină tipul, producătorul, modelul dispozitivului, clasa de driver, fisierele necesareși resurse.

Co-instalator (un DLL obișnuit în structură) este un program de instalare suplimentar numit în etapa de instalare, care efectuează pași de instalare specifici subclasei sau dispozitivului, cum ar fi pregătirea infrastructurii pentru ca driverul să funcționeze în sistem (de exemplu, instalarea Pachetul NET.Framework), care emite configurația casete de dialog, care permit utilizatorului să specifice setările pentru un anumit dispozitiv.

O caracteristică importantă a co-instalatorilor este că, dacă este necesar, leagă instanțe ale unui dispozitiv nou la protocoalele necesare pentru funcționare. Acest lucru, de exemplu, se poate aplica pentru diferite tipuri de dispozitive de comunicație care necesită protocoale și transporturi diferite pentru a funcționa, cum ar fi ndis, pppoe, tcpip, tcpip6, smb, netbt.
Fișierul .inf descrie în plus operațiunile de despachetare, copiere, rulare, redenumire a fișierelor, adăugare și ștergere a cheilor din registry și multe altele.
Cu toate acestea, să revenim la algoritmul principal pentru instalarea unui driver în Windows. Dacă programul de instalare a driverului de dispozitiv nu găsește drivere adecvate în locațiile enumerate mai sus, sistemul marchează dispozitivul ca neidentificat.

În acest caz, utilizatorului i se cere să continue instalarea dispozitivului prin applet. manager de dispozitiv. După ce utilizatorul selectează în mod independent dispozitivul și specifică locația fișierelor driverului, algoritmul de instalare a driverului își continuă activitatea și următorul pas începe verificarea semnătură digitalășoferii.

Verificarea semnăturii digitale a șoferului

Faptul este că driverul, ca parte a codului modului kernel, este o componentă destul de critică a sistemului de operare, iar orice eroare făcută de dezvoltator în codul driverului poate duce cu ușurință la eșecuri grave (BSOD) în sistem. De ceva timp, Microsoft a fost destul de sensibil la calitatea codului de driver și, în acest sens, în sistemele de operare Windows au fost introduse mecanisme precum semnătura digitală a driverului și politica de semnătură a driverului de sistem.

Semnătură digitală driver - șir de date lungime variabilă, care într-o anumită măsură garantează că codul driverului a fost creat de o sursă de încredere și nu a fost supus unor modificări neautorizate.

Următorul pas este porțiunea în modul utilizator a codului de manager PnP, care verifică politica de semnare a driverului de sistem. Dacă politica de sistem indică codului de kernel să blocheze sau să avertizeze despre instalarea driverelor nesemnate, atunci managerul PnP analizează fișierul inf driver pentru prezența unei directive CatalogFile care indică un fișier catalog (un fișier cu extensia .cat) care conține semnătura digitală a pachetului de șofer.

Fișier de catalog (.cat) - dosar special, care joacă rolul unei semnături digitale pentru întregul pachet de drivere, deoarece fiecare fișier inclus în pachetul de drivere nu este semnat separat. Singurele excepții sunt binarele driverului de nucleu în faza de pornire, dar acestea sunt verificate cod separat miezuri.

S-a format un laborator pentru a testa șoferii și a-i semna Microsoft Windows Hardware Quality Lab (WHQL), care testează în detaliu driverele furnizate cu distribuțiile Windows, precum și driverele de la furnizorii importanți de hardware. Pentru toți ceilalți dezvoltatori de șoferi, sunt prevăzute proceduri pentru obținerea oportunității de a semna în mod independent șoferii pe o bază plătită. Când un șofer trece toate testele WHQL, acesta devine „semnat”. Aceasta înseamnă că WHQL generează un hash, sau semnătură unică, pentru driverul care identifică în mod unic fișierele driverului și apoi îl semnează utilizând algoritmi criptografici folosind un program special. cheie privată Microsoft obișnuia să semneze driverele. Hash-ul semnat este plasat într-un fișier director (fișier .cat) care este plasat direct în directorul pachetului de drivere.
În timpul procesului de instalare a driverului, managerul PnP în modul utilizator extrage semnătura driverului din fișierul .cat, decriptează semnătura folosind cheia publică Microsoft și compară hashul rezultat cu hash-ul fișierului driver instalat. Dacă hashurile se potrivesc, driverul este marcat ca a trecut testul WHQL. Dacă semnătura nu poate fi verificată, managerul PnP acționează în conformitate cu setările politicii de semnare a driverului de sistem, fie interzicând instalarea driverului, fie permițând în continuare instalarea driverului.

Crearea unei copii de rezervă

Este o strategie Windows destul de bună pentru a crea un punct de restaurare înainte de a adăuga noi drivere de dispozitiv la sistem. Acest lucru se datorează, în primul rând, faptului că un driver de mod kernel care conține o eroare poate face ca sistemul să devină complet inoperabil și apoi ce ar trebui să facem cu acest sistem? Chiar și în ciuda tuturor semnăturilor și verificărilor, utilizatorul ar trebui să poată anula configurația dacă, de exemplu, nu i-a plăcut ceva după instalare.

Instalarea driverului

În acest moment, pachetul de drivere terță parte este implementat în magazinul de drivere de sistem. Apoi, sistemul realizează instalarea efectivă a driverului din magazinul de drivere, care se face folosind utilitarul %Windir%\System32\drvinst.exe. În această etapă au loc următoarele evenimente:

  • inf al driverului este copiat în folderul specializat %Windir%/inf. Pentru șoferi dezvoltatori terți Este tipic să redenumiți fișierul în OEMx.inf, unde x este numărul de serie al fișierului inf din director.
  • Codul sistemului de operare înregistrează instalarea fișierului inf în registru.
  • Un nod de dispozitiv este creat în registru de-a lungul căii HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ \\ , care conține informatii detaliate despre dispozitiv.
  • Binarele driverului sunt copiate în folderul țintă %Windir%\System32\DRIVERS și, eventual, în alte foldere țintă. Cheile de registry sunt actualizate.
  • Se generează o cheie de registry corespunzătoare driverului: HKLM\SYSTEM\CurrentControlSet\Services\nume_driver. Parametrii cheie sunt generați.
  • Este generată o cheie de registry responsabilă pentru înregistrarea evenimentelor driverului, situată în ramură HKLM\SYSTEM\CurrentControlSet\Services\EventLog\System\driver_name.
  • Managerul PnP apelează procedura DriverEntry pentru fiecare driver nou instalat. Managerul PnP în modul kernel încearcă apoi să „pornească” driverul încărcându-l în memorie și apelând rutina AddDevice a driverului pentru a informa driverul însuși despre prezența dispozitivului pentru care a fost încărcat.

Locația informațiilor șoferului

Pe lângă descrierea algoritmului de instalare a driverului în sine în Windows, aș dori să evidențiez o secțiune separată și să o dedic unei descrieri locuri posibile postarea de informații despre șoferi în sistem de fișiereși registru. Din punct de vedere practic, aceste informații au scopul de a simplifica editarea manuală în cazul oricăror erori fatale. Următoarele sunt locații în care este posibil să observați urme de informații despre șofer.

Jurnalele generale ale șoferului

Există o serie de jurnale pe sistem care pot ajuta cu diverse probleme ale driverului.

  • %Windir%\setupact.log -- conține mesaje de depanare din programul de instalare a driverului în modul kernel, care este un DLL Win32 care însoțește procesul de instalare a dispozitivului;
  • %Windir%\inf\setupapi.app.log -- conține mesaje din procesul de instalare a aplicației;
  • %Windir%\inf\setupapi.dev.log -- conține mesaje din procesul de instalare a dispozitivului;

Jurnalul șoferului

Dacă utilizați Managerul de pachete (pkgmgr) pentru a instala/dezinstala un pachet, care (la rândul său) instalează, actualizează sau dezinstalează un driver, atunci aveți posibilitatea de a activa (în scopuri de depanare) crearea unui fișier jurnal special de drivere .log , care va conține doar erori specifice driverului. Pentru a crea acest jurnal, creați/setați următoarea cheie de registry și apoi executați din nou pkgmgr. După aceasta, un fișier drivers.log va fi creat în directorul din care a fost lansat pkgmgr.
Filiala: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Device Installer
Cheie: DebugPkgMgr
Tip: DWord
Valoare: 1

%Windir%\inf

Toate fișierele inf sunt stocate în acest director. După cum am menționat mai sus, după instalarea unui driver terță parte pe sistem, fișierul său inf este redenumit OEMx.inf, astfel încât să puteți vedea o serie întreagă de fișiere similare în director. Codul sistemului de operare își amintește faptul că fișierul inf a fost instalat în registru.

%Windir%\System32\DRIVERS

Acesta este directorul din sistemul de fișiere Windows în care se află fișierele driverului. În sistemele de operare moderne, și vorbesc acum despre Windows Vista și mai târziu, marea majoritate a driverelor din acest director au extensii .sys, totuși, sunt mai puțin frecvente; sens general acest lucru nu se schimbă, deoarece, indiferent de extensie, toate sunt identice ca structură cu fișierele .dll. În sistemele de operare anterioare, formate precum .drv și .vxd au fost întâlnite.

%Windir%\System32\DriverStore

O colecție de drivere de sistem, care este menită să conțină fiecare driver care a trecut prin sistemul dumneavoastră. Folosit din Windows Vista. Înainte de a instala orice driver în sistemul de operare, mai întâi codul specializat verifică semnătura driverului, apoi sintaxa fișierelor inf driver, apoi privilegiile utilizatorului curent și abia apoi adaugă toate componentele driverului la colecția de sistem. Și numai după aceasta, driverul poate fi folosit în sistem pentru a instala dispozitive fără nicio intervenție a utilizatorului.

HKLM\SYSTEM\CurrentControlSet\Enum

Un stup de registry care conține informații despre dispozitivele prezente în sistem. Managerul PnP creează aici o cheie pentru fiecare dispozitiv în format HKLM\SYSTEM\CurrentControlSet\Enum\Enumerator\deviceID. unde Enumerator este identificatorul magistralei descris mai sus în articol, obținut în etapa de enumerare a dispozitivului, deviceid este identificatorul tipului dispozitivului. Cheia conține următoarele informații: descrierea dispozitivului, identificatorii hardware (ID hardware), identificatorii dispozitivului compatibil (ID compatibil) și cerințele de resurse. Stupul este rezervat pentru utilizare exclusiv prin codul sistemului de operare, deci aplicații utilizator iar șoferilor nu li se recomandă să interacționeze direct cu acesta, dar sunt încurajați să folosească funcțiile de sistem documentate.

HKLM\SYSTEM\CurrentControlSet\Control

Un stup de registry care conține informații despre diferiți parametri de configurare a driverului în timpul pornirii sistemului de operare. Conține astfel chei importante Cum:

  • Clasa conține informații despre clasele de instalare a dispozitivelor, care sunt utilizate pentru a grupa dispozitivele care sunt configurate și instalate într-un mod similar. Pentru fiecare clasă de instalare, această cheie conține o cheie al cărei nume se potrivește cu numele GUID al clasei de instalare corespunzătoare.
  • CoDeviceInstallers conține informații despre co-instalatorii clasei
  • DeviceClasses conține informații despre interfețele dispozitivelor înregistrate în sistem. orice driver care dorește să interacționeze cu programele în modul utilizator de pe sistem trebuie să ofere o interfață. Clasa de interfață dispozitiv oferă funcţionalitate dispozitivul și driverele acestuia către alții componentele sistemuluiși aplicații în modul utilizator.

HKLM\SYSTEM\CurrentControlSet\Services

Un stup de registry care este utilizat pentru a plasa informații despre toate serviciile (driverele) din sistem. Fiecare driver de sistem plasează informații globale destul de importante despre sine în conexiuni precum HKLM\SYSTEM\CurrentControlSet\Services\<Имя_драйвера> , care este utilizat de driver în timpul procesului de inițializare în faza de pornire a sistemului. Stupul este utilizat în mod activ de managerul PnP pentru a trece parametrii atunci când apelează procedura de inițializare a driverului.
Acest tufiș conține următoarele elemente:

  • ImagePath - conține calea completă către fișier binar(imagine) driver. programul de instalare completează această valoare pe baza datelor din fișierul inf al pachetului de driver;
  • Parametri - stochează informații individuale ale șoferului, completate pe baza datelor plasate în fișierul inf al pachetului de șofer;
  • Performanță - informații pentru monitorizarea performanței dispozitivului, sofer controlat. Specifică numele DLL-ului de monitorizare a performanței și numele funcțiilor exportate de acest DLL. Completat pe baza datelor obținute din fișierul inf;

HKLM\SYSTEM\CurrentControlSet\HardwareProfiles

Un stup de registry care conține informații despre profilurile hardware ale sistemului și este conceput pentru a sprijini această tehnologie. Un profil hardware este doar un set de modificări ale configurației hardware standard și ale configurației serviciului (configurația originală), încărcate la pornirea sistemului. Conține modificări specifice ale profilului hardware principal, original, configurat în două chei de registry: HKLM\SOFTWARE și HKLM\SYSTEM. Nu este folosit în Windows 7, deși cheile de registry rămân, probabil din motive de compatibilitate.