Compartir a través de


estructura SCSI_PASS_THROUGH_EX (ntddscsi.h)

La estructura SCSI_PASS_THROUGH_EX se usa junto con una solicitud de IOCTL_SCSI_PASS_THROUGH_EX para indicar al controlador de puerto que envíe un comando SCSI incrustado al dispositivo de destino. SCSI_PASS_THROUGH_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, use el controlador Storport y los modelos de controlador de miniport storport .

Sintaxis

typedef struct _SCSI_PASS_THROUGH_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;
  ULONG_PTR DataOutBufferOffset;
  ULONG_PTR DataInBufferOffset;
  UCHAR     Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_EX, *PSCSI_PASS_THROUGH_EX;

Miembros

Version

Versión de esta estructura. Establecer en 0.

Length

Tamaño de esta estructura, en bytes. Establézcalo en sizeof(SCSI_PASS_THROUGH_EX).

CdbLength

Tamaño del bloque del descriptor de comandos SCSI en Cdb, en bytes.

StorAddressLength

Longitud, en bytes, de la estructura de direcciones del dispositivo de almacenamiento en el desplazamiento de StorAddressOffset después de esta estructura.

ScsiStatus

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

SenseInfoLength

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

DataDirection

Indica si el comando SCSI leerá o escribirá datos. Este campo debe ser uno de los siguientes valores:

Valor Significado
SCSI_IOCTL_DATA_OUT Escriba datos en el dispositivo.
SCSI_IOCTL_DATA_IN Lee datos del 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 del dispositivo de almacenamiento 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.

DataOutBufferOffset

Contiene un desplazamiento desde el principio de esta estructura hasta el búfer de datos de salida. El desplazamiento debe respetar los requisitos de alineación de datos del dispositivo.

DataInBufferOffset

Contiene un desplazamiento desde el principio de esta estructura hasta el búfer de datos de entrada. El desplazamiento debe respetar los requisitos de alineación de datos del dispositivo.

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_EX se usa con el código de control IOCTL_SCSI_PASS_THROUGH_EX , que es una solicitud de control de dispositivo almacenado en búfer. Para omitir el almacenamiento en búfer en la memoria del sistema, los autores de llamadas deben usar IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. Al controlar una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX , el sistema bloquea el búfer en la memoria del usuario y el dispositivo accede directamente a esta memoria.

Nota

Los controladores que se ejecutan en una versión de 64 bits de Windows deben usar la estructura de SCSI_PASS_THROUGH32_EX como tipo de datos de solicitud al controlar una solicitud de IOCTL_SCSI_PASS_THROUGH_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

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH