CreateDirectory windows API issue
CreateDirectory windows API issue
我正在使用CreateDirectory给定路径,其中包含"d:temps1"该函数在1000次中失败一次,因为我命中相同no的概率较小,我认为这不是问题,但如果返回"ERROR_ALREADY_EXISTS",它仍然会创建该目录
。我有这个目录结构
<>之前d: temp s1 1002d: temp s1 1009…………..…………..之前比如说30个这样的文件夹,当getLastError()返回"ERROR_ALREADY_EXISTS"时,继续循环然后检查下一个随机号码。我发现这些新目录被无限地创建,这些目录以前不存在。这是非常奇怪的任何帮助最好,因为它是非常随机的性质
代码是这样的…
int randNo = 0;
while(1)
{
randNo = rand();
cnt++;
sprintf(tempDirPath,"d:\temp\S1\%d",randNo);
mbstowcs(wBuf,tempDirPath,_MAX_PATH);
bVal = CreateDirectory((LPCTSTR)wBuf,NULL);
retVal = GetLastError();
if( retVal == ERROR_ALREADY_EXISTS)
{
continue;
}
else if (retVal == ERROR_PATH_NOT_FOUND)
{
bVal = CreateFolder(tempDirPath); // i'm creating a folder for further use
}
break;
}
我想我能猜到你的问题是什么:你检查GetLastError
的错误代码,即使没有错误。检查错误码前,始终检查CreateDirectory
返回的值
这里发生的是CreateDirectory
失败,设置错误代码。然后下次调用CreateDirectory
时,它成功了,但它不清除错误代码,使其与上次函数失败时一样。
这不仅适用于CreateDirectory
, 所有函数可能失败,将返回一个值表明它失败了,只有这样你才能检查GetLastError
得到错误是什么
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- QT 和 JIRA Rest API: /rest/api/2/issue/createmeta 意外返回韩语的 iss
- CreateDirectory windows API issue