struttura SCSI_PASS_THROUGH_EX (ntddscsi.h)
La struttura SCSI_PASS_THROUGH_EX viene usata insieme a una richiesta di IOCTL_SCSI_PASS_THROUGH_EX per indicare al driver della porta di inviare un comando SCSI incorporato al dispositivo di destinazione. SCSI_PASS_THROUGH_EX può contenere trasferimenti di dati bidirezionali e un blocco di dati a lunghezza variabile.
Nota
I modelli di driver porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. Usare invece driver Storport e modelli di driver miniport Storport.
Sintassi
typedef struct _SCSI_PASS_THROUGH_EX {
ULONG Version;
ULONG Length;
ULONG CdbLength;
ULONG StorAddressLength;
UCHAR ScsiStatus;
UCHAR SenseInfoLength;
UCHAR DataDirection;
UCHAR Reserved;
ULONG TimeOutValue;
ULONG StorAddressOffset;
ULONG SenseInfoOffset;
ULONG DataOutTransferLength;
ULONG DataInTransferLength;
ULONG_PTR DataOutBufferOffset;
ULONG_PTR DataInBufferOffset;
UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_EX, *PSCSI_PASS_THROUGH_EX;
Membri
Version
Versione di questa struttura. Impostare su 0.
Length
Dimensioni di questa struttura, in byte. Impostare su sizeof(SCSI_PASS_THROUGH_EX)
.
CdbLength
Dimensioni del blocco descrittore del comando SCSI in Cdb, in byte.
StorAddressLength
Lunghezza, in byte, della struttura di indirizzi del dispositivo di archiviazione in corrispondenza dell'offset di StorAddressOffset dopo questa struttura.
ScsiStatus
Segnala lo stato SCSI restituito dall'HBA o dal dispositivo di destinazione.
SenseInfoLength
Dimensione in byte del buffer del senso della richiesta. Questo membro è facoltativo e può essere impostato su 0.
DataDirection
Indica se il comando SCSI legge o scrive i dati. Questo campo deve essere uno dei valori seguenti:
Valore | Significato |
---|---|
SCSI_IOCTL_DATA_OUT | Scrivere dati nel dispositivo. |
SCSI_IOCTL_DATA_IN | Legge i dati dal dispositivo. |
SCSI_IOCTL_DATA_UNSPECIFIED | Non vengono trasferiti dati. |
SCSI_IOCTL_DATA_BIDIRECTIONAL | I dati sono validi sia per l'input che per l'output. |
Reserved
Riservato. Impostare su 0.
TimeOutValue
Indica l'intervallo in secondi in cui la richiesta può essere eseguita prima che il driver della porta consideri il timeout.
StorAddressOffset
Posizione della struttura di indirizzi del dispositivo di archiviazione di destinazione, in byte, dall'inizio di questa struttura.
SenseInfoOffset
Offset dall'inizio di questa struttura al buffer del senso della richiesta. Impostare su 0 se non è presente alcun buffer di tipo request-sense.
DataOutTransferLength
Indica le dimensioni in byte del buffer dei dati di output. Molti dispositivi trasferisce blocchi di dati di lunghezza predefinita. Il valore in DataOutTransferLength 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. Se non è presente alcun buffer di dati di output, questo membro è impostato su 0.
DataInTransferLength
Indica le dimensioni in byte del buffer di dati di input. Molti dispositivi trasferisce blocchi di dati di lunghezza predefinita. Il valore in DataInTransferLength 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. Se non è presente alcun buffer di dati di input, questo membro è impostato su 0.
DataOutBufferOffset
Contiene un offset dall'inizio di questa struttura al buffer dei dati di output. L'offset deve rispettare i requisiti di allineamento dei dati del dispositivo.
DataInBufferOffset
Contiene un offset dall'inizio di questa struttura al buffer di dati di input. L'offset deve rispettare i requisiti di allineamento dei dati del dispositivo.
Cdb[ANYSIZE_ARRAY]
Specifica il blocco del descrittore del comando SCSI da inviare al dispositivo di destinazione.
Osservazioni
La struttura SCSI_PASS_THROUGH_EX viene usata con il codice di controllo IOCTL_SCSI_PASS_THROUGH_EX, ovvero una richiesta di controllo del dispositivo memorizzata nel buffer. Per ignorare il buffering nella memoria di sistema, i chiamanti devono usare IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. Quando si gestisce una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT_EX, il sistema blocca il buffer nella memoria utente e il dispositivo accede direttamente a questa memoria.
Nota
I driver in esecuzione in una versione a 64 bit di Windows devono usare la struttura SCSI_PASS_THROUGH32_EX come tipo di dati della richiesta quando si gestisce una richiesta di IOCTL_SCSI_PASS_THROUGH_EX da un processo a 32 bit.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 8. |
intestazione | ntddscsi.h (include Ntddscsi.h) |