public byte[] DataTransFromBuffer(SapBuffer buff) { byte[] output = new byte[buff.Width * buff.Height]; GCHandle outputAddr = GCHandle.Alloc(output, GCHandleType.Pinned); // output 의 주소 만듬 IntPtr pointer = outputAddr.AddrOfPinnedObject(); // buff.ReadRect(0, 0, buff.Width, buff.Height, pointer); Marshal.Copy(pointer, output, 0, output.Length); outputAddr.Free(); return(output); }
public override bool?BuffGetAll() { try { BuffData = new byte [Buffers.Width * Buffers.Height]; GCHandle outputAddr = GCHandle.Alloc(BuffData, GCHandleType.Pinned); IntPtr pointer = outputAddr.AddrOfPinnedObject(); Buffers.ReadRect(0, 0, Buffers.Width, Buffers.Height, pointer); Marshal.Copy(pointer, BuffData, 0, BuffData.Length); outputAddr.Free(); return(true); } catch (Exception ex) { BuffData = null; return(null); } }