找出是否两个把手是与同一文件的硬链接
题
(这个问题是一个强硬的人……可能需要了解NTF和/或使用NT Native Apis;请警告。):) :)
如果我给了两个 HANDLE
s到两个文件,我该如何 明确 (不仅概率很高)找出两个 HANDLE
S属于完全相同的文件并在磁盘上流?
例如,这意味着检查8字节NTFS文件ID还不够,因为两个 HANDLE
具有相同文件ID的s可以指向同一文件的不同数据流,我需要找出两个流是否真的相同,并且仅因名称而异(HardLink)。
(有什么用?这样,如果我想对文件夹中的所有文件执行操作,我不会在具有不同名称的同一数据流上进行两次操作。)
解决方案
这需要 getFileInformationByHandleex(),要求FileStreamInfo。返回流名。
SDK文档中的此警告应注意:
某些文件信息类在不同的操作系统版本上的行为略有不同。这些课程得到了基础驱动程序的支持,他们返回的任何信息都可能在操作系统版本之间发生变化。
避免依靠程序中(或应该)在程序中容易获得的恢复信息。
不隶属于 StackOverflow