Sunteți pe pagina 1din 39

Programare și securitate la

nivelul arhitecturii x86

Curs: Drivere Windows

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

 magistrale (PCI, USB)

 sistem de intreruperi, etc.

 resurse logice (software):


 sistemul de fisiere

 canale de comunicatie

 primitive de sincronizare

 ceas de timp-real

2
Locul si rolul unui driver
Varianta simplificata
Drivere software

Varianta mai realista

Driver pentru un toaster USB

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

Drivere mod Win32 API


utilizator
Modul Utilizator

Modul Kernel
Rutine suport pentru
Drivere în drivere exportate Driverele sist.
modul Kernel de fişiere
Nucleul Sistemului
de operare

Nivelul de adaptare al maşinii fizice


HAL - Hardware Adaptation Layer

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

Mod kernel Driver client


în mod kernel

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

 Driverul de port (uneori „controlor gazdă”- host controller sau host


adaptor driver)
 suportă operaţii de intrare/ieşire pentru un port, hub sau alt dispozitiv fizic
prin care dispozitivul este ataşat
 poate să fie o pereche driver port driver miniport
 exemple: driver pt. port SCSI, driver pt. hub şi host controller USB
 Driverul pentru magistrala hardware
 Windows oferă drivere pentru majoritatea magistralelor, ele nu se înlocuiesc
de utilizator
 Driverele pentru reţea au propria filozofie de construire (modelul OSI)
 Exemplu: driverele unei plăci grafice:
 driver de dispay - driver client mod kernel - oferă facilităţi generale de desenare
independente de placă
 driver port video - oferă operaţii grafice independente de placă
 minidriver port video - oferă funcţionalitate specifică unei plăci
 Drivere de tip filtru
 se pot interpune între oricare nivele de mai sus
 nu operează cu dispozitivele hard ci filtrează după o anumită regulă fluxul
de intrare/ieşire 12
Tipuri de drivere în Windows XP
Driver de dispozitiv Driver mod Kernel
virtual (VDD)

Driver pentru Drivere


sistemul de fişiere Drivere PnP
moştenite
(legacy)

Driver WDM

Drivere de clasă Drivere funcţionale Drivere filtru


Mini-drivere monolitice

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

Drivere Manager de Nucleul (Kernel)


alimentare
Nivelul de adaptare la maşina fizică
(HAL - Hardware Adaptation Layer)

Maşina fizică

15
Tipuri de drivere kernel
Drivere pentru sistemul
de fişiere (FAT, NTFS, CDFS)
Drivere de nivel înalt

Drivere de disc virtual sau Drivere filtru PnP de


"oglindă" moştenite, nivel înalt (opţional)
Drivere de clasă moştenite
Drivere funcţie PNP
Drivere WDM de clasă/ miniclasă
Drivere de nivel intermediar
Drivere filtru PnP de nivel
scăzut (opţional)

Drivere software PNP


Drivere WDM de magistrală software

Drivere de nivel inferior


Drivere de dispozitive Drivere de magistrală
moştenite hardware PnP
16
Tipuri de drivere kernel
 Driverele de nivel înalt includ driverele pentru sistemul de fişiere (FSD-
File System Drives) cum ar fi: NTFS, FAT şi CDFT (CD-ROM File System)
 Driverele intermediare pot fi: discuri virtuale, drivere oglindă sau drivere
de clasa pentru tipuri specifice de dispozitive. Ele se subdivid în:
 drivere funcţie care controlează dispozitive periferice de pe o magistrală
de intrare/ieşire
 drivere filtru
 drivere de magistrală software prezintă un set de dispozitive copil la
care se conectează driverele enumerate mai sus; de exemplu un driver
pentru o placă multifuncţională care conţine dispozitive eterogene
 drivere de clasă furnizate de sistem care exportă o interfaţă predefinită
de clasă/miniclasă; o pereche clasă/miniclasă oferă funcţionalitate
echivalentă cu un driver funcţie sau driver de magistrală
 Driverele de nivel inferior controlează o magistrală de intrare/ieşire la
care se conectează dispozitive periferice. Sub aceste drivere nu mai sunt altele
 drivere de magistrale hardware sunt furnizate de sistem şi controlează
