Я заметил проблему, которая накапливалась несколько раз за последние годы и, кажется, часто встречается под Windows 7 в нашей текущей сборке.
Когда я проверяю наличие файла, используя :: GetFileAttributes (имя файла), я часто получаю обратно INVALID_FILE_ATTRIBUTES, а GetLastError () - ERROR_PATH_NOT_FOUND (3).
Однако файл существует, путь существует, существует том - его H: \ Foo \ Bar - папка на сетевом ресурсе, сопоставленная на моем компьютере с H:.
Если я открою командное окно, оно увидит его. Если я использую проводник Windows для перехода к этой папке, он может видеть его.
Если я сделаю это до запуска нашего приложения, мы увидим его.
Но если я сначала запускаю наше приложение, после перезагрузки, до того, как что-либо попыталось просмотреть H: \, то я неоднократно получаю вышеуказанную ошибку.
Мне всегда казалось, что Windows «помогает», возвращая ERROR_PATH_NOT_FOUND немедленно, когда данное отображение общего ресурса не было повторно подключено в этом сеансе (для него установлено автоматическое повторное подключение). Это, само собой разумеется, раздражает. Есть ли еще один вызов API, который я мог бы сделать, чтобы «определить, существует ли файл / папка X?»