struttura FILE_ID_64_EXTD_BOTH_DIR_INFORMATION (ntifs.h)
La struttura FILE_ID_64_EXTD_BOTH_DIR_INFORMATION viene usata per eseguire query sulle informazioni sul numero di riferimento del file a 64 bit per i file in una directory.
Sintassi
typedef struct _FILE_ID_64_EXTD_BOTH_DIR_INFORMATION {
ULONG NextEntryOffset;
ULONG FileIndex;
LARGE_INTEGER CreationTime;
LARGE_INTEGER LastAccessTime;
LARGE_INTEGER LastWriteTime;
LARGE_INTEGER ChangeTime;
LARGE_INTEGER EndOfFile;
LARGE_INTEGER AllocationSize;
ULONG FileAttributes;
ULONG FileNameLength;
ULONG EaSize;
ULONG ReparsePointTag;
LARGE_INTEGER FileId;
CCHAR ShortNameLength;
WCHAR ShortName[12];
WCHAR FileName[1];
} FILE_ID_64_EXTD_BOTH_DIR_INFORMATION, *PFILE_ID_64_EXTD_BOTH_DIR_INFORMATION;
Membri
NextEntryOffset
Offset di byte della voce FILE_ID_64_EXTD_BOTH_DIR_INFORMATION successiva, se in un buffer sono presenti più voci. Questo membro è zero se nessun'altra voce segue questa.
FileIndex
Offset di byte del file all'interno della directory padre. Questo membro non è definito per i file system, ad esempio NTFS, in cui la posizione di un file all'interno della directory padre non è fissa e può essere modificata in qualsiasi momento per mantenere l'ordinamento.
CreationTime
Ora di creazione del file.
LastAccessTime
Ultima volta che è stato eseguito l'accesso al file.
LastWriteTime
L'ultima volta che le informazioni sono state scritte nel file.
ChangeTime
Ora dell'ultima modifica del file.
EndOfFile
Nuova posizione assoluta di fine del file come offset di byte dall'inizio del file. EndOfFile specifica l'offset di byte alla fine del file. Poiché questo valore è in base zero, si riferisce effettivamente al primo byte libero nel file. In altre parole, EndOfFile è l'offset al byte immediatamente successivo all'ultimo byte valido nel file.
AllocationSize
Dimensioni di allocazione dei file, in byte. In genere, questo valore è un multiplo delle dimensioni del settore o del cluster del dispositivo fisico sottostante.
FileAttributes
Attributi di file, che possono essere qualsiasi combinazione valida dei seguenti elementi:
- FILE_ATTRIBUTE_READONLY
- FILE_ATTRIBUTE_HIDDEN
- FILE_ATTRIBUTE_SYSTEM
- FILE_ATTRIBUTE_DIRECTORY
- FILE_ATTRIBUTE_ARCHIVE
- FILE_ATTRIBUTE_NORMAL
- FILE_ATTRIBUTE_TEMPORARY
- FILE_ATTRIBUTE_COMPRESSED
FileNameLength
Specifica la lunghezza della stringa del nome file.
EaSize
Lunghezza combinata, in byte, degli attributi estesi (EA) per il file.
ReparsePointTag
Valore del tag per il reparse point.
FileId
Numero di riferimento del file a 64 bit per il file. Questo numero viene generato e assegnato al file dal file system.
ShortNameLength
Specifica la lunghezza della stringa del nome file breve.
ShortName[12]
Stringa Unicode contenente il nome breve (8.3) per il file.
FileName[1]
Specifica il primo carattere della stringa del nome file. Questo è seguito in memoria dal resto della stringa.
Osservazioni
Queste informazioni possono essere sottoposte a query in uno dei modi seguenti:
Chiamare ZwQueryDirectoryFile, passando FileId64ExtdBothDirectoryInformation come valore di FileInformationClass e passando un buffer allocato FILE_ID_64_EXTD_BOTH_DIR_INFORMATION-structured come valore di FileInformation.
Creare un IRP con il codice della funzione principale IRP_MJ_DIRECTORY_CONTROL e il codice della funzione secondaria IRP_MN_QUERY_DIRECTORY.
Non sono necessari diritti di accesso specifici per eseguire query su queste informazioni.
I numeri di riferimento dei file, detti anche ID file, sono garantiti come univoci solo all'interno di un file system statico. Non è garantito che siano univoci nel tempo, perché i file system sono liberi di riutilizzarli. Né sono garantiti di rimanere costanti. Ad esempio, il file system FAT genera il numero di riferimento del file per un file dall'offset di byte del record di voce della directory del file (DIRENT) sul disco. La deframmentazione può modificare questo offset di byte. Pertanto, un numero di riferimento file FAT può cambiare nel tempo.
Tutte le date e le ore sono in formato di sistema assoluto. Il tempo di sistema assoluto è il numero di intervalli di 100 nanosecondi dall'inizio dell'anno 1601.
Questa struttura deve essere allineata su un limite LONGLONG (8 byte). Se un buffer contiene due o più di queste strutture, il NextEntryOffset valore in ogni voce, tranne l'ultimo, cade su un limite di 8 byte.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 11, versione 23H2 |
intestazione |
ntifs.h |