estructura SCSI_PASS_THROUGH_DIRECT (ntddscsi.h)

La estructura SCSI_PASS_THROUGH_DIRECT se usa junto con una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT para indicar al controlador de puerto que envíe un comando SCSI incrustado al dispositivo de destino.

Nota

Los modelos del controlador de puerto SCSI y del controlador de miniporte SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar el controlador Storport y los modelos de controlador de miniport storport .

Sintaxis

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;

Miembros

Length

Contiene el valor de sizeof(SCSI_PASS_THROUGH_DIRECT).

ScsiStatus

Informa del estado SCSI devuelto por el HBA o el dispositivo de destino.

PathId

Indica el puerto SCSI o el bus de la solicitud.

TargetId

Indica el controlador de destino o el dispositivo en el bus.

Lun

Indica el número de unidad lógica del dispositivo.

CdbLength

Indica el tamaño en bytes del bloque de descriptores de comandos SCSI.

SenseInfoLength

Indica el tamaño en bytes del búfer de detección de solicitudes.

DataIn

Indica si el comando SCSI leerá o escribirá datos. Este campo debe tener uno de tres valores:

Tipo de transferencia de datos Significado
SCSI_IOCTL_DATA_IN Lee datos del dispositivo.
SCSI_IOCTL_DATA_OUT Escriba datos en el dispositivo.
SCSI_IOCTL_DATA_UNSPECIFIED No se transfieren datos.

DataTransferLength

Indica el tamaño en bytes del búfer de datos. Muchos dispositivos transfieren fragmentos de datos de longitud predefinida. El valor de DataTransferLength debe ser un múltiplo entero de esta longitud predefinida y mínima especificada por el dispositivo. Si se produce una ejecución inferior, el controlador de minipuerto debe actualizar este miembro al número de bytes transferidos realmente.

TimeOutValue

Indica el intervalo en segundos que la solicitud puede ejecutarse antes de que el controlador de puerto específico del sistema operativo considere que agota el tiempo de espera.

DataBuffer

Puntero al búfer de datos.

SenseInfoOffset

Contiene un desplazamiento desde el principio de esta estructura hasta el búfer de detección de solicitudes.

Cdb[16]

Especifica el bloque de descriptor de comandos SCSI que se va a enviar al dispositivo de destino.

Comentarios

La estructura SCSI_PASS_THROUGH_DIRECT se usa con IOCTL_SCSI_PASS_THROUGH_DIRECT. Con esta solicitud, el sistema bloquea el búfer en la memoria del usuario y el dispositivo accede directamente a esta memoria. Para ver un equivalente de doble búfer de esta solicitud de control de dispositivo, consulte IOCTL_SCSI_PASS_THROUGH y SCSI_PASS_THROUGH.

Los miembros de SCSI_PASS_THROUGH_DIRECT corresponden aproximadamente a los miembros de una estructura de SCSI_REQUEST_BLOCK . Los valores del miembro DataIn corresponden a las marcas de SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT y SCSI_IOCTL_DATA_UNSPECIFIED asignadas al miembro SrbFlags de SCSI_REQUEST_BLOCK.

Requisitos

Requisito Valor
Header ntddscsi.h (incluya Ntddscsi.h)

Consulte también

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK