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)

Consulte también

ATA_PASS_THROUGH_EX

IOCTL_ATA_PASS_THROUGH

IOCTL_ATA_PASS_THROUGH_DIRECT