首页 > 解决方案 > 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 是否有任何错误?

标签: c++windowsvisual-studiowinapifilesystems

解决方案


推荐阅读