Changes

279 bytes removed ,  06:20, 28 October 2019
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]]
 +
|}
 +
 +
== AddProcessToLaunchQueue ==
 +
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.
 +
 +
== ClearLaunchQueue ==
 +
Clears the loaded processes waiting queue.
 +
 +
 
= ldr:dmnt =
 
= ldr:dmnt =
 
This is "nn::ldr::detail::IDebugMonitorInterface".
 
This is "nn::ldr::detail::IDebugMonitorInterface".
Line 6: Line 28:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[Loader_services#AddProcessToDebugLaunchQueue|AddProcessToDebugLaunchQueue]]
+
| 0 || [[#SetProgramArgument]]
 
|-
 
|-
| 1 || [[Loader_services#ClearDebugLaunchQueue|ClearDebugLaunchQueue]]
+
| 1 || [[#FlushArguments]]
 
|-
 
|-
| 2 || [[Loader_services#GetNsoInfos|GetNsoInfos]]
+
| 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 [[#ModuleInfos]]. Returns the number of ModuleInfos copied to output.
 
  −
== ClearDebugLaunchQueue ==
  −
Same as [[Loader_services#ClearLaunchQueue|ClearLaunchQueue]].
     −
== GetNsoInfos ==
+
ModuleInfo is the same here as for ro:dmnt.
Takes in a u64 ProcessID, and a C descriptor. Returns the number of NsoInfos copied to output.
     −
NsoInfo has the following layout:
+
ModuleInfo has the following layout:
    +
=== ModuleInfo ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 32: Line 51:  
| 0x0
 
| 0x0
 
| 0x20
 
| 0x20
| "Build ID", from NSO header+0x40.
+
| Build ID
 
|-
 
|-
 
| 0x20
 
| 0x20
 
| 0x8
 
| 0x8
| Mapped address for this NSO
+
| Mapped Address
 
|-
 
|-
 
| 0x28
 
| 0x28
 
| 0x8
 
| 0x8
| Mapped size for this NSO
+
| Mapped Size
 
|-
 
|-
 
|}
 
|}
Line 56: Line 75:  
| 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 as follows:
    +
=== ProgramInfo ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 127: Line 147:  
|}
 
|}
   −
== RegisterTitle ==
+
== PinProgram ==
Takes a TitleId + StorageId, returns an index.
+
Takes an ncm::ProgramLocation, returns a u64 "PinId".
 
  −
== UnregisterTitle ==
  −
Takes the index from [[#RegisterTitle]].
  −
 
  −
= ldr:shel =
  −
This is "nn::ldr::detail::IShellInterface".
  −
 
  −
{| class="wikitable" border="1"
  −
|-
  −
! Cmd || Name
  −
|-
  −
| 0 || [[#AddProcessToLaunchQueue]]
  −
|-
  −
| 1 || [[#ClearLaunchQueue]]
  −
|}
  −
 
  −
== AddProcessToLaunchQueue ==
  −
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.
     −
== ClearLaunchQueue ==
+
== UnpinProgram ==
Clears the loaded processes waiting queue.
+
Takes a PinId from [[#PinProgram]].
    
[[Category:Services]]
 
[[Category:Services]]