Tipi di driver di Windows

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.

diagramma che illustra i tipi di driver in modalità kernel.

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à:

  1. 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.

  2. 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.

  3. 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.