Попытка чтения или записи защищенной памяти
Привет,
В этом коде я " попытался прочитать или записать защищенную память.Это часто указывает на то, что другая память повреждена"
Небезопасный кодек находится внутри StreamLibrary.dll ссылочная библиотека dll c# включает в себя неуправляемые коды.Который я скачал с github и скомпилировал.https://github.com/AnguisCaptor/StreamLibrary[^]
И это мой код
Dim unsafeCodec As IUnsafeCodec = New UnsafeStreamCodec(80) Dim stream As New MemoryStream(10000000) Try While streamDesktop And client.Connected Dim bmp As Bitmap = CaptureDesktop() Dim rect As New Rectangle(0, 0, bmp.Width, bmp.Height) Dim size As Size = New System.Drawing.Size(bmp.Width, bmp.Height) Dim bmpData As BitmapData = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat) unsafeCodec.CodeImage(bmpData.Scan0, rect, size, bmp.PixelFormat, stream)'Error at this line If stream.Length > 0 Then MsgBox(stream.ToArray.Length) Send("Desktop|", , stream.ToArray) End If bmp.UnlockBits(bmpData) bmp.Dispose() End While Catch ex As Exception MsgBox(ex.Message) End Try
Как я могу это исправить ? Спасибо
Sergey Alexandrovich Kryukov
В каком направлении?
—СА
suleymankenar
Извините забыл написать это он дает в этой строке
unsafeCodec.CodeImage(bmpData.Scan0, прямоугольник, площадь, БМП.PixelFormat, трансляция)
Sergey Alexandrovich Kryukov
Хорошо, но, к сожалению, я могу только догадываться, что делает unsafeCodec и как он работает... вероятно, он делает что-то слишком небезопасное... :-)
—СА
Duncan Edwards Jones
Вы передаете bmpData. Scan0 по значению, а не по ссылке? (то есть адрес, хранящийся в Scan0, а не адрес переменной Scan0)?