Bagikan melalui


struktur FILE_LINK_INFORMATION (ntifs.h)

Struktur FILE_LINK_INFORMATION digunakan untuk membuat tautan keras NTFS ke file yang ada.

Sintaks

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;

Anggota

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

Atur ke TRUE untuk menentukan bahwa jika tautan sudah ada, tautan harus diganti dengan tautan baru. Atur ke FALSE jika operasi pembuatan tautan harus gagal jika tautan sudah ada. Tersedia dimulai dengan Windows 10, versi 1809.

DUMMYUNIONNAME.Flags

Bendera untuk operasi tautan. Bidang ini hanya berlaku saat digunakan dengan kelas informasi FileLinkInformationEx. Tersedia dimulai dengan Windows 10, versi 1809.

Berikut adalah nilai yang mungkin:

Nilai Makna
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) Jika file dengan nama yang diberikan sudah ada, file tersebut harus diganti dengan tautan baru. Setara dengan bidang ReplaceIfExists yang digunakan dengan kelas informasi FileLinkInformation.
FILE_LINK_POSIX_SEMANTICS (0x00000002) Jika FILE_LINK_REPLACE_IF_EXISTS juga ditentukan, izinkan untuk mengganti file meskipun ada handel yang ada. Handel yang ada ke file yang diganti terus valid untuk operasi seperti baca dan tulis. Setiap pembukaan nama target berikutnya akan membuka tautan baru, bukan file yang diganti.
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) Saat membuat tautan di direktori baru, tekan aturan pewarisan apa pun yang terkait dengan properti ID cadangan penyimpanan file.
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) Jika FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE tidak juga ditentukan, saat membuat tautan di direktori baru, ubah ukuran area cadangan penyimpanan yang terpengaruh secara otomatis sesuai kebutuhan untuk mencegah pengguna melihat ruang kosong pada volume meningkat. Memerlukan pengelolaan akses volume.
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) Jika FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE tidak juga ditentukan, saat membuat tautan di direktori baru, ubah ukuran area cadangan penyimpanan yang terpengaruh secara otomatis sesuai kebutuhan untuk mencegah pengguna melihat ruang kosong pada volume menurun. Memerlukan pengelolaan akses volume.
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) Setara dengan menentukan FILE_LINK_NO_INCREASE_AVAILABLE_SPACE dan FILE_LINK_NO_DECREASE_AVAILABLE_SPACE.
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) Jika FILE_LINK_REPLACE_IF_EXISTS juga ditentukan, izinkan mengganti file meskipun bersifat baca-saja. Memerlukan akses WRITE_ATTRIBUTES ke file yang diganti.
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) Jika FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE tidak juga ditentukan, saat membuat tautan di direktori baru yang merupakan bagian dari area cadangan penyimpanan yang berbeda, selalu kembangkan area cadangan penyimpanan direktori target dengan ukuran penuh file yang ditautkan. Memerlukan pengelolaan akses volume.
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) Jika FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE tidak juga ditentukan, saat membuat tautan di direktori baru yang merupakan bagian dari area cadangan penyimpanan yang berbeda, selalu susutkan area cadangan penyimpanan direktori sumber dengan ukuran penuh file yang ditautkan. Memerlukan pengelolaan akses volume.
FILE_LINK_FORCE_RESIZE_SR (0x00000180) Setara dengan menentukan FILE_LINK_FORCE_RESIZE_TARGET_SR dan FILE_LINK_FORCE_RESIZE_SOURCE_SR.

ReplaceIfExists

Atur ke TRUE untuk menentukan bahwa jika tautan sudah ada, tautan harus diganti dengan tautan baru. Atur ke FALSE jika operasi pembuatan tautan harus gagal jika tautan sudah ada.

RootDirectory

Jika tautan akan dibuat di direktori yang sama dengan file yang sedang ditautkan, atau jika anggota FileName berisi nama jalur lengkap untuk tautan yang akan dibuat, ini adalah NULL. Jika tidak, ini adalah handel untuk direktori tempat tautan akan dibuat.

FileNameLength

Panjang, dalam byte, dari string nama file.

FileName[1]

Karakter pertama dari nama yang akan ditetapkan ke tautan yang baru dibuat. Ini diikuti dalam memori oleh sisa string. Jika anggota RootDirectory adalah NULL dan tautan akan dibuat di direktori yang berbeda dari file yang sedang ditautkan, anggota ini menentukan nama jalur lengkap untuk tautan yang akan dibuat. Jika tidak, itu hanya menentukan nama file. (Lihat bagian Keterangan untuk ZwQueryInformationFile untuk detail tentang sintaks string nama file ini.)

Keterangan

Struktur FILE_LINK_INFORMATION digunakan untuk membuat tautan keras NTFS ke file yang ada. Operasi ini dapat dilakukan dengan salah satu cara berikut:

  • Panggil FltSetInformationFile atau ZwSetInformationFile, meneruskan FileLinkInformation sebagai nilai FileInformationClass dan meneruskan buffer yang dialokasikan pemanggil, FILE_LINK_INFORMATION-terstruktur sebagai nilai FileInformation. Parameter FileHandle menentukan file yang ada tempat hard link harus menunjuk.

  • Buat IRP dengan kode fungsi utama IRP_MJ_SET_INFORMATION.

Tidak diperlukan hak akses khusus untuk mengatur informasi ini.

Minifilter sistem file harus menggunakan FltSetInformationFile, bukan ZwSetInformationFile, untuk mengatur informasi ini untuk file.

Untuk informasi selengkapnya tentang tautan keras NTFS, lihat dokumentasi Microsoft Windows SDK untuk fungsi Win32 CreateHardLink .

Ukuran buffer FileInformation yang diteruskan ke FltSetInformationFile atau ZwSetInformationFile harus setidaknya sizeof(FILE_LINK_INFORMATION).

Struktur ini harus diselaraskan pada batas LONG (4-byte).

Persyaratan

Persyaratan Nilai
Header ntifs.h (termasuk Ntifs.h, Fltkernel.h)

Lihat juga

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile

ZwSetInformationFile