Programare și securitate la nivelul arhitecturii x86

Slides:



Advertisements
Similar presentations
WDM 드라이버의 기본 구조 What is WDM?
Advertisements

- Program de formare profesionala flexibila pe platforme mecatronice Investeste in oameni!
Cojocea Manuela-Simona Microsoft Student Partners.
Aplicatie pentru intarirea capacitatii manageriale Coriolis Consulting pentru INCD-PM Alexandru Darabont.
1 const #define DIMENSIUNE 1000 const int DIMENSIUNE = 1000; Utilizarea valorilor constante este importantă, de exemplu, în declararea tablourilor de date.
ICF Capitol Local Bine ati venit. Ore de Pregatire Continua Sesiunea 1.
Java Wireless TARC Anca Rarau Noiembrie Cuprins 1. J2ME 2. MIDP 2.1. Introducere 2.2. Interfata utilizator 2.3. Stocare persistenta 2.4. Conectare.
POSTA ELECTRONICA Ana-Maria Tache Ioana Cristina Ciufu.
Bazele retelelor TCP/IP
Introducere in Sisteme de operare
Februarie 2018 ASE Bucuresti
ACTIVITATEA 1 -,, PROFESOR IT LA PAPI’’
CUPRINS Tastatura Imprimanta Scanner Bibliografie Recapitulare.
Pipes, redirection and REGEX
IntraShip inovatie, flexibilitate, rapiditate.
Funcţii Excel definite de utilizator (FDU) în VBA
Placa de bază.
Drivere fizice Universitatea Politehnica Bucuresti
Instrumente CASE Curs nr. 7.
Posibilităţi de analiză în timp real a parametrilor de calitate a apei cu ajutorul sistemului informatic de management SIVECO Business Analyzer September.
Căutarea şi regăsirea informaţiei.
Administrare Oracle 9i Suport de curs
SOFTWARE Tipuri de software.
PASII INSTALARII SISTEMULUI DE OPERARE
Dispozitive de stocare
RETELE DE CALCULATOARE
CONFIGURAREA SWITCHURILOR
Arhitectura serviciilor web
Structura pipeline a unui procesor MIPS
Căutarea şi regăsirea informaţiei.
Paxos Made Simple Autor: Puşcaş Radu George
Primirea si procesarea cererilor
Gestionarea datelor stiintifice
Structura bazei de date MS Access
Retele de calculatoare
Sistemul de salarizare pentru funcţionarii publici şi cele mai recente tendinţe ale reformei Germania.
UNIVERSITATEA POLITEHNICA BUCUREȘTI FACULTATEA de ELECTRONICĂ, TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI - Android OS - Coordonator știintific Stefan.
Software product management
Introducere in HCI.
CONVERSII INTRE SISTEME DE NUMERATIE
WebSite Social Tema 2 WebSite Social.
Tipuri structurate Tipul tablou
Drivere pentru dispozitivele de intrare-iesire 3D
C# şi platforma .NET.
Curs 2 1 Sistem de operare-concepte: 2 Apeluri de sistem
Curs 6: Introducere în programarea SAS
UPB ETTI IISC Web Interactiv Floroiu Andrei.
Programare și securitate la nivelul arhitecturii x86
Funcții C/C++ continuare
prof. mrd. Negrilescu Nicolae Colegiul National Vlaicu Voda
Ethernet.
Apache WEB Server.
Crearea si gazduirea serviciilor
INTERNET SERVICII INTERNET.
Forms (Formulare).
A great way to create a channel of communication
Functia de documentare
Administrarea reţelelor de calculatoare
SOAP -Simple Object Access Protocol-
Programarea in limbajul Java 2004 Lecturer: Gavrila Cristian
Realizarea prezentarilor cu Microsoft PowerPoint
Software open source in industria software
Crearea unei aplicatii Windows Forms simple
Aplicaţii specializate pentru realizarea unei prezentări – PowerPoint
CECUL INTERNAȚIONAL.
Sistemul de control intern managerial
Review blog culianu.wordpress.com
Implementarea listelor simplu inlantuite
Harti de imagini, Cadre, Stiluri
Model arhitectural de reţea
Presentation transcript:

Programare și securitate la nivelul arhitecturii x86 Curs: Drivere Windows

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

Locul si rolul unui driver Varianta simplificata Drivere software Varianta mai realista Driver pentru un toaster USB

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

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)

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

