Bagikan melalui


Fungsi CreateHardLinkA (winbase.h)

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 CreateHardLinkTransacted.

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 CreateHardLink memungkinkan Anda memiliki beberapa entri direktori untuk file, yaitu, beberapa tautan keras ke file yang sama, yang dapat menjadi nama yang berbeda dalam direktori yang sama, atau nama yang sama atau berbeda di direktori yang berbeda. Namun, semua tautan keras ke file harus berada pada volume yang sama.

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 DeleteFile untuk menghapus tautan keras. Anda dapat menghapusnya dalam urutan apa pun terlepas dari urutan pembuatannya.

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 dapat menjadi nama file asli, atau tautan apa pun yang ada ke file. Setelah kode ini dijalankan, pszNewLinkName mengacu pada file.

  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

CreateFile

CreateHardLinkTransacted

DeleteFile

File Management Functions

Hard Link dan Persimpangan

Tautan Simbolis