Loader services: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 26: | Line 26: | ||
== GetProgramInfo == | == GetProgramInfo == | ||
Takes a TitleId + StorageId | Takes a TitleId + StorageId and writes output to a C descriptor buffer as follows: | ||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0 | |||
| 0x4 | |||
| | |||
|- | |||
| 0x4 | |||
| 0x8 | |||
| | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Title id | |||
|- | |||
| 0x10 | |||
| 0x4 | |||
| ACID [[NPDM#Service Access Control|Service Access Control]] list size | |||
|- | |||
| 0x14 | |||
| 0x4 | |||
| ACI0 [[NPDM#Service Access Control|Service Access Control]] list size | |||
|- | |||
| 0x18 | |||
| 0x4 | |||
| ACID [[NPDM#FS Access Control|FS Access Control]] buffer size | |||
|- | |||
| 0x1C | |||
| 0x4 | |||
| ACI0 [[NPDM#FS Access Control|FS Access Control]] buffer size | |||
|- | |||
| 0x20 | |||
| <Varies> | |||
| ACID [[NPDM#Service Access Control|Service Access Control]] list | |||
|- | |||
| <Varies> | |||
| <Varies> | |||
| ACI0 [[NPDM#Service Access Control|Service Access Control]] list | |||
|- | |||
| <Varies> | |||
| <Varies> | |||
| ACID [[NPDM#FS Access Control|FS Access Control]] buffer | |||
|- | |||
| <Varies> | |||
| <Varies> | |||
| ACI0 [[NPDM#FS Access Control|FS Access Control]] | |||
|} | |||
== RegisterTitle == | == RegisterTitle == |
Revision as of 20:12, 16 July 2017
ldr:dmnt
Cmd | Name |
---|---|
0 | |
1 | |
2 |
ldr:pm
Cmd | Name |
---|---|
0 | CreateProcess |
1 | #GetProgramInfo |
2 | #RegisterTitle |
3 | #UnregisterTitle |
GetProgramInfo
Takes a TitleId + StorageId and writes output to a C descriptor buffer as follows:
Offset | Size | Description |
---|---|---|
0 | 0x4 | |
0x4 | 0x8 | |
0x8 | 0x8 | Title id |
0x10 | 0x4 | ACID Service Access Control list size |
0x14 | 0x4 | ACI0 Service Access Control list size |
0x18 | 0x4 | ACID FS Access Control buffer size |
0x1C | 0x4 | ACI0 FS Access Control buffer size |
0x20 | <Varies> | ACID Service Access Control list |
<Varies> | <Varies> | ACI0 Service Access Control list |
<Varies> | <Varies> | ACID FS Access Control buffer |
<Varies> | <Varies> | ACI0 FS Access Control |
RegisterTitle
Takes a TitleId + StorageId, returns an index.
UnregisterTitle
Takes the index from #RegisterTitle.
ldr:shel
Cmd | Name |
---|---|
0 | #AddProcessToLaunchQueue |
1 | #ClearLaunchQueue |
AddProcessToLaunchQueue
Takes a type-0x19 input buffer with launch arguments (as string), an u32 (size of arguments string), and an input title-id.
Loads a process for the specified title-id and passes along the supplied arguments. Loaded processes are kept in a queue waiting for PM to launch them. The maximum number of waiting processes in this list is 10.
ClearLaunchQueue
Clears the loaded processes waiting queue.
ldr:ro
Cmd | Name |
---|---|
0 | #LoadNro |
1 | UnloadNro |
2 | #LoadNrr |
3 | UnloadNrr |
4 | #Initialize |
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 |
Initialize
Word | Value |
---|---|
0 | 0x00000004 |
1 | 0x8000000A |
2 | 0x00000003 |
0-1 | Pid |
2 | Process handle (0xFFFF8001) |
0 | "SFCI" |
1 | 0x00000004 |
2 | Always 0. |