Suport Plug and Play din partea conducătorului auto
Pentru a suporta funcția Plug and Play, driverul trebuie să implementeze programarea Plug and Play și procedura de adăugare a unui dispozitiv. Cu toate acestea, driverele de bord trebuie să suporte tipurile de cereri Plug and Play care sunt diferite de cele acceptate de driverele de funcții și driverele de filtrare. Astfel, atunci când enumerăm dispozitive în timpul procesului de boot, managerul PnP întreabă driverele pentru autobuze pentru o descriere a dispozitivelor pe care le-au găsit pe autobuze. Această descriere include date care identifică în mod unic fiecare dispozitiv, precum și cerințele hardware pentru resursele hardware. Managerul PnP primește aceste informații și încarcă driverele funcționale sau driverele de filtru instalate pentru dispozitivele detectate. Apoi se solicită procedura de adăugare a dispozitivului pentru fiecare driver instalat pentru fiecare dispozitiv.
Prin executarea procedurii de adăugare a unui dispozitiv, driverele funcționale și driverele de filtrare se pregătesc să înceapă să controleze dispozitivele lor, dar de fapt nu interacționează încă cu ele. Ei așteaptă comanda de pornire, pe care managerul PnP trebuie să treacă la procedurile de programare Plug and Play. Înainte de transferul acestei comenzi, managerul PnP execută arbitrajul de resurse pentru a decide ce resurse să aloce unui anumit dispozitiv. Comanda start-device specifică resursele alocate definite de managerul PnP în timpul arbitrajului resurselor. Cu ajutorul comenzii dispozitivului de pornire, driverul poate configura dispozitivul să utilizeze resursele specificate. Dacă programul încearcă să deschidă un dispozitiv care nu este pregătit pentru a porni, acesta primește un cod de eroare care indică faptul că dispozitivul nu este prezent.
După pornirea dispozitivului, managerul PnP poate trimite comenzi suplimentare PnP driverului, inclusiv celor legate de eliminarea dispozitivului din sistem sau de realocarea resurselor. De exemplu, atunci când utilizatorul lansează utilitatea prezentată în Fig. 9-23, - pentru ao lansa, faceți clic dreapta pe pictograma PC Card din bara de activități și selectați comanda Unplug or Eject Hardware - și instruiește Windows să înlăture cardul PCMCIA, managerul PnP trimite un mesaj de interogare, eliminați fiecare aplicație înregistrată pentru a primi notificări PnP despre acest dispozitiv. În mod obișnuit, aplicațiile sunt înregistrate pentru a primi notificări prin intermediul descriptorilor de dispozitiv, pe care ei le închid, primind o notificare de eliminare a interogărilor. Dacă nici o aplicație nu respinge o interogare de eliminare a interogării, managerul PnP trimite o comandă de eliminare a interogării driverului care controlează dispozitivul care urmează să fie recuperat. În acest moment, șoferul decide ce să facă în continuare: nu scoateți dispozitivul sau nu finalizați toate operațiile I / O de pe acest dispozitiv și apoi opriți primirea cererilor de I / O pe dispozitiv. Dacă conducătorul auto răspunde la cererea de ștergere și descriptorii deschisi ai dispozitivului nu mai sunt prezenți, managerul PnP trimite șoferului comanda de eliminare, ceea ce îi cere să oprească accesul la dispozitiv și să elibereze toate resursele alocate acestuia pentru acest dispozitiv.
Fig. 9-23. Utilitar pentru dezactivarea sau scoaterea cardului PC
Când administratorul PnP trebuie să realoce resurse către dispozitiv, acesta cere mai întâi conducătorului auto să suspende temporar operațiile pe dispozitiv și, în acest scop, trimite o comandă de stop-interogare. Conducătorul auto răspunde la această solicitare cu consimțământul dacă nu există riscul pierderii sau deteriorării datelor; altfel el respinge o astfel de cerere. Ca și în cazul comenzii de eliminare a interogării, șoferul este de acord cu cererea, termină operațiile I / O în așteptare și nu mai solicită cereri de intrare / ieșire din dispozitiv. (Noile cereri de intrare / ieșire sunt de obicei în așteptare de către conducătorul auto.) Apoi, managerul PnP trimite șoferului o comandă de oprire. În acest moment, managerul PnP poate să spună șoferului să aloce alte resurse dispozitivului și apoi să trimită o comandă pentru dispozitivul de pornire.
Comenzile Plug and Play determină trecerea dispozitivului la stări definite strict, care sunt prezentate într-o formă simplificată în Fig. 9-24. (Unele stări și comenzile Plug and Play din această ilustrație sunt omise, în plus, aceasta se referă la diagrama de stare implementată de driverele funcționale.) Diagrama stărilor implementate de driverele de autobuz este mult mai complicată.) Apropo, în Fig. Figura 9-24 arată una dintre stările pe care nu le-am discutat încă - dispozitivul intră în el după surprinderea comenzii - elimină managerul PnP. Această comandă este trimisă atunci când dispozitivul este în mod neașteptat eliminat din sistem, de exemplu, din cauza defecțiunii sale sau din cauza eliminării cardului PCMCIA fără a utiliza utilitarul corespunzător. Comanda surpriză-eliminare determină ca driverul să întrerupă imediat orice interacțiune cu dispozitivul, deoarece nu mai este conectat la sistem și să anuleze orice solicitare I / O în așteptare.