SCSI_PASS_THROUGH struttura (ntddscsi.h)
La struttura SCSI_PASS_THROUGH viene usata insieme a una richiesta di IOCTL_SCSI_PASS_THROUGH per indicare al driver della porta di inviare un comando SCSI incorporato al dispositivo di destinazione.
Sintassi
typedef struct _SCSI_PASS_THROUGH {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG_PTR DataBufferOffset;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
Members
Length
Contiene il valore di sizeof(SCSI_PASS_THROUGH).
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 di destinazione o il dispositivo 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 di senso della richiesta.
DataIn
Questo campo deve avere uno dei tre valori:
#######
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 predefinita minima specificata dal dispositivo. Se si verifica un'esecuzione, il driver miniport deve aggiornare questo membro al numero di byte effettivamente trasferiti.
TimeOutValue
Indica l'intervallo in secondi in cui la richiesta può essere eseguita prima del timeout del driver di porta.
DataBufferOffset
Contiene un offset dall'inizio di questa struttura al buffer dei dati. L'offset deve rispettare i requisiti di allineamento dei dati del dispositivo.
SenseInfoOffset
Offset dall'inizio di questa struttura al buffer di senso della richiesta.
Cdb[16]
Specifica il blocco descrittore del comando SCSI da inviare al dispositivo di destinazione.
Commenti
La struttura SCSI_PASS_THROUGH viene usata con IOCTL_SCSI_PASS_THROUGH, 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. Quando si gestisce una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT, il sistema blocca il buffer nella memoria utente e il dispositivo accede direttamente a questa memoria.
I membri di SCSI_PASS_THROUGH 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 al membro SrbFlags di SCSI_REQUEST_BLOCK.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntddscsi.h (include Ntddscsi.h) |