RO services: Difference between revisions
fixup ro command names |
|||
Line 26: | Line 26: | ||
== MapManualLoadModuleMemory == | == MapManualLoadModuleMemory == | ||
Takes a PID-descriptor and 4 input u64s ('''nro_address''', '''nro_size''', '''bss_address''' and '''bss_size'''). Returns an output u64 ('''out_address'''). | Takes a PID-descriptor, an u64 pid_reserved, and 4 input u64s ('''nro_address''', '''nro_size''', '''bss_address''' and '''bss_size'''). Returns an output u64 ('''out_address'''). | ||
== UnmapManualLoadModuleMemory == | == UnmapManualLoadModuleMemory == | ||
Takes a PID-descriptor and an input u64 ('''nro_address'''). | Takes a PID-descriptor, an u64 pid_reserved, and an input u64 ('''nro_address'''). | ||
== RegisterModuleInfo == | == RegisterModuleInfo == | ||
Takes a PID-descriptor and 2 input u64s ('''nrr_address''' and '''nrr_size'''). | Takes a PID-descriptor, an u64 pid_reserved, 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 an input | Takes a PID-descriptor, an u64 pid_reserved, and an input u64 ('''nrr_address'''). | ||
== RegisterProcessHandle == | == RegisterProcessHandle == | ||
Takes PID-descriptor | Takes a PID-descriptor, a process handle, and an u64 pid_reserved. | ||
== RegisterModuleInfoWithUserProcessHandle == | == RegisterModuleInfoWithUserProcessHandle == | ||
Takes a PID-descriptor, a process handle and 2 input u64s ('''nrr_address''' and '''nrr_size'''). | Takes a PID-descriptor, a process handle, an u64 pid_reserved, 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|RegisterModuleInfo]], 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. |
Latest revision as of 23:15, 8 August 2025
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 | #MapManualLoadModuleMemory |
1 | #UnmapManualLoadModuleMemory |
2 | #RegisterModuleInfo |
3 | #UnregisterModuleInfo |
4 | #RegisterProcessHandle |
10 | [7.0.0+] #RegisterModuleInfoWithUserProcessHandle |
MapManualLoadModuleMemory
Takes a PID-descriptor, an u64 pid_reserved, and 4 input u64s (nro_address, nro_size, bss_address and bss_size). Returns an output u64 (out_address).
UnmapManualLoadModuleMemory
Takes a PID-descriptor, an u64 pid_reserved, and an input u64 (nro_address).
RegisterModuleInfo
Takes a PID-descriptor, an u64 pid_reserved, 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, an u64 pid_reserved, and an input u64 (nrr_address).
RegisterProcessHandle
Takes a PID-descriptor, a process handle, and an u64 pid_reserved.
RegisterModuleInfoWithUserProcessHandle
Takes a PID-descriptor, a process handle, an u64 pid_reserved, 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.