Try this:
Using MyBinaryReader As New BinaryReader(New H(InputStream), Encoding.ASCII)
. . .
End Using
where H is:
Class H
Inherits Stream
Private s As Stream
Public Sub New(s As Stream)
Me.s = s
End Sub
Public Overrides ReadOnly Property CanRead As Boolean
Get
Return s.CanRead
End Get
End Property
Public Overrides ReadOnly Property CanSeek As Boolean
Get
Return s.CanSeek
End Get
End Property
Public Overrides ReadOnly Property CanWrite As Boolean
Get
Return s.CanWrite
End Get
End Property
Public Overrides ReadOnly Property Length As Long
Get
Return s.Length
End Get
End Property
Public Overrides Property Position As Long
Get
Return s.Position
End Get
Set(value As Long)
s.Position = value
End Set
End Property
Public Overrides Sub Flush()
s.Flush()
End Sub
Public Overrides Sub SetLength(value As Long)
s.SetLength(value)
End Sub
Public Overrides Sub Write(buffer() As Byte, offset As Integer, count As Integer)
s.Write(buffer, offset, count)
End Sub
Public Overrides Function Seek(offset As Long, origin As SeekOrigin) As Long
Return s.Seek(offset, origin)
End Function
Public Overrides Function Read(buffer() As Byte, offset As Integer, count As Integer) As Integer
Return s.Read(buffer, offset, count)
End Function
End Class
If required, use InputStream.Seek(0, SeekOrigin.Begin) before rereading the stream.