【发布时间】:2013-01-31 19:09:29
【问题描述】:
我注意到这些年来已经出现了几次的问题,并且似乎在我们当前版本的 Windows 7 下经常发生。
当我使用 ::GetFileAttributes(filename) 测试文件是否存在时,我经常返回 INVALID_FILE_ATTRIBUTES,GetLastError() 是 ERROR_PATH_NOT_FOUND (3)。
但是,文件确实存在,路径存在,卷存在 - 它的 H:\Foo\Bar - 这是网络共享上的一个文件夹,在我的机器上映射到 H:。
如果我打开一个命令窗口,它可以看到它。如果我使用 Windows 资源管理器导航到该文件夹,它可以看到它。
如果我在运行我们的应用程序之前执行这些操作,我们可以看到它。
但是,如果我在重新启动后,在任何尝试查看 H:\ 之前先运行我们的应用程序,则会重复出现上述错误。
在我看来,Windows 一直在“帮助”我,当给定的共享映射尚未重新连接此会话(它设置为自动重新连接)时,立即返回 ERROR_PATH_NOT_FOUND。不用说,这很烦人。我是否可以进行另一个 API 调用来“确定文件/文件夹 X 是否存在?”
【问题讨论】:
-
我不认为该错误与您的网络中断有关,因为您会得到不同的错误代码。尝试将文件名记录到文件并每次返回结果。也许你会发现路径有时是无效的,因为内存损坏或者路径空白。
-
我在我的开发环境中运行它。可以看到路径有效,返回码一致 3. LAN 配置为简单的点对点系统,“服务器”是简单的 XP Pro 盒子,具有不受保护的共享(内部,D :\主文件夹)。这个系统已经工作了很多年,除了偶尔我会得到那个错误,如果我在运行我们的应用程序之前(或在加载开发环境以在调试模式下运行之前)简单地访问映射的驱动器,它总是会清除。
标签: windows visual-c++ winapi