系统错误124 - 使用SHFileOperation的ERROR_INVALID_LEVEL
问题描述:
我在使用SHFileOperation
时出现问题:SHFileOperation/SHFILEOPSTRUCT。我得到了这个工作,但我现在试图把它放到一个函数中,因为它会在我的代码中多次使用。该功能是:系统错误124 - 使用SHFileOperation的ERROR_INVALID_LEVEL
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
?
干杯。
答
问题是files
将在切换块结束时超出范围,并且sf.pFrom
将成为悬挂指针。将files
的声明移至switch
之外。
请注意,您在switch
区块中没有任何break
s。
+0
soooo应该看到一个。谢谢 – discodowney 2012-02-08 12:15:31
错误代码124 = 0x7c = ['DE_INVALIDFILES'(源或目的地或两者中的路径无效)](http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164 %28V = vs.85%29.aspx)。 – 2012-02-08 14:10:24
@ RaymondChen,这是我的混淆。你可以发布这个答案吗? – 2015-12-21 08:55:00