找出两个HANDLE是同一文件的硬链接

时间:2011-01-09 03:17:34

标签: winapi handle ntfs hardlink

(这个问题很难......可能需要了解NTFS和/或使用NT Native API;请注意。):)

如果我有两个HANDLE到两个文件,我怎么能明确地(不仅仅是很有可能)找出两个HANDLE是否属于磁盘上完全相同的文件和流?

这意味着,例如,检查8字节的NTFS文件ID是不够的,因为具有相同文件ID的两个HANDLE可以指向同一文件的不同数据流,我需要找出两个流是否真的相同,只是名称不同(硬链接)。

(有什么用?这样,如果我想对文件夹内的所有文件执行操作,我不会对具有不同名称的相同数据流执行两次操作。)

1 个答案:

答案 0 :(得分:1)

这需要GetFileInformationByHandleEx(),要求FileStreamInfo。返回流名称。

应该注意SDK文档中的此警告:

  

某些文件信息类   表现略有不同   不同的操作系统版本。   这些类由   潜在的司机,以及任何   他们返回的信息受制于   在操作系统之间切换   版本。

避免依赖恢复程序中现有(或应该)的信息。