0

我有一个涉及 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,这意味着操作已成功完成。我很好奇是否有人可以向我解释为什么我的假设是错误的。谢谢你。

4

1 回答 1

1

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

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

于 2012-06-02T04:40:24.030 回答