Compartilhar via


ATA_PASS_THROUGH_EX estrutura (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 Leia os 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 DMA.
ATA_FLAGS_NO_MULTIPLE Ler somente setor único.

PathId

Contém um inteiro que indica a porta IDE ou o barramento 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 de 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 subexecuçã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 de 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 no CurrentTaskFile mapeiam 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ída, 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 do 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

Observações

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 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 (include Ntddscsi.h)

Consulte também

ATA_PASS_THROUGH_DIRECT

IOCTL_ATA_PASS_THROUGH

IOCTL_ATA_PASS_THROUGH_DIRECT