magistrale de I/E configurabile dinamic; colaborează cu Managerul de PnP
pentru configurarea şi reconfigurarea resurselor hardware ale sistemului, pt.
dispozitivele copil; de exemplu se configurează maparea memoriei şi a
intreruperilor.
 drivere "moştenite" (legacy) care controlează direct dispozitive
periferice fizice
17
Modelul de driver Windows
(WDM - Windows Driver Model)
 standard pentru proiectarea de drivere pe platforme
Windows
 se recomandă, dar nu este obligatoriu
 Condiţii impuse pentru driverele WDM:
 sa suporte "Plug and Play"
 sa suporte "Power management"
 sa suporte Windows Management Instrumentation (WMI)
 să fie proiectat ca un driver de magistrală, driver de tip
funcţie sau filtru
 sa creeze obiecte driver descrise in "WDM Device Objects
and Device Stack"
 să includă wdm.h şi nu ntddk.h (primul este un subset al
celui de al doilea) 18
Modelul de driver Windows
 Drivere Plug and Play
 drivere pentru dispozitive care sunt configurate automat de
sistemul de operare
 ele dispun de suportul necesar pentru identificarea tipului de
dispozitiv şi a driverului necesar
 Exemple de dispozitive:
 placi conectate pe magistrala PCI; magistrala are un

spaţiu special de configurare


 dispozitive USB; returnează un descriptor standard

pentru o tranzacţie de control standard


 placa de memorie de tip PCM-CIA; are un atribut de

memorie prin care se poate identifica tipul de placă

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

Driver filtru de clasă, de nivel inferior

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

Mod client Client HID

Client HID Mod kernel

Driver filtru de clasă de


nivel superior
Driver miniclasă pt.
HID USB Driver de clasă HID

Driver filtru de clasă de


nivel inferior
Driver de magistrală Hub
USB

Driver miniclasă de magistrală pt. Driver clasă de magistrală pt.


controlor USB controlor USB

Driver de magistrală PCI

HID – Human Interface Device 24


Structura Driverelor WDM
 Driver WDM - colecţie (container) de rutine care facilitează
accesul la resursele calculatorului
Rutine de bază Rutine de control I/E

StrartIO DispatchPnP
DriverEntry
DispatchPower
AddDevice AdapterControl
DispatchWmi
OnInterrupt

DpcForISR DispatchRead

DispatchWrite
Rutine obligatorii

Rutina StartIO pt. tratarea cozii de Rutine pentru tratarea


cereri întreruperilor
Rutina AdapterControl pt. Rutine opţionale de 25
DMA dispecerizare IRP
Scenariu de utilizare a unui driver WMD:
1. La cuplarea unui dispozitiv sistemul de operare încarcă driverul în
memoria virtuală şi apelează rutina DriverEntry; rutina face anumite
lucruri după care revine în sistem
2. Managerul PnP apelează rutina AddDevice
3. Managerul PnP trimite câteva IRP-uri; dispecerul driverului
prelucrează fiecare IRP
4. O aplicaţie deschide un "handler" către noul dispozitiv cuplat, la care
sistemul trimite câteva IRP-uri dispecerizate şi soluţionate de driver
5. Aplicaţia încearcă să citească date de la dispozitiv, la care sistemul
trimite un IRP la driver; IRP-ul este pus în coada de aşteptare
6. Terminarea unei operaţii anterioare de I/E se semnalizează prin
activarea unei întreruperi hardware; rutina de întrerupere lucrează
ceva, planifică un DPC după care revine
7. Se rulează rutina DPC; aceasta scoate IRP-ul pus în coadă la pasul 5
şi programează hardul pentru o operaţie de citire de date
8. Timpul trece şi sistemul face şi alte apeluri la subrutinele din driver
9. Dispozitivul este decuplat; Managerul PnP trimite driverului ceva IRP-
uri care sunt soluţionate; sistemul apelează rutina DriverUnload după
care driverul este descărcat in memoria virtuală
 IRP – I/O Request Packet
 DPC – Deferred Procedure Call
26
Incarcarea unui driver
 la dispozitivele PnP
 se caută o semnătură electronică şi pe baza ei, cu ajutorul
