ATA_PASS_THROUGH_EX struttura (ntddscsi.h)

La struttura ATA_PASS_THROUGH_EX viene usata insieme a una richiesta di IOCTL_ATA_PASS_THROUGH per indicare al driver della porta di inviare un comando ATA incorporato al dispositivo di destinazione.

Sintassi

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;

Members

Length

Specifica la lunghezza in byte della struttura ATA_PASS_THROUGH_EX.

AtaFlags

Indica la direzione del trasferimento dei dati e specifica il tipo di operazione da eseguire. Il valore di questo membro deve essere una combinazione dei flag seguenti:

Flag ATA Significato
ATA_FLAGS_DRDY_REQUIRED Attendere lo stato drDY dal dispositivo prima di inviare il comando al dispositivo.
ATA_FLAGS_DATA_IN Leggere i dati dal dispositivo.
ATA_FLAGS_DATA_OUT Scrivere dati nel dispositivo.
ATA_FLAGS_48BIT_COMMAND Il comando ATA da inviare usa il set di funzionalità di blocco logico a 48 bit (LBA). Quando questo flag è impostato, il contenuto del membro PreviousTaskFile nella struttura ATA_PASS_THROUGH_EX deve essere valido.
ATA_FLAGS_USE_DMA Impostare la modalità di trasferimento su DMA.
ATA_FLAGS_NO_MULTIPLE Leggere solo il settore singolo.

PathId

Contiene un intero che indica la porta IDE o il bus per la richiesta. Questo valore viene impostato dal driver della porta.

TargetId

Contiene un intero che indica il dispositivo di destinazione nel bus. Questo valore viene impostato dal driver della porta.

Lun

Indica il numero di unità logica del dispositivo. Questo valore viene impostato dal driver della porta.

ReservedAsUchar

Riservato per utilizzi futuri.

DataTransferLength

Indica le dimensioni, in byte, del buffer di dati. Se si verifica una sottorun, il driver miniport deve aggiornare questo membro al numero di byte effettivamente trasferiti.

TimeOutValue

Indica il numero di secondi consentiti per l'esecuzione della richiesta prima del driver di porta specifico del sistema operativo determina il timeout della richiesta.

ReservedAsUlong

Riservato per utilizzi futuri.

DataBufferOffset

Specifica l'offset, in byte, dall'inizio di questa struttura al buffer dei dati.

PreviousTaskFile[8]

Specifica il contenuto del registro di input del file di attività prima del comando pass-through corrente. Questo membro non viene usato quando il flag di ATA_FLAGS_48BIT_COMMAND non è impostato.

CurrentTaskFile[8]

Specifica il contenuto del registro del file di attività sia nell'input che nell'output. In input, i valori della matrice in CurrentTaskFile mappano ai registri di input del file di attività nel modo seguente.

Byte Registro di input
0 Registrazione delle funzionalità
1 Registro dei conteggi dei settori
2 Registro dei numeri di settore
3 Registro basso del cilindro
4 Registro alto del cilindro
5 Registro dispositivo/head
6 Registro comandi
7 Riservato
 

Al termine della IOCTL_ATA_PASS_THROUGH , il driver di porta aggiorna CurrentTaskFile con i valori presenti nei registri di output del dispositivo al completamento del comando incorporato. I valori della matrice in CurrentTaskFile corrispondono ai registri di output del file di attività seguenti.

Byte Registro di output
0 Registrazione errori
1 Registro dei conteggi dei settori
2 Registro dei numeri di settore
3 Registro basso del cilindro
4 Registro alto del cilindro
5 Registro dispositivo/head
6 Registrazione dello stato
7 Riservato

Commenti

IOCTL_ATA_PASS_THROUGH è una richiesta di controllo del dispositivo con buffer. Per ignorare il buffering nella memoria di sistema, i chiamanti devono usare IOCTL_ATA_PASS_THROUGH_DIRECT e ATA_PASS_THROUGH_DIRECT. Quando si gestisce una richiesta di IOCTL_ATA_PASS_THROUGH_DIRECT, il sistema blocca il buffer nella memoria utente e il dispositivo accede direttamente a questa memoria.

Requisiti

Requisito Valore
Intestazione ntddscsi.h (include Ntddscsi.h)

Vedi anche

ATA_PASS_THROUGH_DIRECT

IOCTL_ATA_PASS_THROUGH

IOCTL_ATA_PASS_THROUGH_DIRECT