SHFileOperation在pFrom =“”时删除

时间:2012-06-01 19:52:46

标签: c++ shfileoperation

我有一个涉及SHFileOperation的问题:

    SHFILEOPSTRUCT sf2;
    memset(&sf2,0,sizeof(sf2));
    sf2.hwnd = NULL;
    sf2.wFunc = FO_DELETE;
    sf2.fFlags = FOF_NOCONFIRMATION;
    sf2.pFrom = pathSubDir; // where pathSubDir = ""

    //2. Delete temporary files
    int n = SHFileOperation(&sf2);

我的期望是,因为pathSubDir是“”,它没有删除任何东西,我应该得到n不等于0.但是,事实并非如此。我最终得到n = 0,这意味着操作成功完成。我很好奇是否有人可以向我解释为什么我的假设是错误的。谢谢。

1 个答案:

答案 0 :(得分:1)

API要求pFrom以双零终止。像""这样的简单空字符串不符合条件。 API可以读取第一个空字符后的内存,并成功删除这些文件。

另一种解释是,如果您的字符串格式正确,那么API已成功删除了所有请求的文件,并且在此过程中没有遇到任何故障。它完成了你要求的所有删除,因此它返回成功。