Het schrijven van een device driver voor Windows 2000

  • View
    213

  • Download
    1

Embed Size (px)

Transcript

  • Dia 1
  • Het schrijven van een device driver voor Windows 2000
  • Dia 2
  • Over deze presentatie Tijdsduur is ongeveer n uur Tijdsduur is ongeveer n uur Het leren begrijpen van een device driver is erg lastig Het leren begrijpen van een device driver is erg lastig let goed op en maak tijdens relevante onderwerpen veel aantekeningen Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde Vragen kunnen gesteld worden na elk deelonderwerp en aan het einde Algemeen
  • Dia 3
  • Inhoud Introductie (5 min.) Introductie (5 min.) Algemene toelichting op device drivers (25 min.) Algemene toelichting op device drivers (25 min.) Hulpmiddelen voor schrijven driver (10 min.) Hulpmiddelen voor schrijven driver (10 min.) Toelichting op PPort voorbeelddriver (15 min.) Toelichting op PPort voorbeelddriver (15 min.) Toelichting op Cypress EZ-USB oplossing (5 min.) Toelichting op Cypress EZ-USB oplossing (5 min.) Slot Slot Algemeen
  • Dia 4
  • Introductie
  • Dia 5
  • Introductie Wie ben ik Wie ben ik Waarom deze stage Waarom deze stage Voorkennis Voorkennis Werkzaamheden Werkzaamheden Introductie
  • Dia 6
  • Wie ben ik Tommy Sools Tommy Sools Student in derde jaar informatica (blok 11) Student in derde jaar informatica (blok 11) Stagiair bij technische informatica Stagiair bij technische informatica Begeleid door Ruud Ermers Begeleid door Ruud Ermers Introductie
  • Dia 7
  • Waarom deze stage Hobby elektronica Hobby elektronica Diverse computerinterface projecten die natuurlijk een device driver vereisen Diverse computerinterface projecten die natuurlijk een device driver vereisen Op zoek naar USB microcontroller oplossing Op zoek naar USB microcontroller oplossing Poging tot zelfstandig leren device drivers Poging tot zelfstandig leren device drivers Tenslotte de vraag of er binnen Fontys een module bestaat over device drivers Tenslotte de vraag of er binnen Fontys een module bestaat over device drivers Introductie
  • Dia 8
  • Voorkennis C++ binnen informaticamodulen (Visual Studio): C++ binnen informaticamodulen (Visual Studio): Programmeren in C Programmeren in C Low Level Programming Low Level Programming Interprocescommunicatie Interprocescommunicatie Events & Exceptions Events & Exceptions Geheugentechnieken en beheer Geheugentechnieken en beheer Gedurende twee kwartalen begeleiden practica C Programmeren (Borland C++ Builder) Gedurende twee kwartalen begeleiden practica C Programmeren (Borland C++ Builder) Introductie
  • Dia 9
  • Voorkennis (2) Veel hobbyprojecten met Borland Delphi Veel hobbyprojecten met Borland Delphi www.sools.com www.sools.com www.sools.com Programmeren aan administratiepakket Order-Direct tijdens eerste stage Programmeren aan administratiepakket Order-Direct tijdens eerste stage Hobbyprojecten met 8051 en AVR microcontrollers, vooral in assembler taal Hobbyprojecten met 8051 en AVR microcontrollers, vooral in assembler taal Introductie
  • Dia 10
  • Werkzaamheden Tweede stage, twintig weken, Tweede stage, twintig weken, momenteel zesde week Onderzoek doen naar de werking van device drivers Onderzoek doen naar de werking van device drivers Ter oefening een aantal drivers schrijven Ter oefening een aantal drivers schrijven Practicumhandleiding schrijven over device drivers voor Windows 2000 Practicumhandleiding schrijven over device drivers voor Windows 2000 Introductie
  • Dia 11
  • Einde introductie Interesse vanuit hobby Interesse vanuit hobby Ruim voldoende voorkennis en ervaring Ruim voldoende voorkennis en ervaring Stage duurt 20 weken Stage duurt 20 weken Doel is practicumhandleiding schrijven over Windows 2000 driverontwikkeling Doel is practicumhandleiding schrijven over Windows 2000 driverontwikkeling Introductie
  • Dia 12
  • Vragen Er kunnen nu vragen over de introductie gesteld worden.
  • Dia 13
  • Hulpmiddelen
  • Dia 14
  • Hulpmiddelen ComputersystemenComputersystemen Microsoft Visual Studio 6.0Microsoft Visual Studio 6.0 Microsoft Windows 2000 DDK (SP1)Microsoft Windows 2000 DDK (SP1) DebugViewDebugView LoadDrvLoadDrv Talloze andere optionele hulpprogrammasTalloze andere optionele hulpprogrammas Hulpmiddelen
  • Dia 15
  • Computersystemen PC voor ontwikkelingPC voor ontwikkeling PC voor testenPC voor testen Hulpmiddelen
  • Dia 16
  • Ontwikkelsysteem Besturingssysteem is niet relevant,Besturingssysteem is niet relevant, bijv. Windows 2000 of XP Driver nooit testen op ontwikkelsysteemDriver nooit testen op ontwikkelsysteem Hulpmiddelen
  • Dia 17
  • Testsysteem Windows 2000 Professional,Windows 2000 Professional, met alle service packs en updates Zorgen voor een herstelmogelijkheid,Zorgen voor een herstelmogelijkheid, bijv. Norton Ghost Hulpmiddelen
  • Dia 18
  • Microsoft Visual Studio 6.0 Sjabloon DDAppWiz.awx installerenSjabloon DDAppWiz.awx installeren Als projectinstellingen goed zijn Als projectinstellingen goed zijn compileren via Tools Build Resultaat is.sys bestandResultaat is.sys bestand Checked Build tegenover Free BuildChecked Build tegenover Free Build Aan te passen via DBG define Ook van toepassing op Windows zelf Hulpmiddelen
  • Dia 19
  • Microsoft Visual Studio 6.0 (2) Hulpmiddelen
  • Dia 20
  • DebugView Toont berichten die Checked Build van driver genereert met DbgPrintToont berichten die Checked Build van driver genereert met DbgPrint DebugView geeft geen informatie weer gegenereerd vanuit ISRsDebugView geeft geen informatie weer gegenereerd vanuit ISRs Hulpmiddelen
  • Dia 21
  • Dia 22
  • DebugView (2) Werkt ook na bugcheck schermen:Werkt ook na bugcheck schermen: Startup & Recovery instellingen goedzetten Zorgen dat DebugView draait tijdens crash Binnen DebugView kiezen voor File Process Crash Dump en memory.dmp in Windows map selecteren Hulpmiddelen
  • Dia 23
  • DebugView (3) Hulpmiddelen
  • Dia 24
  • LoadDrv Installatie, starten, stoppen van een driverInstallatie, starten, stoppen van een driver Hulpmiddelen
  • Dia 25
  • Einde hulpmiddelen Twee computersystemenTwee computersystemen Verschillende software benodigdVerschillende software benodigd Hulpmiddelen
  • Dia 26
  • Vragen Er kunnen nu vragen over hulpmiddelen bij het schrijven van device drivers gesteld worden.
  • Dia 27
  • Device drivers
  • Dia 28
  • Device Drivers Waarom een device driver Aanroepen van een driver Opbouw van een driver Interrupt Request Levels (IRQLs) Interrupt Service Routines (ISRs) en Deferred Procedure Calls (DPCs) Device drivers
  • Dia 29
  • Waarom een device driver Vereist door ontwerp van Windows voor stabiliteit beveiliging Applicatie hoeft minder intelligent te zijn; er is minder dubbele code Apparaat kan gedeeld worden met meerdere applicaties Device drivers
  • Dia 30
  • Aanroepen van een driver Keuze voor Borland C++ Builder De meeste drivers kunnen benaderd worden alsof het bestanden zijn, dus met de volgende Win32 API functies: CreateFile WriteFile ReadFile CloseFile Device drivers
  • Dia 31
  • Aanroepen van een driver (2) Daarnaast kan met sommige drivers de volgende functie gebruikt worden: DeviceIoControl Invoer aan de functie is: IOCTL code die het soort verzoek aangeeft Gegenereerd door CTL_CODE macro uit winioctl.h Invoer- en uitvoerbuffer Device drivers
  • Dia 32
  • Aanroepen van een driver (3) Vanwege ingewikkeldheid van aanroepen worden deze in een aparte unit of vaak in een DLL geplaatst Device drivers
  • Dia 33
  • Opbouw van een driver Plaats binnen Windows DriverEntry routine DriverUnload routine I/O Request Packet (IRP) Dispatch routines Voorbeelden IRPs Device drivers
  • Dia 34
  • Plaats binnen Windows Device drivers ApplicatieWin32 APII/O ManagerDevice Driver ongemerktAPI functie aanroep dispatch routine Hardware HAL macros IoXxx functie- aanroepen
  • Dia 35
  • DriverEntry routine Ontvangt pointer naar Driver Object Wordt aangeroepen wanneer de driver door Windows geladen wordt Initialiseert pointers naar andere routines, zoals DriverUnload, AddDevice en StartIo Initialiseert MajorFunction array die pointers bevat naar elke dispatch functie Device drivers
  • Dia 36
  • DriverEntry (2) Creert Device Object voor elk apparaat Device Object heeft gebruikergedefinieerde Device Extensie voor opslag van variabelen in niet-gepagineerd geheugen Creert voor elk device eventueel een symbolic link: de naam die een applicatie kan gebruiken met CreateFile Device drivers
  • Dia 37
  • DriverUnload routine Wordt alleen aangeroepen als de driver uit het geheugen wordt geladen voordat het afsluiten van Windows in gang is gezet Als deze routine ontbreekt blijft de driver in het geheugen totdat Windows wordt afgesloten Als er iets speciaals moet gebeuren als Windows wordt afgesloten moet IRP_MJ_SHUTDOWN worden afgehandeld Device drivers
  • Dia 38
  • I/O Request Packet (IRP) Meestal aangemaakt door I/O Manager als gevolg van Win32 API aanroep Verplaatst zich vanaf de I/O Manager door de driver Device drivers
  • Dia 39
  • Dispatch routines Worden aangeroepen door de I/O