Hvordan en enhetsdriver fungerer?

Hvordan en enhetsdriver fungerer?

Grunnleggende

Enhetsdrivere er brukt av operativsystemet for å samhandle med maskinvare. Operativsystemet bruker funksjonene i driveren til å utføre handlinger på hardware. Hver sjåfør har ulike funksjoner, og hver funksjon tilsvarer forskjellig maskinvare.

enhets~~POS=TRUNC gjenstander

Driverne Opprett DOS, en forkortelse for enhets objekter, for hvert stykke maskinvare som den kontrollerer. Til sjåføren, er DO en representasjon av den spesifikke hardware. Enheten objekter inneholdt i en enhet stabel. Det er FDO-øverste nivå filter driver, FDO-funksjon driver, Filter DO-bussen filter driver, og PUD-bussjåføren. Stabelen består av DOS for håndtering av en inngang / utgang (I / O) for hver enhet.

fysisk struktur

Den fysiske struktur av en enhetsdriver består av en brukermodus, I / O-leder, og et kjerne-modus.

Fordeling av moduser:

API - programmering søknad operativsystemet bruker til å starte I / O manager.

Ntdll - Funksjons bibliotek som bruker stubber å starte operativsystemet.

NtReadFile - System som brukes til å lage og styring I / O anmodninger.

I / O Manager - Subsystem ansvaret for alle enheter som bestemmer hva hver sjåfør har lov til å gjøre.

IRP - Request pakke brukes av I / O for å be om informasjon fra sjåfører.

IoCallDriver - Sender IRPs til den riktige driveren som er knyttet til hver GJØRE.

I brukermodus, kobler programmet til API, som kobles til Ntdll. Søknaden forespørsel beveger seg deretter inn i kernel-modus gjennom I / O-manager. I / O-Mangers bruker en NTReadFile å behandle forespørselen og sender den til IOCallDriver, som igjen sender informasjonen til den riktige driveren. Sjåføren bestemmer da hva de skal gjøre med forespørselen. Det vil stå i kø den til senere, sende det til en jernport eller sende den til en annen sjåfør.