VB6做USB接口,遇到很诡异的有关问题,大神进来帮小弟我看看呀

VB6做USB接口,遇到很诡异的问题,大神进来帮我看看呀。
我通过一个定时器,1s的循环去读USB设备上缓存区,然后返回数据。

Private Sub tmrData_Timer()                         '数据数据收发
    Dim i As Integer, j As Integer
    
    SendBuffer(0) = 0                               '缓冲区的第一个字节数 Report ID
    SendBuffer(1) = &HB4
    SendBuffer(2) = 0
    SendBuffer(3) = 0
    SendBuffer(4) = 0
    SendBuffer(5) = DepID
    
    ReadBuffer(2) = 0
    
    Call VBtoUSB
    
    If ReadBuffer(2) <> 0 Then                      '已接收到数据
        Text1.Text = ReadBuffer(2)
        ReadBuffer(2) = 0
    End If
    ReadBuffer(2) = 0
End Sub

现在的问题是:设备上每次被USB上位机读走后都会清除掉缓存区的数据。。。但是VB中的ReadBuffer一直有数据,这是什么原因呀?如果我把VB关掉再重新打开,就读不到了,显然是设备上的缓存区是没有数据的。

然后我用了很多ReadBuffer(2) = 0想去强制把它清空,但是经过Call VBtoUSB 后,ReadBuffer(2) <> 0,感觉相当的诡异,无端端怎么还会保存第一次的数据呢?有什么办法能看到我是哪里没有清除ReadBuffer???

Public Sub WriteReport()
    result = WriteFile(HidDevice, SendBuffer(0), 65, 0, 0)
End Sub

Public Sub tmrDelay_Timer()
    Timeout = True
    SetHosMsg.tmrDelay = False
End Sub

Public Sub ReadReport()
    result = ReadFile(HidDevice, ReadBuffer(0), 65, 0, 0)
End Sub

Public Sub VBtoUSB()
    Call WriteReport   '发送
    
    Timeout = False
    SetHosMsg.tmrDelay.Interval = 5
    SetHosMsg.tmrDelay.Enabled = True
    Do
        DoEvents
    Loop While Timeout = True
    
    Call ReadReport   '接收
End Sub


------最佳解决方案--------------------

'Example Name: Using DeviceIoControl

'------------------------------------------

'BAS Module Code 
'------------------------------------------
 
Option Explicit

Public Const DRIVE_REMOVABLE = 2
Public Const DRIVE_CDROM = 5
Public Const INVALID_HANDLE_VALUE As Long = -1&
Public Const GENERIC_READ As Long = &H80000000
Public Const FILE_SHARE_READ As Long = &H1
Public Const FILE_SHARE_WRITE As Long = &H2