Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 找出是否有两个句柄是指向同一文件的硬链接_Winapi_Handle_Ntfs_Hardlink - Fatal编程技术网

Winapi 找出是否有两个句柄是指向同一文件的硬链接

Winapi 找出是否有两个句柄是指向同一文件的硬链接,winapi,handle,ntfs,hardlink,Winapi,Handle,Ntfs,Hardlink,(这个问题很棘手……可能需要了解NTFS和/或NT本机API的使用;请注意。):) 如果给我两个HANDLEs来处理两个文件,我如何确定(不仅仅是高概率地)这两个HANDLEs是否属于磁盘上完全相同的文件和流 这意味着,例如,检查8字节NTFS文件ID是不够的,因为具有相同文件ID的两个句柄可以指向同一文件的不同数据流,我需要找出这两个流是否真的相同,只是名称不同(硬链接) (这有什么用?这样,如果我想对文件夹中的所有文件执行操作,我不会对具有不同名称的同一数据流执行两次操作。)这需要(),要求

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

如果给我两个
HANDLE
s来处理两个文件,我如何确定(不仅仅是高概率地)这两个
HANDLE
s是否属于磁盘上完全相同的文件和流

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

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

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

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

某些文件信息类 在工作上表现稍有不同 不同的操作系统版本。 这些类由 基本驱动因素,以及任何 他们返回的信息以 操作系统之间的更改 释放

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

这需要()请求文件流信息。返回流名称

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

某些文件信息类 在工作上表现稍有不同 不同的操作系统版本。 这些类由 基本驱动因素,以及任何 他们返回的信息以 操作系统之间的更改 释放


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

另外值得注意的是,GetFileInformationByHandleEx仅在Vista及更高版本上可用。(XP不会很快消亡,依我看:)对不起,我没有提到XP兼容性很重要(但我想这总比什么都没有好——如果与
NtQueryObject
结合使用,这样我就可以比较路径和流名称。谢谢!(想想看,
NtQueryInformationFile
文件流信息
可能在XP上工作…)@Leo@Lambert For XP您可以通过链接FileExtd.lib来获得此函数,至少根据MSDN文档,所以它看起来像是XP上的一个选项。我刚刚意识到,这似乎并不完全符合我的要求…
GetFileInformationByHandleEx
返回当前文件的流列表,而不是当前流。它不会告诉您如果两个句柄是相同的底层流,请告诉我。我遗漏了什么吗?还值得注意的是,GetFileInformationByHandleEx仅在Vista及以上版本上可用。(XP不会很快消亡,依我看:))对不起,我没有提到XP兼容性很重要(但我想这总比什么都没有好——如果与
NtQueryObject
结合使用,这样我就可以比较路径和流名称。谢谢!(想想看,
NtQueryInformationFile
文件流信息
可能在XP上工作…)@Leo@Lambert For XP您可以通过链接FileExtd.lib来获得此函数,至少根据MSDN文档,所以它看起来像是XP上的一个选项。我刚刚意识到,这似乎并不完全符合我的要求…
GetFileInformationByHandleEx
返回当前文件的流列表,而不是当前流。它不会告诉您如果这两个句柄是同一个底层流,请告诉我。我是否遗漏了任何内容?