有人能理解 MSDN 中的“硬链接和连接点”文章吗?

有人能理解 MSDN 中的“硬链接和连接点”文章吗?

硬链接和连接点可以阅读以下MSDN文章之一:

硬链接是文件系统中文件的表示,通过它,多个路径可以引用同一卷中的单个文件。要创建硬链接,请使用 CreateHardLink 函数。对该文件的任何更改都会立即被通过引用该文件的硬链接访问它的应用程序看到。但是,目录条目大小和属性信息只会针对进行更改的链接进行更新。请注意,文件的属性会反映在指向该文件的每个硬链接中,并且对该文件属性的更改会传播到所有硬链接。例如,如果您重置硬链接上的 READONLY 属性以删除该特定硬链接,并且实际文件有多个硬链接,那么您将需要从剩余的硬链接之一重置文件的 READONLY 位,以使文件和所有剩余的硬链接恢复到 READONLY 状态。

有人能理解上面的段落吗?
这句话不是文件的属性反映在该文件的每个硬链接中相当于语句该文件属性的更改将传播到所有硬链接
怎么会重置READONLY 位可以将文件和所有剩余的硬链接恢复到 READONLY 状态

编辑

在阅读了 JdeBP 对这个问题的出色回答后,我仍然心存疑虑。

$STANDARD_INFORMATION我知道每个指向该条目的硬链接都有一个 MFT 条目的部分副本,根据答案除非硬链接被重命名、创建或销毁,否则不会保持最新状态。读取硬链接的属性时会发生什么?我猜这个硬链接的副本$STANDARD_INFORMATION被忽略了,因为它可能不反映当前状态,属性是直接从 MFT 条目读取的$STANDARD_INFORMATION。此外,在此过程中不会更新任何信息,因为它不是您列出的任何操作。是这样吗?

如果为了能够删除文件的硬链接而将 R 位设置为关闭,那么(假设这不是最后一个链接)就必须以任何方式将 R 位重新设置为打开,以使文件再次变为只读。

现在,我不明白假设这不是最后一个链接部分。我不明白链接是最后一个链接在这里有什么区别。仍然有一个文件(MFT 的条目)本身,并且可以直接更改其属性(而不是通过任何链接)。或者,如果有一个文件,就会有一个链接,这意味着 MFT 的条目和文件之间没有一一对应关系?

答案1

正如grawity所说,第二次“重置”要么是写得不好,要么就是彻头彻尾的错误。

这句话不是文件的属性反映在该文件的每个硬链接中相当于语句该文件属性的更改将传播到所有硬链接

不。本文陈述的内容对于目标读者来说可能过于详细。在 NTFS 上,MFT 中的每个条目可以有零个或多个$FILE_NAME 属性。这些记录了文件的每个硬链接的父目录和该目录中的名称。但它们记录文件属性标志,虽然这些标志记录在 MFT 条目的单个$STANDARD_INFORMATION属性中。规则有点复杂,但简而言之,这才$STANDARD_INFORMATION是最重要的,$FILE_NAME除非硬链接被重命名、创建或销毁,否则信息甚至不会保持最新状态——这需要触及属性$FILE_NAME,因此当前属性标志可以传播到属性的点也是如此$FILE_NAME

开发人员可能会向撰写 MSDN 文章的技术作者解释 NTFS 的复杂细节。但这些细节实际上与最终用户甚至应用程序程序员无关。这些是 NTFS 工作方式的内部细节。从 Win32 的角度来看,文件/目录具有属性标志集,更新它就是更新它,无论如何完成。如果R为了删除文件的硬链接而将该位设置为关闭,那么(假设这不是最后一个链接)必须R以任何方式将该位重新设置为打开,以使文件再次变为只读。

相关内容