ISaveDataInfoReader.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using LibHac;
  3. namespace Ryujinx.HLE.HOS.Services.Fs
  4. {
  5. class ISaveDataInfoReader : IpcService, IDisposable
  6. {
  7. private ReferenceCountedDisposable<LibHac.FsSrv.ISaveDataInfoReader> _baseReader;
  8. public ISaveDataInfoReader(ReferenceCountedDisposable<LibHac.FsSrv.ISaveDataInfoReader> baseReader)
  9. {
  10. _baseReader = baseReader;
  11. }
  12. [CommandHipc(0)]
  13. // ReadSaveDataInfo() -> (u64, buffer<unknown, 6>)
  14. public ResultCode ReadSaveDataInfo(ServiceCtx context)
  15. {
  16. ulong bufferPosition = context.Request.ReceiveBuff[0].Position;
  17. ulong bufferLen = context.Request.ReceiveBuff[0].Size;
  18. byte[] infoBuffer = new byte[bufferLen];
  19. Result result = _baseReader.Target.Read(out long readCount, infoBuffer);
  20. context.Memory.Write(bufferPosition, infoBuffer);
  21. context.ResponseData.Write(readCount);
  22. return (ResultCode)result.Value;
  23. }
  24. public void Dispose()
  25. {
  26. _baseReader.Dispose();
  27. }
  28. }
  29. }