Documente Academic
Documente Profesional
Documente Cultură
1
Rolul driverelor în sistemele de
operare
Driver – colectie de functii utilizate pentru facilitarea
accesului la o anumita resursa a sistemului de calcul
In particular o componenta software care face legatura intre SO si
un dispozitiv
Resurse sistem:
resurse fizice (hardware):
interfete si dispozitive de intrare/iesire
canale de comunicatie
primitive de sincronizare
ceas de timp-real
2
Locul si rolul unui driver
Varianta simplificata
Drivere software
3
Rolul driverelor in SO
standardizarea accesului la resurse
abstractizarea tipurilor de resurse, evitarea unor
detalii de implementare (ex: fisier, canal de
comunicatie, primitive de sincronizare)
compatibilitatea programelor de aplicatie cu
diferite tipuri si versiuni de dispozitive
cresterea eficientei programarii prin utilizarea
unor operatii predefinite
controlul unor operatii critice de intrare/iesire prin
componente ale sistemului de operare (drivere)
acces uniform la resurse
4
Modele de drivere
Legacy NT driver model
Drivere mai vechi utilizabile inca in Windows NT
Nu necesita operatii PnP (plug-and-play) si PM (power management)
Driverele sistemului de fisiere intra in aceasta categorie
WDM modell (Windows Driver Model)
Pt. Win 9x si 2000/XP
Acopera in totalitate functiile PnP si PM
Pentru drivere de dispozitive fizice
Mai multe modele de drivere mini-port
Pentru NDIS, SCSI, Storage etc.
Necesita mai putin cod decat legacy drivers
minifilter model (File System Mini-filters)
Ajuta scrierea de drivere FS, FS filter, registry filter drivers
Drivere pentru criptare, compactare, antivirusi
WDF (Windows Driver Foundation/Framework)
Pt. scrierea mai usoara a driverelor WDM , abordare obiectuala
Acceptat de la Windows Vista in sus
Doua componente:
KMDF (Kernel Mode Driver Framework),
UMDF (User Mode DF)
5
Ierarhizarea driverelor
highest level drivers
file system drivers (NTFS, FAT, CDFS, UDFS)
intermediate level drivers
function drivers
Pentru comanda unui anumit tip de dispozitiv hardware sau virtual
filter drivers
Modifica driverele de “bus” sau de functie
Se pun deasupra celor de functie
software bus drivers
Pentru dispozitive derivate (copil)
class drivers for class/miniport pairs
Pentru controlul unei clase de dispozitive (ex. SCSI, NDIS)
Pentru fiecare dispozitiv se scrie cate un driver miniport (care contine elemente
specifice hardware-ului)
lowest level drivers
hardware bus drivers
Pt. comanda unor magistrate (PCI, PCI Express, ISA etc.)
legacy drivers
Drivere clasice care controleaza cate un dispozitiv
6
Locul driverelor in arhitectura
Windows
Aplicaţie
Modul Kernel
Rutine suport pentru
Drivere în drivere exportate Driverele sist.
modul Kernel de fişiere
Nucleul Sistemului
de operare
Maşina fizică
7
Clasificarea driverelor
Dupa modul de executie:
Drivere executate în modul utilizator (modul
neprivilegiat):
beneficiază de rutinele conţinute în Win32 API;
nu au acces direct la resurse ci numai prin intermediul rutinelor
conţinute în Win32 API;
sunt mai uşor de implementat şi mai ales de testat.
Driverele executate în modul kernel (modul
privilegiat):
folosesc numai rutine oferite de nucleul sistemului de operare
rulează ca parte a „executivului”
sunt mai greu de implementat şi de testat
au posibilităţi mai mari de acces la resurse
- Cele două tipuri, utilizator şi kernel, diferă semnificativ prin:
structură, puncte de acces şi interfaţă
- Majoritatea driverelor rulează în modul kernel.
8
Clasificarea driverelor
Din punct de vedere al destinaţiei:
Drivere pentru dispozitive
oferă servicii de intrare/ieşire pentru dispozitivele pe care le deservesc
Exemple:
clasă de driver pentru flux video pentru un set de dispozitive video,
driver pt. filtrare flux video,
driver pentru dispozitive audio,
pentru interfaţa paralelă, etc.
majoritatea rulează în modul kernel şi se dezvoltă cu mediul de programare
Windows DDK
Drivere pentru sistemul de fişiere
oferă servicii de intrare/ieşire independente de dispozitivele fizice pe care se
bazează (pe care le deservesc).
Exemple:
drivere pentru sistemul NTFS,
pentru FAT
toate rulează în modul kernel
driverele filtru oferă facilităţi suplimentare de filtrare (ex: scanarea împotriva
viruşilor)
se dezvoltă cu Windows IFS – Instalable File System Kit.
9
Arhitectura multinivel a driverelor
Windows
Aplicaţie
Mod utilizator
Driver client
Win32 API
în mod utilizator
Driver de clasă
Driver de
miniclasă
Driver de port
Driver de
miniport
Driver de
magistrală fizică
10
Arhitectura multinivel a driverelor
Windows
Aplicaţia
soluţionează cereri utilizator sau de la altă aplicaţie
apelează rutine Win32 API şi drivere client mod utilizator
Driver client mod utilizator
soluţionează cereri de la aplicaţie sau de la Win32 API
apelează rutine Win32 API
implementate prin DLL
imprimanta are astfel de driver, discul, reţeaua şi dispozitivele de intrare nu
au
Driver client în modul kernel
soluţionează cereri similare cu cel anterior dar se execută în modul kernel
Perechea Driver de clasă şi miniclasă
oferă partea semnificativă (grosul) pentru suportul specific unui dispozitiv.
Driverul de clasă oferă suportul solicitat de sistem, dar independent de
dispozitiv; driverele de clasă sunt oferite în mod uzual de Microsoft
Driverul de miniclasă oferă suport pentru un anumit tip de dispozitiv dintr-o
clasă; aceste drivere sunt oferite de producătorul dispozitivului
11
Arhitectura multinivel a driverelor
Windows
Driver WDM
13
Tipuri de drivere în Windows XP
Driverele de dispozitive virtuale (VDD Virtual Device
Driver)
permit aplicaţiilor DOS sa acceseze resursele calculatorului ca si cum acest
lucru s-ar întâmpla în mod direct;
folosesc măştile de I/E care permit accesul unui program utilizator la
resursele fizice ale calculatorului (vezi memmap, giveio);
a nu se confunda cu VxD din Windows 98
sunt drivere executate în mod utilizator
Drivere moştenite
sunt drivere moştenite din versiunile anterioare de Windows; lucrează
independent de alte drivere
Drivere PnP
drivere care recunosc protocolul Plug and Play al sistemului Windows XP
Driver WDM (Windows Driver Model)
un driver PnP care în plus recunoaşte şi protocolul de management al
consumului şi este compatibil la nivel de sursă cu Windows 98, 2000 şi XP
14
Arhitectura sistemelor de operare de tip NT
(windows XP, 2000, si NT)
Subsistemul Subsistemul
Subsistemul Win32
de securitate POSIX
Mod utilizator
Mod kernel
Manager
LAN
Servicii sistem
Managerul Manager de Manager de Apel
Structură Manager Monitor de
de I/E configurare memorie procedură
proces obiecte securitate
Sistem de Manager Plug- Suport pt. locală
fişiere, and-Play executiv
Maşina fizică
15
Tipuri de drivere kernel
Drivere pentru sistemul
de fişiere (FAT, NTFS, CDFS)
Drivere de nivel înalt
19
Tipuri de drivere WDM
driver de magistrală
controlează o magistrală de I/E şi oferă funcţionalitate pe un
slot (locaţie în magistrală) independentă de dispozitive
driver funcţie
controlează un anumit dispozitiv
driver filtru
filtrează cererile de I/E pentru un dispozitiv, clasă de
dispozitive sau magistrală
20
Tipuri de drivere WDM
Driver filtru de clasă, de nivel superior
5
Driver filtru de dispozitiv, de nivel superior
4 Driver funcţie
3
Driver filtru de dispozitiv, de nivel inferior
Drivere de dispozitiv
Drivere de magistrală
2 Driver filtru de magistrală
1 Driver de magistrală
21
Tipuri de drivere WDM
1. Driverul de magistrală
deserveşte un controlor de magistrală, un adaptor sau o punte (bridge)
Microsoft oferă drivere pt. majoritatea magistralelor existente este un driver
obligatoriu
2. Un driver filtru de magistrală
adaugă "valoare" (caracteristici suplimentare) unei magistrale
este furnizat de Microsoft
este opţional
3. Un driver filtru de nivel scăzut
modifică comportamentul unui dispozitiv fizic
este opţional
4. Driverul funcţie
este principalul driver al unui dispozitiv
este scris de producătorul dispozitivului
este de obicei obligatoriu
5. Driverul filtru de nivel înalt
adaugă caracteristici noi pentru dispozitiv
este opţionale 22
Exemplu de set de drivere WDM
pentru un dispozitiv USB
Schema electrica
magistrala PCI
controlorul USB
Hub USB
dispozitiv joystick
23
Exemplu de set de drivere WDM
pentru un dispozitiv USB
Aplicaţie
StrartIO DispatchPnP
DriverEntry
DispatchPower
AddDevice AdapterControl
DispatchWmi
OnInterrupt
DpcForISR DispatchRead
DispatchWrite
Rutine obligatorii
27
Structuri de date folosite pentru WDM
obiect driver
este driverul propriu-zis care conţine poantori la
subrutinele incluse
obiect dispozitiv
este o instanţă a unui hardware (dispozitiv fizic)
datele conţinute ajută la tratarea instanţei
28
Nivele de drivere şi obiecte asociate
FiDO – Filter Data Object
FDO – Function Data Object
PDO – Physical Device Object IRP
29
Obiect Driver
Managerul de I/E foloseşte câte un obiect driver pentru a
reprezenta fiecare driver de dispozitiv
Un obiect driver conţine câmpuri accesibile pentru utilizator şi
câmpuri invizibile (opace). Câmpurile vizibile sunt:
DeviceObject - este o legătură la lista de obiecte dispozitiv
pe care driverul le gestionează
DriverExtension – face legatura către o structură care
conţine printre altele poantorul la rutina AddDevice
HardwareDatabase - un şir de caractere (string) care descrie
o cheie în registry
FastIoDispatch - poantor la o tabelă de funcţii
33
Procesarea unei cereri IRP
34
Pachet de instalare a unui dispozitiv
dispozitivul hardware - trebuie să se conformeze
standardelor platformei în care va lucra
fişiere driver - furnizează interfaţa de intrare/ieşire a
dispozitivului; sunt de obicei fişiere DLL cu terminaţia ".sys"
când un driver este instalat atunci programul Setup copiază fişierul
.sys în directorul %windir%\system32\drivers
fişiere de instalare:
fişiere cu informaţii de instalare (fişier .INF) - programul
Setup copiază acest fişier în directorul %windir%\inf ; fiecare
driver trebuie să aibă un fişier INF
fişiere catalog (.CAT) - conţine semnăturile digitale obţinute de
la autoritatea WHQL - Windows Hardware Quality Lab
unul sau mai multe co-instalatoare - este un DLL care asistă
instalarea pe sisteme NT; furnizează cod pentru instalare
interactivă sau dacă este nevoie de citirea/scrierea registry-ului
altele - ex: icoană, aplicaţii de instalare, etc.
35
Informatii necesare pentru
incarcarea unui driver
fisierul .INF contine toate datele necesare pentru
incarcare:
numele şi versiunea SO suportate
GUID-ul clasei setup a dispozitivului
numele, sursa şi destinaţia fişierelor driver
informaţii specifice pt. hardwer (ex: ID-ul disp. şi ID-uri
compatibile)
numele unui fişier catalog (.CAT)
informaţii privind când şi cum se încarcă funcţiile din driver
in mediul DDK (Driver Design Kit) fisierul .INF se
genereaza cu utilitarul GenINF
36
Instrumente utilizabile pentru
dezvoltarea de drivere
Visual Studio 6 / 2005
Folosit doar pentru editare cod C/C++ compilarea se face separat
Instrumente de dezvoltare si testare drivere
Driver Development Kit (DDK, 3790)
Windows 2000, XP (32 / 64 bit) , 2003 (32 / 64 bit)
Se poate descarca liber
Necesita Visual Studio 6 SP5
Contine compilerul de drivere pt. C/C++
Installabel File System Kit (IFSK, 3790)
Pentru dezvoltarea de drivere pt. sistemul de fisiere
Este pe bani
Hardware Compatibility Test Kit (HCT, 12.1)
Windows XP (32 / 64 bit) , 2003 (32 / 64 bit)
Contine teste de compatibilitate cu Windows
Se poate descarca liber
Windows Driver Kit (WDK, 6000RTM)
Windows 2000, XP, 2003, 2003 R2, Vista, Longhorn
Necesita Visual Studio 2005l
Contine IFSK si DTM (Driver Test Manager, inlocuieste HCT-ul)
37
Alte instrumente utile
DDKBUILD.BAT
Simplifica compilarea driverelor pe diferite platforme
OsrLoader
Permite inregistrarea, pornirea si oprirea rapida a driverelor
PoolTag
Urmareste alocarea memoriei kernel paged/non-paged kernel
ProcessExplorer
Inlocuieste Task managerul
DbgView
Permite urmarirea mesajelor debug / trace chiar si remote
DeviceTree
Vizualizarea obiectelor device si driver
WinObj
Vizualizeaza intregul spatiu de nume de obiecte NT (objet namespace)
RegMon / FileMon
Urmareste Windows Registry si operatiile Windows FS I/O
Windows Debugging Tools – WinDBG
Debuger in mod kernel (chiar si remote)
38
Resurse de documentare
DDK / WDK helper
Contine multe exemple concrete
http://www.microsoft.com/whdc/winhec/default.mspx
tutoriale
www.osronline.com
NT Insider, exemple si articole
Forumuri NTDEV, NTFSD, WINDBG
Instrumente de dezvoltare
www.sysinternals.com
Instrumente de dezvoltare
Mark Russinovich, David Solomon – Microsoft Windows Internals, 4th edition,
Microsoft Press, 2004
Walter Oney – Programming the Windows Driver Model, 2nd edition, Microsoft
Press, 2003
!!! Exemplu de scriere a unui driver:
https://msdn.microsoft.com/en-
us/library/windows/hardware/ff554811%28v=vs.85%29.aspx
39