Condividi tramite


struttura SCSI_PASS_THROUGH (ntddscsi.h)

La struttura SCSI_PASS_THROUGH viene usata insieme a una richiesta di IOCTL_SCSI_PASS_THROUGH per indicare al driver di 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 {
  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;

Membri

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

Questo campo deve avere uno dei tre valori seguenti:

#######

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 in cui la richiesta può essere eseguita prima che il driver della porta consideri il timeout.

DataBufferOffset

Contiene un offset dall'inizio di questa struttura al buffer di dati. L'offset deve rispettare i requisiti di allineamento dei dati del dispositivo.

SenseInfoOffset

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 viene usata con IOCTL_SCSI_PASS_THROUGH, 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. 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 a membro di SrbFlags di SCSI_REQUEST_BLOCK.

Fabbisogno

Requisito Valore
intestazione ntddscsi.h (include Ntddscsi.h)

Vedere anche

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH_DIRECT

SCSI_REQUEST_BLOCK