1

I'm using the function Movefile() (in C). I can see the file moved from the source folder to the destination (means the MoveFile success) but when I do GetLastError() I get error no. 2 (ERROR_FILE_NOT_FOUND).

What can be the problem?

The code is:

_snprintf(szSrcPath, MAX_PATH, "%s/%s/%s.jpg", NPath, imagePathFromAdmin, username);
_snprintf(szDestPath, MAX_PATH, "%s/Images/Storage/%s/%d/%s.jpg", NPath, domain, sub_folder, username);
strcpy(imagePathStorgae,szDestPath);
MoveFile(szSrcPath,szDestPath);
err=GetLastError();
4

2 回答 2

7

如果函数成功,则不获取错误代码,该值无效。而是检查实际函数返回的值(即MoveFile函数返回值),如果这表明发生了错误,那么您可以检查错误是什么。

于 2013-03-11T12:54:56.300 回答
7

GetLastError只有当 API 函数调用报告失败时,您才需要调用。CopyFile检查和的返回值MoveFile。如果其中任何一个返回FALSE,则 API 调用失败,然后,只有这样,调用GetLastError.

文档是这样说的:

返回值

如果函数成功,则返回值非零。

如果函数失败,则返回值为零。要获取扩展的错误信息,请调用GetLastError

发生的事情是MoveFile成功并且不会修改最后一个错误值。然后,当您调用GetLastError它时,它会为对 API 函数的其他调用返回一个错误代码,这发生在您调用MoveFile. 你应该这样写代码:

if (!MoveFile(szSrcPath,szDestPath))
{
    DWORD err = GetLastError();
    // handle the error
}
于 2013-03-11T12:54:37.550 回答