我正在尝试将 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;
}