Difference between revisions of "RO services"
(Fixed capitalisation) |
|||
Line 54: | Line 54: | ||
== LoadNrr == | == LoadNrr == | ||
− | |||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 79: | Line 77: | ||
| 4 || Nrr size | | 4 || Nrr size | ||
|} | |} | ||
+ | |||
+ | [7.0.0+] [[NRR|NrrKind]] must be 0 (User) for this function to succeed. | ||
== Initialize == | == Initialize == | ||
Line 105: | Line 105: | ||
Takes in a u64 nrr_address, a u64 nrr_size, a pid descriptor, and a process handle. | Takes in a u64 nrr_address, a u64 nrr_size, a pid descriptor, and a process handle. | ||
− | First, this validates that the pid descriptor matches the pid for the process handle sent to this->Initialize() earlier. | + | 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. |
− | |||
− | 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, | + | 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]] |
Revision as of 18:24, 22 February 2020
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
[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 also creates nn::ro::detail::IRoInterface objects.
Cmd | Name |
---|---|
0 | #LoadNro |
1 | UnloadNro |
2 | #LoadNrr |
3 | UnloadNrr |
4 | #Initialize |
10 | [7.0.0+] #LoadNrrEx |
LoadNro
Word | Value |
---|---|
0 | 0x00000004 |
1 | 0x80000012 |
2 | 0x00000001 |
0-1 | Pid |
0 | "SCFI" |
1 | 0x00000000 |
2 | Always 0. |
3 | Nro heap address |
4 | Nro size |
5 | Bss backing heap address |
6 | Bss size |
LoadNrr
Word | Value |
---|---|
0 | 0x00000004 |
1 | 0x8000000E |
2 | 0x00000001 |
0-1 | Pid |
0 | "SFCI" |
1 | 0x00000002 |
2 | Always 0. |
3 | Nrr address |
4 | Nrr size |
[7.0.0+] NrrKind must be 0 (User) for this function to succeed.
Initialize
Word | Value |
---|---|
0 | 0x00000004 |
1 | 0x8000000A |
2 | 0x00000003 |
0-1 | Pid |
2 | Process handle (0xFFFF8001) |
0 | "SFCI" |
1 | 0x00000004 |
2 | Always 0. |
LoadNrrEx
Takes in a u64 nrr_address, a u64 nrr_size, a pid descriptor, and a process handle.
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).