Locul driverelor in arhitectura Windows Aplicaţie Win32 API Drivere mod utilizator Rutine suport pentru drivere exportate Nucleul Sistemului de operare Drivere în modul Kernel Driverele sist. de fişiere Nivelul de adaptare al maşinii fizice HAL - Hardware Adaptation Layer Maşina fizică Modul Utilizator Modul Kernel

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.

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). 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.

Arhitectura multinivel a driverelor Windows Aplicaţie Win32 API Driver client în mod utilizator în mod kernel Driver de clasă Driver de port Driver de magistrală fizică Mod utilizator Mod kernel Driver de miniclasă Driver de miniport

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

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

Tipuri de drivere în Windows XP Driver de dispozitiv virtual (VDD) Driver mod Kernel Driver pentru sistemul de fişiere Drivere PnP Drivere moştenite (legacy) Driver WDM Drivere de clasă Mini-drivere Drivere funcţionale monolitice Drivere filtru

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

Arhitectura sistemelor de operare de tip NT (windows XP, 2000, si NT) Subsistemul de securitate Subsistemul POSIX Subsistemul Win32 Mod utilizator Mod kernel Manager LAN Servicii sistem Managerul de I/E Manager de configurare Manager de memorie Structură proces Apel procedură locală Manager obiecte Monitor de securitate Sistem de fişiere, Drivere Manager Plug-and-Play Suport pt. executiv Manager de alimentare Nucleul (Kernel) Nivelul de adaptare la maşina fizică (HAL - Hardware Adaptation Layer) Maşina fizică

Tipuri de drivere kernel Drivere pentru sistemul de fişiere (FAT, NTFS, CDFS) Drivere filtru PnP de nivel înalt (opţional) Drivere funcţie PNP Drivere WDM de clasă/ miniclasă Drivere filtru PnP de nivel scăzut (opţional) Drivere software PNP Drivere WDM de magistrală software Drivere de magistrală hardware PnP Drivere de dispozitive moştenite Drivere de nivel înalt Drivere de nivel intermediar Drivere de nivel inferior Drivere de disc virtual sau "oglindă" moştenite, Drivere de clasă moştenite

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

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)

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ă

Tipuri de drivere WDM driver de magistrală driver funcţie 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ă

Tipuri de drivere WDM Driver filtru de clasă, de nivel superior 5 Driver filtru de dispozitiv, de nivel superior Driver funcţie Driver filtru de clasă, de nivel inferior Driver filtru de dispozitiv, de nivel inferior Driver filtru de magistrală Driver de magistrală Drivere de dispozitiv Drivere de magistrală 5 4 3 2 1

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 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

Exemplu de set de drivere WDM pentru un dispozitiv USB Schema electrica magistrala PCI controlorul USB Hub USB dispozitiv joystick

Exemplu de set de drivere WDM pentru un dispozitiv USB Aplicaţie Client HID 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. controlor USB Driver clasă de magistrală pt. controlor USB Driver de magistrală PCI Mod client Mod kernel HID – Human Interface Device

Structura Driverelor WDM Driver WDM - colecţie (container) de rutine care facilitează accesul la resursele calculatorului Rutine de bază DriverEntry AddDevice Rutine de control I/E StrartIO AdapterControl OnInterrupt DpcForISR DispatchPnP DispatchPower DispatchWmi DispatchRead DispatchWrite Rutine obligatorii Rutina StartIO pt. tratarea cozii de cereri Rutina AdapterControl pt. DMA Rutine pentru tratarea întreruperilor Rutine opţionale de dispecerizare IRP

Scenariu de utilizare a unui driver WMD: 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 Managerul PnP apelează rutina AddDevice Managerul PnP trimite câteva IRP-uri; dispecerul driverului prelucrează fiecare IRP 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 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 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 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 Timpul trece şi sistemul face şi alte apeluri la subrutinele din driver 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

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

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

Nivele de drivere şi obiecte asociate FiDO – Filter Data Object FDO – Function Data Object PDO – Physical Device Object IRP – Input/Output Request Packet FiDO Driver filtru de nivel ridicat FDO Driver funcţie Driver filtru de nivel scăzut PDO IRP Driver de magistrală

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

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

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

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;

Procesarea unei cereri IRP DISPATCH COMPLETION

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.

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

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 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)

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)

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 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