public override int Read(byte[] buffer, int offset, int count)
        {
            var pinnedBuffer = GCHandle.Alloc(buffer, GCHandleType.Pinned);
            var bufferPtr    = pinnedBuffer.AddrOfPinnedObject();
            var readPtr      = Marshal.AllocHGlobal(8);

            _stream.Read(bufferPtr + offset, count, readPtr);
            var read = Marshal.ReadInt64(readPtr);

            pinnedBuffer.Free();
            Marshal.FreeHGlobal(readPtr);

            return((int)read);
        }