Applet Manager services: Difference between revisions
No edit summary |
|||
(12 intermediate revisions by the same user not shown) | |||
Line 233: | Line 233: | ||
| 150 || [6.0.0+] ReportApplicationExitTimeout || | | 150 || [6.0.0+] ReportApplicationExitTimeout || | ||
|- | |- | ||
| 160 || [8.0.0+] SetApplicationAttribute || | | 160 || [8.0.0+] [[#SetApplicationAttribute]] || | ||
|- | |- | ||
| 170 || [8.0.0+] HasSaveDataAccessPermission || | | 170 || [8.0.0+] HasSaveDataAccessPermission || | ||
Line 244: | Line 244: | ||
===== PushLaunchParameter ===== | ===== PushLaunchParameter ===== | ||
Takes an input u32 and an input [[#IStorage]], no output. | Takes an input u32 [[#LaunchParameterKind]] and an input [[#IStorage]], no output. | ||
==== GetApplicationControlProperty ==== | ===== GetApplicationControlProperty ===== | ||
No input, takes a type-0x6 output buffer. | No input, takes a type-0x6 output buffer. | ||
This gets the application [[NACP_Format|control.nacp]]. | This gets the application [[NACP_Format|control.nacp]]. | ||
===== SetApplicationAttribute ===== | |||
Takes a type-0x15 input buffer containing an [[#ApplicationAttribute]], no output. | |||
===== IAppletAccessor ===== | ===== IAppletAccessor ===== | ||
Line 556: | Line 559: | ||
| 13 || [4.0.0+] [[#CreateApplicationAndRequestToStartForQuest]] || | | 13 || [4.0.0+] [[#CreateApplicationAndRequestToStartForQuest]] || | ||
|- | |- | ||
| 14 || [7.0.0+] | | 14 || [7.0.0+] [[#CreateApplicationWithAttributeAndPushAndRequestToStartForQuest]] || | ||
|- | |- | ||
| 15 || [7.0.0+] CreateApplicationWithAttributeAndRequestToStartForQuest || | | 15 || [7.0.0+] [[#CreateApplicationWithAttributeAndRequestToStartForQuest]] || | ||
|- | |- | ||
| 20 || EnsureSaveData || | | 20 || EnsureSaveData || | ||
Line 566: | Line 569: | ||
| 22 || [[#SetTerminateResult]] || | | 22 || [[#SetTerminateResult]] || | ||
|- | |- | ||
| 23 || GetDisplayVersion || | | 23 || [[#GetDisplayVersion]] || | ||
|- | |- | ||
| 24 || [2.0.0+] GetLaunchStorageInfoForDebug || | | 24 || [2.0.0+] GetLaunchStorageInfoForDebug || | ||
Line 606: | Line 609: | ||
| 90 || [4.0.0+] [[#EnableApplicationCrashReport]] || | | 90 || [4.0.0+] [[#EnableApplicationCrashReport]] || | ||
|- | |- | ||
| 100 || [5.0.0+] InitializeApplicationCopyrightFrameBuffer || | | 100 || [5.0.0+] [[#InitializeApplicationCopyrightFrameBuffer]] || | ||
|- | |- | ||
| 101 || [5.0.0+] SetApplicationCopyrightImage || | | 101 || [5.0.0+] [[#SetApplicationCopyrightImage]] || | ||
|- | |- | ||
| 102 || [5.0.0+] [[#SetApplicationCopyrightVisibility]] || | | 102 || [5.0.0+] [[#SetApplicationCopyrightVisibility]] || | ||
Line 616: | Line 619: | ||
| 111 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUid]] || | | 111 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUid]] || | ||
|- | |- | ||
| 120 || [5.0.0+] ExecuteProgram || | | 120 || [5.0.0+] [[#ExecuteProgram]] || | ||
|- | |- | ||
| 121 || [5.0.0+] [[#ClearUserChannel]] || | | 121 || [5.0.0+] [[#ClearUserChannel]] || | ||
|- | |- | ||
| 122 || [5.0.0+] UnpopToUserChannel || | | 122 || [5.0.0+] [[#UnpopToUserChannel]] || | ||
|- | |- | ||
| 123 || [5.0.0+] GetPreviousProgramIndex || | | 123 || [5.0.0+] [[#GetPreviousProgramIndex]] || | ||
|- | |- | ||
| 124 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash || | | 124 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash || | ||
Line 651: | Line 654: | ||
==== CreateApplicationAndPushAndRequestToStartForQuest ==== | ==== CreateApplicationAndPushAndRequestToStartForQuest ==== | ||
Takes 2 input u32s (loaded from struct ApplicationAttributeForQuest), an input u64 titleID, and an input [[#IStorage]], no output. | Takes 2 input u32s (loaded from struct [[#ApplicationAttributeForQuest]]), an input u64 titleID, and an input [[#IStorage]], no output. | ||
==== CreateApplicationAndRequestToStart ==== | ==== CreateApplicationAndRequestToStart ==== | ||
Line 659: | Line 662: | ||
==== CreateApplicationAndRequestToStartForQuest ==== | ==== CreateApplicationAndRequestToStartForQuest ==== | ||
Takes 2 input u32s (loaded from struct ApplicationAttributeForQuest) and an input u64 titleID, no output. | Takes 2 input u32s (loaded from struct [[#ApplicationAttributeForQuest]]) and an input u64 titleID, no output. | ||
Same as [[#CreateApplicationAndPushAndRequestToStartForQuest]] except without the input storage, official sw uses this when no input storage is specified. | Same as [[#CreateApplicationAndPushAndRequestToStartForQuest]] except without the input storage, official sw uses this when no input storage is specified. | ||
==== CreateApplicationWithAttributeAndPushAndRequestToStartForQuest ==== | |||
Takes an input u64 titleID, a type-0x15 input buffer containing an [[#ApplicationAttribute]], an input [[#IStorage]], no output. | |||
Same as [[#CreateApplicationAndPushAndRequestToStartForQuest]] except the entire attributes structure is directly specified via the input buffer. This command replaces [[#CreateApplicationAndPushAndRequestToStartForQuest]], official user-processes no longer use [[#CreateApplicationAndPushAndRequestToStartForQuest]]. | |||
==== CreateApplicationWithAttributeAndRequestToStartForQuest ==== | |||
Takes an input u64 titleID and a type-0x15 input buffer containing an [[#ApplicationAttribute]], no output. | |||
Same as [[#CreateApplicationAndRequestToStartForQuest]] except the entire attributes structure is directly specified via the input buffer. This command replaces [[#CreateApplicationAndRequestToStartForQuest]], official user-processes no longer use [[#CreateApplicationAndPushAndRequestToStartForQuest]]. | |||
==== GetDesiredLanguage ==== | ==== GetDesiredLanguage ==== | ||
Line 670: | Line 683: | ||
For example, in some cases official apps use this with [[Error_codes|error]] 0x2A2 then uses svcBreak. | For example, in some cases official apps use this with [[Error_codes|error]] 0x2A2 then uses svcBreak. | ||
==== GetDisplayVersion ==== | |||
No input, returns an output 0x10-byte struct. | |||
The output struct is "nn::oe::DisplayVersion". This the DisplayVersion string copied from the application [[NACP_Format|control.nacp]], this is always NUL-terminated. | |||
==== EndBlockingHomeButtonShortAndLongPressed ==== | ==== EndBlockingHomeButtonShortAndLongPressed ==== | ||
Line 711: | Line 729: | ||
==== EnableApplicationCrashReport ==== | ==== EnableApplicationCrashReport ==== | ||
Takes an input u8 bool, no output. | Takes an input u8 bool, no output. | ||
==== InitializeApplicationCopyrightFrameBuffer ==== | |||
Takes an input TransferMemory handle, an u32 '''width''', an u32 '''height''', an u64 tmem_size, and no output. | |||
User-processes create the tmem with an user-specified buffer with permissions=0. '''width''' = 1280 and '''height''' = 720. | |||
==== SetApplicationCopyrightImage ==== | |||
Takes a type-0x45 input buffer and 5 input s32s, no output. | |||
The last s32 is "nn::oe::WindowOriginMode". | |||
The first two s32s must not have the negative bit set, and the following two s32s must not be <1. | |||
==== SetApplicationCopyrightVisibility ==== | ==== SetApplicationCopyrightVisibility ==== | ||
Line 728: | Line 758: | ||
Same as [[#QueryApplicationPlayStatistics]] except this uses [[Shared_Database_services|pdm:qry]] cmd16, to get playstats specific to userIDs. | Same as [[#QueryApplicationPlayStatistics]] except this uses [[Shared_Database_services|pdm:qry]] cmd16, to get playstats specific to userIDs. | ||
==== ExecuteProgram ==== | |||
Takes an input u32 [[#ProgramSpecifyKind]] and an input u64, no output. | |||
==== ClearUserChannel ==== | ==== ClearUserChannel ==== | ||
No input/output. | No input/output. | ||
Clears the UserChannel. | |||
==== UnpopToUserChannel ==== | |||
Takes an input [[#IStorage]], no output. | |||
The input storage is pushed to the UserChannel, which is also used by [[#ClearUserChannel]]. | |||
User-processes create a storage using data specified by the user (written to offset=0 size=inputsize), with max size 0x1000. This storage is then used with this cmd. | |||
==== GetPreviousProgramIndex ==== | |||
No input, returns an output s32. | |||
==== CreateMovieMaker ==== | ==== CreateMovieMaker ==== | ||
Line 1,857: | Line 1,902: | ||
| 10 || Unexpected | | 10 || Unexpected | ||
|} | |} | ||
=== ProgramSpecifyKind === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || u8 ProgramIndex. "ExecuteProgram". User-process enters an infinite svcSleepThread loop afterwards. | |||
|- | |||
| 1 || u64 titleID. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1. | |||
|- | |||
| 2 || u64 = value 0. "RestartProgram" | |||
|- | |||
|} | |||
This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]]. | |||
= AppletResourceUserId = | = AppletResourceUserId = | ||
Line 1,866: | Line 1,927: | ||
= AppletKind = | = AppletKind = | ||
This is 8-bytes. | This is 8-bytes. | ||
= ApplicationAttributeForQuest = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || See [[#ApplicationAttribute]]. | |||
|- | |||
| 0x4 || 0x4 || See [[#ApplicationAttribute]]. | |||
|- | |||
| 0x8 || 0x4 || See [[#ApplicationAttribute]]. | |||
|} | |||
This struct is "nn::applet::ApplicationAttributeForQuest". | |||
User-processes copy the first 0x8-bytes (0xC-bytes with [[#CreateApplicationWithAttributeAndPushAndRequestToStartForQuest]]/[[#CreateApplicationWithAttributeAndRequestToStartForQuest]]) to a [[#ApplicationAttribute]] with the rest of the struct being cleared, which is then passed to the actual cmd (CreateApplication*ToStartForQuest). | |||
= ApplicationAttribute = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || Unknown. Default is 0. | |||
|- | |||
| 0x4 || 0x4 || Unknown. Default is 0. | |||
|- | |||
| 0x8 || 0x4 || float. Must be in the range of 0.0f-1.0f. The default is 1.0f. | |||
|- | |||
| 0xC || 0x14 || Unknown. Default is 0. | |||
|} | |||
This struct is "nn::am::ApplicationAttribute". This struct is 0x20-bytes. | |||
= Notes = | = Notes = |