IInformationInterface.cs 871 B

12345678910111213141516171819202122232425262728
  1. using Ryujinx.HLE.HOS.Kernel;
  2. using Ryujinx.HLE.HOS.Kernel.Process;
  3. namespace Ryujinx.HLE.HOS.Services.Pm
  4. {
  5. [Service("pm:info")]
  6. class IInformationInterface : IpcService
  7. {
  8. public IInformationInterface(ServiceCtx context) { }
  9. [CommandHipc(0)]
  10. // GetProgramId(os::ProcessId process_id) -> sf::Out<ncm::ProgramId> out
  11. public ResultCode GetProgramId(ServiceCtx context)
  12. {
  13. ulong pid = context.RequestData.ReadUInt64();
  14. // TODO: Not correct as it shouldn't be directly using kernel objects here
  15. if (context.Device.System.KernelContext.Processes.TryGetValue(pid, out KProcess process))
  16. {
  17. context.ResponseData.Write(process.TitleId);
  18. return ResultCode.Success;
  19. }
  20. return ResultCode.ProcessNotFound;
  21. }
  22. }
  23. }