Changes

78 bytes added ,  20:07, 22 February 2020
no edit summary
Line 1: Line 1: −
Prior to 3.0.0, ro was included as part of [[Loader services]]. Despite the separation, the service name ldr:ro is retained to maintain compatibility with old games.
+
Prior to 3.0.0, ro was included as part of [[Loader_services]]. Despite the separation, the service name ldr:ro is retained to maintain compatibility with old games.
    
= ldr:ro, ro:1 =
 
= ldr:ro, ro:1 =
Line 6: Line 6:  
[3.0.0+] This is "nn::ro::detail::IRoInterface".
 
[3.0.0+] This is "nn::ro::detail::IRoInterface".
   −
[7.0.0+] ro:1 was added, and also creates nn::ro::detail::IRoInterface objects.
+
[7.0.0+] ro:1 was added and is also "nn::ro::detail::IRoInterface".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 12: Line 12:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#LoadNro]]
+
| 0 || [[#LoadModule]]
 
|-
 
|-
| 1 || UnloadNro
+
| 1 || [[#UnloadModule]]
 
|-
 
|-
| 2 || [[#LoadNrr]]  
+
| 2 || [[#RegisterModuleInfo]]  
 
|-
 
|-
| 3 || UnloadNrr
+
| 3 || [[#UnregisterModuleInfo]]
 
|-
 
|-
 
| 4 || [[#Initialize]]
 
| 4 || [[#Initialize]]
 
|-
 
|-
| 10 || [7.0.0+] [[#LoadNrrEx]]
+
| 10 || [7.0.0+] [[#RegisterModuleInfo2]]
 
|}
 
|}
   −
== LoadNro ==
+
== LoadModule ==
{| class="wikitable" border="1"
+
Takes a PID-descriptor, 5 input u64s ('''client_pid_deprecated''', '''nro_address''', '''nro_size''', '''bss_address''' and '''bss_size'''). Returns an output u64 ('''out_address''').
|-
+
 
! Word || Value
+
== UnloadModule ==
|-
+
Takes a PID-descriptor and 2 input u64s ('''client_pid_deprecated''' and '''nro_address''').  
| 0 || 0x00000004
  −
|-
  −
| 1 || 0x80000012
  −
|-
  −
| 2 || 0x00000001
  −
|- style="border-top: double"
  −
| 0-1 || Pid
  −
|- style="border-top: double"
  −
| 0 || "SCFI"
  −
|-
  −
| 1 || 0x00000000
  −
|-
  −
| 2 || Always 0.
  −
|-
  −
| 3 || Nro heap address
  −
|-
  −
| 4 || Nro size
  −
|-
  −
| 5 || Bss backing heap address
  −
|-
  −
| 6 || Bss size
  −
|}
     −
== LoadNrr ==
+
== RegisterModuleInfo ==
{| class="wikitable" border="1"
+
Takes a PID-descriptor and 3 input u64s ('''client_pid_deprecated''', '''nrr_address''' and '''nrr_size''').  
|-
  −
! Word || Value
  −
|-
  −
| 0 || 0x00000004
  −
|-
  −
| 1 || 0x8000000E
  −
|-
  −
| 2 || 0x00000001
  −
|-
  −
|- style="border-top: double"
  −
| 0-1 || Pid
  −
|- style="border-top: double"
  −
| 0 || "SFCI"
  −
|-
  −
| 1 || 0x00000002
  −
|-
  −
| 2 || Always 0.
  −
|-
  −
| 3 || Nrr address
  −
|-
  −
| 4 || Nrr size
  −
|}
      
[7.0.0+] [[NRR|NrrKind]] must be 0 (User) for this function to succeed.
 
[7.0.0+] [[NRR|NrrKind]] must be 0 (User) for this function to succeed.
 +
 +
== UnregisterModuleInfo ==
 +
Takes a PID-descriptor and 2 input u64s ('''client_pid_deprecated''' and '''nrr_address''').
    
== Initialize ==
 
== Initialize ==
 +
Takes PID-descriptor, a process handle and an input u64 ('''client_pid_deprecated''').
 +
 +
== RegisterModuleInfo2 ==
 +
Takes a PID-descriptor, a process handle and 3 input u64s ('''client_pid_deprecated''', '''nrr_address''' and '''nrr_size''').
 +
 +
First, this validates that the pid descriptor matches the pid for the process handle sent to this->Initialize() earlier. Then, this calls the same function as LoadNrr, except using the passed process handle instead of the one sent to Initialize.
 +
 +
When called from an ro:1 session, [[NRR|NrrKind]] must be 1 (JitPlugin). When called from ldr:ro session, [[NRR|NrrKind]] must be 0 (User).
 +
 +
= ro:dmnt =
 +
This is "nn::ro::detail::IDebugMonitorInterface".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Word || Value
+
! Cmd || Name
|-
  −
| 0 || 0x00000004
  −
|-
  −
| 1 || 0x8000000A
  −
|-
  −
| 2 || 0x00000003
  −
|- style="border-top: double"
  −
| 0-1 || Pid
  −
|-
  −
| 2 || Process handle (0xFFFF8001)
  −
|- style="border-top: double"
  −
| 0 || "SFCI"
  −
|-
  −
| 1 || 0x00000004
   
|-
 
|-
| 2 || Always 0.
+
| 0 || [[#GetProcessModuleInfo]]
 
|}
 
|}
   −
== LoadNrrEx ==
+
== GetProcessModuleInfo ==
Takes in a u64 nrr_address, a u64 nrr_size, a pid descriptor, and a process handle.
+
Same as [[#Loader_services|GetProcessModuleInfo]] from [[Loader_services#ldr:dmnt|ldr:dmnt]].
 
  −
First, this validates that the pid descriptor matches the pid for the process handle sent to this->Initialize() earlier. Then, this calls the same function as LoadNrr, except using the passed process handle instead of the one sent to Initialize.
  −
 
  −
When called from an ro:1 session, [[NRR|NrrKind]] must be 1 (JitPlugin). When called from ldr:ro session, [[NRR|NrrKind]] must be 0 (User).
      
[[Category:Services]]
 
[[Category:Services]]