struttura ATA_PASS_THROUGH_DIRECT (ntddscsi.h)
La struttura ATA_PASS_THROUGH_DIRECT viene usata insieme a una richiesta di IOCTL_ATA_PASS_THROUGH_DIRECT per indicare al driver di porta di inviare un comando ATA incorporato al dispositivo di destinazione.
Sintassi
typedef struct _ATA_PASS_THROUGH_DIRECT {
USHORT Length;
USHORT AtaFlags;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR ReservedAsUchar;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG ReservedAsUlong;
PVOID DataBuffer;
UCHAR PreviousTaskFile[8];
UCHAR CurrentTaskFile[8];
} ATA_PASS_THROUGH_DIRECT, *PATA_PASS_THROUGH_DIRECT;
Members
Length
Specifica la lunghezza in byte della struttura ATA_PASS_THROUGH_DIRECT.
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 nella tabella seguente.
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_DIRECT 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 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 che il driver di porta specifico del sistema operativo determini il timeout della richiesta.
ReservedAsUlong
Riservato per utilizzi futuri.
DataBuffer
Puntatore al buffer di dati.
PreviousTaskFile[8]
Specifica il contenuto del registro del file dell'attività di input 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. In input, i valori della matrice in CurrentTaskFile eseguono il mapping ai registri di input nel modo seguente.
Byte | Registro di input |
---|---|
0 | Registrazione funzionalità |
1 | Registro del conteggio dei settori |
2 | Registro numeri settore |
3 | Cilindro basso registro |
4 | Registro alto cilindro |
5 | Registrazione dispositivo/intestazione |
6 | Registra comandi |
7 | Riservato |
Al termine IOCTL_ATA_PASS_THROUGH_DIRECT , 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 | Registro errori |
1 | Registro del conteggio dei settori |
2 | Registro numeri settore |
3 | Cilindro basso registro |
4 | Registro alto cilindro |
5 | Registrazione dispositivo/intestazione |
6 | Registro di stato |
7 | Riservato |
Commenti
La struttura ATA_PASS_THROUGH_DIRECT viene utilizzata con IOCTL_ATA_PASS_THROUGH_DIRECT. Con questa richiesta, il sistema blocca il buffer nella memoria utente e il dispositivo accede direttamente a questa memoria. Per un equivalente a doppio buffer di questa richiesta di controllo del dispositivo, vedere IOCTL_ATA_PASS_THROUGH e ATA_PASS_THROUGH_EX.
Requisiti
Requisito | Valore |
---|---|
Intestazione | ntddscsi.h (include Ntddscsi.h) |