MAX_PATH (260) を超えるまで一連のフォルダーをループで作成するテストがあります。これは ERROR_PATH_NOT_FOUND(0x3) を返します。このテストを実行するビルド マシンがありますが、ビルド マシンでは ERROR_FILENAME_EXCED_RANGE (0xce) が返されます。
私のマシンは Windows 7 ですが、ビルド マシンは Vista です。それが、異なる値を返す理由でしょうか? そうでない場合、なぜこれが起こるのか誰か知っていますか?
編集: エラーが発生することを期待しています。ファイル システム ドライバーをテストしています。異なるマシンでの同じテストから 2 つの異なるエラー コードが表示される理由がわかりません。ここにコードがあります
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);