'socket接受数据
Private Sub tcpsocket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim rc As Long
    Dim WaveData() As Byte
    Static ExBytes(MAXTCP) As Long
    Static ExData(MAXTCP) As Variant
  
    
'--------------------------------------------------------------
With wStream
    If (tcpsocket(Index).BytesReceived > 0) Then
        Do While (tcpsocket(Index).BytesReceived > 0)
            If (ExBytes(Index) = 0) Then
                If (.waveChunkSize <= tcpsocket(Index).BytesReceived) Then
                    Call tcpsocket(Index).GetData(WaveData, vbByte + vbArray, .waveChunkSize)
                    Call .SaveStreamBuffer(Index, WaveData)
                    Call .AddStreamToQueue(Index)
                Else
                    ExBytes(Index) = tcpsocket(Index).BytesReceived
                    Call tcpsocket(Index).GetData(ExData(Index), vbByte + vbArray, ExBytes(Index))
                End If
            Else
                Call tcpsocket(Index).GetData(WaveData, vbByte + vbArray, .waveChunkSize - ExBytes(Index))
                ExData(Index) = MidB(ExData(Index), 1) & MidB(WaveData, 1)
                Call .SaveStreamBuffer(Index,ExData(Index))
                Call .AddStreamToQueue(Index)
                ExBytes(Index) = 0
                ExData(Index) = ""
            End If
        Loop
        
        If (Not .Playing And .PlayDeviceFree And _
            Not .Recording And .RecDeviceFree) Then
            Call play
        End If
    End If
    
End With      talk.BorderStyle = 0
      wStream.Recording = False
End Sub
-----------------------------
在 Call .SaveStreamBuffer(Index,ExData(Index))
这句代码总提示类型不匹配的错误!
如果换成Call .SaveStreamBuffer(Index, MidB(ExData(Index), 1) & MidB(WaveData, 1))
在最后play中
Private Sub play()
 Dim rc As Long
    Dim iPort As Integer
    Dim itm As Integer
'--------------------------------------------------------------
    If (Not wStream.Playing And wStream.PlayDeviceFree And _
        Not wStream.Recording And wStream.RecDeviceFree) Then
        wStream.Playing = True
        iPort = wStream.StreamInQueue
        Do While (iPort <> NULLPORTID)
            rc = wStream.PlayWave(UserControl.hWND, iPort)
            Call wStream.RemoveStreamFromQueue(iPort)
            iPort = wStream.StreamInQueue
        Loop
        wStream.Playing = False
    End If
End Sub
改变后这里rc = wStream.PlayWave(UserControl.hWND, iPort)
报错:
Error In acmStreamSize rc=  512 MSG= The requested operation cannot be performed LastDllError= 0 Source= Error In acmStreamPrepareHeader_x rc=  512 MSG= The requested operation cannot be performed LastDllError= 0 Source= Error In acmStreamUnprepareHeader_x rc=  514 MSG= The acm stream header is not prepared LastDllError= 0 Source=
哪位能帮忙解决一下!附送源代码