Introduzione alle routine del driver Standard
Ogni driver in modalità kernel viene costruito intorno a un set di routine del driver standard definite dal sistema. I driver in modalità kernel elaborano i pacchetti di richiesta di I/O (IRP) all'interno di queste routine standard chiamando routine di supporto del driver fornite dal sistema.
Tutti i driver, indipendentemente dal loro livello in una catena di driver collegati, devono avere un set di routine standard di base per elaborare i provider di integrazione. Se un driver deve implementare routine standard aggiuntive, dipende dal fatto che il driver controlli un dispositivo fisico o sia a più livelli su un driver di dispositivo fisico, nonché sulla natura del dispositivo fisico sottostante. I driver di livello più basso che controllano i dispositivi fisici hanno routine più richieste rispetto ai driver di livello superiore, che in genere passano irP a un driver inferiore per l'elaborazione.
Le routine del driver standard possono essere suddivise in due gruppi: quelli che ogni driver in modalità kernel deve avere e quelli facoltativi, a seconda del tipo di driver e della posizione nello stack di dispositivi.
Nella tabella seguente sono elencate le routine standard necessarie.
Routine del driver standard richieste | Scopo | Dove descritto |
---|---|---|
DriverEntry | Inizializza il driver e il relativo oggetto driver. | Scrittura di una routine DriverEntry |
AddDevice | Inizializza i dispositivi e crea oggetti dispositivo. | Scrittura di una routine AddDevice |
Routine Dispatch | Ricevere ed elaborare i provider di integrazione. | Scrittura di routine dispatch |
Scaricare | Rilasciare le risorse di sistema acquisite dal driver. | Scrittura di una routine di scaricamento |
Nella tabella seguente sono elencate diverse routine facoltative.
Routine del driver standard facoltative | Scopo | Dove descritto |
---|---|---|
Reinizializzare | Completa l'inizializzazione del driver se DriverEntry non può. | Scrittura di una routine reinizializzare |
StartIo | Avvia un'operazione di I/O in un dispositivo fisico. | Scrittura di una routine StartIo |
Routine del servizio interrupt | Salva lo stato di un dispositivo quando viene interrotto. | Scrittura di un ISR |
Chiamate di procedura posticipate | Completa l'elaborazione di un interrupt del dispositivo dopo che un ISR salva lo stato del dispositivo. | Oggetti DPC e CONTROLLER di dominio |
SynchCritSection | Sincronizza l'accesso ai dati del driver. | Uso delle sezioni critiche |
AdapterControl | Avvia le operazioni DMA. | Oggetti adapter e DMA |
IoCompletion | Completa l'elaborazione di un driver di un IRP. | Completamento dei runtime di integrazione |
Annulla | Annulla l'elaborazione di un driver di un IRP. | Annullamento di IRP |
CustomTimerDpc, IoTimer | Temporizzazione e sincronizzazione degli eventi. | Tecniche di sincronizzazione |
L'oggetto dispositivo di destinazione e IRP corrente sono parametri di input per molte routine standard. Ogni driver elabora ogni IRP in fasi attraverso il set di routine standard.
Per convenzione, i driver forniti dal sistema anteponevano un prefisso di identificazione, specifico del driver o specifico del dispositivo al nome di ogni routine standard ad eccezione di DriverEntry. Ad esempio, questa documentazione usa "DD", come illustrato nell'illustrazione in Introduzione agli oggetti driver. Seguendo questa convenzione è più semplice eseguire il debug e gestire i driver.