我在使用时遇到问题SHFileOperation
: SHFileOperation/SHFILEOPSTRUCT https://stackoverflow.com/questions/9191415/shfileoperation-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
?
Cheers.
问题是files
当 switch 块结束时将超出范围sf.pFrom
将是一个悬空指针。移动声明files
到外面的switch
.
注意你没有break
s 在任一switch
blocks.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)