大家好,用ReadFile获取数据后,缓冲区中是否自动清空?我多次ReadFile,都能得到一模一样的数据,是怎么回事?

解决方案 »

  1.   

    不会。多次ReadFile可能后面的几次ReadFile已经失败了,测试一下返回值就知道了
      

  2.   

    以前我做串口通讯的时候,ReadFile一次,缓冲区就没有数据了。现在是需要搞一个USB设备,Readfile一次后,缓冲区还有数据,代码如下
    ReadHandle=CreateFile
    (detailData->DevicePath,
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,
    (LPSECURITY_ATTRIBUTES)NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL);Result = ReadFile
    (ReadHandle,
    InputReport,
    65,
    &NumberOfBytesRead,
    NULL);
    不知道是不是硬件设备的原因啊?
      

  3.   

    硬件哪来的?
    不会是硬件的bug吧
      

  4.   

    硬件设备就是我与一个USBHid设备通讯,这个USB设备是其他厂家提供的。
      

  5.   

    感谢Saleayas,用HidD_FlushQueue 咋还是不行呢?看下面的流程DeviceHandle=CreateFile(......)WriteFile(DeviceHandle,......)
    HidD_FlushQueue(DeviceHandle,......)ReadFile(DeviceHandle,inputReport......) 有数据
    HidD_FlushQueue(DeviceHandle,......)
    memset(inputReport,0,sizeof(inputReport))
    ReadFile(DeviceHandle,inputReport......) 还有数据?
    memset(inputReport,0,sizeof(inputReport))
    ReadFile(DeviceHandle,inputReport......) 还还有数据?一直读下去都有数据。