| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.IO;
- namespace Ryujinx.Core.OsHle.Objects.Android
- {
- static class Parcel
- {
- public static byte[] GetParcelData(byte[] Parcel)
- {
- if (Parcel == null)
- {
- throw new ArgumentNullException(nameof(Parcel));
- }
- using (MemoryStream MS = new MemoryStream(Parcel))
- {
- BinaryReader Reader = new BinaryReader(MS);
- int DataSize = Reader.ReadInt32();
- int DataOffset = Reader.ReadInt32();
- int ObjsSize = Reader.ReadInt32();
- int ObjsOffset = Reader.ReadInt32();
- MS.Seek(DataOffset - 0x10, SeekOrigin.Current);
- return Reader.ReadBytes(DataSize);
- }
- }
- public static byte[] MakeParcel(byte[] Data, byte[] Objs)
- {
- if (Data == null)
- {
- throw new ArgumentNullException(nameof(Data));
- }
- if (Objs == null)
- {
- throw new ArgumentNullException(nameof(Objs));
- }
- using (MemoryStream MS = new MemoryStream())
- {
- BinaryWriter Writer = new BinaryWriter(MS);
- Writer.Write(Data.Length);
- Writer.Write(0x10);
- Writer.Write(Objs.Length);
- Writer.Write(Data.Length + 0x10);
- Writer.Write(Data);
- Writer.Write(Objs);
- return MS.ToArray();
- }
- }
- }
- }
|