"registry"-ului si al unui fişiere INF se încarcă driverul potrivit
 la dispozitivele non-PnP (dispozitive moştenite)
 nu există semnătură electronică;
 utilizatorul iniţiază procesul de identificare a dispozitivului
prin activarea funcţiei "Add New Hardware wizard“
 sistemul foloseşte registry-ul şi fişierul INF pentru încărcarea
driverului

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

IRP – Input/Output Request Packet

FiDO Driver filtru de nivel ridicat

FDO Driver funcţie

FiDO Driver filtru de nivel scăzut

PDO Driver de magistrală

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

 DriverStartIo - poantor la o funcţie care tratează cererile de


I/E
 DriverUnload - poantor la o funcţie de curăţare

 MajorFunction - poantor către o tabelă de funcţii care


tratează în jur la două duzini de tipuri de cereri I/E
30
Obiecte Dispozitiv
 Se creează prin apelul funcţiei IoCreateDevice. Conţine
următoarele câmpuri vizibile:
 DriverObject - poantează către obiectul driver care tratează
dispozitivul respectiv
 NextDevice - poantează următorul obiect dispozitiv tratat de
driverul respectiv
 CurrentIRP – poantor catre IRP-ul curent
 Flags - colecţie de indicatoare; determină tipul sau modul de
transfer
 Characteristics - colecţie de indicatoare; descriu caracteristici
opţionale ale driverului; pot descrie tipul dispozitivului (ex: floppy,
reţea, dispozitiv ROM, etc.)
 DeviceExtension - poantează o structură care conţine date
referitoare la o instanţă a obiectului
 DeviceType - o constantă enumerativă care arată tipul de dispozitiv
 StuckSize - numără obiectele dispozitiv începând de la cel curent
 AlignmentRequirement - specifică tipul de aliniere al bufferelor
folosite
31
Cereri de operatii de intrare/iesire
(IRP – Input/Output Request Packets)
 Orice cerere de intrare/iesire se transmite catre un driver printr-
un IRP
 Continutul unui IRP:
 MdlAddress - este adresa unei liste de descriptori pentru memorie (MDL-
Memory Descriptor List) care descrie bufferul din modul utilizator, asociat
cererii
 Flags - conţine indicatoare care pot fi citite dar nu pot fi modificate de
driverul dispozitivului; aceste indicatoare nu sunt relevante pentru un driver
WMD
 AssociateIrp - este o colecţie de 3 poantori posibili; managerul de I/E
creează un buffer a cărui poantor se păstrează aici
 IoStatus - în acest câmp driverul complectează starea cererii (modul de
soluţionare a cererii) la încheierea tratării acesteia;
 RequestorMode - arată modul de lucru al celui care a iniţiat cererea:
modul utilizator sau modul Kernel
 PendingReturned, Cancel, ..... indicatoare ce caracterizează starea
cererii
 UserBuffer - conţine adresa virtuală a bufferului din modul utilizator
pentru un Irp de control
 Taile - o sturctură de date utilă pentru driver
32
Structura IO_STUCK_LOCATION
 pentru fiecare cerere IRP transmis de un program se creeaza o
structura IO_STUCK_LOCATION
 continutul structurii IO_STUCK_LOCATION:
 MajorFunction
 codul funcţiei majore asociat IRP-ului; codul este folosit ca un index în tabela de
dispecerizare a cererilor IRP (Ex: IRP_MJ_READ)
 MinorFunction
 detaliază tipul de IRP pentru câteva coduri de funcţii majore; de exemplu codul
major IRP_MJ_PNP are un set de coduri minore IRP_MN_START_DEVICE,
IRP_MNREMOVE_DEVICE, etc.)
 Parameters
 colecţie de substructuri, câte unul pentru fiecare tip de cereri care are parametri specifici
 DeviceObject
 adresa obiectului dispozitiv care corespunde acestei intrări în stiva IO
 FileObject
 este adresa obiectului fişier kernel la care IRP-ul este direcţionat.
 CompletionRoutine
 adresa unei rutine instalat de driver deasupra celui la care această stivă
corespunde;

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

S-ar putea să vă placă și