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) |