我有一个小的控制台应用程序将所有文件从一个USB驱动器复制到另一个:
void CopyAllFiles(wchar_t** source, wchar_t* destination)
{
WCHAR src[MAX_PATH + 1], dest[MAX_PATH + 1];
wsprintf(src, L"%s*\0", *source);
src[wcslen(src) + 1] = 0; \\Just to be sure it ends with "\0\0"
wsprintf(dest, L"%s\0", destination);
dest[wcslen(dest) + 1] = 0;
cout << "Source: " << src << endl << "Destination: " << dest << endl;
SHFILEOPSTRUCT s = { 0 };
s.hwnd = nullptr;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_NOCOPYSECURITYATTRIBS | FOF_RENAMEONCOLLISION | ;
s.pTo = dest;
s.pFrom = src;
cerr << "SHFileOperation returns " << SHFileOperation(&s) << endl;
}
这在Windows 8.1上运行良好,但是当我尝试在WinXP上以相同配置运行它时,SHFileOperation返回1223.我尝试从4GB USB复制1GB到空64GB USB。
知道为什么会这样吗?
答案 0 :(得分:0)
好吧,我没有意识到我必须指定现有目录的路径 - 在Win8上它自动创建目录,在xp上它没有。
非常感谢大家的帮助和建议。