IntPtr a Byte Array y Back

ReferenciaCómo obtener IntPtr desde el byte [] en C #

Estoy intentando leer los datos que un IntPtr está haciendo referencia a un byte [] y luego a otro IntPtr. El puntero hace referencia a una imagen capturada desde un dispositivo escáner, por lo que también he asumido que la captura de esta información debe colocarse en una matriz de bytes.

Tampoco estoy seguro de si el método Marshal.SizeOf () devolverá el tamaño de los datos a los que hace referencia IntPtr o el tamaño del puntero.

Mi problema es que recibo el error "Tipo 'System.Byte []' no se puede ordenar como una estructura no administrada; no se puede calcular un tamaño o desplazamiento significativo"

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;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta