Ссылка Как получить IntPtr из байта [] в C #
Я пытаюсь прочитать данные, на которые ссылается IntPtr, в байт [], а затем обратно в другой IntPtr. Указатель ссылается на изображение, снятое с устройства сканера, поэтому я также предположил, что для получения этой информации необходимо поместить ее в байтовый массив.
Я также не уверен, что метод Marshal.SizeOf () вернет размер данных, на которые ссылается IntPtr, или размер самого указателя.
Моя проблема в том, что я получаю сообщение об ошибке "Тип 'System.Byte []' не может быть маршалирован как неуправляемая структура; невозможно вычислить значимый размер или смещение"
IntPtr bmpptr = Twain.GlobalLock (hImage);
try
{
byte[] _imageTemp = new byte[Marshal.SizeOf(bmpptr)];
Marshal.Copy(bmpptr, _imageTemp, 0, Marshal.SizeOf(bmpptr));
IntPtr unmanagedPointer = Marshal.AllocHGlobal(
Marshal.SizeOf(_imageTemp));
try
{
Marshal.Copy(_imageTemp, 0, unmanagedPointer,
Marshal.SizeOf(_imageTemp));
Gdip.SaveDIBAs(
string.Format("{0}\\{1}.{2}", CaptureFolder, "Test", "jpg"),
unmanagedPointer, false);
}
finally
{
Marshal.FreeHGlobal(unmanagedPointer);
}
}
catch (Exception e)
{
Scanner.control.Test = e.Message;
}