Condividi tramite


Gestione delle richieste di Pass-Through SCSI

Un driver di classe che genera una richiesta di IOCTL_SCSI_PASS_THROUGH o una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT è responsabile per quanto segue:

  • Impostazione della lunghezza del buffer utente in Parameters.DeviceIoControl.InputBufferLength su almeno sizeof(SCSI_PASS_THROUGH) o sizeof(SCSI_PASS_THROUGH_DIRECT)

  • Configurazione della posizione dello stack di I/O del driver della porta di archiviazione come di consueto

  • Impostando MinorFunction in IRP su IRP_MJ_DEVICE_CONTROL, che contrassegna la richiesta come elaborata da un driver di classe di archiviazione.

Quando viene ricevuta una richiesta di IOCTL_SCSI_PASS_THROUGH o IOCTL_SCSI_PASS_THROUGH_DIRECT da un driver di livello superiore, la routine DispatchDeviceControl di un driver di classe di archiviazione è responsabile della verifica della validità del comando SCSI incorporato (CDB) e, se il comando è valido per il dispositivo, inviando la richiesta al driver della porta di archiviazione.

Se il percorso dello stack I/O del driver di porta per un IOCTL_SCSI_PASS_THROUGH o IOCTL_SCSI_PASS_THROUGH_DIRECT richiesta non ha il relativo campo MinorFunction impostato con IRP_MJ_DEVICE_CONTROL, il driver di porta presuppone che la richiesta venga direttamente da un'applicazione e che non esista alcun driver di classe per il tipo di dispositivo di destinazione. Si tratta di un errore dell'applicazione per inviare una richiesta di questo tipo direttamente al driver di porta per un dispositivo che è stato richiesto da un driver di classe di archiviazione.

Il driver della porta non controlla la validità del comando SCSI incorporato in una richiesta pass-through.