Compartilhar via


estrutura ATA_PASS_THROUGH_EX (ntddscsi.h)

A estrutura ATA_PASS_THROUGH_EX é usada em conjunto com uma solicitação IOCTL_ATA_PASS_THROUGH para instruir o driver de porta a enviar um comando do ATA inserido para o dispositivo de destino.

Sintaxe

typedef struct _ATA_PASS_THROUGH_EX {
  USHORT    Length;
  USHORT    AtaFlags;
  UCHAR     PathId;
  UCHAR     TargetId;
  UCHAR     Lun;
  UCHAR     ReservedAsUchar;
  ULONG     DataTransferLength;
  ULONG     TimeOutValue;
  ULONG     ReservedAsUlong;
  ULONG_PTR DataBufferOffset;
  UCHAR     PreviousTaskFile[8];
  UCHAR     CurrentTaskFile[8];
} ATA_PASS_THROUGH_EX, *PATA_PASS_THROUGH_EX;

Membros

Length

Especifica o comprimento em bytes da estrutura ATA_PASS_THROUGH_EX.

AtaFlags

Indica a direção da transferência de dados e especifica o tipo de operação a ser executada. O valor desse membro deve ser uma combinação dos seguintes sinalizadores:

Sinalizadores do ATA Significado
ATA_FLAGS_DRDY_REQUIRED Aguarde o status DRDY do dispositivo antes de enviar o comando para o dispositivo.
ATA_FLAGS_DATA_IN Ler dados do dispositivo.
ATA_FLAGS_DATA_OUT Gravar dados no dispositivo.
ATA_FLAGS_48BIT_COMMAND O comando do ATA a ser enviado usa o conjunto de recursos lba (endereço de bloco lógico) de 48 bits. Quando esse sinalizador é definido, o conteúdo do membro PreviousTaskFile na estrutura ATA_PASS_THROUGH_EX deve ser válido.
ATA_FLAGS_USE_DMA Defina o modo de transferência como AMD.
ATA_FLAGS_NO_MULTIPLE Somente leitura de setor único.

PathId

Contém um inteiro que indica a porta ou o barramento do IDE para a solicitação. Esse valor é definido pelo driver de porta.

TargetId

Contém um inteiro que indica o dispositivo de destino no barramento. Esse valor é definido pelo driver de porta.

Lun

Indica o número da unidade lógica do dispositivo. Esse valor é definido pelo driver de porta.

ReservedAsUchar

Reservado para uso futuro.

DataTransferLength

Indica o tamanho, em bytes, do buffer de dados. Se ocorrer uma subexecutação, o driver de miniporto deverá atualizar esse membro para o número de bytes que foram realmente transferidos.

TimeOutValue

Indica o número de segundos que são permitidos para a solicitação ser executada antes que o driver de porta específico do sistema operacional determine que a solicitação atingiu o tempo limite.

ReservedAsUlong

Reservado para uso futuro.

DataBufferOffset

Especifica o deslocamento, em bytes, desde o início dessa estrutura até o buffer de dados.

PreviousTaskFile[8]

Especifica o conteúdo dos registros de entrada do arquivo de tarefa antes do comando de passagem atual. Esse membro não é usado quando o sinalizador ATA_FLAGS_48BIT_COMMAND não está definido.

CurrentTaskFile[8]

Especifica o conteúdo do registro do arquivo de tarefa na entrada e na saída. Na entrada, os valores de matriz em CurrentTaskFile são mapeados para os registros de entrada do arquivo de tarefa da maneira a seguir.

Byte Registro de Entrada
0 Registro de recursos
1 Registro de contagem de setores
2 Registro de número do setor
3 Registro baixo do cilindro
4 Registro alto do cilindro
5 Registro de dispositivo/cabeçalho
6 Registro de comando
7 Reservado
 

Quando IOCTL_ATA_PASS_THROUGH é concluído, o driver de porta atualiza CurrentTaskFile com os valores presentes nos registros de saída do dispositivo na conclusão do comando inserido. Os valores de matriz em CurrentTaskFile correspondem aos seguintes registros de saída de arquivo de tarefa.

Byte Registro de Saída
0 Registro de erro
1 Registro de contagem de setores
2 Registro de número do setor
3 Registro baixo do cilindro
4 Registro alto do cilindro
5 Registro de dispositivo/cabeçalho
6 Registro de status
7 Reservado

Comentários

IOCTL_ATA_PASS_THROUGH é uma solicitação de controle de dispositivo em buffer. Para ignorar o buffer na memória do sistema, os chamadores devem usar IOCTL_ATA_PASS_THROUGH_DIRECT e ATA_PASS_THROUGH_DIRECT. Ao lidar com uma solicitação de IOCTL_ATA_PASS_THROUGH_DIRECT, o sistema bloqueia o buffer na memória do usuário e o dispositivo acessa essa memória diretamente.

Requisitos

Requisito Valor
Cabeçalho ntddscsi.h (inclua Ntddscsi.h)

Confira também

ATA_PASS_THROUGH_DIRECT

IOCTL_ATA_PASS_THROUGH

IOCTL_ATA_PASS_THROUGH_DIRECT