c++ - FindFirstFile() 在几个循环后为现有文件夹返回 ERROR_PATH_NOT_FOUND
问题描述
我有非常简单的代码,检查目录是否存在。我们在特定操作之前多次运行此代码以进行初始化。
WIN32_FIND_DATA ffd;
HANDLE hFind = FindFirstFile(mConfig.mOutputDir->c_str(), &ffd);
if (INVALID_HANDLE_VALUE == hFind)
{
wprintf(L"Warning: Output Directory may not exist\n");
wprintf(L"Error : %d\n",GetLastError());
}
if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
wprintf(L"Warning: Output Directory is not valid directory\n");
}
的值mConfig.mOutputDir->c_str()
是有效目录,并且在运行时从不更改。问题是在大约 1000 次调用上面的代码之后,FindFirstFile()
开始返回错误代码ERROR_PATH_NOT_FOUND
。
我尝试了其他 API,即GetAttributes()
,它以相同的顺序失败并显示错误代码ERROR_NOT_ENOUGH_MEMORY
此外,当我在 VeraCrypt 卷上运行程序时,与在正常卷上运行程序相比,故障出现在循环中更早。
我也尝试过调用FindClose()
API,FindFirstFile()
但没有区别
我在 windows 10 64 位中运行程序,代码本身是使用 Visual Studio 2005 编译的。
Windows 文件系统 API 是否有任何错误?
解决方案
推荐阅读
- php - 在 codeigniter4 的模型中使用 $dateFormat INT
- apache-kafka - 从命令提示符创建 Kafka 生产者给代理断开错误
- r - 将文本字符串“ABCYYYYMM”转换为 R 中的日期格式
- php - 上传文件时响应文件管理器显示未知错误
- wcf - 如何确保将客户端证书传递给服务器
- python - 我如何知道函数返回的是字符串还是字节?
- c++ - 编译错误:匿名聚合中不允许使用构造函数的成员
- amazon-web-services - 如何在 AWS ECS 集群的服务中运行 AWS ECS 任务,而不是将服务从 Circle CI 的“aws-ecs/run-task”中排除
- javascript - 当另一个菜单项的按钮(第一个的“表亲”)被使用 Javascript 而没有 jQuery 点击时,关闭一个菜单项的子菜单
- android - kotlin - 我的 if 语句和运算符有问题