Înainte de a apuca descrierea driverului în sine, să definim tipurile de drivere existente.
În conformitate cu partiția DDK existentă, Microsoft însăși împarte driverele în următoarele tipuri:- Moduri de conducere în kernel;
- Kernel Streaming Drivers;
- Drivere de grafică;
- Drivere de rețea;
- Drivere de dispozitive virtuale.
Cu driverele grafice și de rețea, este mai puțin clar de nume.
VDD-urile virtuale se referă la dispozitivele care trebuie să funcționeze sub MS-DOS.
Dar aici sunt primele două tipuri pe care le vom discuta în detaliu.
Figura arată structura tuturor driverelor, cum ar fi driverele pentru kernel-mode. În ierarhia acestui sistem se disting conducătorii auto pentru șoferii de nivel înalt, intermediari și de nivel scăzut.
Printre acestea se numără driverele de sistem de fișiere (FAT, NTFS), filtrele secundare, driverele virtuale, dispozitivele I / O și cel de-al treilea driver care lucrează direct la nivelul de întrerupere.
Puțină versuri. De fapt, toți șoferii lucrează la nivel de kernel, așa că personal cred că această diviziune nu este justificată, dar deoarece creatorii spun că "există un contact", va trebui să "avem un contact".
Pentru mai multe informații despre tipurile de partiții și descrierile acestora, consultați DDK-ul de ajutor al DDK livrat împreună cu pachetul și pachetul care este instalat împreună cu acesta.
Să renunțăm la clasificarea abstractă și să trecem la lucruri mai pământești. Să descriem structura medie a conducătorului auto.
Fiecare driver este un set de funcții care sunt integrate în structura mașinii Windows când este instalată și executate atunci când are loc un anumit eveniment. De fapt, acestea sunt funcții ale mașinii de stat finite Windows care trebuie să se conformeze unui anumit format.
Fiecare driver are un punct de intrare corespunzător funcției principale (), într-un remarcabil C, WinMain () pe Windows. Funcția este apelată când sistemul pornește automat în momentul inițializării părții de service Windows la care aparține acest driver.
Nu există nici o funcție de ieșire.
Puțin mai multe versuri. În situația noastră, cu comunicarea de la distanță, trebuie să luați și să scrieți unul dintre șoferi pentru un exemplu. Fără aceasta, va fi dificil să explicăm ce facem și de ce. Prin urmare, propun să aleg un anumit tip pentru exemplul nostru.
Deoarece majoritatea driverelor funcționează pentru a suporta și gestiona un dispozitiv fizic real, presupunând că toți aveți aceeași placă de bază sau aceeași unitate, ar fi înălțimea prostiei.
Având astfel eliminat driverele care sunt legate de hardware, ne vom concentra pe tipul de drivere de rețea - rețea.
Driverele de rețea, cum ar fi driverele de tip kernel, sunt împărțite în aceleași trei niveluri. Amintiți-vă că am numit întreaga divizare condiționată.
Doar numele se schimbă.- Miniport drivere;
- Drivere de protocol;
- Șoferi intermediari.
Structura părții din rețea a populației șoferilor seamănă cu o plăcintă. Să vedem cum arată.
Figura arată clar modul în care structura NDIS (Network Driver Interface Specification) pătrunde în toate straturile plăcilor de șofer.
Acum, să ne imaginăm modul în care pachetul trece de la aplicația utilizatorului la trimiterea prin modem sau carte de rețea către rețea. Toți clienții Microsoft, cum ar fi browserul IE sau Outlook, utilizează același strat de biblioteci care răspund la numele bibliotecilor de transport.
Principalul lucru din această familie este biblioteca socket. Despre cum funcționează, veți citi în versiunile noastre dedicate lui Winsock. În orice caz, biblioteca, după ce a emis o cerere, o trimite la NDIS și uită complet de ea. În structura plăcii noastre, elementul principal de control este doar NDIS. Acest Cerberus distribuie către cine și cum se transferă pachetul. De fapt, șoferul din rețea, construit în NDIS, oferă managerului toate prototipurile de funcții necesare. Începând cu primul tip, protocolul, pachetul trece prin stratul șoferului middleware și intră în driverul de modem (Miniport - acest cuvânt nu pot fi tradus în limba rusă în context, chiar dacă rămâne).
De fapt, driver-ul de nivel de protocol este stackul de transport în sine, iar cel intermediar este filtrele obișnuite.
Pentru noi, este important ca driverul intermediar să nu fie legat de hardware sau de orice standard Windows, dar corespunde structurii acestuia cu orice driver de rețea.
Prin urmare, ca exemplu, o alegem.
În partea următoare, voi discuta mai detaliat cum funcționează întregul sistem de drivere de rețea, cu accent pe tipul intermediar de drivere. Și voi atinge șoferul cu exemple specifice. Vom scrie funcția de intrare în driver.