异步IO回来TRUE

异步IO返回TRUE这是一段异步IO读取文件数据的代码,可是为什么ReadFile函数会返回TRUE而不是预期的FALSE呢?

异步IO返回TRUE
这是一段异步IO读取文件数据的代码,可是为什么ReadFile函数会返回TRUE而不是预期的FALSE呢?开始时我以为读取的数据太少了,在ReadFile函数返回后就已经完成对数据的读取,于是我加大读取的字节数,但是仍然返回TRUE,实在是想不明白到底原因出在哪里,把代码贴出来大家看一下:

HANDLE hFile = CreateFile("1.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
  FILE_FLAG_OVERLAPPED, NULL);
if(INVALID_HANDLE_VALUE == hFile)
{
printf("Error\n");
return 0;
}

char szBuffer[10];
OVERLAPPED ol;
memset(&ol, 0x00, sizeof(ol));
ol.Offset = 0;
ol.OffsetHigh = 0;

BOOL bReadDone = ReadFile(hFile, szBuffer, sizeof(szBuffer), NULL, &ol);

if(!bReadDone)
{
if(ERROR_IO_PENDING == GetLastError())
{
DWORD dwRet = WaitForSingleObject(hFile, INFINITE);
if(WAIT_OBJECT_0 == dwRet)
{
szBuffer[ol.InternalHigh] = '\0';
printf("%s\n", szBuffer);
}
}
}
else
{
printf("%d %d\n", bReadDone, ol.InternalHigh);
}

CloseHandle(hFile);


这段代码老是执行else分支,即ReadFile返回TRUE
[解决办法]
不可能返回true吧。。。。。。。
[解决办法]
我也碰到这个问题了,有专家解释一下没?
[解决办法]
我也碰到这个问题了,有没有专家出来解决一下啊
[解决办法]
这个问题困扰我好几天了,下载了一个现成的串口异步通讯程序,串口根本没接任何信号,可是readfile仍然返回TRUE,根本就没有PEND状态,更没有WAIT,晕!