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 de controlador de puerto SCSI y de miniporte SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar el del controlador storport de y modelos de controlador de 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. Establezca 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 tamaño de(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 tanto para la entrada como para la salida.

Reserved

Reservado. Establezca 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 de 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. Establézcalo 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 presente, 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 presente, 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.

Observaciones

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 obtener un equivalente almacenado en búfer doble 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 SCSI_PASS_THROUGH_DIRECT32_EX como el tipo de datos de solicitud al controlar una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX desde un proceso de 32 bits.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 8.
encabezado de 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