アトミックな動作を取得する操作の一部として、 ReplaceFile Win32 関数を使用しています。
その関数の 3 つの特別なエラー コードのうち、2 つを再現して回復 (ロールバック) できました: ERROR_UNABLE_TO_MOVE_REPLACEMENT と ERROR_UNABLE_TO_REMOVE_REPLACED。
私の質問は、3 番目のエラー コード ERROR_UNABLE_TO_MOVE_REPLACEMENT _2に関するものです。
- このエラー コードが返されるのを見た人はいますか? どのような条件で可能ですか?
- このエラーから回復するコード内のパスをテストできるように、このエラーを再現する方法についてのアイデアはありますか?
- このエラーから回復 (ロールバック) するには、置き換えられたファイルの名前を元の名前に戻す必要があることをドキュメントから収集しました。これが実際に ReplaceFile がファイルを残す状態であることを誰でも確認できますか?
それが役立つ場合の詳細:
- ReplaceFile は、NULL 以外のバックアップ ファイル名で呼び出されます (実際、NULL バックアップ名が指定されている場合、ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 は発生しません)。
- REPLACEFILE_WRITE_THROUGH フラグも渡します。
- ファイルはすべて同じ NTFS ボリュームに存在します。