Applet Manager services: Difference between revisions
(45 intermediate revisions by 3 users not shown) | |||
Line 113: | Line 113: | ||
| 31 || [2.0.0+] [[#GetWriterLockAccessorEx]] || | | 31 || [2.0.0+] [[#GetWriterLockAccessorEx]] || | ||
|- | |- | ||
| 100 || [6.0.0+] PopRequestLaunchApplicationForDebug || | | 100 || [6.0.0+] [[#PopRequestLaunchApplicationForDebug]] || | ||
|- | |||
| 110 || [9.0.0+] [[#IsForceTerminateApplicationDisabledForDebug]] || | |||
|- | |- | ||
| 200 || [8.0.0+] [[#LaunchDevMenu]] || | | 200 || [8.0.0+] [[#LaunchDevMenu]] || | ||
Line 142: | Line 144: | ||
The input value must be 0-3. 0 = HomeButton. | The input value must be 0-3. 0 = HomeButton. | ||
==== PopRequestLaunchApplicationForDebug ==== | |||
Takes a type-0x6 output buffer containing an array of u128 userIDs, returns an output u64 titleID (<code>nn::ncm::ApplicationId</code>) and an output s32 '''total_userIDs'''. | |||
The total entries in the userID buffer must be >= {total userIDs in state}. | |||
==== IsForceTerminateApplicationDisabledForDebug ==== | |||
No input, returns a total of 1-byte of output. | |||
==== LaunchDevMenu ==== | ==== LaunchDevMenu ==== | ||
Line 149: | Line 159: | ||
Uses [[NS_Services#IApplicationManagerInterface]] cmd99. | Uses [[NS_Services#IApplicationManagerInterface]] cmd99. | ||
This is used by [[qlaunch]]. On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | |||
==== ILockAccessor ==== | ==== ILockAccessor ==== | ||
Line 272: | Line 284: | ||
| 100 || [[#PopFloatingApplicationForDevelopment]] || | | 100 || [[#PopFloatingApplicationForDevelopment]] || | ||
|} | |} | ||
[[#CreateApplication]]/[[#CreateSystemApplication]] eventually call the same internal func. With [[#CreateApplication]], two ptrs passed to the internal func are NULL, while with [[#CreateSystemApplication]] these are loaded from state. The initial content of [[#ApplicationLaunchRequestInfo]] is all-zero with [[#CreateSystemApplication]], while with [[#CreateApplication]] the first two u32s are value 0x3 with the rest all-zero. The [[#AppletId]] is set to 0x01 with [[#CreateApplication]], while with [[#CreateSystemApplication]] it's 0x04. | |||
==== CreateApplication ==== | ==== CreateApplication ==== | ||
Line 286: | Line 300: | ||
==== PopFloatingApplicationForDevelopment ==== | ==== PopFloatingApplicationForDevelopment ==== | ||
No input, returns an [[#IApplicationAccessor]]. | No input, returns an [[#IApplicationAccessor]]. | ||
Should not be used if no FloatingApplication is available (svcBreak). | |||
==== IApplicationAccessor ==== | ==== IApplicationAccessor ==== | ||
Line 335: | Line 351: | ||
|- | |- | ||
| 170 || [8.0.0+] [[#HasSaveDataAccessPermission]] || | | 170 || [8.0.0+] [[#HasSaveDataAccessPermission]] || | ||
|- | |||
| 180 || [9.0.0+] PushToFriendInvitationStorageChannel || | |||
|- | |||
| 190 || [9.0.0+] PushToNotificationStorageChannel || | |||
|} | |} | ||
Line 355: | Line 375: | ||
===== GetApplicationControlProperty ===== | ===== GetApplicationControlProperty ===== | ||
No input, takes a type-0x6 output buffer. | No input, takes a type-0x6 output buffer. | ||
The output buffer must be at least 0x4000-bytes. Returns an error when the [[#AppletId]] is 0x04, aka when the IApplicationAccessor is for a SystemApplication. | |||
This gets the application [[NACP_Format|control.nacp]]. | This gets the application [[NACP_Format|control.nacp]]. | ||
Line 361: | Line 383: | ||
Takes a type-0x6 output buffer. | Takes a type-0x6 output buffer. | ||
The output buffer size must be at least 0x10-bytes. | The output buffer size must be at least 0x10-bytes. Returns an error when the [[#AppletId]] is 0x04, aka when the IApplicationAccessor is for a SystemApplication. | ||
This gets the | This gets the [[#ApplicationLaunchProperty]]. | ||
===== GetApplicationLaunchRequestInfo ===== | ===== GetApplicationLaunchRequestInfo ===== | ||
No input, returns an output 0x10-byte struct. | No input, returns an output 0x10-byte struct. | ||
This gets the ApplicationLaunchRequestInfo from state. The output struct is "nn::applet::ApplicationLaunchRequestInfo". | This gets the [[#ApplicationLaunchRequestInfo]] from state. The output struct is "nn::applet::ApplicationLaunchRequestInfo". | ||
===== SetUsers ===== | ===== SetUsers ===== | ||
Line 375: | Line 397: | ||
The total entries for the userIDs must be <=8. | The total entries for the userIDs must be <=8. | ||
When the input flag is true, the '''users_available''' state flag | When the input flag is true, this just clears the '''users_available''' state flag to 0 and returns. | ||
===== CheckRightsEnvironmentAvailable ===== | ===== CheckRightsEnvironmentAvailable ===== | ||
Line 386: | Line 408: | ||
Takes a type-0x6 output buffer containing an array of u128 userIDs, returns an output s32 '''total_entries'''. | Takes a type-0x6 output buffer containing an array of u128 userIDs, returns an output s32 '''total_entries'''. | ||
Gets a userID listing, this is unrelated to [[#SetUsers]]. | Gets a userID listing, this is unrelated to [[#SetUsers]]. [[qlaunch]] only uses 1 userID with this. | ||
The stored entry-count in state must be <= <size of output buffer in entries>. | The stored entry-count in state must be <= <size of output buffer in entries>. | ||
Line 445: | Line 467: | ||
|- | |- | ||
! Cmd || Name || Notes | ! Cmd || Name || Notes | ||
|- | |||
| 0 || [9.0.0+] SetTerminateResult || | |||
|- | |- | ||
| 10 || [[#ReadThemeStorage]] || | | 10 || [[#ReadThemeStorage]] || | ||
|- | |- | ||
| 11 || [[#WriteThemeStorage]] || | | 11 || [[#WriteThemeStorage]] || | ||
|- | |||
| 20 || [9.0.0+] [[#PushToAppletBoundChannel]] || | |||
|- | |||
| 21 || [9.0.0+] [[#TryPopFromAppletBoundChannel]] || | |||
|- | |- | ||
| 40 || [8.0.0+] [[#GetDisplayLogicalResolution]] || | | 40 || [8.0.0+] [[#GetDisplayLogicalResolution]] || | ||
Line 466: | Line 494: | ||
=== WriteThemeStorage === | === WriteThemeStorage === | ||
Takes an input u64 '''offset''' and a type-0x21 input buffer, no output. | Takes an input u64 '''offset''' and a type-0x21 input buffer, no output. | ||
=== PushToAppletBoundChannel === | |||
Takes an input [[#IStorage]], no output. | |||
=== TryPopFromAppletBoundChannel === | |||
No input, returns an output [[#IStorage]]. | |||
=== GetDisplayLogicalResolution === | === GetDisplayLogicalResolution === | ||
Line 575: | Line 609: | ||
|- | |- | ||
| 110 || [6.0.0+] [[#GetMainAppletAvailableUsers]] || | | 110 || [6.0.0+] [[#GetMainAppletAvailableUsers]] || | ||
|- | |||
| 120 || [9.0.0+] GetLaunchStorageInfoForDebug || | |||
|- | |||
| 130 || [9.0.0+] GetGpuErrorDetectedSystemEvent || | |||
|} | |} | ||
Line 750: | Line 788: | ||
|- | |- | ||
| 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] | | 20 || [8.0.0+] [[#SetHandlingHomeButtonShortPressedEnabled]] | ||
|- | |||
| 30 || [9.0.0+] SetHealthWarningShowingState | |||
|- | |- | ||
| 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]] | | 90 || [7.0.0+] [[#SetRequiresGpuResourceUse]] | ||
Line 783: | Line 823: | ||
==== StartShutdownSequenceForOverlay ==== | ==== StartShutdownSequenceForOverlay ==== | ||
No input/output. | No input/output. | ||
On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | |||
==== StartRebootSequenceForOverlay ==== | ==== StartRebootSequenceForOverlay ==== | ||
No input/output. | No input/output. | ||
On success, official sw will enter an infinite loop with sleep-thread value 86400000000000. | |||
==== SetHandlingHomeButtonShortPressedEnabled ==== | ==== SetHandlingHomeButtonShortPressedEnabled ==== | ||
Line 797: | Line 841: | ||
==== BeginToObserveHidInputForDevelop ==== | ==== BeginToObserveHidInputForDevelop ==== | ||
No input/output. | No input/output. | ||
Sets various state fields and signals an userspace-event. | |||
Enables HID input for the OverlayApplet, without disabling input for the foreground applet. | |||
== IApplicationProxy == | == IApplicationProxy == | ||
Line 841: | Line 889: | ||
| 15 || [7.0.0+] [[#CreateApplicationWithAttributeAndRequestToStartForQuest]] || | | 15 || [7.0.0+] [[#CreateApplicationWithAttributeAndRequestToStartForQuest]] || | ||
|- | |- | ||
| 20 || EnsureSaveData || | | 20 || [[#EnsureSaveData]] || | ||
|- | |- | ||
| 21 || [[#GetDesiredLanguage]] || | | 21 || [[#GetDesiredLanguage]] || | ||
Line 909: | Line 957: | ||
| 130 || [8.0.0+] [[#GetGpuErrorDetectedSystemEvent]] || | | 130 || [8.0.0+] [[#GetGpuErrorDetectedSystemEvent]] || | ||
|- | |- | ||
| 500 || [5.0.0+] StartContinuousRecordingFlushForDebug || | | 140 || [9.0.0+] GetFriendInvitationStorageChannelEvent || | ||
|- | |||
| 141 || [9.0.0+] TryPopFromFriendInvitationStorageChannel || | |||
|- | |||
| 150 || [9.0.0+] GetNotificationStorageChannelEvent || | |||
|- | |||
| 151 || [9.0.0+] TryPopFromNotificationStorageChannel || | |||
|- | |||
| 160 || [9.0.0+] GetHealthWarningDisappearedSystemEvent || | |||
|- | |||
| 170 || [9.0.0+] SetHdcpAuthenticationActivated || | |||
|- | |||
| 500 || [5.0.0+] [[#StartContinuousRecordingFlushForDebug]] || | |||
|- | |- | ||
| 1000 || [5.0.0+] [[#CreateMovieMaker]] || | | 1000 || [5.0.0+] [[#CreateMovieMaker]] || | ||
Line 954: | Line 1,014: | ||
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]]. | 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 ==== | ==== EnsureSaveData ==== | ||
No input, returns an output [[Settings_services#LanguageCode|LanguageCode]]. | Takes an input u128 userID, returns an output u64 size. | ||
Calls sdk func <code>nn::fs::EnsureApplicationSaveData</code>. [[qlaunch]] also calls this same sdk func directly. | |||
Creates the various savedata as specified by the application [[NACP_Format|control.nacp]] when the savedata doesn't exist. | |||
Official user-processes launch the dataErase LibraryApplet depending on the Result, the above output size is used with this. | |||
==== GetDesiredLanguage ==== | |||
No input, returns an output [[Settings_services#LanguageCode|LanguageCode]]. | |||
==== SetTerminateResult ==== | ==== SetTerminateResult ==== | ||
Line 970: | Line 1,039: | ||
No input, returns an output u8 [[Filesystem_services#StorageId|StorageId]] and u8 [[Filesystem_services#StorageId|StorageId]]. | No input, returns an output u8 [[Filesystem_services#StorageId|StorageId]] and u8 [[Filesystem_services#StorageId|StorageId]]. | ||
This returns two u8s loaded from state, these are the same StorageIds from [[#ApplicationLaunchProperty]]. | |||
==== BeginBlockingHomeButtonShortAndLongPressed ==== | ==== BeginBlockingHomeButtonShortAndLongPressed ==== | ||
Line 1,012: | Line 1,081: | ||
==== RequestFlushGamePlayingMovieForDebug ==== | ==== RequestFlushGamePlayingMovieForDebug ==== | ||
No input/output. | No input/output. | ||
Requests to save the video recording, as if the Capture-button was held. | |||
==== RequestToShutdown ==== | ==== RequestToShutdown ==== | ||
Line 1,089: | Line 1,160: | ||
==== GetPreviousProgramIndex ==== | ==== GetPreviousProgramIndex ==== | ||
No input, returns an output s32. | No input, returns an output s32. | ||
Gets the ProgramIndex of the Application which launched this title. The output ProgramIndex is -1 when there was no previous title. | |||
==== EnableApplicationAllThreadDumpOnCrash ==== | ==== EnableApplicationAllThreadDumpOnCrash ==== | ||
Line 1,097: | Line 1,170: | ||
This is used by sdknso during applet-application initialization. A seperate thread is setup where event-waiting is handled. When the Event is signaled, official sw will assert. | This is used by sdknso during applet-application initialization. A seperate thread is setup where event-waiting is handled. When the Event is signaled, official sw will assert. | ||
==== StartContinuousRecordingFlushForDebug ==== | |||
Takes an input s64 nanoseconds-value, returns an output Event handle with autoclear=false. | |||
The cached value loaded from [[System_Settings|system-setting]] <code>am.debug!dev_function</code> must be set to 0x1 with size 0x1, otherwise an error is returned. | |||
==== CreateMovieMaker ==== | ==== CreateMovieMaker ==== | ||
Takes an input u64 and handle, returns an [[#IMovieMaker]]. | Takes an input u64 size and a TransferMemory handle, returns an [[#IMovieMaker]]. | ||
Official sw retries using the cmd in a loop on error 0x8D4 with svcSleepThread(100000000) being used first. | |||
Official sw uses permissions=None for the TransferMemory, with an user-specified buffer. The size of the buffer used by official sw is 0x6000000. | |||
==== PrepareForJit ==== | ==== PrepareForJit ==== | ||
Line 1,145: | Line 1,227: | ||
Stubbed with an ILibraryAppletCreator from [[#CreateSelfLibraryAppletCreatorForDevelop]], just returns an error. | Stubbed with an ILibraryAppletCreator from [[#CreateSelfLibraryAppletCreatorForDevelop]], just returns an error. | ||
Terminates all LibraryApplets which were created by the current applet (or by the Application when used from the [[#IApplicationAccessor]] cmd). | |||
=== AreAnyLibraryAppletsLeft === | === AreAnyLibraryAppletsLeft === | ||
Line 1,150: | Line 1,234: | ||
Stubbed with an ILibraryAppletCreator from [[#CreateSelfLibraryAppletCreatorForDevelop]], just returns an error. | Stubbed with an ILibraryAppletCreator from [[#CreateSelfLibraryAppletCreatorForDevelop]], just returns an error. | ||
Gets whether any LibraryApplets ([[#ILibraryAppletAccessor]]) which were created by the current applet are still open (or by the Application when used from the [[#IApplicationAccessor]] cmd). | |||
=== CreateStorage === | === CreateStorage === | ||
Line 1,329: | Line 1,415: | ||
|- | |- | ||
| 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] || | | 200 || [7.0.0+] [[#GetOperationModeSystemInfo]] || | ||
|- | |||
| 300 || [9.0.0+] GetSettingsPlatformRegion || | |||
|} | |} | ||
Line 1,465: | Line 1,553: | ||
Takes a type-0x5 input buffer containing a string, returns an output u64 titleID. | Takes a type-0x5 input buffer containing a string, returns an output u64 titleID. | ||
Gets the application titleID for the specified ContentActionName string. Returns an error when the current [[#AppletId]] isn't 0x04 ( | Gets the application titleID for the specified ContentActionName string. Returns an error when the current [[#AppletId]] isn't 0x04 (when the current applet isn't a SystemApplication). | ||
=== SetCpuBoostMode === | === SetCpuBoostMode === | ||
Line 1,484: | Line 1,572: | ||
No input, returns an output u32. | No input, returns an output u32. | ||
This returns the output from | This returns the output from [[#GetOperationModeSystemInfo_2|omm GetOperationModeSystemInfo]]. | ||
== ISelfController == | == ISelfController == | ||
Line 1,560: | Line 1,648: | ||
|- | |- | ||
| 71 || [5.0.0+] [[#GetCurrentIlluminanceEx]] | | 71 || [5.0.0+] [[#GetCurrentIlluminanceEx]] | ||
|- | |||
| 72 || [9.0.0+] SetInputDetectionPolicy | |||
|- | |- | ||
| 80 || [4.0.0+] [[#SetWirelessPriorityMode]] | | 80 || [4.0.0+] [[#SetWirelessPriorityMode]] | ||
Line 2,166: | Line 2,256: | ||
|- | |- | ||
| 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] || | | 100 || [7.0.0+] [[#SetCpuBoostModeForApplet]] || | ||
|- | |||
| 110 || [9.0.0+] PushToAppletBoundChannelForDebug || | |||
|- | |||
| 111 || [9.0.0+] TryPopFromAppletBoundChannelForDebug || | |||
|- | |||
| 120 || [9.0.0+] AlarmSettingNotificationEnableAppEventReserve || | |||
|- | |||
| 121 || [9.0.0+] AlarmSettingNotificationDisableAppEventReserve || | |||
|- | |||
| 122 || [9.0.0+] AlarmSettingNotificationPushAppEventNotify || | |||
|- | |||
| 130 || [9.0.0+] FriendInvitationSetApplicationParameter || | |||
|- | |||
| 131 || [9.0.0+] FriendInvitationClearApplicationParameter || | |||
|- | |||
| 132 || [9.0.0+] FriendInvitationPushApplicationParameter || | |||
|} | |} | ||
Line 2,175: | Line 2,281: | ||
=== OpenMainApplication === | === OpenMainApplication === | ||
No input, returns an output [[#IApplicationAccessor]]. | No input, returns an output [[#IApplicationAccessor]]. | ||
Should not be used when no Application is running (svcBreak). | |||
=== PerformSystemButtonPressing === | === PerformSystemButtonPressing === | ||
Line 2,184: | Line 2,292: | ||
=== RequestLaunchApplicationWithUserAndArgumentForDebug === | === RequestLaunchApplicationWithUserAndArgumentForDebug === | ||
Takes an input u8 bool flag, an u64 Application titleID, a type-0x5 input buffer containing an array of u128 userIDs, and a type-0x5 input buffer, no output. | Takes an input u8 bool flag, an u64 Application titleID, a type-0x5 input buffer containing an array of u128 userIDs, and a type-0x5 input buffer, no output. | ||
Requests to launch the specified Application, with the specified users. When the bool flag is true, the content of the second input buffer is used to create a storage which is pushed to the UserChannel for this Application (see [[#LaunchParameterKind]]). | |||
=== GetAppletResourceUsageInfo === | === GetAppletResourceUsageInfo === | ||
No input, returns an output | No input, returns an output [[#AppletResourceUsageInfo]]. | ||
=== SetCpuBoostModeForApplet === | === SetCpuBoostModeForApplet === | ||
Line 2,261: | Line 2,371: | ||
|rowspan="2"| 1 || [1.0.0-3.0.2] | |rowspan="2"| 1 || [1.0.0-3.0.2] | ||
|- | |- | ||
| [7.0.0+] | | [7.0.0+] IsAutoPowerDownRequested | ||
|- | |- | ||
| 2 || [1.0.0-3.0.2] | | 2 || [1.0.0-3.0.2] | ||
|- | |- | ||
| 3 || SetHandlingContext | | 3 || [[#SetHandlingContext]] | ||
|- | |- | ||
| 4 || LoadAndApplySettings | | 4 || LoadAndApplySettings | ||
Line 2,272: | Line 2,382: | ||
|} | |} | ||
[3.0.0+] | == SetHandlingContext == | ||
[3.0.0+] Now takes an additional 0x10-bytes of input. | |||
= omm = | = omm = | ||
Line 2,278: | Line 2,389: | ||
Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes. | Operation Mode Manager (OMM) is a service responsible for arbitrating the operation changes between docked and handheld modes. | ||
Besides [[PTM_services]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | Besides [[PTM_services|PTM]], this is the only service that interacts with the [[Dock]] through [[USB_services|usb:pd*]]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 0 || GetOperationMode | |||
|- | |- | ||
| | | 1 || GetOperationModeChangeEvent | ||
|- | |- | ||
| | | 2 || EnableAudioVisual | ||
|- | |- | ||
| | | 3 || DisableAudioVisual | ||
|- | |- | ||
| | | 4 || EnterSleepAndWait | ||
|- | |- | ||
| | | 5 || GetCradleStatus | ||
|- | |- | ||
| | | 6 || FadeInDisplay | ||
|- | |- | ||
| | | 7 || FadeOutDisplay | ||
|- | |- | ||
| | | 8 || [2.0.0+] GetCradleFwVersion | ||
|- | |- | ||
| | | 9 || [2.0.0+] NotifyCecSettingsChanged | ||
|- | |- | ||
| | | 10 || [3.0.0+] SetOperationModePolicy | ||
|- | |- | ||
| | | 11 || [3.0.0+] GetDefaultDisplayResolution | ||
|- | |- | ||
| | | 12 || [3.0.0+] GetDefaultDisplayResolutionChangeEvent | ||
|- | |- | ||
| | | 13 || [3.0.0+] UpdateDefaultDisplayResolution | ||
|- | |- | ||
| | | 14 || [3.0.0+] ShouldSleepOnBoot | ||
|- | |- | ||
| | | 15 || [4.0.0+] NotifyHdcpApplicationExecutionStarted | ||
|- | |- | ||
| | | 16 || [4.0.0+] NotifyHdcpApplicationExecutionFinished | ||
|- | |- | ||
| | | 17 || [4.0.0+] NotifyHdcpApplicationDrawingStarted | ||
|- | |- | ||
| | | 18 || [4.0.0+] NotifyHdcpApplicationDrawingFinished | ||
|- | |- | ||
| | | 19 || [4.0.0+] GetHdcpAuthenticationFailedEvent | ||
|- | |- | ||
| | | 20 || [4.0.0+] GetHdcpAuthenticationFailedEmulationEnabled | ||
|- | |- | ||
| | | 21 || [4.0.0+] SetHdcpAuthenticationFailedEmulation | ||
|- | |- | ||
| | | 22 || [4.0.0+] GetHdcpStateChangeEvent | ||
|- | |- | ||
| | | 23 || [4.0.0+] GetHdcpState | ||
|- | |- | ||
| | | 24 || [5.0.0+] ShowCardUpdateProcessing | ||
|- | |- | ||
| | | 25 || [5.0.0+] SetApplicationCecSettingsAndNotifyChanged | ||
|- | |- | ||
| | | 26 || [7.0.0+] [[#GetOperationModeSystemInfo]] | ||
|- | |- | ||
| | | 27 || [9.0.0+] GetAppletFullAwakingSystemEvent | ||
|} | |} | ||
== | == GetOperationModeSystemInfo == | ||
No input, returns an output u32. | No input, returns an output u32. | ||
This is used by [[#GetOperationModeSystemInfo]]. | This is used by [[#GetOperationModeSystemInfo|ICommonStateGetter GetOperationModeSystemInfo]]. | ||
= spsm = | = spsm = | ||
Line 2,351: | Line 2,464: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || GetCurrentState | ||
|- | |- | ||
| 1 || | | 1 || EnterSleep | ||
|- | |- | ||
| 2 || | | 2 || GetLastWakeReason | ||
|- | |- | ||
| 3 || | | 3 || Shutdown | ||
|- | |- | ||
| 4 || GetNotificationMessageEventHandle | | 4 || GetNotificationMessageEventHandle | ||
|- | |- | ||
| 5 || | | 5 || ReceiveNotificationMessage | ||
|- | |- | ||
| 6 || | | 6 || AnalyzeLogForLastSleepWakeSequence | ||
|- | |- | ||
| 7 || | | 7 || ResetEventLog | ||
|- | |- | ||
| 8 || AnalyzePerformanceLogForLastSleepWakeSequence | | 8 || AnalyzePerformanceLogForLastSleepWakeSequence | ||
Line 2,371: | Line 2,484: | ||
| 9 || ChangeHomeButtonLongPressingTime | | 9 || ChangeHomeButtonLongPressingTime | ||
|- | |- | ||
| 10 || | | 10 || PutErrorState | ||
|- | |- | ||
| 11 || [1.0.0-3.0.2] | | 11 || [1.0.0-3.0.2] InvalidateCurrentHomeButtonPressing | ||
|} | |} | ||
Line 2,417: | Line 2,530: | ||
== SaveScreenShot == | == SaveScreenShot == | ||
Takes two input u32s, an u64 AppletResourceUserId, a PID, and a type-0x45 input buffer. Returns | Takes two input u32s, an u64 AppletResourceUserId, a PID, and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]]. | ||
Official user-processes doesn't use this, instead [[#SaveScreenShotEx0]] is used: ScreenShotAttributeEx0 is all-zero, except +4 is set to an input u32 and u32 +0xC = 0x1. | |||
This cmd internally uses an all-zero ScreenShotAttributeEx0, with u32 +0 = input u32 and u32 +0x8 = 0x3. | |||
== SaveScreenShotEx0 == | == SaveScreenShotEx0 == | ||
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, and a type-0x45 input buffer. Returns a | Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]]. | ||
== SaveScreenShotEx1 == | |||
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a PID, a type-0x15 input buffer containing an [[Capture_services|ApplicationData]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]]. | |||
== SaveScreenShotEx2 == | |||
Takes an input 0x40-byte struct '''ScreenShotAttributeEx0''', an input u32, an input u64 AppletResourceUserId, a type-0x15 input buffer containing an [[Capture_services|UserIdList]], and a type-0x45 input buffer containing image data. Returns an [[Capture_services|ApplicationAlbumEntry]]. | |||
= Library Applets = | = Library Applets = | ||
Line 2,480: | Line 2,601: | ||
| 0x04 | | 0x04 | ||
| 0100000000001012 | | 0100000000001012 | ||
| "starter" | | "starter" SystemApplication. | ||
|- | |- | ||
| 0x0A | | 0x0A | ||
Line 2,528: | Line 2,649: | ||
| 0x15 | | 0x15 | ||
| 010000000000100D | | 010000000000100D | ||
| "photoViewer" | | [[Album_Applet|"photoViewer"]] | ||
|- | |- | ||
| 0x16 | | 0x16 | ||
Line 2,548: | Line 2,669: | ||
| 0x1A | | 0x1A | ||
| 0100000000001013 | | 0100000000001013 | ||
| "myPage" | | [[MyPage_Applet|"myPage"]] | ||
|} | |} | ||
Line 2,637: | Line 2,758: | ||
| 4 || Long-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]]. | | 4 || Long-pressing with the Power-button. Only available with [[#PerformSystemButtonPressing]]. | ||
|- | |- | ||
| 5 || | | 5 || Shutdown the system. Only available with [[#PerformSystemButtonPressing]]. | ||
|- | |- | ||
| 6 || PerformCaptureButtonShortPressing | | 6 || PerformCaptureButtonShortPressing | ||
Line 2,652: | Line 2,773: | ||
! Description | ! Description | ||
|- | |- | ||
| 1 || Application-specific LaunchParameter | | 1 || UserChannel. Application-specific LaunchParameter. | ||
|- | |- | ||
| 2 || account PreselectedUser | | 2 || account PreselectedUser | ||
Line 2,680: | Line 2,801: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || u8 ProgramIndex. "ExecuteProgram". After using [[# | | 0 || u8 ProgramIndex. "ExecuteProgram". [[NS_Services|NS]] handles ProgramIndex by launching titleID {application_titleID}+ProgramIndex. After using [[#ExecuteProgram]] with this successfully, official user-processes will enter an infinite loop with sleep-thread value 86400000000000. | ||
|- | |- | ||
| 1 || u64 titleID. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1. | | 1 || u64 titleID. "JumpToSubApplicationProgramForDevelopment". Only available when [[Settings_services#GetDebugModeFlag|DebugMode]] is 1. | ||
Line 2,689: | Line 2,810: | ||
This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]]. | This is "nn::am::service::ProgramSpecifyKind". This controls the type of the u64 passed to [[#ExecuteProgram]]. | ||
ProgramIndex values where the title is not installed should not be used: [[qlaunch]] will display an error message and the current title will become "corrupted", however Home Menu will have an option to repair it. | |||
= AppletResourceUserId = | = AppletResourceUserId = | ||
Line 2,783: | Line 2,906: | ||
Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd. | Internally AM only uses the first 0xC-bytes from ApplicationAttribute, regardless of the cmd. | ||
= ApplicationLaunchProperty = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x8 || Application titleID. | |||
|- | |||
| 0x8 || 0x4 || Application title-version. | |||
|- | |||
| 0xC || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application base title. | |||
|- | |||
| 0xD || 0x1 || [[Filesystem_services#StorageId|StorageId]] for the Application update title. | |||
|- | |||
| 0xE || 0x1 || Unknown. | |||
|- | |||
| 0xF || 0x1 || Padding. | |||
|} | |||
This struct is 0x10-bytes. | |||
= ApplicationLaunchRequestInfo = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]]. | |||
|- | |||
| 0x4 || 0x4 || Unknown. The default is 0x0 with [[#CreateSystemApplication]], 0x3 with [[#CreateApplication]]. | |||
|- | |||
| 0x8 || 0x8 || Unknown. The default is 0x0. | |||
|} | |||
This struct is "nn::applet::ApplicationLaunchRequestInfo". This struct is 0x10-bytes. | |||
= AppletResourceUsageInfo = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || Unknown counter. | |||
|- | |||
| 0x4 || 0x4 || Unknown counter. | |||
|- | |||
| 0x8 || 0x4 || Output from [[NS_Services|NS GetRightsEnvironmentCountForDebug]]. | |||
|- | |||
| 0xC || 0x14 || Always zero. | |||
|} | |||
This struct is "nn::am::service::AppletResourceUsageInfo". This struct is 0x20-bytes. | |||
= Notes = | = Notes = |