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) |