系统错误124 - 带SHFileOperation的ERROR_INVALID_LEVEL

时间:2012-02-08 12:06:18

标签: c++ windows

我在使用SHFileOperationSHFileOperation/SHFILEOPSTRUCT时遇到了问题。我得到了它的工作,但我现在正试图把它放到一个函数中,因为它将在我的代码中多次使用。功能是:

void SHFileOperationFunc(string item1, string item2, int operation)
{
    SHFILEOPSTRUCT sf;
    memset(&sf,0,sizeof(sf));
    sf.hwnd = 0;
    sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;

    switch(operation)
    {
    case 1:

    case 2:
        sf.wFunc = FO_COPY;
        string files = item1 + "\\*.*";
        files.append(1, '\0');
        sf.pFrom = files.c_str();
        item2.append(1, '\0');
        sf.pTo = item2.c_str();
    }

    int opOkay = SHFileOperation(&sf);
    if(opOkay != 0)
    {
        //FAIL
    }

}

当我在函数外部使用代码时,它运行正常。但是现在它如上所述我得到一个错误返回给opOkay。错误值为124表示ERROR_INVALID_LEVEL - 系统调用级别不正确。我不知道这意味着什么。谷歌也没有多大帮助。有人开导我吗?

我应该使用SHFileOperation还是应该使用IFileOperation

干杯。

1 个答案:

答案 0 :(得分:3)

问题是当切换块结束并且files将是悬空指针时sf.pFrom将超出范围。将files的声明移至switch之外。

请注意,break块中的任何一个都没有switch