Schimbarea ordinii de încărcare a driverelor de ferestre

În practică, unii utilizatori avansați sau dispozitivele de selectare hardware / hardware uneori trebuie să schimbe ordinea încărcării anumitor drivere.







Deci, am avut o astfel de nevoie atunci când investighez capabilitățile anti-stardon ale controlerului SiliconImage SiI0680. În articol. dedicat acestor studii, am plâns de faptul că sistemul de operare (prin drivere lor, desigur) detectează controlorul mi-a studiat înainte de WpcrSet conducător auto are timp să-l (controller) registre PCI-identificare schimba.

Și, în sfârșit, soluția la această problemă a fost găsită! Ura!

Un rol imens în acest sens a fost jucat de mesajul participantului la forum Cuddles. care nu este prea leneș chiar să se înregistreze pe forum pentru a ne îndruma pe calea cea bună.

Mulțumesc mult mulțumiri!

De fapt, Cuddles a dat un sfat documentului oficial la scară mică, care descrie în detaliu opțiunile de schimbare a priorității de încărcare a șoferilor.

Iată documentul: Cum să controlați comanda de încărcare a driverului de dispozitiv (în limba engleză).

Această notă a fost concepută ca o ilustrare practică a materialului prezentat în articol.

Deci, în acel articol se spune că:

  • Toate seturile de drivere sunt împărțite în grupuri.

  • Fiecare grup de șoferi își are prioritatea la boot. Ie șoferii dintr-un grup cu o prioritate mai mare sunt porniți înaintea conducătorilor auto din grupuri cu prioritate mai mică.

    variabila cu mai multe șiruri "List":

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Cu cât este mai mare grupul în această listă, cu atât este mai mare prioritatea la boot.

    Această listă, dacă există o nevoie mare, puteți modifica independent: adăugați grupuri noi, modificați ordinea grupurilor etc.

  • Driverele sunt reprezentate în registru prin intrări în secțiunile:

    [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ <имя драйвера> ]

    Schimbarea ordinii de încărcare a driverelor de ferestre

  • Pentru șoferul care aparține unui anumit grup, variabila șir "Grup" răspunde.

    Schimbarea ordinii de încărcare a driverelor de ferestre

    În acest exemplu, driverul de bus PCI aparține grupului de drivere "Boot Bus Extender".

    Deci, e bine. Odată cu împărțirea în grupuri este clar: cu cât este mai mare prioritatea grupului, cu atât conducătorii din acest grup vor începe mai devreme.

    Și dacă luați în considerare doi șoferi dintr-un grup, care dintre ele va fi încărcat mai devreme.

    Ordinea încărcării în cadrul grupurilor este determinată de parametrul binar "Tag".

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Dacă acest parametru nu este prezent, driverul va fi încărcat în ultima coadă.

    Cum rămâne cu parametrul "Tag"?

    1. De obicei, este reprezentat de un anumit număr. Și dacă brusc trebuie să adăugați o etichetă șoferului, care nu îl are, atunci valoarea acestei etichete nu poate fi luată, așa cum se spune, "de la chel". Dar despre asta mai departe.

    2. Ghidat doar de valoarea numerică a parametrului "Tag", este imposibil să se judece prioritatea driverului.

    Valorile posibile ale etichetelor și prioritatea acestora sunt stabilite de variabilele binare după numele grupului de drivere din ramură:

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Exemplu (pentru grupul de drivere "Boot Bus Extender"):

    Schimbarea ordinii de încărcare a driverelor de ferestre

    O variabilă binară este un set de cuvinte duble (câte 4 octeți fiecare).

    Primul cuvânt (evidențiat în imagine cu o margine roșie) specifică lungimea totală a variabilei (numărul de cuvinte duble)






    Celelalte cuvinte duble sunt doar etichetele.
    O etichetă care este egală cu una este marcată cu o margine verde și două cu o margine albastră.

    Regularitatea aici este simplă:

    Cu cât eticheta este mai stânga, cu atât este mai mare prioritatea acesteia în grup.
    Cu cât este mai mare prioritatea șoferului, care are o astfel de etichetă.

    Imaginea de mai sus arată că prioritatea etichetei 01 este mai mare decât cea a etichetei 02. Cea mai mare prioritate în acest grup este eticheta 08 (evidențiată într-un cadru galben).

    Apropo, grupurile de drivere pot avea drivere cu aceleași etichete.
    Ca și în acest caz, prioritatea este determinată - nu știu.

    Să ne imaginăm că avem:

    1) șoferul A, aparținând grupului de șoferi Gr1
    2) șoferul B, aparținând grupului de șoferi Gr2
    3) prioritatea Gr1> Gr2

    Din punctul (3) rezultă că prioritatea conducătorului A este mai mare decât cea a lui B, adică driverul A va fi încărcat înainte de șoferul B.

    Trebuie să asigurăm că driverul B este încărcat înainte de A.

    Posibile opțiuni (primele două, veniți în minte):

    1) modificați prioritatea grupurilor de drivere din lista ServiceGroupOrder> List

    a) fie crește prioritatea Gr2 (face mai mare decât cea a Gr1)
    b) (varianta oglinda) sau scaderea prioritatii lui Gr1 (face mai mica decat cea a lui Gr2)

    Ambele opțiuni sunt la fel de rău, mai ales dacă fiecare grup conține mai mulți șoferi. La urma urmei, nu este întotdeauna posibil să spun cu certitudine cum reacționează ceilalți conducători de grup la o astfel de mișcare.

    2) mutați unul din șoferi într-un alt grup:

    a) mutați șoferul B la Gr1 și alocați-i o etichetă cu prioritate mai mare decât driverul A.

    b) (varianta oglinda) mutati driverul B in grupul Gr2 si atribuiti-l mai putin tag-ul prioritar decat driverul A.

    IMHO, opțiunea cea mai optimă 2a. O voi urmări în practică.

    Este timpul să mergem mai departe la practică.

    Așa cum am menționat la începutul acestui articol, tot tam-tam a fost pornit datorită faptului că Windows Driver-a determinat controlerul IDE înainte de a conducătorului auto WpcrSet timp pentru a schimba registru identitate, ceea ce a dus la unele inconveniente.

    După cum sa dovedit, termenul "drivere Windows" a ascuns un "driver de autobuz PCI" foarte specific. (Probabil că ați ghicit că nu este deloc prezent pe aproape toate capturile de ecran de mai sus ;-))

    Cu alte cuvinte, a existat o nevoie urgentă de a porni driverul WpcrSet înainte de driverul PCI.

    Setările driverului PCI:

    Schimbarea ordinii de încărcare a driverelor de ferestre

    1. Soferul face parte din grupul "Boot Bus Extender".

    2. Parametrul Tag-ul șoferului este de două (02h).

    Setările driverului WpcrSet implicit:

    Schimbarea ordinii de încărcare a driverelor de ferestre

    1. Soferul apartine grupului "Extended Base".

    2. Driverul nu are deloc un parametru Tag. care indică cea mai mică prioritate chiar și în cadrul grupului nativ.


    Următorul pas este să aflați ce grup (Boot Bus Extender / Extended Base) este mai mare:

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Se poate observa că grupul Boot Bus Extender este al doilea de la început, iar baza extinsă este a treia de la sfârșit. Prin urmare, prioritatea Extenderului Bus Boot este mult mai mare.

    Prin urmare, primul lucru pe care îl facem este să transferăm driverul WpcrSet în grupul de extindere a busului de boot. Pentru a face acest lucru, schimbați parametrul "Group" de la baza extinsă la Extenderul de busire de boot.

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Acum trebuie să setați eticheta pentru driverul WpcrSet. Și astfel încât prioritatea sa a fost mai mare decât prioritatea etichetei PCI driver (Tag = 02h).

    Pentru a face acest lucru, uita-te la conținutul variabilei "Boot Bus Extender", în secțiunea [\ SYSTEM HKEY_LOCAL_MACHINE \ CurrentControlSet \ Control \ GroupOrderList]

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Este clar că tag-ul 01h prioritate, 06h, 07h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, prioritate 08h 02h tag-ul mai mare. Prin urmare, în numele etichetei pentru WpcrSet, puteți alege una dintre cele de mai sus. Dar nu fi lacom (și riscați), luați Tag = 01h.

      Notă: În practică, ar putea fi o situație în care o etichetă PCI driver va fi cea mai mare prioritate. și anume cel mai din stânga din listă. Apoi, înainte de aceasta, va trebui să adăugăm o etichetă suplimentară. În acest caz, primul cuvânt dublu din listă, care specifică numărul de etichete, ar trebui să fie mărit cu unul.

    Creați un parametru DWORW în secțiunea WpcrSet și introduceți valoarea hexazecimală = 1:

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Ei bine, asta e tot. Setările WpcrSet arată acum:

    Schimbarea ordinii de încărcare a driverelor de ferestre

    Acum, cross-over, puteți reporni calculatorul și urmăriți modificările.

    Notă: Sper sincer că, înainte de a merge la lista, sunteți preocupată. Din nou, repet: "Mă absolvă orice responsabilitate pentru ceea ce faceți cu calculatorul dvs., după citirea" articolelor "mele!

    Nu știu cum ești, dar totul a mers foarte bine pentru mine. Driverul WpcrSet a pornit înaintea celorlalți șoferi și a efectuat lucrul său negru cu precizie și cel mai important la timp.

    Deci, pentru astăzi, întrebarea despre ordinea de pornire a driverelor în sistem poate fi considerată rezolvată.

    Vreau să rețineți că, în articolul „Schimbarea ordinii de pornire a conducătorilor auto“, nu spune că eticheta de parametri, ServiceGroupOrder lucra numai cu servicii (drivere) care au rula tipul de Boot (0) sau System (1).
    Pentru tipul Automat, ordinea de încărcare nu este specificată.
    În special, de aceea serviciul VmWare vmx86 după instalarea celui mai recent Vmware Server nu mi-a lăsat să fiu descărcat, care a căzut după un timp după apariția promptului de parolă.







    Articole similare

    Trimiteți-le prietenilor: