Condividi tramite


struttura ATA_PASS_THROUGH_EX (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;

Membri

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 Legge 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à LBA (Logical Block Address) a 48 bit. 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 Sola lettura di un singolo settore.

PathId

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

TargetId

Contiene un numero 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 uso futuro.

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 che il driver di porta specifico del sistema operativo determini il timeout della richiesta.

ReservedAsUlong

Riservato per uso futuro.

DataBufferOffset

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

PreviousTaskFile[8]

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

CurrentTaskFile[8]

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

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

Al termine IOCTL_ATA_PASS_THROUGH, il driver della 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 degli errori
1 Registro di conteggio dei settori
2 Registro dei numeri di settore
3 Registro basso cilindro
4 Registro a cilindro alto
5 Registrazione del dispositivo/testa
6 Registro di stato
7 Riservato

Osservazioni

IOCTL_ATA_PASS_THROUGH è una richiesta di controllo del dispositivo memorizzata nel 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.

Fabbisogno

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

Vedere anche

ATA_PASS_THROUGH_DIRECT

IOCTL_ATA_PASS_THROUGH

IOCTL_ATA_PASS_THROUGH_DIRECT