ReadComm()读串口数据,如何使它一次性读出全部数据

ReadComm()读串口数据,怎么使它一次性读出全部数据?
用API写了个串口程序,如何使它读出全部的数据?
比如   下位机一次性回了50个字节数据,我跟踪发现Vc先接受了10个字节,再接收了40个字节?能不能让它一次收完呢?
  ReadFile(m_hCom,buf,100,&m_osRead);   //我要求它一次要读100个字节
是不是这里延时有讲究?

TimeOuts.ReadIntervalTimeout=MAXDWORD;  
TimeOuts.ReadTotalTimeoutMultiplier=10;  
TimeOuts.ReadTotalTimeoutConstant=2000;

------解决方案--------------------
COMMTIMEOUTS comTimeOut; //设置超时
comTimeOut.ReadIntervalTimeout = 100; //两字符之间最大的延时
comTimeOut.ReadTotalTimeoutMultiplier = 50; //读取每字符间的超时
comTimeOut.ReadTotalTimeoutConstant = 1000; //一次读取串口数据的固定超时
comTimeOut.WriteTotalTimeoutMultiplier = 50; //写入每字符间的超时
comTimeOut.WriteTotalTimeoutConstant = 1000; //一次写入串口数据的固定超时
SetCommTimeouts(hCom,&comTimeOut);
------解决方案--------------------
这个没办法,,winapi+线程
一个时间段你就读出这么多东西 就切换了线程
所以说把每次读出来的东西放到一个buff
一直累加下去,从前面读,也算是个队列吧