我正在使用ReadDirectoryChangesW
来查看目录。我最近发现在某些情况下(在Windows 7上)我收到的文件的路径有一些不同的情况(它们是大写的)的目录比我在文件夹资源管理器中看到的那样。我怀疑它可能与ReadDirectoryChangesW
文档的这一行部分有关:
如果您使用短名称打开文件,则可以收到短名称的更改通知。
我认为在相同的情况下,当长路径(我正在使用)匹配同一目录的短路径时,API会混淆。
在我的场景中 - 接收原始案例很重要。
我的问题是 - 有没有办法强制ReadDirectoryChangesW在报告路径时坚持文件浏览器(原始案例)中出现的案例。
答案 0 :(得分:1)
我证实了我的怀疑。 ReadDirectoryChangesW报告短路径。在这种特殊情况下发生这种情况的原因是目录路径正在完成具有大写名称的目录:c:\foo\BAR
。这被误解为所提供的路径是短路径。为了解决这个问题,我只是在创建句柄时无论输入是什么都是小写的,这消除了误解。
注意:如果对文件有活动的应用程序使用短路径,则此操作无效 - 通知仍然很短。谢谢,@ HarryJohnston