IInformationInterface.cs 841 B

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