从ReplaceFile重现ERROR_UNABLE_TO_MOVE_REPLACEMENT_2错误代码

时间:2011-07-18 03:13:04

标签: windows winapi error-handling error-code

我使用ReplaceFile Win32函数作为获取原子行为的操作的一部分。

在该函数的三个特殊错误代码中,我已经能够从两个重现和恢复(回滚):ERROR_UNABLE_TO_MOVE_REPLACEMENT和ERROR_UNABLE_TO_REMOVE_REPLACED。

我的问题与第三个错误代码有关:ERROR_UNABLE_TO_MOVE_REPLACEMENT _2

  1. 是否有人看到此错误代码已退回?在什么条件下可能?
  2. 有关如何重新生成此错误的任何想法,以便我可以测试从我的代码中恢复的路径吗?
  3. 我从文档中收集到要从此错误中恢复(回滚),我需要将替换后的文件重命名为其原始名称,因为ReplaceFile会将其留下备份文件名。任何人都可以验证这实际上是ReplaceFile离开文件的状态吗?
  4. 如果有帮助,可以提供更多细节:

    • 使用非NULL备份文件名调用ReplaceFile(实际上,如果给出了NULL备份名称,则不会发生ERROR_UNABLE_TO_MOVE_REPLACEMENT_2)。
    • 我还传递了REPLACEFILE_WRITE_THROUGH标志。
    • 这些文件都存在于同一个NTFS卷上。

1 个答案:

答案 0 :(得分:1)

ERROR_UNABLE_TO_MOVE_REPLACEMENT_2在属性和辅助数据流附加到替换文件时发生,但主文件本身无法替换。

你对恢复的假设是正确的。