private void WriteMemoryMap(UpdateInfoPacket packet) { MemoryMappedViewStream memStream = null; try { //Make sure there is a map first if (m_memMap == null) { return; } //Create the view stream memStream = m_memMap.CreateViewStream(); memStream.Seek(0, SeekOrigin.Begin); //Create the object to write to the memory map using (BinaryWriter writer = new BinaryWriter(memStream)) { //Convert the structure to a byte array byte[] rawPacket = PacketToBytes(packet); //Write the byte array to memory writer.Write(rawPacket); } } catch (Exception ex) { //BIG ERROR, report it System.Diagnostics.Debug.WriteLine("Error " + ex.Message); } }
private int PacketSize() { UpdateInfoPacket packet = new UpdateInfoPacket(); int size = Marshal.SizeOf(packet); return(size); }
private byte[] PacketToBytes(UpdateInfoPacket packet) { int size = Marshal.SizeOf(packet); byte[] array = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(packet, ptr, true); Marshal.Copy(ptr, array, 0, size); Marshal.FreeHGlobal(ptr); return(array); }
private UpdateInfoPacket BytesToPacket(byte[] packet) { UpdateInfoPacket structure = new UpdateInfoPacket(); int size = Marshal.SizeOf(structure); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(packet, 0, ptr, size); structure = (UpdateInfoPacket)Marshal.PtrToStructure(ptr, structure.GetType()); Marshal.FreeHGlobal(ptr); return(structure); }
private void ReadMemoryMap(out UpdateInfoPacket packet) { packet = new UpdateInfoPacket(); MemoryMappedViewStream memStream = null; try { //Make sure there is a map first if (m_memMap == null) { return; } //Create the view stream memStream = m_memMap.CreateViewStream(); memStream.Seek(0, SeekOrigin.Begin); //Create the object to read from the memory map using (BinaryReader reader = new BinaryReader(memStream)) { //Read the data from memory in bytes byte[] rawPacket = reader.ReadBytes(PacketSize()); //Convert the byte data to the structure if (rawPacket != null) { packet = BytesToPacket(rawPacket); } } } catch (Exception ex) { //BIG ERROR, report it System.Diagnostics.Debug.WriteLine("Error " + ex.Message); } }