带I/O完成的异步操作虽然I/O操作按预期工作(我的读取缓冲区已满),但端口仍返回传输0字节。具有I/O完成的异步操作端口返回0字节传输
BYTE buffer[1024] = {0};
OVERLAPPED o = {0};
HANDLE file = CreateFile(
_T("hello.txt"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
HANDLE completion_port = CreateIoCompletionPort(
file,
NULL,
0,
0
);
ReadFile(
file,
buffer,
1024,
NULL,
&o
);
在工作线程:
DWORD numBytes = 0;
LPOVERLAPPED po;
GetQueuedCompletionStatus(
completion_port,
&numBytes,
0,
&po,
INFINITE
);
GetOverlappedResult(file, &o, &numBytes, FALSE);
这两个函数中的numBytes返回0字节,但buffer
被填充。这是预期的行为?
谢谢。
是的,你是正确的关键指针。你也假设我尝试了这两个函数来判断它们是否有效:-)。 谢谢。 – 2009-10-22 13:21:01