struttura SCSI_PASS_THROUGH_DIRECT (ntddscsi.h)
La struttura SCSI_PASS_THROUGH_DIRECT viene usata insieme a una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT per indicare al driver della porta di inviare un comando SCSI incorporato al dispositivo di destinazione.
Nota
I modelli di driver porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare driver Storport e modelli di driver miniport Storport.
Sintassi
typedef struct _SCSI_PASS_THROUGH_DIRECT {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
Membri
Length
Contiene il valore di sizeof(SCSI_PASS_THROUGH_DIRECT).
ScsiStatus
Segnala lo stato SCSI restituito dall'HBA o dal dispositivo di destinazione.
PathId
Indica la porta o il bus SCSI per la richiesta.
TargetId
Indica il controller o il dispositivo di destinazione nel bus.
Lun
Indica il numero di unità logica del dispositivo.
CdbLength
Indica le dimensioni in byte del blocco descrittore del comando SCSI.
SenseInfoLength
Indica le dimensioni in byte del buffer del senso della richiesta.
DataIn
Indica se il comando SCSI legge o scrive i dati. Questo campo deve avere uno dei tre valori seguenti:
Tipo di trasferimento dati | Significato |
---|---|
SCSI_IOCTL_DATA_IN | Legge i dati dal dispositivo. |
SCSI_IOCTL_DATA_OUT | Scrivere dati nel dispositivo. |
SCSI_IOCTL_DATA_UNSPECIFIED | Nessun dato trasferito. |
DataTransferLength
Indica le dimensioni in byte del buffer di dati. Molti dispositivi trasferisce blocchi di dati di lunghezza predefinita. Il valore in DataTransferLength deve essere un multiplo integrale di questa lunghezza minima predefinita specificata dal dispositivo. Se si verifica una sottorun, il driver miniport deve aggiornare questo membro al numero di byte effettivamente trasferiti.
TimeOutValue
Indica l'intervallo in secondi che la richiesta può essere eseguita prima che il driver di porta specifico del sistema operativo consideri il timeout.
DataBuffer
Puntatore al buffer di dati.
SenseInfoOffset
Contiene un offset dall'inizio di questa struttura al buffer del senso della richiesta.
Cdb[16]
Specifica il blocco del descrittore del comando SCSI da inviare al dispositivo di destinazione.
Osservazioni
La struttura SCSI_PASS_THROUGH_DIRECT viene utilizzata con IOCTL_SCSI_PASS_THROUGH_DIRECT. Con questa richiesta, il sistema blocca il buffer nella memoria utente e il dispositivo accede direttamente a questa memoria. Per un equivalente con doppio buffer di questa richiesta di controllo del dispositivo, vedere IOCTL_SCSI_PASS_THROUGH e SCSI_PASS_THROUGH.
I membri di SCSI_PASS_THROUGH_DIRECT corrispondono approssimativamente ai membri di una struttura SCSI_REQUEST_BLOCK. I valori del membro DataIn corrispondono ai flag SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT e SCSI_IOCTL_DATA_UNSPECIFIED assegnati a membro di SrbFlags di SCSI_REQUEST_BLOCK.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | ntddscsi.h (include Ntddscsi.h) |