Loader services: Difference between revisions
No edit summary |
→ldr:ro: LoadNrrEx is a really weird command. |
||
Line 173: | Line 173: | ||
| 4 || [[#Initialize]] | | 4 || [[#Initialize]] | ||
|- | |- | ||
| 10 || [7.0.0+] | | 10 || [7.0.0+] [[#LoadNrrEx]] | ||
|} | |} | ||
Line 205: | Line 205: | ||
== LoadNrr == | == LoadNrr == | ||
[7.0.0+] A new 8-bit field at NRR + 0x33C (previously padding) must be 0 for this function to succeed. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 250: | Line 252: | ||
| 2 || Always 0. | | 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, the field at NRR header + 0x33C must be 0x1. When called from ldr:ro session, the field at NRR header + 0x33C must be 0x0. | |||
= ro:1 = | = ro:1 = |