2

我正在使用 MoveFileEx 移动文件。根据用户输入的内容,文件移动的位置可能位于单独的硬盘驱动器上。在这种情况下,MoveFileEx 失败,GetLastError 报告错误 ID 17,即:

ERROR_NOT_SAME_DEVICE 17 (0x11) 系统无法将文件移动到不同的磁盘驱动器。( http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx )

那么,在 VC++ 中,我将如何处理这样的情况,并移动文件,即使它位于单独的硬盘驱动器上?

我正在使用的代码在这里:https://gist.github.com/Whitetigerswt/9180030(虽然我认为它不相关,但除了将文件移动到另一个硬盘驱动器外,一切都很好。)

4

1 回答 1

12

MoveFileEx的文档清楚地说明了这一点:

移动文件时,目标可以位于不同的文件系统或卷上。如果目标位于另一个驱动器上,则必须在 dwFlags 中设置 MOVEFILE_COPY_ALLOWED 标志。

所以如果源驱动器和目标驱动器不一样,干脆还是把MOVEFILE_COPY_ALLOWEDflag改成dwFlags.

于 2014-02-24T01:11:27.317 回答