SCSI_PASS_THROUGH_EX struttura (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 dati a lunghezza variabile.

Nota

I modelli di driver di porta SCSI e miniport SCSI possono essere modificati o non disponibili in futuro. Usare invece il driver Storport e i 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;

Members

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 degli 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

Dimensioni in byte del buffer del senso della richiesta. Questo membro è facoltativo e può essere impostato su 0.

DataDirection

Indica se il comando SCSI leggerà o scriverà dati. Questo campo deve essere uno dei valori seguenti:

Valore Significato
SCSI_IOCTL_DATA_OUT Scrivere dati nel dispositivo.
SCSI_IOCTL_DATA_IN Leggere 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 del timeout del driver di porta.

StorAddressOffset

Posizione della struttura degli indirizzi del dispositivo di archiviazione di destinazione, in byte, dall'inizio di questa struttura.

SenseInfoOffset

Offset dall'inizio di questa struttura al buffer di senso della richiesta. Impostare su 0 se non è presente alcun buffer di senso richiesta.

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 predefinita, minima specificata dal dispositivo. Se si verifica un'esecuzione, 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 predefinita minima specificata dal dispositivo. Se si verifica un'esecuzione, 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 dei dati di input. L'offset deve rispettare i requisiti di allineamento dei dati del dispositivo.

Cdb[ANYSIZE_ARRAY]

Specifica il blocco descrittore del comando SCSI da inviare al dispositivo di destinazione.

Commenti

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 con 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 durante la gestione di una richiesta di IOCTL_SCSI_PASS_THROUGH_EX da un processo a 32 bit.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Intestazione ntddscsi.h (include Ntddscsi.h)

Vedi anche

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH