Condividi tramite


Modello di I/O delle porte SCSI

Il driver porta SCSI comunica con il driver miniport tramite una serie di puntatori alle routine di callback del driver miniport nella tabella dispatch e nell'oggetto driver. Il driver miniport chiama ScsiPortInitialize dalla routine DriverEntry per inizializzare la tabella dispatch e l'oggetto driver della porta SCSI con questi puntatori di callback. Un puntatore di callback di questo tipo è il punto di ingresso per la routine di I/O di avvio del driver miniport usata per elaborare le richieste di I/O. Il driver di porta assegna questo puntatore al membro DriverStartIo dell'oggetto driver.

Ogni volta che la porta SCSI riceve una richiesta di I/O da un driver di livello superiore, accoda la richiesta in una coda interna. Per altre informazioni sulle code interne della porta SCSI, vedere Gestione code del driver della porta SCSI.

Quando il dispositivo di destinazione è pronto per ricevere la richiesta di I/O successiva, la porta SCSI chiama IoStartPacket, che a sua volta chiama la routine di callback di I/O di avvio del driver miniport archiviata in DriverObject-DriverStartIo>. Per informazioni sull'operazione e sulle caratteristiche necessarie della routine di I/O di avvio del driver miniport, vedere Routine HwScsiStartIo del driver miniport SCSI.

La porta SCSI genera l'IRQL del processore prima di chiamare la routine di I/O di avvio del driver miniport, per mascherare gli interrupt e garantire che la routine di I/O di avvio abbia sincronizzato l'accesso alle strutture critiche del sistema operativo e del driver.

Mentre il flusso dei pacchetti di richiesta di I/O tra un driver di classe di archiviazione e il driver porta SCSI è asincrono, il flusso dei pacchetti di richiesta di I/O tra il driver della porta SCSI e il dispositivo di destinazione è sincrono. La porta SCSI usa un sistema di accodamento interno che consente ai driver di classe di inviare nuove richieste di I/O alla porta SCSI prima del completamento delle richieste di I/O precedenti. Tuttavia, la porta SCSI non invia la richiesta di I/O successiva al dispositivo di destinazione finché non riceve una notifica dal driver miniport che il driver miniport è pronto per ricevere la richiesta di I/O successiva. Il driver miniport notifica la porta SCSI effettuando una chiamata alla routine della libreria ScsiPortNotification .

Il driver Storport offre un modello di I/O più flessibile, in particolare per quanto riguarda la maschera di interrupt. Per informazioni sulle differenze tra il modello di I/O Storport e il modello di I/O delle porte SCSI, vedere Modello di I/O storport.