Changes

Jump to navigation Jump to search
916 bytes removed ,  20:13, 22 February 2020
no edit summary
Line 1: Line 1:  +
= ldr:shel =
 +
This is "nn::ldr::detail::IShellInterface".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#SetProgramArgument]]
 +
|-
 +
| 1 || [[#FlushArguments]]
 +
|}
 +
 +
== SetProgramArgument ==
 +
Takes a type-0x9 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.
 +
 +
== FlushArguments ==
 +
Clears the loaded processes waiting queue.
 +
 
= ldr:dmnt =
 
= ldr:dmnt =
 +
This is "nn::ldr::detail::IDebugMonitorInterface".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || AddProcessToDebugLaunchQueue
+
| 0 || [[#SetProgramArgument]]
 
|-
 
|-
| 1 || ClearDebugLaunchQueue
+
| 1 || [[#FlushArguments]]
 
|-
 
|-
| 2 ||
+
| 2 || [[#GetProcessModuleInfo]]
 
|}
 
|}
   −
== AddProcessToDebugLaunchQueue ==
+
== GetProcessModuleInfo ==
Same as [[Loader_services#AddProcessToLaunchQueue|AddProcessToLaunchQueue]] but for processes marked as debug.
+
Takes in a u64 Process ID, and a C descriptor out array of [[#ModuleInfo]]s. Returns the number of ModuleInfos copied to output.
   −
== ClearDebugLaunchQueue ==
+
= ldr:pm =
Same as [[Loader_services#ClearLaunchQueue|ClearLaunchQueue]] but for processes marked as debug.
+
This is "nn::ldr::detail::IProcessManagerInterface".
   −
= ldr:pm =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 26: Line 48:  
| 1 || [[#GetProgramInfo]]
 
| 1 || [[#GetProgramInfo]]
 
|-
 
|-
| 2 || [[#RegisterTitle]]
+
| 2 || [[#PinProgram]]
 
|-
 
|-
| 3 || [[#UnregisterTitle]]
+
| 3 || [[#UnpinProgram]]
 
|}
 
|}
    
== GetProgramInfo ==
 
== GetProgramInfo ==
Takes a TitleId + StorageId, parses the NPDM, and writes output to a C descriptor buffer as follows:
+
Takes an ncm::ProgramLocation, parses the NPDM, and writes a [[#ProgramInfo]] to a C descriptor buffer.
 +
 
 +
== PinProgram ==
 +
Takes an ncm::ProgramLocation, returns a u64 "PinId".
 +
 
 +
== UnpinProgram ==
 +
Takes a PinId from [[#PinProgram]].
 +
 
 +
= ModuleInfo =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x20
 +
| ModuleId
 +
|-
 +
| 0x20
 +
| 0x8
 +
| ImageAddress
 +
|-
 +
| 0x28
 +
| 0x8
 +
| ImageSize
 +
|}
    +
= ProgramInfo =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 62: Line 111:  
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| Title id
+
| TitleIdRange_Min
 
|-
 
|-
 
| 0x10
 
| 0x10
Line 95: Line 144:  
| <Varies>
 
| <Varies>
 
| ACI0 [[NPDM#FS Access Control|FS Access Control]]
 
| ACI0 [[NPDM#FS Access Control|FS Access Control]]
|}
  −
  −
== RegisterTitle ==
  −
Takes a TitleId + StorageId, returns an index.
  −
  −
== UnregisterTitle ==
  −
Takes the index from [[#RegisterTitle]].
  −
  −
= ldr:shel =
  −
{| class="wikitable" border="1"
  −
|-
  −
! 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 =
  −
{| class="wikitable" border="1"
  −
|-
  −
! Cmd || Name
  −
|-
  −
| 0 || [[#LoadNro]]
  −
|-
  −
| 1 || UnloadNro
  −
|-
  −
| 2 || [[#LoadNrr]]
  −
|-
  −
| 3 || UnloadNrr
  −
|-
  −
| 4 || [[#Initialize]]
  −
|}
  −
  −
== LoadNro ==
  −
{| class="wikitable" border="1"
  −
|-
  −
! Word || Value
  −
|-
  −
| 0 || 0x00000004
  −
|-
  −
| 1 || 0x80000012
  −
|-
  −
| 2 || 0x00000001
  −
|- style="border-top: double"
  −
| 0-1 || Pid
  −
|- style="border-top: double"
  −
| 0 || "SCFI"
  −
|-
  −
| 1 || 0x00000000
  −
|-
  −
| 2 || Always 0.
  −
|-
  −
| 3 || Nro heap address
  −
|-
  −
| 4 || Nro size
  −
|-
  −
| 5 || Bss backing heap address
  −
|-
  −
| 6 || Bss size
  −
|}
  −
  −
== LoadNrr ==
  −
{| class="wikitable" border="1"
  −
|-
  −
! Word || Value
  −
|-
  −
| 0 || 0x00000004
  −
|-
  −
| 1 || 0x8000000E
  −
|-
  −
| 2 || 0x00000001
  −
|-
  −
|- style="border-top: double"
  −
| 0-1 || Pid
  −
|- style="border-top: double"
  −
| 0 || "SFCI"
  −
|-
  −
| 1 || 0x00000002
  −
|-
  −
| 2 || Always 0.
  −
|-
  −
| 3 || Nrr address
  −
|-
  −
| 4 || Nrr size
  −
|}
  −
  −
== Initialize ==
  −
{| class="wikitable" border="1"
  −
|-
  −
! Word || Value
  −
|-
  −
| 0 || 0x00000004
  −
|-
  −
| 1 || 0x8000000A
  −
|-
  −
| 2 || 0x00000003
  −
|- style="border-top: double"
  −
| 0-1 || Pid
  −
|-
  −
| 2 || Process handle (0xFFFF8001)
  −
|- style="border-top: double"
  −
| 0 || "SFCI"
  −
|-
  −
| 1 || 0x00000004
  −
|-
  −
| 2 || Always 0.
   
|}
 
|}
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu