createHardLinkTransactedA 函式 (winbase.h)

[Microsoft 強烈建議開發人員利用替代方法來達成應用程式的需求。 許多針對 TxF 開發的案例,都可以透過更簡單且更容易取得的技術來達成。 此外,未來版本的 Microsoft Windows 可能無法使用 TxF。 如需詳細資訊,以及 TxF 的替代方案,請參閱 使用交易式 NTFS 的替代方案。]

建立現有檔案與新檔案之間的硬式連結做為交易作業。 只有 NTFS 檔案系統才支援此函式,僅適用於檔案,而非目錄。

語法

BOOL CreateHardLinkTransactedA(
  [in] LPCSTR                lpFileName,
  [in] LPCSTR                lpExistingFileName,
       LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in] HANDLE                hTransaction
);

參數

[in] lpFileName

新檔案的名稱。

此參數無法指定目錄的名稱。

[in] lpExistingFileName

現有檔案的名稱。

此參數無法指定目錄的名稱。

lpSecurityAttributes

保留;必須是 NULL

[in] hTransaction

交易的句柄。 CreateTransaction 函式會傳回此句柄。

傳回值

如果函式成功,則傳回非零的值。

如果函式失敗,傳回值為零, (0) 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

使用此函式建立的硬式連結數目上限為每個檔案 1023。 如果為檔案建立超過1023個連結,則會產生錯誤。

檔案必須位於本機計算機上;否則,函式會失敗,並將最後一個錯誤碼設定為 ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE

備註

使用 CreateFileTransactedCreateHardLinkTransacted 建立之檔案的任何目錄專案,都是關聯檔案的硬式連結。 使用 CreateHardLinkTransacted 函式建立的額外硬式連結可讓您擁有檔案的多個目錄專案,也就是相同檔案的多個硬式連結,這可以是相同目錄中的不同名稱,或是不同目錄中的相同或不同名稱。 不過,檔案的所有硬式連結都必須位於相同的磁碟區上。

因為硬式連結只是檔案的目錄專案,所以當應用程式透過任何硬式連結修改檔案時,使用任何其他硬式連結至檔案的所有應用程式都會看到變更。 此外,如果檔案變更,則會更新所有目錄專案。 例如,如果檔案大小變更,則檔案的所有硬式鏈接都會顯示新的檔案大小。

安全性描述項屬於硬式連結所指向的檔案。 連結本身只是目錄專案,而且沒有安全性描述項。 因此,當您變更硬式連結的安全性描述元時,您會變更基礎檔案的安全性描述元,而指向該檔案的所有硬式連結都允許新指定的存取。 您無法以個別硬式連結為基礎,為檔案提供不同的安全性描述元。

此函式不會修改要連結之檔案的安全性描述元,即使安全性描述項資訊是在 lpSecurityAttributes 參數中傳遞也一樣。

使用 DeleteFileTransacted 刪除硬式連結。 不論建立的順序為何,您都可以依任何順序刪除它們。

CreateFileTransacted 中指定的旗標、屬性、存取和共用會以個別檔案為基礎運作。 也就是說,如果您開啟不允許共用的檔案,另一個應用程式就無法藉由建立檔案的新硬式連結來共用檔案。

當您在NTFS文件系統上建立硬式連結時,只有在開啟檔案時,或是使用特定檔案的句柄呼叫 GetFileInformationByHandle 時,才會重新整理目錄專案中的檔案屬性資訊。

符號連結: 如果路徑指向符號連結,函式會建立目標硬式連結。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 No
SMB 3.0 透明故障轉移 (TFO) No
具有向外延展檔案共用的SMB 3.0 (SO) No
叢集共用磁碟區文件系統 (CsvFS) No
彈性檔案系統 (ReFS) No
 

請注意,SMB 3.0 不支援 TxF。

注意

winbase.h 標頭會將 CreateHardLinkTransacted 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CreateFileTransacted

DeleteFileTransacted

檔案管理功能

硬式連結和接合

符號連結

交易式 NTFS