5

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

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

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

  1. 有没有人看到这个错误代码返回?在什么条件下是可能的?
  2. 关于如何重现此错误以便我可以测试代码中从中恢复的路径的任何想法?
  3. 我从文档中收集到要从此错误中恢复(回滚),我需要将替换的文件重命名为其原始名称,因为 ReplaceFile 将保留它的备份文件名。任何人都可以验证这实际上是 ReplaceFile 保留文件的状态吗?

如果有帮助,请提供更多详细信息:

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

1 回答 1

1

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

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

于 2013-09-13T20:17:29.930 回答