Loader services: Difference between revisions

No edit summary
No edit summary
Line 19: Line 19:
== FlushArguments ==
== FlushArguments ==
Clears the loaded processes waiting queue.
Clears the loaded processes waiting queue.


= ldr:dmnt =
= ldr:dmnt =
Line 36: Line 35:


== GetProcessModuleInfo ==
== GetProcessModuleInfo ==
Takes in a u64 Process ID, and a C descriptor out array of [[#ModuleInfos]]. Returns the number of ModuleInfos copied to output.
Takes in a u64 Process ID, and a C descriptor out array of [[#ModuleInfo]]s. Returns the number of ModuleInfos copied to output.


ModuleInfo is the same here as for ro:dmnt.
= ldr:pm =
This is "nn::ldr::detail::IProcessManagerInterface".


ModuleInfo has the following layout:
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || CreateProcess
|-
| 1 || [[#GetProgramInfo]]
|-
| 2 || [[#PinProgram]]
|-
| 3 || [[#UnpinProgram]]
|}
 
== GetProgramInfo ==
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 ===
= ModuleInfo =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 51: Line 71:
| 0x0
| 0x0
| 0x20
| 0x20
| Build ID
| ModuleId
|-
|-
| 0x20
| 0x20
| 0x8
| 0x8
| Mapped Address
| ImageAddress
|-
|-
| 0x28
| 0x28
| 0x8
| 0x8
| Mapped Size
| ImageSize
|-
|}
|}


 
= ProgramInfo =
= ldr:pm =
This is "nn::ldr::detail::IProcessManagerInterface".
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || CreateProcess
|-
| 1 || [[#GetProgramInfo]]
|-
| 2 || [[#PinProgram]]
|-
| 3 || [[#UnpinProgram]]
|}
 
== GetProgramInfo ==
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 146: Line 145:
| ACI0 [[NPDM#FS Access Control|FS Access Control]]
| ACI0 [[NPDM#FS Access Control|FS Access Control]]
|}
|}
== PinProgram ==
Takes an ncm::ProgramLocation, returns a u64 "PinId".
== UnpinProgram ==
Takes a PinId from [[#PinProgram]].


[[Category:Services]]
[[Category:Services]]