ATA_PASS_THROUGH_DIRECT estructura (ntddscsi.h)
La estructura ATA_PASS_THROUGH_DIRECT se usa junto con una solicitud de IOCTL_ATA_PASS_THROUGH_DIRECT para indicar al controlador de puerto que envíe un comando ATA incrustado al dispositivo de destino.
Sintaxis
typedef struct _ATA_PASS_THROUGH_DIRECT {
USHORT Length;
USHORT AtaFlags;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR ReservedAsUchar;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG ReservedAsUlong;
PVOID DataBuffer;
UCHAR PreviousTaskFile[8];
UCHAR CurrentTaskFile[8];
} ATA_PASS_THROUGH_DIRECT, *PATA_PASS_THROUGH_DIRECT;
Miembros
Length
Especifica la longitud en bytes de la estructura ATA_PASS_THROUGH_DIRECT.
AtaFlags
Indica la dirección de la transferencia de datos y especifica el tipo de operación que se va a realizar. El valor de este miembro debe ser una combinación de las marcas de la tabla siguiente.
Marcas de ATA | Significado |
---|---|
ATA_FLAGS_DRDY_REQUIRED | Espere el estado DRDY del dispositivo antes de enviar el comando al dispositivo. |
ATA_FLAGS_DATA_IN | Lee datos del dispositivo. |
ATA_FLAGS_DATA_OUT | Escriba datos en el dispositivo. |
ATA_FLAGS_48BIT_COMMAND | El comando ATA que se va a enviar usa el conjunto de características de dirección de bloque lógico (LBA) de 48 bits. Cuando se establece esta marca, el contenido del miembro PreviousTaskFile de la estructura ATA_PASS_THROUGH_DIRECT debe ser válido. |
ATA_FLAGS_USE_DMA | Establezca el modo de transferencia en DMA. |
ATA_FLAGS_NO_MULTIPLE | Solo lectura de un solo sector. |
PathId
Contiene un entero que indica el puerto o bus del IDE para la solicitud. El controlador de puerto establece este valor.
TargetId
Contiene un entero que indica el dispositivo de destino en el bus. El controlador de puerto establece este valor.
Lun
Indica el número de unidad lógica del dispositivo. El controlador de puerto establece este valor.
ReservedAsUchar
Reservado para uso futuro.
DataTransferLength
Indica el tamaño, en bytes, del búfer de datos. 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 número de segundos permitidos para que la solicitud se ejecute antes de que el controlador de puerto específico del sistema operativo determine que la solicitud ha agotado el tiempo de espera.
ReservedAsUlong
Reservado para uso futuro.
DataBuffer
Puntero al búfer de datos.
PreviousTaskFile[8]
Especifica el contenido del registro del archivo de tarea de entrada antes del comando de paso a través actual. Este miembro no se usa cuando no se establece la marca ATA_FLAGS_48BIT_COMMAND.
CurrentTaskFile[8]
Especifica el contenido del registro del archivo de tareas tanto en la entrada como en la salida. En la entrada, los valores de matriz de CurrentTaskFile se asignan a los registros de entrada de la siguiente manera.
Byte | Registro de entrada |
---|---|
0 | Registro de características |
1 | Registro de recuento de sectores |
2 | Registro de números de sector |
3 | Registro bajo cilindro |
4 | Registro alto cilindro |
5 | Registro de dispositivo/cabeza |
6 | Registro de comandos |
7 | Reservado |
Cuando se completa IOCTL_ATA_PASS_THROUGH_DIRECT , el controlador de puerto actualiza CurrentTaskFile con los valores presentes en los registros de salida del dispositivo al finalizar el comando incrustado. Los valores de matriz de CurrentTaskFile corresponden a los siguientes registros de salida del archivo de tareas.
Byte | Registro de salida |
---|---|
0 | Registro de errores |
1 | Registro de recuento de sectores |
2 | Registro de números de sector |
3 | Registro bajo cilindro |
4 | Registro alto cilindro |
5 | Registro de dispositivo/cabeza |
6 | Registro de estado |
7 | Reservado |
Comentarios
La estructura ATA_PASS_THROUGH_DIRECT se usa con IOCTL_ATA_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 obtener un equivalente de doble búfer de esta solicitud de control de dispositivo, consulte IOCTL_ATA_PASS_THROUGH y ATA_PASS_THROUGH_EX.
Requisitos
Requisito | Valor |
---|---|
Header | ntddscsi.h (incluya Ntddscsi.h) |