FILE_LINK_INFORMATION Struktur (ntifs.h)
Die FILE_LINK_INFORMATION-Struktur wird verwendet, um eine NTFS-Hardlink-Verbindung mit einer vorhandenen Datei zu erstellen.
Syntax
typedef struct _FILE_LINK_INFORMATION {
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS5)
union {
BOOLEAN ReplaceIfExists; // FileLinkInformation
ULONG Flags; // FileLinkInformationEx
} DUMMYUNIONNAME;
#else
BOOLEAN ReplaceIfExists;
#endif
HANDLE RootDirectory;
ULONG FileNameLength;
WCHAR FileName[1];
} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
Member
DUMMYUNIONNAME
DUMMYUNIONNAME.ReplaceIfExists
Legen Sie auf TRUE fest, um anzugeben, dass der Link, wenn er bereits vorhanden ist, durch den neuen Link ersetzt werden soll. Legen Sie auf FALSE fest, wenn der Linkerstellungsvorgang fehlschlagen soll, wenn der Link bereits vorhanden ist. Verfügbar ab Windows 10, Version 1809.
DUMMYUNIONNAME.Flags
Flags für den Linkvorgang. Dieses Feld ist nur anwendbar, wenn es mit der FileLinkInformationEx-Informationsklasse verwendet wird. Verfügbar ab Windows 10, Version 1809.
Die folgenden Werte sind möglich:
Wert | Bedeutung |
---|---|
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) | Wenn eine Datei mit dem angegebenen Namen bereits vorhanden ist, sollte sie durch den neuen Link ersetzt werden. Entspricht dem Feld ReplaceIfExists, das mit der FileLinkInformation-Informationsklasse verwendet wird. |
FILE_LINK_POSIX_SEMANTICS (0x00000002) | Wenn auch FILE_LINK_REPLACE_IF_EXISTS angegeben ist, lassen Sie das Ersetzen einer Datei zu, auch wenn bereits Handles dafür vorhanden sind. Vorhandene Handles für die ersetzte Datei sind weiterhin für Vorgänge wie Lese- und Schreibvorgänge gültig. Jedes nachfolgende Öffnen des Zielnamens öffnet den neuen Link, nicht die ersetzte Datei. |
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) | Wenn Sie einen Link in einem neuen Verzeichnis erstellen, unterdrücken Sie alle Vererbungsregeln im Zusammenhang mit der Speicherreserve-ID-Eigenschaft der Datei. |
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) | Wenn FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE nicht auch angegeben ist, ändern Sie beim Erstellen eines Links in einem neuen Verzeichnis die Größe der betroffenen Speicherreservebereiche nach Bedarf, um zu verhindern, dass der vom Benutzer sichtbare freie Speicherplatz auf dem Volume zunimmt. Erfordert die Verwaltung des Volumezugriffs. |
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) | Wenn FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE nicht auch angegeben ist, ändern Sie beim Erstellen eines Links in einem neuen Verzeichnis die Größe der betroffenen Speicherreservebereiche automatisch nach Bedarf, um zu verhindern, dass der benutzer sichtbare freie Speicherplatz auf dem Volume verringert. Erfordert die Verwaltung des Volumezugriffs. |
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) | Entspricht der Angabe von FILE_LINK_NO_INCREASE_AVAILABLE_SPACE und FILE_LINK_NO_DECREASE_AVAILABLE_SPACE. |
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) | Wenn auch FILE_LINK_REPLACE_IF_EXISTS angegeben ist, lassen Sie das Ersetzen einer Datei zu, auch wenn sie schreibgeschützt ist. Erfordert WRITE_ATTRIBUTES Zugriff auf die ersetzte Datei. |
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) | Wenn FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE nicht auch angegeben ist, vergrößern Sie beim Erstellen eines Links in einem neuen Verzeichnis, das Teil eines anderen Speicherreservebereichs ist, immer den Speicherreservebereich des Zielverzeichnisses um die vollständige Größe der verknüpften Datei. Erfordert die Verwaltung des Volumezugriffs. |
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) | Wenn FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE nicht auch angegeben ist, verkleinern Sie beim Erstellen eines Links in einem neuen Verzeichnis, das Teil eines anderen Speicherreservebereichs ist, immer den Speicherreservebereich des Quellverzeichnisses um die vollständige Größe der verknüpften Datei. Erfordert die Verwaltung des Volumezugriffs. |
FILE_LINK_FORCE_RESIZE_SR (0x00000180) | Entspricht der Angabe von FILE_LINK_FORCE_RESIZE_TARGET_SR und FILE_LINK_FORCE_RESIZE_SOURCE_SR. |
ReplaceIfExists
Legen Sie auf TRUE fest, um anzugeben, dass der Link, wenn er bereits vorhanden ist, durch den neuen Link ersetzt werden soll. Legen Sie auf FALSE fest, wenn der Linkerstellungsvorgang fehlschlagen soll, wenn der Link bereits vorhanden ist.
RootDirectory
Wenn der Link im selben Verzeichnis erstellt werden soll wie die Datei, mit der verknüpft wird, oder wenn das FileName-Element den vollständigen Pfadnamen für den zu erstellenden Link enthält, ist dies NULL. Andernfalls handelt es sich um ein Handle für das Verzeichnis, in dem der Link erstellt werden soll.
FileNameLength
Länge der Dateinamenzeichenfolge in Bytes.
FileName[1]
Das erste Zeichen des Namens, der dem neu erstellten Link zugewiesen werden soll. Dies wird im Arbeitsspeicher durch den Rest der Zeichenfolge gefolgt. Wenn das RootDirectory-Element NULL ist und der Link in einem anderen Verzeichnis als der Datei erstellt werden soll, mit der verknüpft wird, gibt dieses Element den vollständigen Pfadnamen für den zu erstellenden Link an. Andernfalls wird nur der Dateiname angegeben. (Details zur Syntax dieser Dateinamenzeichenfolge finden Sie im Abschnitt Hinweise zu ZwQueryInformationFile .)
Hinweise
Die FILE_LINK_INFORMATION-Struktur wird verwendet, um eine NTFS-Hardlink-Verbindung mit einer vorhandenen Datei zu erstellen. Dieser Vorgang kann auf eine der folgenden Arten ausgeführt werden:
Rufen Sie FltSetInformationFile oder ZwSetInformationFile auf, übergeben Sie FileLinkInformation als Wert von FileInformationClass und übergeben Einen aufruferseitig zugewiesenen, FILE_LINK_INFORMATION strukturierten Puffer als Wert von FileInformation. Der FileHandle-Parameter gibt die vorhandene Datei an, auf die der Hardlink verweisen soll.
Erstellen Sie eine IRP mit hauptfunktionscode IRP_MJ_SET_INFORMATION.
Zum Festlegen dieser Informationen sind keine spezifischen Zugriffsrechte erforderlich.
Dateisystemminifilter müssen FltSetInformationFile und nicht ZwSetInformationFile verwenden, um diese Informationen für eine Datei festzulegen.
Weitere Informationen zu NTFS-Hardlinks finden Sie in der Microsoft Windows SDK-Dokumentation für die Win32 CreateHardLink-Funktion.
Die Größe des FileInformation-Puffers , der an FltSetInformationFile oder ZwSetInformationFile übergeben wird, muss mindestens sizeof(FILE_LINK_INFORMATION) sein.
Diese Struktur muss an einer LONG-Grenze (4 Byte) ausgerichtet werden.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntifs.h (include Ntifs.h, Fltkernel.h) |