(这个问题很难......可能需要了解NTFS和/或使用NT Native API;请注意。):)
如果我有两个HANDLE
到两个文件,我怎么能明确地(不仅仅是很有可能)找出两个HANDLE
是否属于磁盘上完全相同的文件和流?
这意味着,例如,检查8字节的NTFS文件ID是不够的,因为具有相同文件ID的两个HANDLE
可以指向同一文件的不同数据流,我需要找出两个流是否真的相同,只是名称不同(硬链接)。
(有什么用?这样,如果我想对文件夹内的所有文件执行操作,我不会对具有不同名称的相同数据流执行两次操作。)
答案 0 :(得分:1)
这需要GetFileInformationByHandleEx(),要求FileStreamInfo。返回流名称。
应该注意SDK文档中的此警告:
某些文件信息类 表现略有不同 不同的操作系统版本。 这些类由 潜在的司机,以及任何 他们返回的信息受制于 在操作系统之间切换 版本。
避免依赖恢复程序中现有(或应该)的信息。