Compartir a través de


estructura SCSI_PASS_THROUGH_DIRECT_EX (ntddscsi.h)

La estructura SCSI_PASS_THROUGH_DIRECT_EX se usa junto con una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX para indicar al controlador de puerto que envíe un comando SCSI incrustado al dispositivo de destino. SCSI_PASS_THROUGH_DIRECT_EX puede contener transferencias de datos bidireccionales y un bloque de datos de comando de longitud variable.   

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

Miembros

Version

Versión de esta estructura. Establecer en 0.

Length

Tamaño de esta estructura. Establezca en sizeof(SCSI_PASS_THROUGH_DIRECT_EX).

CdbLength

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

StorAddressLength

Longitud de la estructura de direcciones del dispositivo de almacenamiento en el desplazamiento de StorAddressOffset después de esta estructura. Se establece en sizeof(STOR_ADDR_BTL8).

ScsiStatus

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

SenseInfoLength

Indica el tamaño en bytes del búfer de detección de solicitudes. Este miembro es opcional y se puede establecer en 0.

DataDirection

Este campo debe tener uno de estos 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.
SCSI_IOCTL_DATA_BIDIRECTIONAL Los datos son válidos para la entrada y la salida.

Reserved

Reservado. Establecer en 0.

TimeOutValue

Indica el intervalo en segundos que la solicitud puede ejecutarse antes de que el controlador de puerto considere que ha agotado el tiempo de espera.

StorAddressOffset

Ubicación de la estructura de direcciones STOR_ADDR_BTL8 del dispositivo de destino, en bytes, desde el principio de esta estructura.

SenseInfoOffset

Desfase desde el principio de esta estructura hasta el búfer de detección de solicitudes. Establezca en 0 si no hay ningún búfer de detección de solicitudes presente.

DataOutTransferLength

Indica el tamaño en bytes del búfer de datos de salida. Muchos dispositivos transfieren fragmentos de datos de longitud predefinida. El valor de DataOutTransferLength debe ser un múltiplo entero de esta longitud mínima predefinida 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. Si no hay ningún búfer de datos de salida, este miembro se establece en 0.

DataInTransferLength

Indica el tamaño en bytes del búfer de datos de entrada. Muchos dispositivos transfieren fragmentos de datos de longitud predefinida. El valor de DataInTransferLength debe ser un múltiplo entero de esta longitud mínima predefinida 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. Si no hay ningún búfer de datos de entrada, este miembro se establece en 0.

DataOutBuffer

Puntero a un búfer de datos de salida.

DataInBuffer

Puntero a un búfer de datos de entrada.

Cdb[ANYSIZE_ARRAY]

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

Comentarios

La estructura SCSI_PASS_THROUGH_DIRECT_EX se usa con IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. 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_EX y SCSI_PASS_THROUGH_EX.

Nota

Los controladores que se ejecutan en una versión de 64 bits de Windows deben usar la estructura de SCSI_PASS_THROUGH_DIRECT32_EX como tipo de datos de solicitud al controlar una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX desde un proceso de 32 bits.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.
Encabezado ntddscsi.h (incluya Ntddscsi.h)

Consulte también

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT

STOR_ADDR_BTL8