2012-07-31 24 views
1

我們有一個利用NTFS硬鏈接的桌面應用程序。該應用程序在全球超過40萬用戶PC上成功分發和使用。CreateHardLink()在NTFS捲上失敗,錯誤代碼爲1(錯誤的功能)

但是,有一位客戶的CreateHardLink()函數與錯誤代碼1(錯誤函數)一致失敗。這發生在同一家公司內的多臺機器上。所有這些機器都運行Windows XP,並且問題發生在NTFS分區上。

我們已經要求用戶運行fsutil.exe來確認卷文件系統實際上是NTFS,並且「fsutil.exe硬鏈接創建newname.txt存在.txt」失敗,確切的錯誤消息。

任何想法可能會導致它?

回答

1

不正確的功能表明文件系統不是NTFS - 我會真的確保客戶端的FS是NTFS。如果您確定它是NTFS,我建議直接調用NTFS內核驅動程序來找出錯誤。通過CreateFile()打開文件並用參數FileLinkInformation調用NtSetInformationFile();錯誤代碼應該告訴你到底發生了什麼錯誤。

您需要的指針是FILE_LINK_INFORMATION結構(http://msdn.microsoft.com/en-us/library/windows/hardware/ff540324%28v=vs.85%29.aspx)和ZwSetInformationFile(http: //msdn.microsoft.com/en-us/library/windows/hardware/ff567096%28v=vs.85%29.aspx),但是你不能在內核之外使用Zw *,所以使用Nt *版本。但是,即使使用Nt *函數也有點棘手。

無論如何,fsutil的正確語法是「fsutil hardlink create」。

羅伯特

+0

到目前爲止,我們所有的診斷工具(包括'fsutil')都將文件系統報告爲NTFS。但是我會根據NtSetInformationFile()編寫一個實用程序並將其發送給用戶運行。謝謝 - 列維 – 2012-08-01 17:00:00

0

你可以嘗試在這些文件系統運行chkdsk,那也許是因爲他們已經損壞的MFT記錄?

相關問題