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