gpt4 book ai didi

winapi - 关于 ReadFile() WinAPI,GetLastError 抛出错误 183。在这种情况下, "ERROR_ALREADY_EXISTS"是什么意思?

转载 作者:行者123 更新时间:2023-12-01 09:35:21 31 4
gpt4 key购买 nike

我正在调用 ReadFile() WinAPI 将文件内容复制到我的 VC++ 代码中的 char 数组中。在 ReadFile() 之后立即放置 GetLastError()。

for( read some n no: of files)
{
FileRead(fp,destCharArray,ByesToRead,NoOfBytesRead,NULL);
int ret = GetLastError();
}

GetLastError() 仅在读取第一个文件时返回 183。对所有人 其他文件读取其返回的 183。但即使返回 183 文件的内容被复制到 charArray。问题是 某些第 28 个文件不会发生文件读取(这里也返回状态是 183)。无论文件读取成功或不成功,183 都是 回来了!

根据http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

错误代码 183 表示“ERROR_ALREADY_EXISTS”。

上述错误状态在 ReadFile() 上下文中意味着什么?

谁能帮我找出原因?

最佳答案

您的代码错误地调用了 GetLastError。您应该只在之前的 Win32 API 调用失败时调用 GetLastError,并且该 API 通过 GetLastError 返回状态信息。

这里有问题的 API 是 ReadFiledocumentation说:

Return value

If the function succeeds, the return value is nonzero (TRUE).

If the function fails, or is completing asynchronously, the return value is zero (FALSE). To get extended error information, call the GetLastError function.

换句话说,您必须仅在 ReadFile 返回 FALSE 时调用它。

您的代码应如下所示:

if (!ReadFile(fp,destCharArray,ByesToRead,NoOfBytesRead,NULL))
{
DWORD err = GetLastError();
// handle error probably by raising exception
}

您的代码正在返回与调用 ReadFile 无关的早期故障的错误代码。

关于winapi - 关于 ReadFile() WinAPI,GetLastError 抛出错误 183。在这种情况下, "ERROR_ALREADY_EXISTS"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9128693/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com