Difference between revisions of "RO services"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 26: Line 26:
  
 
== LoadModule ==
 
== LoadModule ==
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''').  
+
Takes a PID-descriptor, 4 input u64s ('''nro_address''', '''nro_size''', '''bss_address''' and '''bss_size'''). Returns an output u64 ('''out_address''').  
  
 
== UnloadModule ==
 
== UnloadModule ==
Takes a PID-descriptor and 2 input u64s ('''client_pid_deprecated''' and '''nro_address''').  
+
Takes a PID-descriptor and an input u64 ('''nro_address''').  
  
 
== RegisterModuleInfo ==
 
== RegisterModuleInfo ==
Takes a PID-descriptor and 3 input u64s ('''client_pid_deprecated''', '''nrr_address''' and '''nrr_size''').  
+
Takes a PID-descriptor and 2 input u64s ('''nrr_address''' and '''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 ==
 
== UnregisterModuleInfo ==
Takes a PID-descriptor and 2 input u64s ('''client_pid_deprecated''' and '''nrr_address''').  
+
Takes a PID-descriptor and an input u64s ('''nrr_address''').  
  
 
== Initialize ==
 
== Initialize ==
Takes PID-descriptor, a process handle and an input u64 ('''client_pid_deprecated''').
+
Takes PID-descriptor and a process handle.
  
 
== RegisterModuleInfo2 ==
 
== RegisterModuleInfo2 ==
Takes a PID-descriptor, a process handle and 3 input u64s ('''client_pid_deprecated''', '''nrr_address''' and '''nrr_size''').  
+
Takes a PID-descriptor, a process handle and 2 input u64s ('''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.  
 
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.  

Revision as of 20:39, 22 February 2020

Prior to 3.0.0, ro was included as part of Loader. Despite the separation, the service name ldr:ro is retained to maintain compatibility with old games.

ldr:ro, ro:1

[1.0.0-2.3.0] This is "nn::ldr::detail::IRoInterface"

[3.0.0+] This is "nn::ro::detail::IRoInterface".

[7.0.0+] ro:1 was added and is also "nn::ro::detail::IRoInterface".

Cmd Name
0 #LoadModule
1 #UnloadModule
2 #RegisterModuleInfo
3 #UnregisterModuleInfo
4 #Initialize
10 [7.0.0+] #RegisterModuleInfo2

LoadModule

Takes a PID-descriptor, 4 input u64s (nro_address, nro_size, bss_address and bss_size). Returns an output u64 (out_address).

UnloadModule

Takes a PID-descriptor and an input u64 (nro_address).

RegisterModuleInfo

Takes a PID-descriptor and 2 input u64s (nrr_address and nrr_size).

[7.0.0+] NrrKind must be 0 (User) for this function to succeed.

UnregisterModuleInfo

Takes a PID-descriptor and an input u64s (nrr_address).

Initialize

Takes PID-descriptor and a process handle.

RegisterModuleInfo2

Takes a PID-descriptor, a process handle and 2 input u64s (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, NrrKind must be 1 (JitPlugin). When called from ldr:ro session, NrrKind must be 0 (User).

ro:dmnt

This is "nn::ro::detail::IDebugMonitorInterface".

Cmd Name
0 #GetProcessModuleInfo

GetProcessModuleInfo

Same as GetProcessModuleInfo from ldr:dmnt.