1

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

如果给我两个HANDLEs 到两个文件,我怎样才能明确(不仅仅是很有可能)找出这两个HANDLEs 是否属于完全相同的文件并在磁盘上流式传输?

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

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

4

1 回答 1

1

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

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

某些文件信息类在不同操作系统版本上的行为略有不同。这些类由底层驱动程序支持,它们返回的任何信息都可能在操作系统版本之间发生变化。

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

于 2011-01-09T08:26:07.817 回答