Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membuat tautan keras antara file yang ada dan file baru. Fungsi ini hanya didukung pada sistem file NTFS, dan hanya untuk file, bukan direktori.
Untuk melakukan operasi ini sebagai operasi yang ditransaksikan, gunakan fungsi
Sintaksis
BOOL CreateHardLinkA(
[in] LPCSTR lpFileName,
[in] LPCSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
Parameter
[in] lpFileName
Nama file baru.
Parameter ini mungkin menyertakan jalur tetapi tidak dapat menentukan nama direktori.
Secara default, nama dibatasi untuk MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan awal "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Penamaan File, Jalur, dan Namespace.
Ujung
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa prepending "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" Penamaan File, Jalur, dan Namespace untuk detailnya.
[in] lpExistingFileName
Nama file yang ada.
Parameter ini mungkin mencakup jalur tidak dapat menentukan nama direktori.
Secara default, nama dibatasi untuk MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan awal "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Penamaan File, Jalur, dan Namespace.
Ujung
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa prepending "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" Penamaan File, Jalur, dan Namespace untuk detailnya.
lpSecurityAttributes
Dipesan; harus null.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol (0). Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Jumlah maksimum tautan keras yang dapat dibuat dengan fungsi ini adalah 1023 per file. Jika lebih dari 1023 tautan dibuat untuk file, hasil kesalahan.
Jika Anda meneruskan nama yang lebih panjang dari MAX_PATH karakter ke lpFileName atau parameter lpExistingFileName versi ANSI fungsi ini atau ke versi Unicode fungsi ini tanpa menambahkan "\\?\" ke jalur, fungsi mengembalikan ERROR_PATH_NOT_FOUND.
Komentar
Entri direktori apa pun untuk file yang dibuat dengan CreateFile atau CreateHardLink adalah tautan keras ke file terkait.
Tautan keras tambahan yang dibuat dengan fungsi
Karena tautan keras hanya entri direktori untuk file, banyak perubahan pada file tersebut langsung terlihat oleh aplikasi yang mengaksesnya melalui tautan keras yang mereferensikannya. Namun, ukuran entri direktori dan informasi atribut hanya diperbarui untuk tautan tempat perubahan dilakukan.
Deskriptor keamanan milik file tempat hard link menunjuk. Tautan itu sendiri hanya entri direktori, dan tidak memiliki pendeskripsi keamanan. Oleh karena itu, ketika Anda mengubah pendeskripsi keamanan tautan keras, Anda mengubah pendeskripsi keamanan file yang mendasar, dan semua tautan keras yang menunjuk ke file memungkinkan akses yang baru ditentukan. Anda tidak dapat memberikan deskriptor keamanan yang berbeda pada file berdasarkan per-hard-link.
Fungsi ini tidak mengubah pendeskripsi keamanan file yang akan ditautkan, bahkan jika informasi deskriptor keamanan diteruskan dalam parameter lpSecurityAttributes.
Gunakan
Bendera, atribut, akses, dan berbagi yang ditentukan dalam CreateFile beroperasi per file. Artinya, jika Anda membuka file yang tidak mengizinkan berbagi, aplikasi lain tidak dapat berbagi file dengan membuat tautan keras baru ke file.
Saat Anda membuat tautan keras pada sistem file NTFS, informasi atribut file dalam entri direktori disegarkan hanya ketika file dibuka, atau ketika GetFileInformationByHandle dipanggil dengan handel file tertentu.
Perilaku tautan simbolis—Jika jalur menunjuk ke tautan simbolis, fungsi membuat tautan keras ke tautan simbolis.
Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.
| Teknologi | Didukung |
|---|---|
| Protokol Server Message Block (SMB) 3.0 | Ya |
| Failover Transparan (TFO) SMB 3.0 | Tidak |
| SMB 3.0 dengan Scale-out File Shares (SO) | Tidak |
| Sistem File Volume Bersama Kluster (CsvFS) | Ya |
| Sistem File Tangguh (ReFS) | Tidak |
Perhatikan bahwa SMB 3.0 tidak mendukung pembuatan tautan keras pada berbagi dengan kemampuan ketersediaan berkelanjutan.
Contoh
Cuplikan kode berikut menunjukkan kepada Anda cara memanggil CreateHardLink sehingga tidak mengubah pendeskripsi keamanan file. Parameter pszExistingFileName
BOOL fCreatedLink = CreateHardLink( pszNewLinkName,
pszExistingFileName,
NULL ); // reserved, must be NULL
if ( fCreatedLink == FALSE )
{
;// handle error condition
}
Nota
Header winbase.h mendefinisikan CreateHardLink sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
| Platform Target |
Windows |
| Header |
winbase.h (termasuk Windows.h) |
| Pustaka |
Kernel32.lib |
| DLL |
Kernel32.dll |
Lihat juga
Hard Link dan Persimpangan
Tautan Simbolis