Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varje drivrutin i kernelläge konstrueras kring en uppsättning systemdefinierade, standarddrivrutinsrutiner. Drivrutiner i kernelläge bearbetar I/O-begärandepaket (IRP:er) inom dessa standardrutiner genom att anropa systemspecifika drivrutinsstödrutiner.
Alla förare, oavsett nivå i en kedja av anslutna förare, måste ha en grundläggande uppsättning standardrutiner för att kunna bearbeta IRP:er. Om en drivrutin måste implementera ytterligare standardrutiner beror på om drivrutinen styr en fysisk enhet eller är skiktad över en fysisk enhetsdrivrutin, samt på den underliggande fysiska enhetens karaktär. Drivrutiner på lägsta nivå som styr fysiska enheter har fler nödvändiga rutiner än drivrutiner på högre nivå, vilket vanligtvis skickar IP-adresser till en lägre drivrutin för bearbetning.
Standarddrivrutinsrutiner kan delas in i två grupper: de som varje kernel-mode-drivrutin måste ha, och de som är valfria, beroende på drivrutinstyp och plats i enhetsstacken.
I följande tabell visas de standardrutiner som krävs.
| Nödvändiga standarddrivrutinsrutiner | Avsikt | Där beskrivs | 
|---|---|---|
| DriverEntry | Initierar drivrutinen och dess drivrutinsobjekt. | Skriva en DriverEntry-rutin | 
| AddDevice | Initierar enheter och skapar enhetsobjekt. | Skriva en AddDevice-rutin | 
| Dispatch-rutiner | Ta emot och bearbeta IRP:er. | Skriva dispatch-rutiner | 
| Lasta av | Frigöra systemresurser som hämtats av drivrutinen. | Skriva en avlastningsrutin | 
I följande tabell visas flera valfria rutiner.
| Valfria standardrutiner för drivrutiner | Avsikt | Där det beskrivs | 
|---|---|---|
| Återinitiera | Slutför drivrutinsinitiering om DriverEntry inte kan. | Skriva en återinitieringsrutin | 
| StartIo | Startar en I/O-åtgärd på en fysisk enhet. | Skriva en StartIO-rutin | 
| Avbryt tjänstrutin | Sparar tillståndet för en enhet när den avbryter. | Skriva en ISR | 
| Uppskjutna proceduranrop | Slutför bearbetningen av ett enhetsavbrott när en ISR har sparat enhetens tillstånd. | DPC-objekt och DPC:er | 
| SynchCritSection | Synkroniserar åtkomst till drivrutinsdata. | Använda kritiska avsnitt | 
| AdapterControl | Initierar DMA-operationer. | Adapterobjekt och DMA | 
| IoCompletion | Slutför en drivrutins bearbetning av en IRP. | #B0 Slutför IRP:er #C1 | 
| Avbryt | Avbryter en drivrutins bearbetning av en IRP. | Avbryta IRP:er | 
| CustomTimerDpc, IoTimer | Tidsinställning och synkronisering av händelser. | Synkroniseringstekniker | 
Det aktuella IRP- och målenhetsobjektet är indataparametrar för många standardrutiner. Varje drivrutin bearbetar varje IRP stegvis genom sina standardrutiner.
Enligt konventionen förbereder de systemspecifika drivrutinerna ett identifierande, drivrutinsspecifikt eller enhetsspecifikt prefix till namnet på varje standardrutin förutom DriverEntry. I den här dokumentationen används till exempel "DD", som du ser i bilden i Introduktion till drivrutinsobjekt. Genom att följa den här konventionen blir det enklare att felsöka och underhålla drivrutiner.