Changes

Jump to navigation Jump to search
no edit summary
Line 14: Line 14:     
== SetProgramArgument ==
 
== SetProgramArgument ==
Takes a type-0x9 input buffer with launch arguments (as string), an u32 (size of arguments string), and an input title-id.
+
Takes a type-0x9 input buffer with launch arguments (as string), an u32 (size of arguments string), and an input [[NCM_services#ProgramId|ProgramId]]. No output.
    
[11.0.0+] Now takes a type-0x5 buffer instead of type-0x9. Now takes a total of 8-bytes of input, instead of 0x10-bytes total.
 
[11.0.0+] Now takes a type-0x5 buffer instead of type-0x9. Now takes a total of 8-bytes of input, instead of 0x10-bytes total.
Line 22: Line 22:     
== FlushArguments ==
 
== FlushArguments ==
 +
No input/output.
 +
 
Clears the loaded processes waiting queue.
 
Clears the loaded processes waiting queue.
   Line 33: Line 35:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#SetProgramArgument]]
+
| 0 || [[#SetProgramArgument2]]
 
|-
 
|-
| 1 || [[#FlushArguments]]
+
| 1 || [[#FlushArguments2]]
 
|-
 
|-
 
| 2 || [[#GetProcessModuleInfo]]
 
| 2 || [[#GetProcessModuleInfo]]
 
|}
 
|}
 +
 +
== SetProgramArgument2 ==
 +
Same as [[#SetProgramArgument]].
 +
 +
== FlushArguments2 ==
 +
Same as [[#FlushArguments]].
    
== GetProcessModuleInfo ==
 
== GetProcessModuleInfo ==
Takes in a u64 Process ID, and a C descriptor out array of [[#ModuleInfo]]s. Returns the number of ModuleInfos copied to output.
+
Takes a type-0xA output buffer of [[#ModuleInfo]] and an input u64 ProcessId. Returns an output s32.
    
= ldr:pm =
 
= ldr:pm =
Line 52: Line 60:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || CreateProcess
+
| 0 || [[#CreateProcess]]
 
|-
 
|-
 
| 1 || [[#GetProgramInfo]]
 
| 1 || [[#GetProgramInfo]]
Line 62: Line 70:  
| 4 || [10.0.0+] [[#SetEnabledProgramVerification]]
 
| 4 || [10.0.0+] [[#SetEnabledProgramVerification]]
 
|}
 
|}
 +
 +
== CreateProcess ==
 +
Takes an input [[#PinId]], an input [[#CreateProcessFlag]] and an input ResourceLimit handle. Returns an output Process handle.
    
== GetProgramInfo ==
 
== GetProgramInfo ==
Takes an ncm::ProgramLocation, parses the NPDM, and writes a [[#ProgramInfo]] to a C descriptor buffer.
+
Takes a type-0x1A output buffer containing a [[#ProgramInfo]] and a [[NCM_services#ProgramLocation|ProgramLocation]]. No output.
    
== PinProgram ==
 
== PinProgram ==
Takes an ncm::ProgramLocation, returns a u64 "PinId".
+
Takes a [[NCM_services#ProgramLocation|ProgramLocation]]. Returns an output [[#PinId]].
    
== UnpinProgram ==
 
== UnpinProgram ==
Takes a PinId from [[#PinProgram]].
+
Takes an input [[#PinId]]. No output.
    
== SetEnabledProgramVerification ==
 
== SetEnabledProgramVerification ==
Seems to sets a global flag to inputval & 1.
+
Takes an input bool. No output.
   −
When the flag is zero, it will set ret=0 instead of ret={error} when verifying the fixed-key [[NPDM]] ACID signature fails. This also skips verifying the [[NCA_Format|NCA Header]] signature using the ACID key. Note that if verifying the fixed-key ACID signature is successful, and verifying the ACID-key NCA header signature fails, it will throw an error and abort.
+
When the flag is zero, it will set ret=0 instead of ret={error} when verifying the fixed-key [[NPDM]] ACID signature fails. This also skips verifying the [[NCA#Header|NCA Header]] signature using the ACID key. Note that if verifying the fixed-key ACID signature is successful, and verifying the ACID-key NCA header signature fails, it will throw an error and abort.
 +
 
 +
= CreateProcessFlag =
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0 || EnableDebug
 +
|-
 +
| 1 || DisableAslr
 +
|}
 +
 
 +
= PinId =
 +
This is an u64.
    
= ModuleInfo =
 
= ModuleInfo =
Line 90: Line 115:  
| 0x20
 
| 0x20
 
| 0x8
 
| 0x8
| ImageAddress
+
| Address
 
|-
 
|-
 
| 0x28
 
| 0x28
 
| 0x8
 
| 0x8
| ImageSize
+
| Size
 
|}
 
|}
   Line 106: Line 131:  
| 0x0
 
| 0x0
 
| 0x1
 
| 0x1
| MainThreadPrio. Arg1 to svcStartProcess
+
| MainThreadPriority
 
|-
 
|-
 
| 0x1
 
| 0x1
 
| 0x1
 
| 0x1
| DefaultCpuId. Arg2 to svcStartProcess
+
| DefaultCpuId
 
|-
 
|-
 
| 0x2
 
| 0x2
| 0x1
+
| 0x2
| ApplicationType, see [[Process Manager services|here]].
+
| Flags
|-
  −
| 0x3
  −
| 0x1
  −
| Padding
   
|-
 
|-
 
| 0x4
 
| 0x4
 
| 0x4
 
| 0x4
| MainThreadStackSize. Arg3 to svcStartProcess
+
| MainThreadStackSize
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| TitleIdRange_Min
+
| [[NCM_services#ProgramId|ProgramId]]
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0x4
 
| 0x4
| ACID [[NPDM#Service Access Control|Service Access Control]] list size
+
| AcidSacSize
 
|-
 
|-
 
| 0x14
 
| 0x14
 
| 0x4
 
| 0x4
| ACI0 [[NPDM#Service Access Control|Service Access Control]] list size
+
| AciSacSize
 
|-
 
|-
 
| 0x18
 
| 0x18
 
| 0x4
 
| 0x4
| ACID [[NPDM#FS Access Control|FS Access Control]] buffer size
+
| AcidFacSize
 
|-
 
|-
 
| 0x1C
 
| 0x1C
 
| 0x4
 
| 0x4
| ACI0 [[NPDM#FS Access Control|FS Access Control]] buffer size
+
| AciFacSize
 
|-
 
|-
 
| 0x20
 
| 0x20
| <Varies>
+
| 0x10
| ACID [[NPDM#Service Access Control|Service Access Control]] list
+
| [19.0.0+] Reserved
 +
|-
 +
| [19.0.0+] 0x30 ([1.0.0-18.1.0] 0x20)
 +
| Variable
 +
| AcidSac
 
|-
 
|-
| <Varies>
+
| Variable
| <Varies>
+
| Variable
| ACI0 [[NPDM#Service Access Control|Service Access Control]] list
+
| AciSac
 
|-
 
|-
| <Varies>
+
| Variable
| <Varies>
+
| Variable
| ACID [[NPDM#FS Access Control|FS Access Control]] buffer
+
| AcidFac
 
|-
 
|-
| <Varies>
+
| Variable
| <Varies>
+
| Variable
| ACI0 [[NPDM#FS Access Control|FS Access Control]]
+
| AciFac
 
|}
 
|}
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu