SHFileOperation返回1223,仅在xp上

SHFileOperation returns 1223, only on xp

本文关键字:xp 仅在 返回 1223 SHFileOperation      更新时间:2023-10-16

我有一个小控制台应用程序将所有文件从一个usb驱动器复制到另一个:

void CopyAllFiles(wchar_t** source, wchar_t* destination)
{
    WCHAR src[MAX_PATH + 1], dest[MAX_PATH + 1];
    wsprintf(src, L"%s*", *source);
    src[wcslen(src) + 1] = 0;             \Just to be sure it ends with ""
    wsprintf(dest, L"%s", 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。

知道为什么会这样吗?

好的,我没有意识到我必须指定现有目录的路径-在Win8上它会自动创建目录,在xp上它不会。

非常感谢大家的帮助和建议。