我在使用SHFileOperation
: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
?
干杯。
答案 0 :(得分:3)
问题是当切换块结束并且files
将是悬空指针时sf.pFrom
将超出范围。将files
的声明移至switch
之外。
请注意,break
块中的任何一个都没有switch
。