Condividi tramite


Architettura del driver di archiviazione Windows

In Windows i dispositivi di archiviazione delle periferiche hanno driver di classe e filtro. Questi driver fungono da interfaccia tra qualsiasi driver intermedio o di livello più alto al di sopra di essi e un driver di porta fornito dal sistema.

Le richieste di I/O da un'applicazione utente o da un componente kernel raggiungono i driver di classe di archiviazione tramite i servizi di sistema I/O e uno o più driver intermedi o di livello più elevato, ad esempio un driver del file system. I driver della classe di archiviazione traducono gli IRP standard che ricevono in IRP con blocchi di richieste di archiviazione definiti dal sistema, prima di inviare ogni IRP al driver inferiore successivo. Un driver di porta di storage converte gli SRB da driver di classe in comandi specifici del bus, che invia all'adattatore del bus host di archiviazione (HBA) tramite un driver di I/O del bus e possibilmente gli uno o più driver di filtro.

La figura seguente mostra l'architettura a più livelli dei driver di archiviazione di Windows.

diagramma che illustra l'architettura a più livelli dei driver di archiviazione del sistema operativo basati su nt.

A partire dalla parte inferiore della figura:

  1. Un driver di porta di archiviazione definisce un'interfaccia per tutti i driver di classe di archiviazione di Windows, inclusi i driver forniti dal sistema, ad esempio disco, nastro e DVD. Questa interfaccia di porta/classe isola i driver di classe dai requisiti specifici dell'adattatore HBA al quale sono collegati i loro rispettivi dispositivi. Un driver di porta di archiviazione sincronizza anche l'accesso al bus per tutti i driver di dispositivi nell'HBA corrispondente. Il sistema fornisce driver di porta di archiviazione per schede SCSI, IDE, USB e IEEE 1394.

    Un driver di porta di archiviazione riceve i srb dal driver superiore successivo (driver di classe di archiviazione o driver filtro intermedio) e li elabora come indicato di seguito:

    • Il driver della porta di archiviazione passa srb con CDB su un driver miniport specifico del sistema operativo indipendente dal sistema operativo HBA. Questo driver miniport è collegato dinamicamente al driver di porta corrispondente e fornisce supporto specifico dell'hardware per un particolare HBA. Per informazioni sull'implementazione di un driver miniport, vedere Driver Miniport storport.
    • Il driver della porta di archiviazione per un bus IDE/ATAPI o IEEE 1394 legacy converte i srb ricevuti dal driver della classe di archiviazione nel formato richiesto dall'adattatore sottostante. Ad esempio, potrebbe riassemblare i CDB in base a un protocollo di trasporto specifico del bus. Oppure potrebbe traslarli in un formato diverso, isolando così i conducenti di livello superiore dalle peculiarità del bus sottostante.
  2. Un driver di filtro di archiviazione superiore o inferiore supporta funzionalità specifiche del dispositivo non fornite da un driver di classe di archiviazione fornito dal sistema. Un driver di archiviazione con filtro inferiore monitora i srb e/o i runtime di integrazione rilasciati da un driver di classe di archiviazione. Le modifica in base alle esigenze prima di passarle al driver inferiore successivo, che può essere un driver di porta di archiviazione o un altro driver di filtro di archiviazione.

    Per informazioni sull'implementazione di un driver di filtro di archiviazione, vedere Driver del filtro di archiviazione.

  3. Un driver della classe di archiviazione usa l'interfaccia di porta/classe SCSI per controllare un dispositivo del relativo tipo in qualsiasi bus per il quale il sistema fornisce un driver di porta di archiviazione. Un driver di classe è specifico di una determinata classe di dispositivo, ad esempio un driver di classe può eseguire tutti i dispositivi CD-ROM su qualsiasi bus supportato; un altro può controllare tutti i dispositivi disco. Il driver della classe di archiviazione gestisce le richieste di I/O da applicazioni utente o driver superiori nello stack di archiviazione. A tale scopo, costruisce SRB contenenti CDB ed emette tali SRB al driver inferiore successivo (un driver di porta di archiviazione o un driver filtro intermedio) come se il dispositivo fosse un dispositivo SCSI.

    L'implementazione di un driver di classe di archiviazione è trasparente per i driver di livello superiore. Un driver di classe per un dispositivo nastro o un dispositivo di cambio medio viene implementato come driver miniclasse specifico del dispositivo che collega a un driver di classe fornito dal sistema. I driver di classe forniti dal sistema per altri dispositivi di archiviazione, ad esempio disco e CD-ROM/DVD, vengono implementati come singoli driver monolitici.

    Per informazioni sull'implementazione di un driver di classe di archiviazione, vedere Driver di classe di archiviazione. Per informazioni sull'implementazione di un driver miniclass su nastro o caricatore, vedere rispettivamente Driver nastro e driver del caricatore.

  4. Un driver di archiviazione con filtro superiore intercetta i runtime di integrazione dalle applicazioni utente e dai driver più in alto nello stack di archiviazione. Può quindi modificarli prima di passarli al driver inferiore successivo (driver della classe di archiviazione o un altro driver di filtro di archiviazione). I driver di filtro monitorano in genere le prestazioni del dispositivo sottostante.

Il tipo di bus a cui è collegato un dispositivo e l'implementazione del driver della porta di archiviazione è trasparente per i driver di livello superiore.

È possibile implementare un driver di porta di archiviazione:

  • In base all'architettura del driver porta/miniport, ad esempio il driver di porta Storport o SCSI.
  • Come driver monolitico che controlla un singolo componente hardware standard, ad esempio il driver di porta IDE/ATAPI.
  • Come driver di filtro che converte gli SRB nel formato richiesto da uno stack di driver differente, come il driver di porta IEEE 1394.

Il driver di porta SCSI fornito dal sistema può anche fungere da interfaccia tra un driver di classe di archiviazione e un driver miniport SCSI che controlla un dispositivo di archiviazione non SCSI dello stesso tipo. Ad esempio, anziché scrivere un driver per un nuovo controller di matrice di dischi, un writer di driver può risparmiare notevoli sforzi scrivendo un driver miniport pseudo-SCSI che collega al driver di porta SCSI di sistema e usa l'interfaccia fornita. Questo driver miniport è necessario per convertire i comandi SCSI in ingresso in comandi specifici del dispositivo. D'altra parte, le porte e i driver di classe forniti dal sistema gestiscono gran parte del lavoro necessario per conto di un miniport pseudo-SCSI. Questo lavoro include gli accessi al Registro di sistema durante l'inizializzazione, tutte le allocazioni di risorse e oggetti, la sincronizzazione, il presizing dei trasferimenti richiesti in base alle funzionalità del dispositivo del miniport e la ripetizione delle richieste.