首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问ReadFile这个API的有关问题,怎么读完之后清空之前打开的

2012-05-04 
请教ReadFile这个API的问题,如何读完之后清空之前打开的?如题,Private Declare Function ReadFile Lib ke

请教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 的确是这样的,读取的就是缓存中的内容。如果数据没有刷新,当然还是原来的数据。

[解决办法]
并非如此。

你应该在 ReadFile 或 WriteFile 之前,调用 ClearCommError() 函数,取回 _COMSTAT 结构,从其中的 cbInQue 和 cbOutQue 得知输入和输出缓存中现有的字节数。

如 cbInQue 为 0 就不必 ReadFile。

热点排行