我有一个测试,它在循环中创建一系列文件夹,直到它超过 MAX_PATH (260)。这将返回 ERROR_PATH_NOT_FOUND(0x3)。我们有一台运行此测试的构建机器,但在构建机器上它返回 ERROR_FILENAME_EXCED_RANGE (0xce)。
我的机器是 Windows 7,但构建机器是 Vista。这可能是他们返回不同值的原因吗?如果没有,有谁知道为什么会发生这种情况?
编辑:我期待得到一个错误,我正在测试一个文件系统驱动程序。我只是不明白为什么我从不同机器上的同一个测试中得到两个不同的错误代码。这是代码
homeDir << "C:\Users\me\TestFolder";
string childDir = "\\LongChildDirectoryName";
string dir = homeDir.str();
DWORD lastErr = ERROR_SUCCESS;
while(lastErr == ERROR_SUCCESS)
{
int len = dir.size();
if(len > (MAX_PATH - 12))
{
CuFail(tc, "Filepath greater than max allowed should be");
}
dir += childDir;
if(!CreateDirectory(dir.c_str(), NULL))
{
lastErr = GetLastError();
if (lastErr == ERROR_ALREADY_EXISTS)
lastErr = ERROR_SUCCESS;
}
}
CuAssert(tc, "Check error is ERROR_PATH_NOT_FOUND", lastErr == ERROR_PATH_NOT_FOUND);