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がdouble-nullで終了している必要があります。のような単純な空の文字列""は修飾されません。APIは、最初のnull文字の後に来るメモリを読み取り、それらのファイルを正常に削除している可能性があります。

文字列が実際に正しくフォーマットされている場合のもう1つの説明は、APIが要求されたすべてのファイルを正常に削除し、途中で障害が発生しなかったことです。それはあなたが要求したすべての削除を完了したので、成功を返します。

于 2012-06-02T04:40:24.030 に答える