Condividi tramite


struttura SCSI_PASS_THROUGH_DIRECT_EX (ntddscsi.h)

La struttura SCSI_PASS_THROUGH_DIRECT_EX viene usata insieme a una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT_EX per indicare al driver di porta di inviare un comando SCSI incorporato al dispositivo di destinazione. SCSI_PASS_THROUGH_DIRECT_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. È invece consigliabile usare driver Storport e modelli di driver miniport Storport.

Sintassi

typedef struct _SCSI_PASS_THROUGH_DIRECT_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;
  VOID  *DataOutBuffer;
  VOID  *DataInBuffer;
  UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_DIRECT_EX, *PSCSI_PASS_THROUGH_DIRECT_EX;

Membri

Version

Versione di questa struttura. Impostare su 0.

Length

Dimensione di questa struttura. Impostare su sizeof(SCSI_PASS_THROUGH_DIRECT_EX).

CdbLength

Indica le dimensioni in byte del blocco descrittore del comando SCSI in Cdb.

StorAddressLength

Lunghezza della struttura di indirizzi del dispositivo di archiviazione in corrispondenza dell'offset di StorAddressOffset dopo questa struttura. Questa opzione è impostata su sizeof(STOR_ADDR_BTL8).

ScsiStatus

Segnala lo stato SCSI restituito dall'HBA o dal dispositivo di destinazione.

SenseInfoLength

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

DataDirection

Questo campo deve avere uno dei 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 viene trasferito.
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 degli indirizzi STOR_ADDR_BTL8 del dispositivo 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.

DataOutBuffer

Puntatore a un buffer di dati di output.

DataInBuffer

Puntatore a un buffer di dati di input.

Cdb[ANYSIZE_ARRAY]

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

Osservazioni

La struttura SCSI_PASS_THROUGH_DIRECT_EX viene utilizzata con IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. 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_EX e SCSI_PASS_THROUGH_EX.

Nota

I driver in esecuzione in una versione a 64 bit di Windows devono usare la struttura SCSI_PASS_THROUGH_DIRECT32_EX come tipo di dati della richiesta quando si gestisce una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT_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)

Vedere anche

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT

STOR_ADDR_BTL8