RO services: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 45: Line 45:
Takes a PID-descriptor, a process handle and 2 input u64s ('''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 [[#RegisterModuleInfo|RegisterModuleInfo]], 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).
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).

Revision as of 19:45, 23 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 and 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 RegisterModuleInfo, 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.