Freigeben über


FILE_LINK_INFORMATION Struktur (ntifs.h)

Die FILE_LINK_INFORMATION Struktur wird verwendet, um eine NTFS-Hardlink-Verknüpfung 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;

Angehörige

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

Legen Sie auf TRUE fest, um anzugeben, dass, wenn der Link bereits vorhanden ist, durch den neuen Link ersetzt werden soll. Auf FALSE festgelegt, wenn der Verknüpfungserstellungsvorgang fehlschlägt, wenn der Link bereits vorhanden ist. Verfügbar ab Windows 10, Version 1809.

DUMMYUNIONNAME.Flags

Flags für den Verknüpfungsvorgang. Dieses Feld gilt nur, wenn es mit der FileLinkInformationEx-Informationsklasse verwendet wird. Verfügbar ab Windows 10, Version 1809.

Hier sind die möglichen Werte:

Wert Bedeutung
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) Wenn bereits eine Datei mit dem angegebenen Namen vorhanden ist, sollte sie durch den neuen Link ersetzt werden. Entspricht dem ReplaceIfExists-Feld, das mit der FileLinkInformation-Informationsklasse verwendet wird.
FILE_LINK_POSIX_SEMANTICS (0x00000002) Wenn FILE_LINK_REPLACE_IF_EXISTS ebenfalls angegeben ist, lassen Sie das Ersetzen einer Datei auch dann zu, wenn es vorhandene Handles gibt. Vorhandene Handles für die ersetzte Datei sind weiterhin gültig für Vorgänge wie Lese- und Schreibzugriff. Alle nachfolgenden Öffnen des Zielnamens öffnen 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 bei Bedarf automatisch, um zu verhindern, dass der Benutzer sichtbaren freien Speicherplatz auf dem Volume erhöht. 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 bei Bedarf automatisch, um zu verhindern, dass der Benutzer sichtbaren freien 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 FILE_LINK_REPLACE_IF_EXISTS auch angegeben ist, lassen Sie das Ersetzen einer Datei auch dann zu, 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, wenn der Link bereits vorhanden ist, durch den neuen Link ersetzt werden soll. Auf FALSE festgelegt, wenn der Verknüpfungserstellungsvorgang fehlschlägt, wenn der Link bereits vorhanden ist.

RootDirectory

Wenn der Link im selben Verzeichnis wie die Datei erstellt werden soll, mit der eine Verknüpfung hergestellt wird, oder wenn der FileName Mitglied 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 Byte.

FileName[1]

Das erste Zeichen des Namens, dem der neu erstellten Verknüpfung zugewiesen werden soll. Dies folgt im Arbeitsspeicher durch den Rest der Zeichenfolge. Wenn das RootDirectory Member 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. (Ausführliche Informationen zur Syntax dieser Dateinamenzeichenfolge finden Sie im Abschnitt "Hinweise" für ZwQueryInformationFile-.)

Bemerkungen

Die FILE_LINK_INFORMATION Struktur wird verwendet, um eine NTFS-Hardlink-Verknüpfung mit einer vorhandenen Datei zu erstellen. Dieser Vorgang kann auf eine der folgenden Arten ausgeführt werden:

  • Rufen Sie FltSetInformationFile oder ZwSetInformationFileauf, übergeben Sie FileLinkInformation als Wert von FileInformationClass und übergeben Sie einen zugeordneten Aufrufer, FILE_LINK_INFORMATION strukturierten Puffer als Wert von FileInformation. Der parameter FileHandle gibt die vorhandene Datei an, auf die die hardlink verweisen soll.

  • Erstellen Sie ein IRP mit Hauptfunktionscode IRP_MJ_SET_INFORMATION.

Zum Festlegen dieser Informationen sind keine spezifischen Zugriffsrechte erforderlich.

Minifilter des Dateisystems müssen FltSetInformationFile, 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 Größe(FILE_LINK_INFORMATION) sein.

Diese Struktur muss an einer LONG-Grenze (4 Byte) ausgerichtet werden.

Anforderungen

Anforderung Wert
Header- ntifs.h (einschließlich Ntifs.h, Fltkernel.h)

Siehe auch

FltSetInformationFile-

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile-

ZwSetInformationFile-