2011-01-09 54 views
1

(这个问题是一个恶棍......它可能需要使用NTFS和/或使用NT本地API的知识;被警告。):)看看两个手柄是硬连接到同一个文件

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

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

(有什么用?这样一来,如果我想在一个文件夹内的所有文件进行操作,我不做操作两次与不同名称的相同数据流。)

回答

1

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

此警告在SDK文档中应注意: 表现略有不同的 不同的操作系统版本

某些文件的信息类。 这些类别受 底层驱动程序支持,并且它们返回的任何 信息都受 操作系统 版本之间的更改支持。

避免依靠恢复程序中(或应该)随时可用的信息。

+1

还值得注意的是,GetFileInformationByHandleEx仅在Vista和更高版本上可用。 (XP不会很快死掉,IMO。:)) – 2011-01-09 08:27:50

相关问题