最好的方法来确定在Windows中是否有两个路径引用同一个文件? [英] Best way to determine if two path reference to same file in Windows?

查看:494
本文介绍了最好的方法来确定在Windows中是否有两个路径引用同一个文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何比较2个字符串来确定他们是否使用C / C ++在Win32中指向相同的路径?



虽然这将处理很多情况下它错过一些事情:

  _tcsicmp(szPath1,szPath2)== 0 

例如:




  • 正斜杠/反斜杠



$ b

解决方案

使用 CreateFile打开这两个文件,调用 GetFileInformationByHandle ,并比较 dwVolumeSerialNumber nFileIndexLow nFileIndexHigh 。如果所有三个都相同,则它们都指向同一个文件:



GetFileInformationByHandle 函数



BY_HANDLE_FILE_INFORMATION 结构


How would I compare 2 strings to determine if they refer to the same path in Win32 using C/C++?

While this will handle a lot of cases it misses some things:

_tcsicmp(szPath1, szPath2) == 0

For example:

  • forward slashes / backslashes

  • relative / absolute paths.

[Edit] Title changed to match an existing C# question.

解决方案

Open both files with CreateFile, call GetFileInformationByHandle for both, and compare dwVolumeSerialNumber, nFileIndexLow, nFileIndexHigh. If all three are equal they both point to the same file:

GetFileInformationByHandle function

BY_HANDLE_FILE_INFORMATION Structure

这篇关于最好的方法来确定在Windows中是否有两个路径引用同一个文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