NTFS卷上的CreateHardLink()失败,错误代码为1(函数不正确)

时间:2012-07-31 18:41:39

标签: filesystems windows-xp ntfs hardlink

我们有一个使用NTFS硬链接的桌面应用程序。该应用程序在全球超过40万台用户PC上成功分发和使用。

但是有一个客户,其CreateHardLink()函数一致失败,错误代码为1(函数不正确)。这发生在同一公司内的多台机器上。所有这些计算机都运行Windows XP,并且问题发生在NTFS分区上。

我们已要求用户运行fsutil.exe以确认卷文件系统实际上是NTFS,并且“fsutil.exe hardlink create newname.txt existing.txt”也无法确认错误消息。

知道可能导致它的原因吗?

2 个答案:

答案 0 :(得分: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”。

罗伯特

答案 1 :(得分:0)

您可以尝试在这些文件系统上运行chkdsk,可能是因为它们已经损坏了MFT记录吗?