Winapi ReadDirectoryChangesW返回一些大小写不同的目录

Winapi ReadDirectoryChangesW返回一些大小写不同的目录,winapi,filestream,Winapi,Filestream,我正在使用ReadDirectoryChangesW查看目录。我最近发现,在某些情况下(在Windows 7上),我接收的文件路径中的某些目录的大小写(大写)与我在文件夹资源管理器中看到的不同。我怀疑它可能与ReadDirectoryChangesW文档的这一行相关: 如果使用短名称打开文件,则可以收到短名称的更改通知 我假设在相同的情况下,当长路径(我正在使用)与同一目录的短路径相匹配时,API会感到困惑 在我的场景中,接收原始案例非常重要 我的问题是-有没有一种方法可以强制ReadDirec

我正在使用
ReadDirectoryChangesW
查看目录。我最近发现,在某些情况下(在Windows 7上),我接收的文件路径中的某些目录的大小写(大写)与我在文件夹资源管理器中看到的不同。我怀疑它可能与
ReadDirectoryChangesW
文档的这一行相关:

如果使用短名称打开文件,则可以收到短名称的更改通知

我假设在相同的情况下,当长路径(我正在使用)与同一目录的短路径相匹配时,API会感到困惑

在我的场景中,接收原始案例非常重要


我的问题是-有没有一种方法可以强制ReadDirectoryChangesW在报告路径时坚持文件在文件资源管理器中出现的情况(原始情况)。

我证实了我的怀疑。ReadDirectoryChangesW正在报告短路径。在这种特殊情况下发生这种情况的原因是,目录路径正在指向一个大写名为:
c:\foo\BAR
的目录。这被误解为提供的路径是短路径。为了解决这个问题,当我创建句柄时,我只需要将输入的大小写降低,这样就消除了误解


注意:如果在该文件上有活动的应用程序使用短路径,则这不会有帮助-通知仍然很短。谢谢,@HarryJohnston

这个操作系统有多旧。视窗7。这是一个非常合理的猜测,但我会说事实并非如此。我尝试获取其他API的名称,例如:dir from command line或FindFirstFileW,返回我期望的名称(小写)。我不相信有任何保证通知会在任何特定情况下到达-例如,它们可能出现在使用其他应用程序(进行更改的应用程序)的情况下。也就是说,短路径不是唯一可能的原因。