estructura SCSI_PASS_THROUGH (ntddscsi.h)
La estructura SCSI_PASS_THROUGH se usa junto con una solicitud de IOCTL_SCSI_PASS_THROUGH para indicar al controlador de puerto que envíe un comando SCSI incrustado al dispositivo de destino.
Sintaxis
typedef struct _SCSI_PASS_THROUGH {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG_PTR DataBufferOffset;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
Miembros
Length
Contiene el valor de sizeof(SCSI_PASS_THROUGH).
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
Este campo debe tener uno de tres valores:
#######
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 considere que ha agotado el tiempo de espera.
DataBufferOffset
Contiene un desplazamiento desde el principio de esta estructura hasta el búfer de datos. El desplazamiento debe respetar los requisitos de alineación de datos del dispositivo.
SenseInfoOffset
Desfase 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 se usa con IOCTL_SCSI_PASS_THROUGH, 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. Al controlar una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT, el sistema bloquea el búfer en la memoria del usuario y el dispositivo accede directamente a esta memoria.
Los miembros de SCSI_PASS_THROUGH 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) |