对ReadFile函数的异步调用返回6个错误代码
Async call to ReadFile function returns 6 error code
为了异步读取文件,我编写了下面的c++代码:
#define BUF_SIZE 1024
HANDLE hFile;
DWORD NumberOfBytesRead = 0;
BYTE *buf = (BYTE*)malloc(BUF_SIZE*sizeof(BYTE));
OVERLAPPED overlapped;
overlapped.Offset = overlapped.OffsetHigh = 0;
hFile = CreateFile("C:\Users\Desktop\FOO.cpp",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
printf("invalid hfilen");
int i;
i= ReadFile(hFile,
&buf,
BUF_SIZE,
&NumberOfBytesRead,
&overlapped);
if(!i && GetLastError() != ERROR_IO_PENDING)
printf ("ReadFile failed with error %d.n", GetLastError());
else
{
WaitForSingleObject(&(overlapped.hEvent), 0);
printf("here it is %d",NumberOfBytesRead );
}
CloseHandle(hFile);
但是ReadFile的返回值是0,最后一个错误等于6。有人知道为什么吗?6个错误代码说明了什么?
谢谢!。
也许您的问题是OVERLAPPED结构,您没有正确初始化它。请参阅:"在函数调用中使用该结构之前,该结构中任何未使用的成员都应初始化为零。否则,函数可能会失败并返回ERROR_INVALID_PARAMETER。"。您可以使用memset来清除所有内容。
错误代码6表示无效句柄。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
这似乎很奇怪,因为您检查了无效的句柄值。不确定这是否对你有帮助,但我可能会先尝试同步打开文件。
相关文章:
- 如何返回多个矢量对象的平均值?C++
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 在 c++ 中,如何返回多个对象并从 RVO 中受益
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- collect2:错误:ld 返回 1 个退出状态未定义的引用
- 返回两个向量 – 使用引用还是元组?
- PyTorch C++ 前端向前返回多个张量
- 为什么 getch 在按下函数或箭头键时返回三个值?
- 函数返回两个字符串的第一个常用字符
- 从递归函数 C++ 返回多个值
- C++函数返回两个 char 数组的相同索引元素
- FBX SDK 在预期 3 个顶点时返回 4 个顶点
- 使用函数的元组返回多个值的问题
- C++:如何使用传递引用在一个方法中返回多个值
- 为什么同一个逻辑方程在python和c++中返回两个不同的结果
- "Extern"对象问题:错误:Id 返回 1 个退出状态
- c++ (C::B) 错误:ld 返回 1 个退出状态
- 返回多个 py::数组而不在 pybind11 中复制
- 从 COM 接口中的函数返回多个值
- C++ 简单的掷骰子 - 如何返回多个不同的随机数