// Read(u32 readOption, u64 offset, u64 size) -> (u64 out_size, buffer<u8, 0x46, 0> out_buf) public ResultCode Read(ServiceCtx context) { long position = context.Request.ReceiveBuff[0].Position; ReadOption readOption = (ReadOption)context.RequestData.ReadInt32(); context.RequestData.BaseStream.Position += 4; long offset = context.RequestData.ReadInt64(); long size = context.RequestData.ReadInt64(); byte[] data = new byte[size]; int readSize; try { readSize = _baseFile.Read(data, offset, readOption); } catch (HorizonResultException ex) { return((ResultCode)ex.ResultValue.Value); } context.Memory.WriteBytes(position, data); context.ResponseData.Write((long)readSize); return(ResultCode.Success); }
// Read(u32 readOption, u64 offset, u64 size) -> (u64 out_size, buffer<u8, 0x46, 0> out_buf) public long Read(ServiceCtx context) { long position = context.Request.ReceiveBuff[0].Position; ReadOption readOption = (ReadOption)context.RequestData.ReadInt32(); context.RequestData.BaseStream.Position += 4; long offset = context.RequestData.ReadInt64(); long size = context.RequestData.ReadInt64(); byte[] data = new byte[size]; int readSize = _baseFile.Read(data, offset, readOption); context.Memory.WriteBytes(position, data); context.ResponseData.Write((long)readSize); return(0); }