请教ReadFile这个API的问题,如何读完之后清空之前打开的?
如题,
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
我是用在通讯,使用WriteFile向COM发送,使用ReadFile读取信息。
我已经读取完毕,但是如果下次用这个函数读取的时候,如果没有新的信息返回到这个地方的时候,那么ReadFile读取的是前一次的信息,或者是上次还没有提取完毕的信息。
因为一次通讯返回的信息比较多,我不想全部读完,取前面的一段就足够了,但是下次我再读的时候,读取的确实上次没读完的,而且下次读取的时候,如果本次没有新的数据返回的话,读到的又是上次的旧信息(从头开始读,假如上次已经读完)。
我想在读取完毕之后,清空这些信息,不让它存留在这个句柄所指的存储单元中,如果没有更新的信息返回到这个地方,那么我下次读取到的就是全部清空的信息,这样我就很容易辨识出有没有新信息返回来。
Help Me!plz
[解决办法]
[解决办法]
并非如此。
你应该在 ReadFile 或 WriteFile 之前,调用 ClearCommError() 函数,取回 _COMSTAT 结构,从其中的 cbInQue 和 cbOutQue 得知输入和输出缓存中现有的字节数。
如 cbInQue 为 0 就不必 ReadFile。