Architettura del driver di archiviazione di Windows
La classe del sistema operativo Windows e i driver di filtro per i dispositivi di archiviazione periferiche fungono da un'interfaccia tra i driver intermedi o di livello più alto sopra la classe o il driver di filtro 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/O System Services e uno o più driver intermedi o di livello più alto, ad esempio un driver di file system. I driver di classe di archiviazione convertono gli IRP standard con blocchi di richiesta SCSI definiti dal sistema contenenti blocchi di richiesta SCSI contenenti blocchi di descrittore di comandi SCSI (CDB) prima di inviare ogni IRP al driver inferiore successivo. Un driver di porta di archiviazione converte gli SRB dai driver di classe in comandi specifici del bus che invia all'HBA di archiviazione, tramite un driver del bus di I/O e possibilmente uno o più driver di filtro.
Nella figura seguente viene illustrata l'architettura a livelli dei driver di archiviazione di Windows.
A partire dalla parte inferiore della figura, la seguente descrive ogni tipo di driver di archiviazione:
Un driver di porta di archiviazione definisce un'interfaccia per tutti i driver di classe di archiviazione di Windows, inclusi i driver di classe del sistema forniti dal sistema, nastro, CDROM, DVD e driver di classe changer. Questa interfaccia porta/classe isola i driver di classe dai requisiti specifici dell'adattatore dell'adattatore host a cui sono connessi i rispettivi dispositivi. Un driver della 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 gli SRB dal driver superiore successivo (un driver di classe di archiviazione o un driver di filtro di intervento) e li elabora come indicato di seguito:
- Il driver della porta di archiviazione per un bus SCSI o un altro bus passa le SRB con cdB a un driver miniport specifico del sistema operativo, che è collegato dinamicamente al driver di porta corrispondente e fornisce supporto specifico dell'hardware per un determinato HBA. Per informazioni sull'implementazione di un driver miniport SCSI, vedere Driver Miniport Storport.
- Il driver della porta di archiviazione per un bus IDE/ATAPI legacy o IEEE 1394 converte gli SRB ricevuti dal driver della classe di archiviazione nel formato richiesto dall'adattatore sottostante, ad esempio, ricompilazione di CDB in base a un protocollo di trasporto specifico del bus o la conversione in un formato diverso, isolando così i driver di livello superiore dalle peculiarità del bus sottostante.
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 filtro inferiore monitora i driver srB e/o irP emessi da un driver di classe di archiviazione e li modifica in base alle esigenze prima di passarli al driver inferiore successivo (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 di filtro archiviazione.
Un driver della classe di archiviazione usa l'interfaccia porta/classe SCSI per controllare un dispositivo del relativo tipo in qualsiasi bus per cui il sistema fornisce un driver di porta di archiviazione. Un driver di classe è specifico per una determinata classe di dispositivo, ad esempio un driver di classe può eseguire tutti i dispositivi CD-ROM in qualsiasi bus supportato; un altro può controllare tutti i dispositivi su disco. Il driver della classe di archiviazione gestisce le richieste di I/O da applicazioni utente o driver superiori nello stack di archiviazione creando SRB contenenti CDB e rilasciando tali srB al driver inferiore successivo (un driver di porta di archiviazione o un driver di filtro di intervento), proprio come se il dispositivo fosse un dispositivo SCSI.
L'implementazione di un driver di classe di archiviazione è trasparente ai driver di livello superiore. Un driver di classe per un dispositivo nastro o medio cambior viene implementato come driver miniclass 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 miniclasse nastro o modificatore, vedere Rispettivamente Driver nastro e Driver changer.
Un driver di archiviazione con filtro superiore intercetta i provider di integrazione dalle applicazioni utente e i driver più alti nello stack di archiviazione e quindi li modifica prima di passarli al driver inferiore successivo (un driver di 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 ai driver di livello superiore. Un driver di porta di archiviazione può essere implementato in base all'architettura del driver porta/miniport, ad esempio il driver di porta SCSI; come driver monolitico che controlla un singolo componente hardware standard, ad esempio il driver di porta IDE/ATAPI; o come driver di filtro che converte gli SRB nel formato richiesto da uno stack di driver diverso, ad esempio il driver di porta IEEE 1394.
Il driver di porta SCSI fornito dal sistema può fungere anche 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 della matrice di dischi, un writer driver può risparmiare un notevole sforzo di progettazione, sviluppo e debug scrivendo un driver miniport pseudo-SCSI che collega al driver della porta SCSI di sistema e usa l'interfaccia fornita. Tale 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 un lavoro molto necessario per conto di un miniport pseudo-SCSI, inclusi gli accessi del Registro di sistema durante l'inizializzazione, tutte le allocazioni delle risorse e degli oggetti, la sincronizzazione, il presiing dei trasferimenti richiesti per soddisfare le funzionalità del dispositivo del miniport e riprovare le richieste.
Per informazioni più dettagliate sugli SRB, vedere informazioni di riferimento sull'architettura del driver Kernel-Mode. Per informazioni specifiche sui tipi di dispositivo sui CDB, consultare i set di comandi appropriati negli standard INCITS SCSI-3.