FILE_ID_BOTH_DIR_INFORMATION Struktur (ntifs.h)
Die FILE_ID_BOTH_DIR_INFORMATION Struktur wird verwendet, um Dateireferenznummerninformationen für die Dateien in einem Verzeichnis abzufragen.
Syntax
typedef struct _FILE_ID_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;
CCHAR ShortNameLength;
WCHAR ShortName[12];
LARGE_INTEGER FileId;
WCHAR FileName[1];
} FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION;
Angehörige
NextEntryOffset
Byte-Offset des nächsten FILE_ID_BOTH_DIR_INFORMATION Eintrags, wenn mehrere Einträge in einem Puffer vorhanden sind. Dieses Element ist null, wenn keine anderen Einträge diesem Element folgen.
FileIndex
Byte-Offset der Datei innerhalb des übergeordneten Verzeichnisses. Dieses Element ist für Dateisysteme, z. B. NTFS, nicht definiert, in dem die Position einer Datei innerhalb des übergeordneten Verzeichnisses nicht behoben ist und jederzeit geändert werden kann, um die Sortierreihenfolge beizubehalten.
CreationTime
Zeitpunkt, zu dem die Datei erstellt wurde.
LastAccessTime
Zeitpunkt des letzten Zugriffs auf die Datei.
LastWriteTime
Zuletzt wurden Informationen in die Datei geschrieben.
ChangeTime
Zeitpunkt der letzten Änderung der Datei.
EndOfFile
Absolute neue End-of-File-Position als Byte-Offset vom Anfang der Datei. EndOfFile- gibt den Byteoffset bis zum Ende der Datei an. Da dieser Wert nullbasiert ist, bezieht er sich tatsächlich auf das erste freie Byte in der Datei. Mit anderen Worten, EndOfFile- ist der Offset auf das Byte unmittelbar nach dem letzten gültigen Byte in der Datei.
AllocationSize
Dateizuordnungsgröße in Byte. In der Regel ist dieser Wert ein Vielfaches des Sektors oder der Clustergröße des zugrunde liegenden physischen Geräts.
FileAttributes
Dateiattribute, die eine beliebige gültige Kombination aus folgendem Sein können:
- 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
Gibt die Länge der Dateinamenzeichenfolge in Bytes an.
EaSize
Kombinierte Länge (in Byte) der erweiterten Attribute (EA) für die Datei.
ShortNameLength
Gibt die Länge der kurzen Dateinamenzeichenfolge an.
ShortName[12]
Unicode-Zeichenfolge mit dem kurzen Namen (8.3) für die Datei.
FileId
Die 8-Byte-Dateireferenznummer für die Datei. Diese Nummer wird generiert und der Datei vom Dateisystem zugewiesen. (Beachten Sie, dass die FileId- nicht mit der 16-Byte-"Dateiobjekt-ID" übereinstimmt, die ntfs für Microsoft Windows 2000 hinzugefügt wurde.)
FileName[1]
Gibt das erste Zeichen der Dateinamenzeichenfolge an. Dies folgt im Arbeitsspeicher durch den Rest der Zeichenfolge.
Bemerkungen
Diese Informationen können auf eine der folgenden Arten abgefragt werden:
Rufen Sie ZwQueryDirectoryFile-auf, und übergeben Sie FileIdBothDirectoryInformationInformation als Wert von FileInformationClass und übergeben Sie einen zugeordneten, FILE_ID_BOTH_DIR_INFORMATION strukturierten Puffer als Wert von FileInformation.
Erstellen Sie ein IRP mit Hauptfunktionscode IRP_MJ_DIRECTORY_CONTROL und Hilfsfunktionscode IRP_MN_QUERY_DIRECTORY.
Zum Abfragen dieser Informationen sind keine spezifischen Zugriffsrechte erforderlich.
Dateireferenznummern, auch als Datei-IDs bezeichnet, sind garantiert nur innerhalb eines statischen Dateisystems eindeutig. Sie sind nicht garantiert im Laufe der Zeit einzigartig, da Dateisysteme sie wiederverwenden können. Sie werden auch nicht garantiert konstant bleiben. Beispielsweise generiert das FAT-Dateisystem die Dateireferenznummer für eine Datei aus dem Byte-Offset des Verzeichniseintragseintrags der Datei (DIRENT) auf dem Datenträger. Defragmentierung kann diesen Byte-Offset ändern. Eine FAT-Dateiverweisnummer kann sich daher im Laufe der Zeit ändern.
Alle Datums- und Uhrzeitangaben befinden sich im absoluten Systemzeitformat. Absolute Systemzeit ist die Anzahl von 100-Nanosekunden-Intervallen seit Beginn des Jahres 1601.
Diese Struktur muss an einer LONGLONG-Grenze (8-Byte) ausgerichtet werden. Wenn ein Puffer zwei oder mehr dieser Strukturen enthält, fällt der NextEntryOffset Wert in jedem Eintrag, mit Ausnahme der letzten, auf eine Grenze von 8 Byte.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ntifs.h (einschließlich Ntifs.h, Fltkernel.h) |