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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per