Difference between revisions of "Applet Manager services"
Line 706: | Line 706: | ||
! Cmd || Name || Notes | ! Cmd || Name || Notes | ||
|- | |- | ||
− | | 0 || | + | | 0 || [[#OpenApplicationProxy]] || |
|- | |- | ||
|} | |} | ||
This seems to be used by all(?) regular-applications, even [[flog]]. | This seems to be used by all(?) regular-applications, even [[flog]]. | ||
+ | |||
+ | == OpenApplicationProxy == | ||
+ | Returns an [[#IApplicationProxy]]. See [[#appletAE]]. | ||
+ | |||
+ | Takes a [[IPC_Marshalling|reserved]] input u64(official user-processes use hard-code value 0), a PID, and a process copy-handle(cur-proc handle alias). | ||
+ | |||
+ | On failure, official user-processes will retry using this command in a loop while the retval is 0x19280, with svcSleepThread(10000000) being called first. | ||
= idle:sys = | = idle:sys = |
Revision as of 20:43, 26 October 2017
AM (Applet Manager) provides services for interacting with system applets while abstracting several aspects of power and operation management.
Contains multiple raw images, with at least the following: "NN_OMM_CHARGING_BIN_{begin|end}"(charging icon), low-battery icon, and the Nintendo Switch logo displayed during system boot.
appletAE
This is "nn::am::service::IAllSystemAppletProxiesService".
Cmd | Name | Notes |
---|---|---|
100 | OpenSystemAppletProxy | Returns an #ISystemAppletProxy. |
200 | OpenLibraryAppletProxyOld | Returns an #ILibraryAppletProxy. |
201 | OpenLibraryAppletProxy | Returns an #ILibraryAppletProxy. |
300 | OpenOverlayAppletProxy | Returns an #IOverlayAppletProxy. |
350 | OpenSystemApplicationProxy | Returns an #IApplicationProxy. |
400 | CreateSelfLibraryAppletCreatorForDevelop | Returns an #ILibraryAppletCreator. |
All of these commands take the same input: handle-descriptor for PID + 1 copy-handle, and an u64.
This service seems to be used by all system non-regular-applications.
ISystemAppletProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetHomeMenuFunctions | Returns an #IHomeMenuFunctions. |
21 | GetGlobalStateController | Returns an #IGlobalStateController. |
22 | GetApplicationCreator | Returns an #IApplicationCreator. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
IHomeMenuFunctions
Cmd | Name | Notes |
---|---|---|
10 | RequestToGetForeground | |
11 | LockForeground | |
12 | UnlockForeground | |
20 | PopFromGeneralChannel | Returns an IStorage. |
21 | GetPopFromGeneralChannelEvent | |
30 | GetHomeButtonWriterLockAccessor | Returns an #ILockAccessor. |
31 | GetWriterLockAccessorEx | Returns an #ILockAccessor. |
ILockAccessor
Cmd | Name |
---|---|
1 | TryLock |
2 | Unlock |
3 | GetEvent |
IGlobalStateController
Cmd | Name |
---|---|
0 | RequestToEnterSleep |
1 | EnterSleep |
2 | StartSleepSequence |
3 | StartShutdownSequence |
4 | StartRebootSequence |
10 | LoadAndApplyIdlePolicySettings |
11 | NotifyCecSettingsChanged |
12 | SetDefaultHomeButtonLongPressTime |
13 | UpdateDefaultDisplayResolution |
14 | ShouldSleepOnBoot |
IApplicationCreator
Cmd | Name | Notes |
---|---|---|
0 | CreateApplication | Returns an #IApplicationAccessor. |
1 | PopLaunchRequestedApplication | Returns an #IApplicationAccessor. |
10 | CreateSystemApplication | Returns an #IApplicationAccessor. |
100 | PopFloatingApplicationForDevelopment | Returns an #IApplicationAccessor. |
IApplicationAccessor
Cmd | Name | Notes |
---|---|---|
0 | GetAppletStateChangedEvent | |
1 | IsCompleted | |
10 | Start | |
20 | RequestExit | |
25 | Terminate | |
30 | GetResult | |
101 | RequestForApplicationToGetForeground | |
110 | TerminateAllLibraryApplets | |
111 | AreAnyLibraryAppletsLeft | |
112 | GetCurrentLibraryApplet | Returns an #IAppletAccessor. |
120 | GetApplicationId | |
121 | PushLaunchParameter | Returns an IStorage. |
122 | GetApplicationControlProperty | |
123 | GetApplicationLaunchProperty |
IAppletAccessor
Cmd | Name |
---|---|
0 | GetAppletStateChangedEvent |
1 | IsCompleted |
10 | Start |
20 | RequestExit |
25 | Terminate |
30 | GetResult |
ILibraryAppletProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetLibraryAppletSelfAccessor | Returns an #ILibraryAppletSelfAccessor. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
ILibraryAppletSelfAccessor
Cmd | Name | Notes |
---|---|---|
0 | PopInData | Returns an IStorage. |
1 | PushOutData | Returns an IStorage. |
2 | PopInteractiveInData | Returns an IStorage. |
3 | PushInteractiveOutData | Returns an IStorage. |
5 | GetPopInDataEvent | |
6 | GetPopInteractiveInDataEvent | |
10 | ExitProcessAndReturn | |
11 | GetLibraryAppletInfo | |
12 | GetMainAppletIdentityInfo | |
13 | CanUseApplicationCore | |
14 | GetCallerAppletIdentityInfo | |
15 | GetMainAppletApplicationControlProperty | |
16 | GetMainAppletStorageId | |
17 | GetCallerAppletIdentityInfoStack | |
20 | PopExtraStorage | Returns an IStorage. |
25 | GetPopExtraStorageEvent | |
30 | UnpopInData | Returns an IStorage. |
31 | UnpopExtraStorage | Returns an IStorage. |
40 | GetIndirectLayerProducerHandle | |
50 | ReportVisibleError |
IOverlayAppletProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetOverlayFunctions | Returns an #IOverlayFunctions. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
IOverlayFunctions
Cmd | Name |
---|---|
0 | BeginToWatchShortHomeButtonMessage |
1 | EndToWatchShortHomeButtonMessage |
2 | GetApplicationIdForLogo |
3 | SetGpuTimeSliceBoost |
4 | SetAutoSleepTimeAndDimmingTimeEnabled |
5 | TerminateApplicationAndSetReason |
6 | SetScreenShotPermissionGlobally |
IApplicationProxy
Cmd | Name | Notes |
---|---|---|
0 | GetCommonStateGetter | Returns an #ICommonStateGetter. |
1 | GetSelfController | Returns an #ISelfController. |
2 | GetWindowController | Returns an #IWindowController. |
3 | GetAudioController | Returns an #IAudioController. |
4 | GetDisplayController | Returns an #IDisplayController. |
10 | GetProcessWindingController | Returns an #IProcessWindingController. |
11 | GetLibraryAppletCreator | Returns an #ILibraryAppletCreator. |
20 | GetApplicationFunctions | Returns an #IApplicationFunctions. |
1000 | GetDebugFunctions | Returns an #IDebugFunctions. |
IApplicationFunctions
Cmd | Name | Notes |
---|---|---|
1 | PopLaunchParameter | Returns an IStorage. |
10 | CreateApplicationAndPushAndRequestToStart | Returns an IStorage. |
11 | CreateApplicationAndPushAndRequestToStartForQuest | Returns an IStorage. |
20 | EnsureSaveData | |
21 | GetDesiredLanguage | |
22 | SetTerminateResult | |
23 | GetDisplayVersion | |
24 | GetLaunchStorageInfoForDebug | |
25 | ExtendSaveData | |
26 | GetSaveDataSize | |
30 | BeginBlockingHomeButtonShortAndLongPressed | |
31 | EndBlockingHomeButtonShortAndLongPressed | |
32 | BeginBlockingHomeButton | |
33 | EndBlockingHomeButton | |
40 | #NotifyRunning | |
50 | GetPseudoDeviceId | |
60 | SetMediaPlaybackStateForApplication | |
65 | [3.0.0+] IsGamePlayRecordingSupported | |
66 | [3.0.0+] #InitializeGamePlayRecording | |
67 | [3.0.0+] #SetGamePlayRecordingState | |
70 | [3.0.0+] RequestToShutdown | |
71 | [3.0.0+] RequestToReboot |
The BOTW game uses this GamePlayRecording functionality from the main-nso "nninitStartup" function, with size 0x6000000(96MiB). The official GamePlayRecording-enable code does the following(this will panic on any failure):
- Creates TransferMemory using the input buffer and size, with permissions=0.
- Uses #InitializeGamePlayRecording with the TransferMemory.
- Closes the TransferMemory handle, + TransferMemory cleanup.
- Uses #SetGamePlayRecordingState with value 0x1.
This GamePlayRecording functionality presumably enables the video-recording usable starting with 4.0.0.
NotifyRunning
Takes no input. Returns an output u8, which is ignored by official user-processes.
InitializeGamePlayRecording
Takes a TransferMemory handle and an u64 for the size of the TransferMemory.
SetGamePlayRecordingState
Takes an input u32.
ILibraryAppletCreator
Cmd | Name | Notes |
---|---|---|
0 | CreateLibraryApplet | Returns an #ILibraryAppletAccessor. |
1 | TerminateAllLibraryApplets | |
2 | AreAnyLibraryAppletsLeft | |
10 | CreateStorage | Returns an IStorage. |
11 | CreateTransferMemoryStorage | Returns an IStorage. |
12 | CreateHandleStorage | Returns an IStorage. |
ILibraryAppletAccessor
Cmd | Name | Notes |
---|---|---|
0 | GetAppletStateChangedEvent | |
1 | IsCompleted | |
10 | Start | |
20 | RequestExit | |
25 | Terminate | |
30 | GetResult | |
50 | SetOutOfFocusApplicationSuspendingEnabled | |
100 | PushInData | Returns an IStorage. |
101 | PopOutData | Returns an IStorage. |
102 | PushExtraStorage | Returns an IStorage. |
103 | PushInteractiveInData | Returns an IStorage. |
104 | PopInteractiveOutData | Returns an IStorage. |
105 | GetPopOutDataEvent | |
106 | GetPopInteractiveOutDataEvent | |
110 | NeedsToExitProcess | |
120 | GetLibraryAppletInfo | |
150 | RequestForAppletToGetForeground | |
160 | GetIndirectLayerConsumerHandle |
ICommonStateGetter
Cmd | Name | Notes |
---|---|---|
0 | GetEventHandle | |
1 | ReceiveMessage | |
2 | GetThisAppletKind | |
3 | AllowToEnterSleep | |
4 | DisallowToEnterSleep | |
5 | GetOperationMode | |
6 | GetPerformanceMode | |
7 | GetCradleStatus | |
8 | GetBootMode | |
9 | GetCurrentFocusState | |
10 | RequestToAcquireSleepLock | |
11 | ReleaseSleepLock | |
12 | ReleaseSleepLockTransiently | |
13 | GetAcquiredSleepLockEvent | |
20 | PushToGeneralChannel | Returns an IStorage. |
30 | GetHomeButtonReaderLockAccessor | Returns an #ILockAccessor. |
31 | GetReaderLockAccessorEx | Returns an #ILockAccessor. |
40 | GetCradleFwVersion | |
50 | IsVrModeEnabled | |
51 | SetVrModeEnabled | |
55 | IsInControllerFirmwareUpdateSection | |
60 | GetDefaultDisplayResolution | |
61 | GetDefaultDisplayResolutionChangeEvent |
ISelfController
Cmd | Name |
---|---|
0 | Exit |
1 | LockExit |
2 | UnlockExit |
3 | EnterFatalSection |
4 | LeaveFatalSection |
9 | GetLibraryAppletLaunchableEvent |
10 | SetScreenShotPermission |
11 | SetOperationModeChangedNotification |
12 | SetPerformanceModeChangedNotification |
13 | SetFocusHandlingMode |
14 | SetRestartMessageEnabled |
15 | SetScreenShotAppletIdentityInfo |
16 | SetOutOfFocusSuspendingEnabled |
17 | SetControllerFirmwareUpdateSection |
18 | SetRequiresCaptureButtonShortPressedMessage |
19 | SetScreenShotImageOrientation |
40 | CreateManagedDisplayLayer |
50 | SetHandlesRequestToDisplay |
51 | ApproveToDisplay |
60 | OverrideAutoSleepTimeAndDimmingTime |
61 | SetMediaPlaybackState |
62 | SetIdleTimeDetectionExtension |
63 | GetIdleTimeDetectionExtension |
64 | SetInputDetectionSourceSet |
65 | ReportUserIsActive |
66 | GetCurrentIlluminance |
67 | IsIlluminanceAvailable |
CreateManagedDisplayLayer
Returns an output u64 LayerId which is then used by the user-process with Display_services#OpenLayer.
IWindowController
Cmd | Name | Notes |
---|---|---|
0 | CreateWindow | Returns an IWindow object. |
1 | GetAppletResourceUserId | |
10 | AcquireForegroundRights | |
11 | ReleaseForegroundRights | |
12 | RejectToChangeIntoBackground |
GetAppletResourceUserId
Returns an output u64: #AppletResourceUserId.
IAudioController
Cmd | Name |
---|---|
0 | SetExpectedMasterVolume |
1 | GetMainAppletExpectedMasterVolume |
2 | GetLibraryAppletExpectedMasterVolume |
3 | ChangeMainAppletMasterVolume |
4 | SetTransparentVolumeRate |
IDisplayController
Cmd | Name |
---|---|
0 | GetLastForegroundCaptureImage |
1 | UpdateLastForegroundCaptureImage |
2 | GetLastApplicationCaptureImage |
3 | GetCallerAppletCaptureImage |
4 | UpdateCallerAppletCaptureImage |
5 | GetLastForegroundCaptureImageEx |
6 | GetLastApplicationCaptureImageEx |
7 | GetCallerAppletCaptureImageEx |
8 | TakeScreenShotOfOwnLayer |
10 | AcquireLastApplicationCaptureBuffer |
11 | ReleaseLastApplicationCaptureBuffer |
12 | AcquireLastForegroundCaptureBuffer |
13 | ReleaseLastForegroundCaptureBuffer |
14 | AcquireCallerAppletCaptureBuffer |
15 | ReleaseCallerAppletCaptureBuffer |
16 | AcquireLastApplicationCaptureBufferEx |
17 | AcquireLastForegroundCaptureBufferEx |
18 | AcquireCallerAppletCaptureBufferEx |
20 | ClearCaptureBuffer |
21 | ClearAppletTransitionBuffer |
ILibraryAppletCreator
Cmd | Name | Notes |
---|---|---|
0 | CreateLibraryApplet | Returns a #ILibraryAppletAccessor. |
1 | TerminateAllLibraryApplets | |
2 | AreAnyLibraryAppletsLeft | |
10 | CreateStorage | Returns an IStorage. |
11 | CreateTransferMemoryStorage | Returns an IStorage. |
12 | CreateHandleStorage | Returns an IStorage. |
IProcessWindingController
Cmd | Name | Notes |
---|---|---|
0 | GetLaunchReason | |
11 | OpenCallingLibraryApplet | Returns an #ILibraryAppletAccessor. |
21 | PushContext | Returns an IStorage. |
22 | PopContext | Returns an IStorage. |
23 | CancelWindingReservation | |
30 | WindAndDoReserved | |
40 | ReserveToStartAndWaitAndUnwindThis | Returns an #ILibraryAppletAccessor. |
IDebugFunctions
Cmd | Name | Notes |
---|---|---|
0 | NotifyMessageToHomeMenuForDebug | |
1 | OpenMainApplication | Returns an #IApplicationAccessor. |
10 | EmulateButtonEvent | |
20 | InvalidateTransitionLayer |
appletOE
This is "nn::am::service::IApplicationProxyService".
Cmd | Name | Notes |
---|---|---|
0 | #OpenApplicationProxy |
This seems to be used by all(?) regular-applications, even flog.
OpenApplicationProxy
Returns an #IApplicationProxy. See #appletAE.
Takes a reserved input u64(official user-processes use hard-code value 0), a PID, and a process copy-handle(cur-proc handle alias).
On failure, official user-processes will retry using this command in a loop while the retval is 0x19280, with svcSleepThread(10000000) being called first.
idle:sys
omm
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:pd*.
Cmd | Name |
---|---|
0 | GetOperationMode |
1 | GetOmmWaitEvent |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 |
spsm
Enums
AppletId
ID | Title-id | Description |
---|---|---|
0x02 | 010000000000100C | "overlayDisp" |
0x03 | 0100000000001000 | "qlaunch" |
0x04 | 0100000000001012 | "starter" |
0x0A | 0100000000001001 | "auth" |
0x0B | 0100000000001002 | "cabinet" |
0x0C | 0100000000001003 | "controller" |
0x0D | 0100000000001004 | "dataErase" |
0x0E | 0100000000001005 | "error" |
0x0F | 0100000000001006 | "netConnect" |
0x10 | 0100000000001007 | "playerSelect" |
0x11 | 0100000000001008 | "swkbd" |
0x12 | 0100000000001009 | "miiEdit" |
0x13 | 010000000000100A | "LibAppletWeb" WebApplet applet |
0x14 | 010000000000100B | "LibAppletShop" ShopN applet |
0x15 | 010000000000100D | "photoViewer" |
0x16 | 010000000000100E | |
0x17 | 010000000000100F | "LibAppletOff" Offline applet |
0x18 | 0100000000001010 | "LibAppletLns" Whitelisted applet |
0x19 | 0100000000001011 | "LibAppletAuth" WifiWebAuth applet |
0x1A | 0100000000001013 | "myPage" |
ShimKind
This is from strings and code in the web-applets.
This indicates the type of web-applet.
shimKind value | Description |
---|---|
2 | LoginApplet |
4 | ShareApplet |
5 | WebApplet |
6 | WifiWebAuthApplet |
7 | LobbyApplet |
AppletResourceUserId
This u64 is officially called "nn::applet::AppletResourceUserId". Used by a number of non-AM services.