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硬式連結。 此作業可以透過下列其中一種方式來執行:
呼叫 FltSetInformationFile 或 ZwSetInformationFile,傳遞 FileLinkInformation 做為 FileInformationClass 的值,並傳遞呼叫端配置的呼叫端配置,FILE_LINK_INFORMATION結構化緩衝區做為 FileInformation 的值。 FileHandle 參數會指定硬鏈接應該指向的現有檔案。
建立具有主要函式程序代碼的 IRP IRP_MJ_SET_INFORMATION。
設定這項資訊不需要特定訪問許可權。
文件系統迷你篩選必須使用 FltSetInformationFile,而非 ZwSetInformationFile 來設定檔案的這項資訊。
如需NTFS硬式連結的詳細資訊,請參閱 Win32 CreateHardLink 函式的 Microsoft Windows SDK 檔。
傳遞至 FltSetInformationFile 或 ZwSetInformationFile 的 FileInformation 緩衝區大小必須至少為 (FILE_LINK_INFORMATION) 。
此結構必須對齊 LONG (4 位元組) 界限。
規格需求
需求 | 值 |
---|---|
標頭 | ntifs.h (包括 Ntifs.h、Fltkernel.h) |