Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono due tipi di base di driver di Microsoft Windows:
I driver in modalità utente vengono eseguiti in modalità utente e in genere forniscono un'interfaccia tra un'applicazione Win32 e i driver in modalità kernel o altri componenti del sistema operativo.
Ad esempio, tutti i driver della stampante vengono eseguiti in modalità utente. Per altre informazioni sui componenti del driver della stampante, vedere Introduzione alla stampa.
I driver in modalità kernel vengono eseguiti in modalità kernel come parte del sistema esecutivo, costituito da componenti in modalità kernel del sistema operativo che gestiscono I/O, Plug and Play, memoria, processi e thread, sicurezza e così via. I driver in modalità kernel sono in genere a più livelli. In genere, i driver di livello superiore ricevono dati dalle applicazioni, filtrano i dati e li passano a un driver di livello inferiore che supporta la funzionalità del dispositivo.
Alcuni driver in modalità kernel sono anche driver WDM, conformi al modello di driver Windows (WDM). Tutti i driver WDM supportano Plug and Play e risparmio energia.
Analogamente al sistema operativo stesso, i driver in modalità kernel vengono implementati come componenti modulari discreti che dispongono di un set ben definito di funzionalità necessarie. Tutti i driver in modalità kernel forniscono un set di routine del driver standard definite dal sistema.
La figura seguente divide i driver in modalità kernel in diversi tipi.
Come illustrato nella figura, esistono tre tipi di base di driver in modalità kernel in uno stack di driver: livello più alto, intermedio e livello più basso. Ogni tipo differisce solo leggermente nella struttura, ma notevolmente nelle funzionalità:
Driver di livello più alto. I driver di livello più elevato includono driver dei file system (FSD) che supportano i file system, ad esempio:
NTFS
Tabella di allocazione file (FAT)
CD-ROM filesystem (CDFS)
I driver di livello più elevato dipendono sempre dal supporto dei driver di livello inferiore sottostanti, ad esempio driver di funzioni di livello intermedio e driver del bus hardware di livello più basso.
Driver intermedi, ad esempio un disco virtuale, un mirror o un driver di classe specifico del tipo di dispositivo. I driver intermedi dipendono dal supporto dei driver di livello inferiore sottostanti. I driver intermedi sono suddivisi come segue:
I driver di funzione controllano determinati dispositivi periferici su un bus di I/O.
I driver di filtro si inseriscono sopra o sotto i driver di funzione.
I driver del bus software presentano un set di dispositivi figlio a cui possono collegarsi altri driver di classe, funzione o filtro di livello superiore.
Ad esempio, un driver che controlla un adattatore multifunzione con un set di dispositivi eterogenei è un driver del bus software.
Qualsiasi driver di classe fornito dal sistema che esporta un'interfaccia classe/miniclass definita dal sistema è, in effetti, un driver intermedio con uno o più driver miniclass collegati (talvolta chiamati minidriver). Ogni coppia classe/minidriver collegata fornisce funzionalità equivalenti a quella di un driver di funzione o di un driver del bus software.
I driver di livello più basso controllano un bus di I/O a cui sono connessi i dispositivi periferici. I driver di livello più basso non dipendono dai driver di livello inferiore.
I driver hardware dei bus sono forniti dal sistema operativo e in genere controllano bus di I/O configurabili dinamicamente.
I driver del bus hardware lavorano con il manager Plug and Play per configurare e riconfigurare le risorse hardware di sistema, per tutti i dispositivi subordinati connessi ai bus di I/O che il driver controlla. Queste risorse hardware includono mappature per le richieste di memoria del dispositivo e di interrupt (IRQs).
I driver legacy che controllano direttamente un dispositivo fisico sono driver di livello più basso.