Condividi tramite


struttura SCSI_PASS_THROUGH_DIRECT (ntddscsi.h)

La struttura SCSI_PASS_THROUGH_DIRECT viene usata insieme a una richiesta di IOCTL_SCSI_PASS_THROUGH_DIRECT per indicare al driver della 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_DIRECT {
  USHORT Length;
  UCHAR  ScsiStatus;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  CdbLength;
  UCHAR  SenseInfoLength;
  UCHAR  DataIn;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  PVOID  DataBuffer;
  ULONG  SenseInfoOffset;
  UCHAR  Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;

Membri

Length

Contiene il valore di sizeof(SCSI_PASS_THROUGH_DIRECT).

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

Indica se il comando SCSI legge o scrive i dati. Questo campo deve avere uno dei tre 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 trasferito.

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 che la richiesta può essere eseguita prima che il driver di porta specifico del sistema operativo consideri il timeout.

DataBuffer

Puntatore al buffer di dati.

SenseInfoOffset

Contiene un 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_DIRECT viene utilizzata con IOCTL_SCSI_PASS_THROUGH_DIRECT. 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 e SCSI_PASS_THROUGH.

I membri di SCSI_PASS_THROUGH_DIRECT 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

SCSI_REQUEST_BLOCK