FILE_LINK_INFORMATION 結構 (ntifs.h)

FILE_LINK_INFORMATION 結構可用來建立現有檔案的NTFS硬式連結。

語法

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;

成員

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

設定為 TRUE,以指定如果鏈接已經存在,則應該以新的連結取代。 如果連結已經存在,則設定為 FALSE。 從 Windows 10 版本 1809 開始提供。

DUMMYUNIONNAME.Flags

連結作業的旗標。 只有在與 FileLinkInformationEx 資訊類別搭配使用時,才適用此欄位。 從 Windows 10 版本 1809 開始提供。

下列為可能的值:

意義
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) 如果具有指定名稱的檔案已經存在,則應該以新的連結取代它。 相當於與 FileLinkInformation 資訊類別搭配使用的 ReplaceIfExists 字段。
FILE_LINK_POSIX_SEMANTICS (0x00000002) 如果同時指定FILE_LINK_REPLACE_IF_EXISTS,即使檔案有現有的句柄,仍允許取代檔案。 已取代檔案的現有句柄會繼續對讀取和寫入等作業有效。 任何後續的目標名稱開啟都會開啟新的連結,而不是取代的檔案。
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) 在新目錄中建立連結時,隱藏與檔案記憶體保留標識符屬性相關的任何繼承規則。
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) 如果未同時指定FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE,在新的目錄中建立連結時,請視需要自動調整受影響的儲存保留區域大小,以防止使用者在磁碟區上可見的可用空間增加。 需要管理磁碟區存取。
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) 如果未同時指定FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE,在新的目錄中建立連結時,請視需要自動調整受影響的儲存保留區域大小,以防止使用者在磁碟區上可見的可用空間減少。 需要管理磁碟區存取。
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) 相當於同時指定FILE_LINK_NO_INCREASE_AVAILABLE_SPACE和FILE_LINK_NO_DECREASE_AVAILABLE_SPACE。
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) 如果同時指定FILE_LINK_REPLACE_IF_EXISTS,即使檔案是只讀的,仍允許取代檔案。 需要WRITE_ATTRIBUTES存取已取代的檔案。
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) 如果未同時指定FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE,在屬於不同儲存保留區域的新目錄中建立連結時,一律會以所連結檔案的完整大小來增加目標目錄的儲存保留區域。 需要管理磁碟區存取。
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) 如果未同時指定FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE,在屬於不同儲存保留區域的新目錄中建立連結時,請一律以所連結檔案的完整大小壓縮來源目錄的儲存保留區域。 需要管理磁碟區存取。
FILE_LINK_FORCE_RESIZE_SR (0x00000180) 相當於同時指定FILE_LINK_FORCE_RESIZE_TARGET_SR和FILE_LINK_FORCE_RESIZE_SOURCE_SR。

ReplaceIfExists

設定為 TRUE,以指定如果鏈接已經存在,則應該以新的連結取代。 如果連結已經存在,則設定為 FALSE。

RootDirectory

如果要在與所連結檔案相同的目錄中建立連結,或 FileName 成員包含要建立之連結的完整路徑名稱,則為 NULL。 否則,它是要建立連結之目錄的句柄。

FileNameLength

檔名字串的長度,以位元組為單位。

FileName[1]

要指派給新建立連結之名稱的第一個字元。 這會接著在記憶體中加上字串的其餘部分。 如果 RootDirectory 成員為 NULL,且連結要建立在與所連結檔案不同的目錄中,則此成員會指定要建立之連結的完整路徑名稱。 否則,它只會指定檔名。 (如需此檔名 string.) 語法的詳細資訊,請參閱 ZwQueryInformationFile 的一節

備註

FILE_LINK_INFORMATION 結構可用來建立現有檔案的NTFS硬式連結。 此作業可以透過下列其中一種方式來執行:

  • 呼叫 FltSetInformationFileZwSetInformationFile,傳遞 FileLinkInformation 做為 FileInformationClass 的值,並傳遞呼叫端配置的呼叫端配置,FILE_LINK_INFORMATION結構化緩衝區做為 FileInformation 的值。 FileHandle 參數會指定硬鏈接應該指向的現有檔案。

  • 建立具有主要函式程序代碼的 IRP IRP_MJ_SET_INFORMATION。

設定這項資訊不需要特定訪問許可權。

文件系統迷你篩選必須使用 FltSetInformationFile,而非 ZwSetInformationFile 來設定檔案的這項資訊。

如需NTFS硬式連結的詳細資訊,請參閱 Win32 CreateHardLink 函式的 Microsoft Windows SDK 檔。

傳遞至 FltSetInformationFileZwSetInformationFileFileInformation 緩衝區大小必須至少為 (FILE_LINK_INFORMATION) 。

此結構必須對齊 LONG (4 位元組) 界限。

規格需求

需求
標頭 ntifs.h (包括 Ntifs.h、Fltkernel.h)

另請參閱

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile

ZwSetInformationFile