Changes

Jump to navigation Jump to search
35,840 bytes added ,  19:45, 2 October 2021
Line 23: Line 23:  
|-
 
|-
 
| 8 || [4.0.0+] GetAddOnContentListChangedEvent
 
| 8 || [4.0.0+] GetAddOnContentListChangedEvent
 +
|-
 +
| 9 || [10.0.0+] GetAddOnContentLostErrorCode
 +
|-
 +
| 10 || [11.0.0+] GetAddOnContentListChangedEventWithProcessId
 +
|-
 +
| 11 || [13.0.0+] NotifyMountAddOnContent
 +
|-
 +
| 12 || [13.0.0+] NotifyUnmountAddOnContent
 +
|-
 +
| 13 || [13.0.0+] IsAddOnContentMountedForDebug
 +
|-
 +
| 50 || [13.0.0+] CheckAddOnContentMountStatus
 
|-
 
|-
 
| 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]]
 
| 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]]
 
|-
 
|-
 
| 101 || [9.0.0+] [[#IPurchaseEventManager|CreatePermanentEcPurchasedEventManager]]
 
| 101 || [9.0.0+] [[#IPurchaseEventManager|CreatePermanentEcPurchasedEventManager]]
 +
|-
 +
| 110 || [12.0.0+] [[#IContentsServiceManager|CreateContentsServiceManager]]
 
|}
 
|}
   Line 45: Line 59:  
|-
 
|-
 
| 4 || [9.0.0+] PopPurchasedProductInfoWithUid
 
| 4 || [9.0.0+] PopPurchasedProductInfoWithUid
 +
|}
 +
 +
== IContentsServiceManager ==
 +
This is "nn::ec::IContentsServiceManager".
 +
 +
This was added with [12.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#RequestContentsAuthorizationToken]]
 +
|}
 +
 +
=== RequestContentsAuthorizationToken ===
 +
Takes a total of 0x50-bytes of input, a PID, a type-0x5 input buffer. Returns an [[#IAsyncData|IAsyncData]] and an output handle.
 +
 +
== IAsyncData ==
 +
This is "nn::ec::detail::IAsyncData".
 +
 +
This was added with [12.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSize
 +
|-
 +
| 1 || Get
 +
|-
 +
| 2 || Cancel
 
|}
 
|}
   Line 82: Line 127:  
| 17 || ListApplicationRecordContentMeta
 
| 17 || ListApplicationRecordContentMeta
 
|-
 
|-
| 18 ||  
+
| 18 || CheckLaunchRights
 
|-
 
|-
 
| 19 || [[#LaunchApplication]]
 
| 19 || [[#LaunchApplication]]
Line 104: Line 149:  
| 33 || ResumeApplicationDownload
 
| 33 || ResumeApplicationDownload
 
|-
 
|-
| 34 ||  
+
| 34 || ClearTaskStatusList
 
|-
 
|-
 
| 35 || UpdateVersionList
 
| 35 || UpdateVersionList
Line 212: Line 257:  
| 504 || [2.0.0+] RequestRegisterGameCard
 
| 504 || [2.0.0+] RequestRegisterGameCard
 
|-
 
|-
| 600 || [2.0.0+] CountApplicationContentMeta
+
| 600 || [2.0.0+] [[#CountApplicationContentMeta]]
 
|-
 
|-
 
| 601 || [2.0.0+] [[#ListApplicationContentMetaStatus]]
 
| 601 || [2.0.0+] [[#ListApplicationContentMetaStatus]]
Line 226: Line 271:  
| 700 || [2.0.0+] PushDownloadTaskList
 
| 700 || [2.0.0+] PushDownloadTaskList
 
|-
 
|-
| 701 || [2.0.0+] ClearTaskStatusList
+
| 701 || [2.0.0+] [[#ClearTaskStatusList]]
 
|-
 
|-
| 702 || [2.0.0+] RequestDownloadTaskList
+
| 702 || [2.0.0+] [[#RequestDownloadTaskList]]
 
|-
 
|-
| 703 || [2.0.0+] RequestEnsureDownloadTask
+
| 703 || [2.0.0+] [[#RequestEnsureDownloadTask]]
 
|-
 
|-
| 704 || [2.0.0+] ListDownloadTaskStatus
+
| 704 || [2.0.0+] [[#ListDownloadTaskStatus]]
 
|-
 
|-
 
| 705 || [2.0.0+] RequestDownloadTaskListData
 
| 705 || [2.0.0+] RequestDownloadTaskListData
Line 426: Line 471:  
|}
 
|}
   −
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web =
+
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro =
 
These services are all, at the top level, "nn::ns::detail::IServiceGetterInterface". These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
 
These services are all, at the top level, "nn::ns::detail::IServiceGetterInterface". These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
 +
 +
[11.0.0+] ns:ro was added.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 433: Line 480:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 7988 || [6.0.0+] [[#IDynamicRightsInterface|GetDynamicRightsInterface]].
+
| 7988 || [6.0.0+] [[#IDynamicRightsInterface|GetDynamicRightsInterface]]
 
|-
 
|-
| 7989 || [5.1.0+] [[#IReadOnlyApplicationControlDataInterface|GetReadOnlyApplicationControlDataInterface]].
+
| 7989 || [5.1.0+] [[#IReadOnlyApplicationControlDataInterface|GetReadOnlyApplicationControlDataInterface]]
 
|-
 
|-
| 7991 || [5.0.0+] [[#IReadOnlyApplicationRecordInterface|GetReadOnlyApplicationRecordInterface]].
+
| 7991 || [5.0.0+] [[#IReadOnlyApplicationRecordInterface|GetReadOnlyApplicationRecordInterface]]
 
|-
 
|-
 
| 7992 || [4.0.0+] [[#IECommerceInterface|GetECommerceInterface]]
 
| 7992 || [4.0.0+] [[#IECommerceInterface|GetECommerceInterface]]
Line 491: Line 538:  
| 8 || [[#IsApplicationEntityMovable]]
 
| 8 || [[#IsApplicationEntityMovable]]
 
|-
 
|-
| 9 || [[#MoveApplicationEntity]]
+
| 9 || [1.0.0-9.2.0] [[#MoveApplicationEntity]]
 
|-
 
|-
 
| 11 || [[#CalculateApplicationOccupiedSize]]
 
| 11 || [[#CalculateApplicationOccupiedSize]]
Line 513: Line 560:  
| 30 || [[#RequestApplicationUpdateInfo]]
 
| 30 || [[#RequestApplicationUpdateInfo]]
 
|-
 
|-
| 31 || [1.0.0-3.0.2]  
+
| 31 || [1.0.0-3.0.2] RequestUpdateApplication
 
|-
 
|-
 
| 32 || [[#CancelApplicationDownload]]
 
| 32 || [[#CancelApplicationDownload]]
Line 613: Line 660:  
| 93 || [5.0.0+] GetMainApplicationProgramIndex
 
| 93 || [5.0.0+] GetMainApplicationProgramIndex
 
|-
 
|-
| 94 || [6.0.0+] LaunchApplication
+
| 94 || [6.0.0+] [[#LaunchApplication_2|LaunchApplication]]
 
|-
 
|-
| 95 || [6.0.0+] GetApplicationLaunchInfo
+
| 95 || [6.0.0+] [[#GetApplicationLaunchInfo]]
 
|-
 
|-
| 96 || [6.0.0+] AcquireApplicationLaunchInfo
+
| 96 || [6.0.0+] [[#AcquireApplicationLaunchInfo]]
 
|-
 
|-
 
| 97 || [6.0.0+] GetMainApplicationProgramIndexByApplicationLaunchInfo
 
| 97 || [6.0.0+] GetMainApplicationProgramIndexByApplicationLaunchInfo
Line 634: Line 681:  
|-
 
|-
 
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]]
 
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]]
 +
|-
 +
| 105 || [10.0.0+] [[#RequestResetToFactorySettingsSecurely]]
 +
|-
 +
| 106 || [10.0.0+] [[#RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely]]
 
|-
 
|-
 
| 200 || CalculateUserSaveDataStatistics
 
| 200 || CalculateUserSaveDataStatistics
Line 651: Line 702:  
| 301 || PopApplicationShellEventInfo
 
| 301 || PopApplicationShellEventInfo
 
|-
 
|-
| 302 || LaunchLibraryApplet
+
| 302 || [[#LaunchLibraryApplet]]
 
|-
 
|-
 
| 303 || TerminateLibraryApplet
 
| 303 || TerminateLibraryApplet
 
|-
 
|-
| 304 || LaunchSystemApplet
+
| 304 || [[#LaunchSystemApplet]]
 
|-
 
|-
 
| 305 || TerminateSystemApplet
 
| 305 || TerminateSystemApplet
 
|-
 
|-
| 306 || LaunchOverlayApplet
+
| 306 || [[#LaunchOverlayApplet]]
 
|-
 
|-
 
| 307 || TerminateOverlayApplet
 
| 307 || TerminateOverlayApplet
Line 699: Line 750:  
| 510 || [9.0.0+] [[#GetGameCardPlatformRegion]]
 
| 510 || [9.0.0+] [[#GetGameCardPlatformRegion]]
 
|-
 
|-
| 600 || CountApplicationContentMeta
+
| 600 || [[#CountApplicationContentMeta]]
 
|-
 
|-
 
| 601 || [[#ListApplicationContentMetaStatus]]
 
| 601 || [[#ListApplicationContentMetaStatus]]
Line 713: Line 764:  
| 606 || [3.0.0+] GetContentMetaStorage
 
| 606 || [3.0.0+] GetContentMetaStorage
 
|-
 
|-
| 607 || [6.0.0+] ListAvailableAddOnContent
+
| 607 || [6.0.0+] [[#ListAvailableAddOnContent]]
 +
|-
 +
| 609 || [13.0.0+] ListAvailabilityAssuredAddOnContent
 
|-
 
|-
 
| 700 || PushDownloadTaskList
 
| 700 || PushDownloadTaskList
 
|-
 
|-
| 701 || ClearTaskStatusList
+
| 701 || [[#ClearTaskStatusList]]
 
|-
 
|-
| 702 || RequestDownloadTaskList
+
| 702 || [[#RequestDownloadTaskList]]
 
|-
 
|-
| 703 || RequestEnsureDownloadTask
+
| 703 || [[#RequestEnsureDownloadTask]]
 
|-
 
|-
| 704 || ListDownloadTaskStatus
+
| 704 || [[#ListDownloadTaskStatus]]
 
|-
 
|-
 
| 705 || [[#RequestDownloadTaskListData]]
 
| 705 || [[#RequestDownloadTaskListData]]
Line 764: Line 817:  
|-
 
|-
 
| 915 || [9.0.0+] ShowApplicationRecord
 
| 915 || [9.0.0+] ShowApplicationRecord
 +
|-
 +
| 916 || [11.0.0+] IsApplicationAutoDeleteDisabled
 
|-
 
|-
 
| 1000 || [[#RequestVerifyApplicationDeprecated]]
 
| 1000 || [[#RequestVerifyApplicationDeprecated]]
Line 769: Line 824:  
| 1001 || CorruptApplicationForDebug
 
| 1001 || CorruptApplicationForDebug
 
|-
 
|-
| 1002 || [3.0.0+] [[#RequestVerifyAddOnContentsRights]]
+
| 1002 || [3.0.0-9.2.0] [[#RequestVerifyAddOnContentsRights]]
 
|-
 
|-
 
| 1003 || [5.0.0+] [[#RequestVerifyApplication]]
 
| 1003 || [5.0.0+] [[#RequestVerifyApplication]]
Line 783: Line 838:  
| 1302 || CleanupUnrecordedApplicationEntity
 
| 1302 || CleanupUnrecordedApplicationEntity
 
|-
 
|-
| 1303 || [3.0.0+] CleanupAddOnContentsWithNoRights
+
| 1303 || [3.0.0-9.2.0] CleanupAddOnContentsWithNoRights
 
|-
 
|-
 
| 1304 || [3.0.0+] DeleteApplicationContentEntity
 
| 1304 || [3.0.0+] DeleteApplicationContentEntity
Line 790: Line 845:  
|-
 
|-
 
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 +
|-
 +
| 1310 || [10.0.0+] RequestMoveApplicationEntity
 +
|-
 +
| 1311 || [10.0.0+] EstimateSizeToMove
 +
|-
 +
| 1312 || [10.0.0+] HasMovableEntity
 +
|-
 +
| 1313 || [11.0.0+] CleanupOrphanContents
 +
|-
 +
| 1314 || [11.0.0+] CheckPreconditionSatisfiedToMove
 
|-
 
|-
 
| 1400 || PrepareShutdown
 
| 1400 || PrepareShutdown
Line 818: Line 883:  
|-
 
|-
 
| 1704 || [8.0.0+] [[#GetApplicationViewWithPromotionInfo]]
 
| 1704 || [8.0.0+] [[#GetApplicationViewWithPromotionInfo]]
 +
|-
 +
| 1705 || [11.0.0+] [[#IsPatchAutoDeletableApplication]]
 
|-
 
|-
 
| 1800 || IsNotificationSetupCompleted
 
| 1800 || IsNotificationSetupCompleted
Line 827: Line 894:  
| 1803 || [3.0.0+] ListNotificationTask
 
| 1803 || [3.0.0+] ListNotificationTask
 
|-
 
|-
| 1900 || [3.0.0+] IsActiveAccount
+
| 1900 || [3.0.0-12.1.0] IsActiveAccount
 
|-
 
|-
 
| 1901 || [4.0.0+] [[#RequestDownloadApplicationPrepurchasedRights]]
 
| 1901 || [4.0.0+] [[#RequestDownloadApplicationPrepurchasedRights]]
Line 891: Line 958:  
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus
 
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus
 
|-
 
|-
| 2156 || [9.0.0+] CreateRightsEnvironmentForPreomia
+
| 2156 || [10.0.0-12.1.0] CreateRightsEnvironmentForMicroApplication ([9.0.0-9.2.0] CreateRightsEnvironmentForPreomia)
 
|-
 
|-
 
| 2160 || [6.0.0+] AddTargetApplicationToRightsEnvironment
 
| 2160 || [6.0.0+] AddTargetApplicationToRightsEnvironment
Line 911: Line 978:  
| 2199 || [6.0.0+] GetRightsEnvironmentCountForDebug
 
| 2199 || [6.0.0+] GetRightsEnvironmentCountForDebug
 
|-
 
|-
| 2200 || [6.0.0+] GetGameCardApplicationCopyIdentifier
+
| 2200 || [6.0.0-9.2.0] GetGameCardApplicationCopyIdentifier
 
|-
 
|-
| 2201 || [6.0.0+] GetInstalledApplicationCopyIdentifier
+
| 2201 || [6.0.0-9.2.0] GetInstalledApplicationCopyIdentifier
 
|-
 
|-
 
| 2250 || [6.0.0-6.2.0] RequestReportActiveELicence
 
| 2250 || [6.0.0-6.2.0] RequestReportActiveELicence
Line 924: Line 991:  
|-
 
|-
 
| 2352 || [9.0.0+] [[#RequestResolveNoDownloadRightsError]]
 
| 2352 || [9.0.0+] [[#RequestResolveNoDownloadRightsError]]
 +
|-
 +
| 2353 || [10.0.0+] GetApplicationDownloadTaskInfo
 +
|-
 +
| 2354 || [11.0.0+] PrioritizeApplicationBackgroundTask
 +
|-
 +
| 2355 || [12.0.0+] PreferStorageEfficientUpdate
 +
|-
 +
| 2356 || [12.0.0+] RequestStorageEfficientUpdatePreferable
 
|-
 
|-
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
Line 941: Line 1,016:  
| 2511 || [9.0.0+] [[#GetApplicationResource]]
 
| 2511 || [9.0.0+] [[#GetApplicationResource]]
 
|-
 
|-
| 2513 || [9.0.0+] LaunchPreomia
+
| 2513 || [10.0.0+] LaunchMicroApplication ([9.0.0-9.2.0] LaunchPreomia)
 
|-
 
|-
 
| 2514 || [9.0.0+] ClearTaskOfAsyncTaskManager
 
| 2514 || [9.0.0+] ClearTaskOfAsyncTaskManager
 +
|-
 +
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 +
|-
 +
| 2516 || [10.0.0+] EnsureApplicationCertificate
 +
|-
 +
| 2517 || [13.0.0+] CreateApplicationInstance
 +
|-
 +
| 2518 || [13.0.0+] UpdateQualificationForDebug
 +
|-
 +
| 2519 || [13.0.0+] IsQualificationTransitionSupported
 +
|-
 +
| 2520 || [13.0.0+] IsQualificationTransitionSupportedByProcessId
 +
|-
 +
| 2521 || [13.0.0+] GetRightsUserChangedEvent
 
|-
 
|-
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
|}
+
|-
 
+
| 3000 || [11.0.0+] [[#RegisterDeviceLockKey]]
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input.
+
|-
 
+
| 3001 || [11.0.0+] [[#UnregisterDeviceLockKey]]
==== GetApplicationRecordUpdateSystemEvent ====
+
|-
No input, returns an output Event handle with EventClearMode=1.
+
| 3002 || [11.0.0+] [[#VerifyDeviceLockKey]]
 
+
|-
 +
| 3003 || [11.0.0+] [[#HideApplicationIcon]]
 +
|-
 +
| 3004 || [11.0.0+] [[#ShowApplicationIcon]]
 +
|-
 +
| 3005 || [11.0.0+] [[#HideApplicationTitle]]
 +
|-
 +
| 3006 || [11.0.0+] [[#ShowApplicationTitle]]
 +
|-
 +
| 3007 || [11.0.0+] [[#EnableGameCard]]
 +
|-
 +
| 3008 || [11.0.0+] [[#DisableGameCard]]
 +
|-
 +
| 3009 || [11.0.0+] [[#EnableLocalContentShare]]
 +
|-
 +
| 3010 || [11.0.0+] [[#DisableLocalContentShare]]
 +
|-
 +
| 3011 || [11.0.0+] [[#IsApplicationIconHidden]]
 +
|-
 +
| 3012 || [11.0.0+] [[#IsApplicationTitleHidden]]
 +
|-
 +
| 3013 || [11.0.0+] [[#IsGameCardEnabled]]
 +
|-
 +
| 3014 || [11.0.0+] [[#IsLocalContentShareEnabled]]
 +
|-
 +
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate
 +
|}
 +
 
 +
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input.
 +
 
 +
==== GetApplicationRecordUpdateSystemEvent ====
 +
No input, returns an output Event handle with EventClearMode=1.
 +
 
 
==== GetApplicationViewDeprecated ====
 
==== GetApplicationViewDeprecated ====
 
Takes a type-0x6 output buffer containing an array of [[#ApplicationViewDeprecated]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
 
Takes a type-0x6 output buffer containing an array of [[#ApplicationViewDeprecated]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
Line 1,040: Line 1,161:     
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 +
 +
==== LaunchApplication ====
 +
Takes an input u8 ProgramIndex, an input [[#ApplicationLaunchInfo]], returns an output u64.
 +
 +
==== GetApplicationLaunchInfo ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
 +
 +
==== AcquireApplicationLaunchInfo ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
 +
 +
This verifies that a state flag is set and that a state field matches the input ApplicationId, throwing an error otherwise. The [[#ApplicationLaunchInfo]] from state is copied to output, then the state flag is cleared.
    
==== LaunchDevMenu ====
 
==== LaunchDevMenu ====
Line 1,050: Line 1,182:  
[[NCM_services#ncm|OpenContentMetaDatabase]] is used with StorageId = NandSystem, then IContentMetaDatabase GetLatestContentMetaKey is used with both of the above ProgramIds to verify that the cmd is successful.
 
[[NCM_services#ncm|OpenContentMetaDatabase]] is used with StorageId = NandSystem, then IContentMetaDatabase GetLatestContentMetaKey is used with both of the above ProgramIds to verify that the cmd is successful.
   −
Then if the above succeeds, the above titles are launched with the above StorageId via [[Process_Manager_services|pmshell]] LaunchProgram, with a 0.5s sleep-thread afterwards on success.
+
Then if the above succeeds, the above titles are launched with the above StorageId via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0), with a 0.5s sleep-thread afterwards on success. [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0xB is used here.
    
==== DeleteUserSaveDataAll ====
 
==== DeleteUserSaveDataAll ====
Line 1,068: Line 1,200:  
==== UnregisterNetworkServiceAccountWithUserSaveDataDeletion ====
 
==== UnregisterNetworkServiceAccountWithUserSaveDataDeletion ====
 
Takes an input [[Account_services#Uid|Uid]], no output.
 
Takes an input [[Account_services#Uid|Uid]], no output.
 +
 +
==== LaunchLibraryApplet ====
 +
Takes an input u64 [[NCM_services#ProgramId|ProgramId]], returns an output u64.
 +
 +
The specified program is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
 +
 +
This is used by [[Applet_Manager_services|AM]].
 +
 +
==== LaunchSystemApplet ====
 +
No input, returns an output u64.
 +
 +
A state flag must be zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>.
 +
 +
The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
 +
 +
This is used by [[Applet_Manager_services|AM]].
 +
 +
==== LaunchOverlayApplet ====
 +
No input, returns an output u64.
 +
 +
A state flag must be zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>.
 +
 +
The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
 +
 +
This is used by [[Applet_Manager_services|AM]].
    
==== RequestDownloadApplicationControlData ====
 
==== RequestDownloadApplicationControlData ====
Line 1,134: Line 1,291:     
This calls [[Filesystem_services#IDeviceOperator|fsp-srv IDeviceOperator]] GetGameCardCompatibilityType and returns the result.
 
This calls [[Filesystem_services#IDeviceOperator|fsp-srv IDeviceOperator]] GetGameCardCompatibilityType and returns the result.
 +
 +
==== ListAvailableAddOnContent ====
 +
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
    
==== RequestDownloadTaskListData ====
 
==== RequestDownloadTaskListData ====
Line 1,187: Line 1,347:  
==== GetApplicationViewWithPromotionInfo ====
 
==== GetApplicationViewWithPromotionInfo ====
 
Takes a type-0x6 output buffer containing an array of [[#ApplicationViewWithPromotionInfo]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
 
Takes a type-0x6 output buffer containing an array of [[#ApplicationViewWithPromotionInfo]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
 +
 +
==== IsPatchAutoDeletableApplication ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output bool.
 +
 +
Compares the input ApplicationId with the value of [[System_Settings|system-setting]] <code>ns.application!auto_deletable_application_id_on_not_enough_space</code>, with the bool being set to the comparsion result.
    
==== RequestDownloadApplicationPrepurchasedRights ====
 
==== RequestDownloadApplicationPrepurchasedRights ====
Line 1,265: Line 1,430:  
** Uses [[NIM_services|nim]] cmd56, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result.
 
** Uses [[NIM_services|nim]] cmd56, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result.
 
** Handles cleanup and returns.
 
** Handles cleanup and returns.
* On success, this loads various data which is then used for saving a SystemPlayReport when a state flag is set.
+
* On success, this loads various data which is then used for saving a SystemPlayReport when the cached [[System_Settings|system-setting]] "systemreport!enabled" is set.
 
** The EventId is "receive_app_contents" with ApplicationId <NS ProgramId>.
 
** The EventId is "receive_app_contents" with ApplicationId <NS ProgramId>.
   Line 1,294: Line 1,459:  
** Uses [[NIM_services|nim]] cmd61, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result.
 
** Uses [[NIM_services|nim]] cmd61, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result.
 
** Handles cleanup and returns.
 
** Handles cleanup and returns.
* On success, this loads various data which is then used for saving a SystemPlayReport when a state flag is set.
+
* On success, this loads various data which is then used for saving a SystemPlayReport when the cached [[System_Settings|system-setting]] "systemreport!enabled" is set.
 
** The EventId is "send_app_contents" with ApplicationId <NS ProgramId>.
 
** The EventId is "send_app_contents" with ApplicationId <NS ProgramId>.
   Line 1,369: Line 1,534:  
==== GetApplicationResource ====
 
==== GetApplicationResource ====
 
Returns an [[#IApplicationResource]].
 
Returns an [[#IApplicationResource]].
 +
 +
==== RegisterDeviceLockKey ====
 +
Takes a type-0x5 input buffer containing an InArray of u8, no output.
 +
 +
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses [[HID_services#NpadButtonSet|NpadButton]].
 +
 +
This does SHA256 hashing, etc.
 +
 +
==== UnregisterDeviceLockKey ====
 +
No input/output.
 +
 +
Runs code identical to [[#RegisterDeviceLockKey]], except the passed buffer/size are 0.
 +
 +
==== VerifyDeviceLockKey ====
 +
Takes a type-0x5 input buffer containing an InArray of u8, no output.
 +
 +
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses [[HID_services#NpadButtonSet|NpadButton]].
 +
 +
This runs hashing similar to [[#RegisterDeviceLockKey]], with the calculated hash being verified with the one from state.
 +
 +
==== HideApplicationIcon ====
 +
No input/output.
 +
 +
==== ShowApplicationIcon ====
 +
No input/output.
 +
 +
==== HideApplicationTitle ====
 +
No input/output.
 +
 +
==== ShowApplicationTitle ====
 +
No input/output.
 +
 +
==== EnableGameCard ====
 +
No input/output.
 +
 +
==== DisableGameCard ====
 +
No input/output.
 +
 +
==== EnableLocalContentShare ====
 +
No input/output.
 +
 +
==== DisableLocalContentShare ====
 +
No input/output.
 +
 +
==== IsApplicationIconHidden ====
 +
No input, returns an output bool.
 +
 +
==== IsApplicationTitleHidden ====
 +
No input, returns an output bool.
 +
 +
==== IsGameCardEnabled ====
 +
No input, returns an output bool.
 +
 +
==== IsLocalContentShareEnabled ====
 +
No input, returns an output bool.
 +
 +
Various Deliver cmds now load the same flag used by this cmd (IsLocalContentShareEnabled), with an error being returned when it's not enabled.
    
=== IGameCardStopper ===
 
=== IGameCardStopper ===
Line 1,448: Line 1,670:  
|-
 
|-
 
| 802 || [[#RequestVersionListData]]
 
| 802 || [[#RequestVersionListData]]
 +
|-
 +
| 900 || [12.0.0+] ImportAutoUpdatePolicyJsonForDebug
 +
|-
 +
| 901 || [12.0.0+] ListDefaultAutoUpdatePolicy
 +
|-
 +
| 902 || [12.0.0+] ListAutoUpdatePolicyForSpecificApplication
 
|-
 
|-
 
| 1000 || PerformAutoUpdate
 
| 1000 || PerformAutoUpdate
 +
|-
 +
| 1001 || [11.0.0+] ListAutoUpdateSchedule
 
|}
 
|}
   Line 1,472: Line 1,702:  
| 48 || [[#GetFreeSpaceSize]]
 
| 48 || [[#GetFreeSpaceSize]]
 
|-
 
|-
| 600 || CountApplicationContentMeta
+
| 600 || [[#CountApplicationContentMeta]]
 
|-
 
|-
 
| 601 || [[#ListApplicationContentMetaStatus]]
 
| 601 || [[#ListApplicationContentMetaStatus]]
Line 1,478: Line 1,708:  
| 605 || [[#ListApplicationContentMetaStatusWithRightsCheck]]
 
| 605 || [[#ListApplicationContentMetaStatusWithRightsCheck]]
 
|-
 
|-
| 607 || IsAnyApplicationRunning
+
| 607 || [[#IsAnyApplicationRunning]]
 
|}
 
|}
   Line 1,486: Line 1,716:  
==== CheckSdCardMountStatus ====
 
==== CheckSdCardMountStatus ====
 
No input/output.
 
No input/output.
 +
 +
==== CountApplicationContentMeta ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output s32.
    
==== ListApplicationContentMetaStatusWithRightsCheck ====
 
==== ListApplicationContentMetaStatusWithRightsCheck ====
 
Same input/output as [[#ListApplicationContentMetaStatus]].
 
Same input/output as [[#ListApplicationContentMetaStatus]].
 +
 +
==== IsAnyApplicationRunning ====
 +
No input, returns an output u8 bool.
    
=== IDocumentInterface ===
 
=== IDocumentInterface ===
Line 1,511: Line 1,747:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 701 || ClearTaskStatusList
+
| 701 || [[#ClearTaskStatusList]]
 
|-
 
|-
| 702 || RequestDownloadTaskList
+
| 702 || [[#RequestDownloadTaskList]]
 
|-
 
|-
| 703 || RequestEnsureDownloadTask
+
| 703 || [[#RequestEnsureDownloadTask]]
 
|-
 
|-
| 704 || ListDownloadTaskStatus
+
| 704 || [[#ListDownloadTaskStatus]]
 
|-
 
|-
 
| 705 || [[#RequestDownloadTaskListData]]
 
| 705 || [[#RequestDownloadTaskListData]]
 
|-
 
|-
| 706 || [4.0.0+] TryCommitCurrentApplicationDownloadTask
+
| 706 || [4.0.0+] [[#TryCommitCurrentApplicationDownloadTask]]
 
|-
 
|-
| 707 || [4.0.0+] EnableAutoCommit
+
| 707 || [4.0.0+] [[#EnableAutoCommit]]
 
|-
 
|-
| 708 || [4.0.0+] DisableAutoCommit
+
| 708 || [4.0.0+] [[#DisableAutoCommit]]
 
|-
 
|-
| 709 || [4.0.0+] TriggerDynamicCommitEvent
+
| 709 || [4.0.0+] [[#TriggerDynamicCommitEvent]]
 
|}
 
|}
 +
 +
==== ClearTaskStatusList ====
 +
No input/output.
 +
 +
==== RequestDownloadTaskList ====
 +
No input/output.
 +
 +
==== RequestEnsureDownloadTask ====
 +
No input, returns an output Event handle and an [[#IAsyncResult]].
 +
 +
==== ListDownloadTaskStatus ====
 +
Takes a type-0x6 output buffer containing an array of [[#DownloadTaskStatus]], returns an output s32 total_out.
 +
 +
A maximum of 0x100 tasks can be stored in state.
 +
 +
==== TryCommitCurrentApplicationDownloadTask ====
 +
No input/output.
 +
 +
==== EnableAutoCommit ====
 +
No input/output.
 +
 +
==== DisableAutoCommit ====
 +
No input/output.
 +
 +
==== TriggerDynamicCommitEvent ====
 +
No input/output.
    
=== IReadOnlyApplicationRecordInterface ===
 
=== IReadOnlyApplicationRecordInterface ===
Line 1,540: Line 1,802:  
|-
 
|-
 
| 0 || HasApplicationRecord || Same as [[#IApplicationManagerInterface]] cmd 910
 
| 0 || HasApplicationRecord || Same as [[#IApplicationManagerInterface]] cmd 910
 +
|-
 +
| 1 || [10.0.0+] NotifyApplicationFailure ||
 +
|-
 +
| 2 || [10.0.0+] IsDataCorruptedResult ||
 
|}
 
|}
   Line 1,569: Line 1,835:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 0 || [[#RequestApplicationRightsOnServer]]
 +
|-
 +
| 1 || [[#RequestAssignRights]]
 +
|-
 +
| 4 || [[#DeprecatedRequestAssignRightsToResume]]
 +
|-
 +
| 5 || [[#VerifyActivatedRightsOwners]]
 +
|-
 +
| 6 || [[#DeprecatedGetApplicationRightsStatus]]
 +
|-
 +
| 7 || [[#RequestPrefetchForDynamicRights]]
 +
|-
 +
| 8 || [[#GetDynamicRightsState]]
 
|-
 
|-
| 0 || [[#RequestApplicationRightsOnServer]] ||
+
| 9 || [7.0.0+] [[#RequestApplicationRightsOnServerToResume]]
 
|-
 
|-
| 1 || RequestAssignRights ||  
+
| 10 || [7.0.0+] [[#RequestAssignRightsToResume]]
 
|-
 
|-
| 4 || DeprecatedRequestAssignRightsToResume ||  
+
| 11 || [7.0.0+] [[#GetActivatedRightsUsers]]
 
|-
 
|-
| 5 || VerifyActivatedRightsOwners ||  
+
| 12 || [8.0.0+] [[#GetApplicationRightsStatus]]
 
|-
 
|-
| 6 || DeprecatedGetApplicationRightsStatus ||  
+
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
 
|-
 
|-
| 7 || RequestPrefetchForDynamicRights ||  
+
| 14 || [10.0.0+] SelectApplicationLicense
 
|-
 
|-
| 8 || GetDynamicRightsState ||  
+
| 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]]
 
|-
 
|-
| 9 || [7.0.0+] [[#RequestApplicationRightsOnServerToResume]] ||
+
| 16 || [13.0.0+] QualifyUser
 
|-
 
|-
| 10 || [7.0.0+] RequestAssignRightsToResume ||
+
| 17 || [13.0.0+] QualifyUserWithProcessId
 
|-
 
|-
| 11 || [7.0.0+] GetActivatedRightsUsers ||
+
| 18 || [13.0.0+] NotifyApplicationRightsCheckStart
 
|-
 
|-
| 12 || [8.0.0+] GetApplicationRightsStatus ||
+
| 19 || [13.0.0+] UpdateUserList
 
|-
 
|-
| 13 || [8.0.0+] GetRunningApplicationStatus ||
+
| 20 || [13.0.0+] IsRightsLostUser
 
|}
 
|}
    
==== RequestApplicationRightsOnServer ====
 
==== RequestApplicationRightsOnServer ====
Takes a total of 0x20-bytes of input, returns an output Event handle and an [[#IAsyncValue]].
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]] and an u32. Returns an output Event handle and an [[#IAsyncValue]].
   −
==== RequestApplicationRightsOnServerToResume ====
+
==== RequestAssignRights ====
Takes a total of 8-bytes of input, returns an output Event handle and an [[#IAsyncValue]].
+
Takes a type-0x5 input buffer containing an array of "nn::ns::ApplicationRightsOnServer". Returns an output Event handle and an [[#IAsyncResult]].
   −
=== IECommerceInterface===
+
==== DeprecatedRequestAssignRightsToResume ====
This is "nn::ns::detail::IECommerceInterface".
+
Takes an input u64 "nn::ns::RightsEnvironmentHandle" and an [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]].
   −
This was added with [4.0.0+].
+
==== VerifyActivatedRightsOwners ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". No output.
 +
 
 +
==== DeprecatedGetApplicationRightsStatus ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns a bool "nn::ns::ApplicationRightsStatus".
 +
 
 +
==== RequestPrefetchForDynamicRights ====
 +
Takes an input [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
==== GetDynamicRightsState ====
 +
No input. Returns a bool "nn::ns::DynamicRightsState".
 +
 
 +
==== RequestApplicationRightsOnServerToResume ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncValue]].
 +
 
 +
==== RequestAssignRightsToResume ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
==== GetActivatedRightsUsers ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns a bool, an u32 and a type-0x6 output buffer containing an array of [[Account_services#Uid|Uid]].
 +
 
 +
==== GetApplicationRightsStatus ====
 +
Takes an input "nn::ns::RightsEnvironmentHandle". Returns 2 bools "nn::ns::ApplicationRightsStatus" and "nn::ns::ApplicationLicenseType".
 +
 
 +
==== GetRunningApplicationStatus ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an u32 "nn::ns::RunningApplicationStatus".
 +
 
 +
==== RequestContentsAuthorizationToken ====
 +
Takes a total of 0x50-bytes of input, a type-0x5 input buffer. Returns an [[#IAsyncData_2|IAsyncData]] and an output handle.
 +
 
 +
==== IAsyncData ====
 +
This is "nn::ns::detail::IAsyncData".
 +
 
 +
This was added with [12.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || RequestLinkDevice || Takes a total of 0x10-bytes of input, returns an [[#IAsyncResult]].
+
| 0 || GetSize
 
|-
 
|-
| 1 || [6.0.0+] RequestCleanupAllPreInstalledApplications || No input, returns an [[#IAsyncResult]].
+
| 1 || Get
 
|-
 
|-
| 2 || [6.0.0+] RequestCleanupPreInstalledApplication || Takes a total of 0x8-bytes of input, returns an [[#IAsyncResult]].
+
| 2 || Cancel
|-
  −
| 3 || [6.0.0+] RequestSyncRights || No input, returns an [[#IAsyncResult]].
   
|-
 
|-
| 4 || [6.0.0+] RequestUnlinkDevice || Takes a total of 0x10-bytes of input, returns an [[#IAsyncResult]].
+
| 3 || GetErrorContext
|-
  −
| 5 || [6.1.0+] RequestRevokeAllELicense || Takes a total of 0x10-bytes of input, returns an [[#IAsyncResult]].
  −
|-
  −
| 6 || [9.0.0+] RequestSyncRightsBasedOnAssignedELicenses ||
   
|}
 
|}
   −
=== IFactoryResetInterface ===
+
=== IECommerceInterface===
This is "nn::ns::detail::IFactoryResetInterface".
+
This is "nn::ns::detail::IECommerceInterface".
 +
 
 +
This was added with [4.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,633: Line 1,942:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 100 || [[#ResetToFactorySettings]]
+
| 0 || [[#RequestLinkDevice]]
 +
|-
 +
| 1 || [6.0.0+] [[#RequestCleanupAllPreInstalledApplications]]
 +
|-
 +
| 2 || [6.0.0+] [[#RequestCleanupPreInstalledApplication]]
 
|-
 
|-
| 101 || [[#ResetToFactorySettingsWithoutUserSaveData]]
+
| 3 || [6.0.0+] [[#RequestSyncRights]]
 
|-
 
|-
| 102 || [[#ResetToFactorySettingsForRefurbishment]]
+
| 4 || [6.0.0+] [[#RequestUnlinkDevice]]
 
|-
 
|-
| 103 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegion]]
+
| 5 || [6.1.0+] [[#RequestRevokeAllELicense]]
 
|-
 
|-
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]]
+
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 +
|}
 +
 
 +
==== RequestLinkDevice ====
 +
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 +
 
 +
==== RequestCleanupAllPreInstalledApplications ====
 +
No input, returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
==== RequestCleanupPreInstalledApplication ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
==== RequestSyncRights ====
 +
No input, returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
==== RequestUnlinkDevice ====
 +
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
See [[#RequestApplicationUpdateInfo]] regarding nifm.
 +
 
 +
==== RequestRevokeAllELicense ====
 +
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
==== RequestSyncRightsBasedOnAssignedELicenses ====
 +
No input, returns an output Event handle and an [[#IAsyncResult]].
 +
 
 +
=== IFactoryResetInterface ===
 +
This is "nn::ns::detail::IFactoryResetInterface".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 100 || [[#ResetToFactorySettings]]
 +
|-
 +
| 101 || [[#ResetToFactorySettingsWithoutUserSaveData]]
 +
|-
 +
| 102 || [[#ResetToFactorySettingsForRefurbishment]]
 +
|-
 +
| 103 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegion]]
 +
|-
 +
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]]
 +
|-
 +
| 105 || [10.0.0+] [[#RequestResetToFactorySettingsSecurely]]
 +
|-
 +
| 106 || [10.0.0+] [[#RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely]]
 
|}
 
|}
   Line 1,660: Line 2,020:  
==== ResetToFactorySettingsWithPlatformRegionAuthentication ====
 
==== ResetToFactorySettingsWithPlatformRegionAuthentication ====
 
No input/output.
 
No input/output.
 +
 +
==== RequestResetToFactorySettingsSecurely ====
 +
Takes a total of 8-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
 +
 +
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
 +
Takes a total of 0x10-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
 +
 +
===== IAsyncValueAndProgress =====
 +
This is "nn::ns::detail::IAsyncValueAndProgress".
 +
 +
This was added with [10.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSize
 +
|-
 +
| 1 || Get
 +
|-
 +
| 2 || Cancel
 +
|-
 +
| 3 || GetErrorContext
 +
|-
 +
| 4 || GetProgress
 +
|}
    
=== IApplicationResource ===
 
=== IApplicationResource ===
Line 1,910: Line 2,296:     
* Uses ListSystemUpdateTask again, then [[NIM_services|nim]] IsExFatDriverIncluded. Runs ExFat handling when the output flag is set.
 
* Uses ListSystemUpdateTask again, then [[NIM_services|nim]] IsExFatDriverIncluded. Runs ExFat handling when the output flag is set.
* On newer system-versions, this uses [[NIM_services|nim]] GetSystemUpdateTaskInfo then on success uses data from there to save a SystemPlayReport when a state flag is set (by default it's not set).
+
* On newer system-versions, this uses [[NIM_services|nim]] GetSystemUpdateTaskInfo then on success uses data from there to save a SystemPlayReport when the cached [[System_Settings|system-setting]] "systemreport!enabled" is set.
 
** The EventId is "systemupdate_dl_throughput" with ApplicationId 0100000000001018.
 
** The EventId is "systemupdate_dl_throughput" with ApplicationId 0100000000001018.
** The following fields are added to the report, see [[NIM_services#SystemUpdateTaskInfo|nim SystemUpdateTaskInfo]]: "ContentMetaId", "Version", "DownloadSize", and "ThroughputKBps",
+
** The following fields are added to the report, see [[NIM_services#SystemUpdateTaskInfo|nim SystemUpdateTaskInfo]]: "ContentMetaId", "Version", "DownloadSize", and "ThroughputKBps".
 
* On newer system-versions, this saves another SystemPlayReport when a state flag is set (same flag mentioned above).
 
* On newer system-versions, this saves another SystemPlayReport when a state flag is set (same flag mentioned above).
 
** The EventId is "systemupdate_pass" with ApplicationId 0100000000001021.
 
** The EventId is "systemupdate_pass" with ApplicationId 0100000000001021.
Line 1,999: Line 2,385:  
** Uses [[NIM_services|nim]] cmd72, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result.
 
** Uses [[NIM_services|nim]] cmd72, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result.
 
** Handles cleanup and returns.
 
** Handles cleanup and returns.
* On success, this loads various data which is then used for saving a SystemPlayReport when a state flag is set.
+
* On success, this loads various data which is then used for saving a SystemPlayReport when the cached [[System_Settings|system-setting]] "systemreport!enabled" is set.
 
** The EventId is "receive_system_update" with ApplicationId <NS ProgramId>.
 
** The EventId is "receive_system_update" with ApplicationId <NS ProgramId>.
 +
** This report has the following fields:
 +
*** "SourceSystemUpdateId"
 +
*** "DestinationSystemUpdateId"
 +
*** "SourceSystemUpdateVersion"
 +
*** "DestinationSystemUpdateVersion"
 +
*** "SenderFirmwareVariationId"
 +
*** "ReceiverFirmwareVariationId"
 +
*** "SenderPlatformRegion"
 +
*** "ReceiverPlatformRegion"
 +
*** "SenderHasExFat"
 +
*** "ReceiverHasExFat"
 +
*** "Size"
 +
*** "ThroughputKBps"
    
=== GetReceiveProgress ===
 
=== GetReceiveProgress ===
Line 2,075: Line 2,474:  
= ns:dev =
 
= ns:dev =
 
This is "nn::ns::detail::IDevelopInterface".
 
This is "nn::ns::detail::IDevelopInterface".
 +
 +
[10.0.0+] Some of these cmds were replaced by the [[PGL_services|pgl]] system module.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,080: Line 2,481:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#LaunchProgram]]
+
| 0 || [1.0.0-9.2.0] [[#LaunchProgram]]
 
|-
 
|-
 
| 1 || [[#TerminateProcess]]
 
| 1 || [[#TerminateProcess]]
 
|-
 
|-
| 2 || [[#TerminateProgram]]
+
| 2 || [1.0.0-9.2.0] [[#TerminateProgram]]
 
|-
 
|-
| 4 || [[#GetShellEvent]]
+
| 4 || [1.0.0-9.2.0] [[#GetShellEvent]]
 
|-
 
|-
| 5 || [[#GetShellEventInfo]]
+
| 5 || [1.0.0-9.2.0] [[#GetShellEventInfo]]
 
|-
 
|-
 
| 6 || [[#TerminateApplication]]
 
| 6 || [[#TerminateApplication]]
 
|-
 
|-
| 7 || [[#PrepareLaunchProgramFromHost]]
+
| 7 || [1.0.0-9.2.0] [[#PrepareLaunchProgramFromHost]]
 
|-
 
|-
| 8 || [[#LaunchApplicationForDevelop]]
+
| 8 || [10.0.0+] [[#LaunchApplicationFromHost]] ([1.0.0-9.2.0] [[#LaunchApplicationForDevelop]])
 
|-
 
|-
 
| 9 || [[#LaunchApplicationWithStorageIdForDevelop]]
 
| 9 || [[#LaunchApplicationWithStorageIdForDevelop]]
 
|-
 
|-
| 10 || [6.0.0-8.1.0] IsSystemMemoryResourceLimitBoosted
+
| 10 || [6.0.0-8.1.0] [[#IsSystemMemoryResourceLimitBoosted]]
 
|-
 
|-
| 11 || [6.0.0+] GetRunningApplicationProcessIdForDevelop
+
| 11 || [6.0.0+] [[#GetRunningApplicationProcessIdForDevelop]]
 
|-
 
|-
| 12 || [6.0.0+] SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop
+
| 12 || [6.0.0+] [[#SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop]]
 
|-
 
|-
 
| 13 || [9.0.0+] [[#CreateApplicationResourceForDevelop]]
 
| 13 || [9.0.0+] [[#CreateApplicationResourceForDevelop]]
 
|-
 
|-
 
| 14 || [9.0.0+] [[#IsPreomiaForDevelop]]
 
| 14 || [9.0.0+] [[#IsPreomiaForDevelop]]
 +
|-
 +
| 15 || [10.0.0+] [[#GetApplicationProgramIdFromHost]]
 +
|-
 +
| 16 || [12.0.0+] RefreshCachedDebugValues
 +
|-
 +
| 17 || [12.0.0+] PrepareLaunchApplicationFromHost
 +
|-
 +
| 18 || [12.0.0+] GetLaunchEvent
 +
|-
 +
| 19 || [12.0.0+] GetLaunchResult
 
|}
 
|}
   Line 2,125: Line 2,536:     
== TerminateApplication ==
 
== TerminateApplication ==
Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends PID to [[Process_Manager_services#pm:shell|TerminateProcess]].
+
Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends the ProcessId to [[Process_Manager_services#pm:shell|TerminateProcess]].
    
== PrepareLaunchProgramFromHost ==
 
== PrepareLaunchProgramFromHost ==
Line 2,133: Line 2,544:     
== LaunchApplicationForDevelop ==
 
== LaunchApplicationForDevelop ==
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and [[NCM_services#ApplicationId|ApplicationId]], returns an output u64 PID.
+
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and [[NCM_services#ApplicationId|ApplicationId]], returns an output u64 ProcessId.
 +
 
 +
Same as [[#LaunchApplicationWithStorageIdForDevelop]] except the last two params passed to the internal vtable funcptr call are value 0x6, instead of from the command input.
   −
Same as LaunchApplicationWithStorageId except the last two params passed to the internal vtable funcptr call are value 0x6, instead of from the command input.
+
== LaunchApplicationFromHost ==
 +
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an output u64 ProcessId.
    
== LaunchApplicationWithStorageIdForDevelop ==
 
== LaunchApplicationWithStorageIdForDevelop ==
Takes 2 input u8s, an u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an [[NCM_services#ApplicationId|ApplicationId]]. Returns an output u64 PID.
+
Takes 2 input u8 [[NCM_services#StorageId|StorageIds]], an u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an [[NCM_services#ApplicationId|ApplicationId]]. Returns an output u64 ProcessId.
    
Launches an application title which is registered with NS.
 
Launches an application title which is registered with NS.
 +
 +
== IsSystemMemoryResourceLimitBoosted ==
 +
No input. Returns a bool.
 +
 +
== GetRunningApplicationProcessIdForDevelop ==
 +
Returns an output u64 ProcessId.
 +
 +
== SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop ==
 +
Takes an input bool. No output.
    
== CreateApplicationResourceForDevelop ==
 
== CreateApplicationResourceForDevelop ==
Takes an input u32 (1 = Preomia). Returns an [[#IApplicationResource]].
+
Takes an input u32 (1 = Preomia/MicroApplication). Returns an [[#IApplicationResource]].
    
== IsPreomiaForDevelop ==
 
== IsPreomiaForDevelop ==
Takes an u64 [[NCM_services#ProgramId|ProgramId]]. Returns a bool.
+
Takes an input u64 [[NCM_services#ProgramId|ProgramId]]. Returns a bool.
   −
= VersionListData =
+
== GetApplicationProgramIdFromHost ==
This is "nn::ns::VersionListData".
+
Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
   −
= ApplicationUpdateInfo =
+
= acc:su =
This is "nn::ns::ApplicationUpdateInfo".
+
This is "nn::account::IAccountServiceForAdministrator".
   −
This is an u8. [[qlaunch]] just checks whether this is 0.
+
[13.0.0+] This was moved from [[Account_services|account]].
   −
= ApplicationOccupiedSize =
+
{| class="wikitable" border="1"
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
  −
 
  −
= ProgressForDeleteUserSaveDataAll =
  −
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
  −
 
  −
= ApplicationViewDeprecated =
  −
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
  −
 
  −
This is converted from [[#ApplicationView]] by [[#GetApplicationViewDeprecated]] on newer system-versions as follows:
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
+
| 0 || GetUserCount ||
 
|-
 
|-
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
+
| 1 || GetUserExistence ||
 
|-
 
|-
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
+
| 2 || ListAllUsers ||
 
|-
 
|-
| 0x26 || 0x2 || Cleared to 0.
+
| 3 || ListOpenUsers ||
 
|-
 
|-
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
+
| 4 || GetLastOpenedUser ||
 
|-
 
|-
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
+
| 5 || GetProfile || Returns an [[#IProfile]].
 
|-
 
|-
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
+
| 6 || [3.0.0+] GetProfileDigest ||
 
|-
 
|-
| 0x3D || 0x2 || Cleared to 0.
+
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 0x3F || 0x1 || Cleared to 0.
+
| 51 || [[#TrySelectUserWithoutInteraction]] ||
|}
  −
 
  −
= ApplicationView =
  −
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
 
|-
 
|-
| 0x8 || 0x4 || ?
+
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
 +
|-
 +
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
 +
|-
 +
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
 +
|-
 +
| 103 || GetBaasUserAvailabilityChangeNotifier || Returns an [[#INotifier]].
 
|-
 
|-
| 0xC || 0x4 || Flags
+
| 104 || GetProfileUpdateNotifier || Returns an [[#INotifier]].
 
|-
 
|-
| 0x10 || 0x40 || ?
+
| 105 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
|}
  −
 
  −
= ApplicationViewWithPromotionInfo =
  −
This is a 0x70-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 106 || [9.0.0+] GetProfileSyncNotifier ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x50 || [[#ApplicationView]]
+
| 110 || StoreSaveDataThumbnail ||
 
|-
 
|-
| 0x50 || 0x20 || [[#PromotionInfo]]
+
| 111 || ClearSaveDataThumbnail ||
|}
  −
 
  −
= PromotionInfo =
  −
This is a 0x20-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 112 || LoadSaveDataThumbnail ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || PosixTime start_timestamp.
+
| 113 || [5.0.0+] GetSaveDataThumbnailExistence ||
 
|-
 
|-
| 0x8 || 0x8 || PosixTime end_timestamp.
+
| 120 || [10.0.0+] ListOpenUsersInApplication ||
 
|-
 
|-
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
+
| 130 || [6.0.0+] ActivateOpenContextRetention || Takes a total of 0x8-bytes of input, returns an [[#ISessionObject]].
 
|-
 
|-
| 0x18 || 0x4 || Not set, left at zero.
+
| 140 || [6.0.0+] ListQualifiedUsers ||  
 
|-
 
|-
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
+
| 150 || [10.0.0-10.2.0] AuthenticateApplicationAsync ||
 
|-
 
|-
| 0x1D || 0x3 || Padding
+
| 151 || [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync ||  
|}
+
|-
 
+
| 152 || [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount ||
= NoDownloadRightsErrorResolution =
+
|-
This is "nn::ns::NoDownloadRightsErrorResolution".
+
| 170 || [13.0.0+] GetNasOp2MembershipStateChangeNotifier ||
 
+
|-
= BackgroundNetworkUpdateState =
+
| 190 || [1.0.0-9.2.0] GetUserLastOpenedApplication ||
{| class="wikitable" border="1"
+
|-
 +
| 191 || [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
 +
|-
 +
| 200 || BeginUserRegistration ||
 +
|-
 +
| 201 || CompleteUserRegistration ||
 +
|-
 +
| 202 || CancelUserRegistration ||
 +
|-
 +
| 203 || DeleteUser ||
 +
|-
 +
| 204 || SetUserPosition ||
 +
|-
 +
| 205 || GetProfileEditor || Takes an input userID and returns an [[#IProfileEditor]].
 +
|-
 +
| 206 || CompleteUserRegistrationForcibly ||
 +
|-
 +
| 210 || [3.0.0+] CreateFloatingRegistrationRequest || Returns an [[#IFloatingRegistrationRequest]].
 +
|-
 +
| 211 || [8.0.0+] CreateProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x4-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
 +
|-
 +
| 212 || [8.0.0+] ResumeProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x14-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
 +
|-
 +
| 230 || AuthenticateServiceAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 250 || GetBaasAccountAdministrator || Returns an [[#IAdministrator]].
 +
|-
 +
| 290 || ProxyProcedureForGuestLoginWithNintendoAccount || Returns an [[#IOAuthProcedureForExternalNsa]] (formerly [[#IOAuthProcedureForGuestLogin]] with [1.0.0-2.3.0]).
 +
|-
 +
| 291 || [3.0.0+] ProxyProcedureForFloatingRegistrationWithNintendoAccount || Returns an [[#IOAuthProcedureForExternalNsa]].
 +
|-
 +
| 299 || SuspendBackgroundDaemon || Returns an [[#ISessionObject]].
 +
|-
 +
| 900 || [13.0.0+] SetUserUnqualifiedForDebug ||
 +
|-
 +
| 901 || [13.0.0+] UnsetUserUnqualifiedForDebug ||
 
|-
 
|-
!  Value
+
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug ||
!  Description
   
|-
 
|-
| 0 || No sysupdate task exists.
+
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
 
|-
 
|-
| 1 || Sysupdate download in progress.
+
| 998 || DebugSetUserStateClose ||
 
|-
 
|-
| 2 || Sysupdate ready, pending install.
+
| 999 || DebugSetUserStateOpen ||
 
|}
 
|}
   −
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
+
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input.
   −
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
+
== IsUserRegistrationRequestPermitted ==
 +
Takes a PID, an input u64 pid_reserved, and returns an output u8 bool.
   −
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
+
== TrySelectUserWithoutInteraction ==
 +
Takes an input u8 bool isNetworkServiceAccountRequired, returns an output Uid.
 +
 
 +
== IManagerForSystemService ==
 +
This is "nn::account::baas::IManagerForSystemService".
   −
= SystemUpdateProgress =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || s64 Current size. This value can be larger than total_size when the async operation is finishing. When total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined.
+
| 0 || CheckAvailability ||
 
|-
 
|-
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
+
| 1 || GetAccountId ||
|}
  −
 
  −
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
  −
 
  −
Commands which have this as output will return 0 with the output cleared, when no task is available.
  −
 
  −
= EulaDataPath =
  −
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
  −
 
  −
This contains a file path.
  −
 
  −
= SystemDeliveryInfo =
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
+
| 3 || LoadIdTokenCache ||
 
|-
 
|-
| 0x4 || 0x4 || ApplicationDeliveryProtocolVersion. Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 100 || SetSystemProgramIdentification ||
 
|-
 
|-
| 0x8 || 0x1 || HasExFat. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 101 || [7.0.0+] RefreshNotificationTokenAsync ||  
 
|-
 
|-
| 0x9 || 0x3 || Reserved.
+
| 110 || [4.0.0+] GetServiceEntryRequirementCache ||
 
|-
 
|-
| 0xC || 0x4 || SystemUpdateMetaVersion.
+
| 111 || [4.0.0+] InvalidateServiceEntryRequirementCache ||
 
|-
 
|-
| 0x10 || 0x8 || SystemUpdateMetaId.
+
| 112 || [4.0.0-6.2.0] InvalidateTokenCache ||
 
|-
 
|-
| 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]].
+
| 113 || [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
 
|-
 
|-
| 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 120 || GetNintendoAccountId ||
 
|-
 
|-
| 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China).
+
| 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint ||
 
|-
 
|-
| 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
+
| 130 || GetNintendoAccountUserResourceCache ||
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
+
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 +
|-
 +
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
 +
|-
 +
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
 +
|-
 +
| 135 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
 +
|-
 +
| 140 || [5.0.0+] GetNetworkServiceLicenseCache ||
 +
|-
 +
| 141 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 142 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 +
|-
 +
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
|}
 
|}
   −
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
+
== IFloatingRegistrationRequest ==
 +
This is "nn::account::baas::IFloatingRegistrationRequest".
 +
 
 +
Added with [3.0.0+].
   −
= ApplicationDeliveryInfo =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
+
|-
! Description
+
| 0 || GetSessionId ||
 +
|-
 +
| 12 || GetAccountId ||
 +
|-
 +
| 13 || GetLinkedNintendoAccountId ||
 +
|-
 +
| 14 || GetNickname ||
 
|-
 
|-
| 0x0 || 0x8 || ?
+
| 15 || GetProfileImage ||
 
|-
 
|-
| 0x8 || 0x8 || ApplicationId.
+
| 21 || LoadIdTokenCache ||
 
|-
 
|-
| 0x10 || 0x4 || ApplicationVersion.
+
| 100 || RegisterUser ([1.0.0-3.0.2] RegisterAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]].
 
|-
 
|-
| 0x14 || 0x4 || ?
+
| 101 || RegisterUserWithUid ([1.0.0-3.0.2] RegisterWithUidAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]].
 
|-
 
|-
| 0x18 || 0x4 || RequiredSystemVersion.
+
| 102 || [4.0.0+] RegisterNetworkServiceAccountAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x1C || 0x4 || ?
+
| 103 || [4.0.0+] RegisterNetworkServiceAccountWithUidAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x20 || 0xC0 || ?
+
| 110 || SetSystemProgramIdentification ||
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
+
| 111 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 
|}
 
|}
   −
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
+
== IAdministrator ==
 +
This is "nn::account::baas::IAdministrator".
   −
= LatestSystemUpdate =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Cmd || Name || Notes
!  Description
   
|-
 
|-
| 1 || Unknown.
+
| 0 || CheckAvailability ||
 
|-
 
|-
| 2 || Unknown.
+
| 1 || GetAccountId ||
 +
|-
 +
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 3 || LoadIdTokenCache ||
 +
|-
 +
| 100 || SetSystemProgramIdentification ||
 +
|-
 +
| 101 || [7.0.0+] RefreshNotificationTokenAsync
 +
|-
 +
| 110 || [4.0.0+] GetServiceEntryRequirementCache ||
 +
|-
 +
| 111 || [4.0.0+] InvalidateServiceEntryRequirementCache ||
 +
|-
 +
| 112 || [4.0.0-6.2.0] InvalidateTokenCache ||
 +
|-
 +
| 113 || [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
 
|-
 
|-
| Other values || Unknown.
+
| 120 || GetNintendoAccountId ||
|}
  −
 
  −
This is "nn::ns::LatestSystemUpdate". This is an u8.
  −
 
  −
= ReceiveApplicationProgress =
  −
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
  −
 
  −
= SendApplicationProgress =
  −
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
  −
 
  −
= ApplicationRightsOnClient =
  −
This is a 0x20-byte struct.
  −
 
  −
[[qlaunch]] only uses +0x18/+0x19 in this struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 130 || GetNintendoAccountUserResourceCache ||
 
|-
 
|-
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
+
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
+
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
+
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
 
|-
 
|-
| 0x1A || 0x6 || Unknown
+
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
 +
|-
 +
| 135 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
 +
|-
 +
| 140 || [5.0.0+] GetNetworkServiceLicenseCache ||
 +
|-
 +
| 141 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsync ||
 +
|-
 +
| 142 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed ||
 +
|-
 +
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 +
|-
 +
| 200 || IsRegistered ||
 +
|-
 +
| 201 || RegisterAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 202 || UnregisterAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 203 || DeleteRegistrationInfoLocally ||
 +
|-
 +
| 220 || SynchronizeProfileAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 221 || UploadProfileAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 222 || SynchronizeProfileAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 +
|-
 +
| 250 || IsLinkedWithNintendoAccount ||
 +
|-
 +
| 251 || CreateProcedureToLinkWithNintendoAccount || Returns an [[#IOAuthProcedureForNintendoAccountLinkage]].
 +
|-
 +
| 252 || ResumeProcedureToLinkWithNintendoAccount || Returns an [[#IOAuthProcedureForNintendoAccountLinkage]].
 +
|-
 +
| 255 || CreateProcedureToUpdateLinkageStateOfNintendoAccount || Returns an [[#IOAuthProcedure]].
 +
|-
 +
| 256 || ResumeProcedureToUpdateLinkageStateOfNintendoAccount || Returns an [[#IOAuthProcedure]].
 +
|-
 +
| 260 || [3.0.0+] CreateProcedureToLinkNnidWithNintendoAccount || Returns an [[#IOAuthProcedure]].
 +
|-
 +
| 261 || [3.0.0+] ResumeProcedureToLinkNnidWithNintendoAccount || Returns an [[#IOAuthProcedure]].
 +
|-
 +
| 280 || ProxyProcedureToAcquireApplicationAuthorizationForNintendoAccount || Returns an [[#IOAuthProcedure]].
 +
|-
 +
| 290 || [8.0.0+] GetRequestForNintendoAccountUserResourceView ||
 +
|-
 +
| 300 || [6.0.0+] TryRecoverNintendoAccountUserStateAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 400 || [6.1.0+] IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay || Takes a total of 0x8-bytes of input, returns an output u8.
 +
|-
 +
| 401 || [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync || Takes a total of 0x8-bytes of input, returns an [[#IAsyncContext]].
 +
|-
 +
| 900 || [9.0.0+] GetAuthenticationInfoForWin ||
 +
|-
 +
| 901 || [9.0.0+] ImportAsyncForWin ||
 +
|-
 +
| 997 || DebugUnlinkNintendoAccountAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 998 || DebugSetAvailabilityErrorDetail ||
 
|}
 
|}
 +
 +
== IAuthorizationRequest ==
 +
This is "nn::account::nas::IAuthorizationRequest".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetSessionId ||
 +
|-
 +
| 10 || InvokeWithoutInteractionAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 19 || IsAuthorized ||
 +
|-
 +
| 20 || GetAuthorizationCode ||
 +
|-
 +
| 21 || GetIdToken ||
 +
|-
 +
| 22 || GetState ||
 +
|}
 +
 +
== IOAuthProcedure ==
 +
This is "nn::account::http::IOAuthProcedure".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 10 || Suspend ||
 +
|}
 +
 +
== IOAuthProcedureForExternalNsa ==
 +
This is "nn::account::nas::IOAuthProcedureForExternalNsa".
 +
 +
Added with [3.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 10 || Suspend ||
 +
|-
 +
| 100 || GetAccountId ||
 +
|-
 +
| 101 || GetLinkedNintendoAccountId ||
 +
|-
 +
| 102 || GetNickname ||
 +
|-
 +
| 103 || GetProfileImage ||
 +
|}
 +
 +
== IOAuthProcedureForNintendoAccountLinkage ==
 +
This is "nn::account::nas::IOAuthProcedureForNintendoAccountLinkage".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 10 || Suspend ||
 +
|-
 +
| 100 || GetRequestWithTheme ||
 +
|-
 +
| 101 || IsNetworkServiceAccountReplaced ||
 +
|-
 +
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
 +
|}
 +
 +
== INotifier ==
 +
This is "nn::account::detail::INotifier".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSystemEvent
 +
|}
 +
 +
== IProfile ==
 +
This is "nn::account::profile::IProfile".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#Get]]
 +
|-
 +
| 1 || [[#GetBase]]
 +
|-
 +
| 10 || [[#GetImageSize]]
 +
|-
 +
| 11 || [[#LoadImage]]
 +
|}
 +
 +
=== Get ===
 +
Takes an output type-0x1A buffer for [[#UserData]], returns an output [[#ProfileBase]].
 +
 +
=== GetBase ===
 +
No input, returns an output [[#ProfileBase]].
 +
 +
=== GetImageSize ===
 +
No input, returns an output u32 for the size of the image buffer.
 +
 +
=== LoadImage ===
 +
Takes an output type-0x6 buffer, returns the same output u32 as [[#GetImageSize]].
 +
 +
The output buffer contains the JPEG profile image icon. This is valid for both Miis and character icons.
 +
 +
== IProfileEditor ==
 +
This is "nn::account::profile::IProfileEditor".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#Get]]
 +
|-
 +
| 1 || [[#GetBase]]
 +
|-
 +
| 10 || [[#GetImageSize]]
 +
|-
 +
| 11 || [[#LoadImage]]
 +
|-
 +
| 100 || [[#Store]]
 +
|-
 +
| 101 || [[#StoreWithImage]]
 +
|}
 +
 +
=== Store ===
 +
Takes a [[#ProfileBase]] and an input type-0x19 buffer for [[#UserData]].
 +
 +
=== StoreWithImage ===
 +
Takes a [[#ProfileBase]], an input type-0x19 buffer for [[#UserData]], and an input type-0x5 buffer.
 +
 +
== IAsyncContext ==
 +
This is "nn::account::detail::IAsyncContext".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSystemEvent
 +
|-
 +
| 1 || Cancel
 +
|-
 +
| 2 || HasDone
 +
|-
 +
| 3 || GetResult
 +
|}
 +
 +
== ISessionObject ==
 +
This is "nn::account::detail::ISessionObject".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 999 || Dummy
 +
|}
 +
 +
= acc:u0 =
 +
This is "nn::account::IAccountServiceForApplication".
 +
 +
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetUserCount ||
 +
|-
 +
| 1 || GetUserExistence ||
 +
|-
 +
| 2 || ListAllUsers ||
 +
|-
 +
| 3 || ListOpenUsers ||
 +
|-
 +
| 4 || GetLastOpenedUser ||
 +
|-
 +
| 5 || GetProfile || Takes an input userID, returns an [[#IProfile]].
 +
|-
 +
| 6 || [3.0.0+] GetProfileDigest ||
 +
|-
 +
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 +
|-
 +
| 51 || [[#TrySelectUserWithoutInteraction]] ||
 +
|-
 +
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 +
|-
 +
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
 +
|-
 +
| 100 || [[#InitializeApplicationInfoV0]] ||
 +
|-
 +
| 101 || GetBaasAccountManagerForApplication || Takes an input userID, returns an [[#IManagerForApplication]].
 +
|-
 +
| 102 || AuthenticateApplicationAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 103 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 110 || StoreSaveDataThumbnail ||
 +
|-
 +
| 111 || ClearSaveDataThumbnail ||
 +
|-
 +
| 120 || CreateGuestLoginRequest || Returns an [[#IGuestLoginRequest]].
 +
|-
 +
| 130 || [5.0.0+] LoadOpenContext ||
 +
|-
 +
| 131 || [6.0.0+] ListOpenContextStoredUsers ||
 +
|-
 +
| 140 || [6.0.0+] [[#InitializeApplicationInfoV1]] ||
 +
|-
 +
| 141 || [6.0.0+] ListQualifiedUsers ||
 +
|-
 +
| 150 || [6.0.0+] IsUserAccountSwitchLocked ||
 +
|-
 +
| 160 || [13.0.0+] InitializeApplicationInfoV2 ||
 +
|}
 +
 +
InitializeApplicationInfo* is used by the user-process during service init.
 +
 +
== InitializeApplicationInfoV0 ==
 +
Takes a PID and an input u64 pid_placeholder, no output.
 +
 +
== InitializeApplicationInfoV1 ==
 +
Takes a PID and an input u64 pid_placeholder, no output.
 +
 +
== IGuestLoginRequest ==
 +
This is "nn::account::baas::IGuestLoginRequest".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSessionId
 +
|-
 +
| 11 || [1.0.0-2.3.0]
 +
|-
 +
| 12 || GetAccountId
 +
|-
 +
| 13 || GetLinkedNintendoAccountId
 +
|-
 +
| 14 || GetNickname
 +
|-
 +
| 15 || GetProfileImage
 +
|-
 +
| 21 || [3.0.0+] LoadIdTokenCache
 +
|}
 +
 +
== IManagerForApplication ==
 +
This is "nn::account::baas::IManagerForApplication".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || CheckAvailability ||
 +
|-
 +
| 1 || GetAccountId ||
 +
|-
 +
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 3 || LoadIdTokenCache ||
 +
|-
 +
| 130 || GetNintendoAccountUserResourceCacheForApplication ||
 +
|-
 +
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 +
|-
 +
| 160 || [5.0.0+] StoreOpenContext ||
 +
|-
 +
| 170 || [13.0.0+] EnsureIdTokenCacheForOnlinePlayAsync ([6.0.0-12.1.0] LoadNetworkServiceLicenseKindAsync) || No input, returns an [[#IAsyncContextForLoginForOnlinePlay]] ([6.0.0-12.1.0] [[#IAsyncNetworkServiceLicenseKindContext]]).
 +
|}
 +
 +
== IAsyncNetworkServiceLicenseKindContext ==
 +
This is "nn::account::detail::IAsyncNetworkServiceLicenseKindContext".
 +
 +
This was added with [6.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetSystemEvent ||
 +
|-
 +
| 1 || Cancel ||
 +
|-
 +
| 2 || HasDone ||
 +
|-
 +
| 3 || GetResult ||
 +
|-
 +
| 100 || GetNetworkServiceLicenseKind ||
 +
|}
 +
 +
== IAsyncContextForLoginForOnlinePlay ==
 +
This is "nn::account::baas::IAsyncContextForLoginForOnlinePlay".
 +
 +
This was added with [13.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetSystemEvent ||
 +
|-
 +
| 1 || Cancel ||
 +
|-
 +
| 2 || HasDone ||
 +
|-
 +
| 3 || GetResult ||
 +
|-
 +
| 100 || GetNetworkServiceLicenseInfoForOnlinePlay ||
 +
|}
 +
 +
= acc:u1 =
 +
This is "nn::account::IAccountServiceForSystemService".
 +
 +
[13.0.0+] This was moved from [[Account_services|account]].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetUserCount ||
 +
|-
 +
| 1 || GetUserExistence ||
 +
|-
 +
| 2 || ListAllUsers ||
 +
|-
 +
| 3 || ListOpenUsers ||
 +
|-
 +
| 4 || GetLastOpenedUser ||
 +
|-
 +
| 5 || GetProfile || Returns an [[#IProfile]].
 +
|-
 +
| 6 || [3.0.0+] GetProfileDigest ||
 +
|-
 +
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 +
|-
 +
| 51 || [[#TrySelectUserWithoutInteraction]] ||
 +
|-
 +
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 +
|-
 +
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
 +
|-
 +
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
 +
|-
 +
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
 +
|-
 +
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
 +
|-
 +
| 103 || GetBaasUserAvailabilityChangeNotifier || Returns an [[#INotifier]].
 +
|-
 +
| 104 || GetProfileUpdateNotifier || Returns an [[#INotifier]].
 +
|-
 +
| 105 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 106 || [9.0.0+] GetProfileSyncNotifier ||
 +
|-
 +
| 110 || StoreSaveDataThumbnail ||
 +
|-
 +
| 111 || ClearSaveDataThumbnail ||
 +
|-
 +
| 112 || LoadSaveDataThumbnail ||
 +
|-
 +
| 113 || [5.0.0+] GetSaveDataThumbnailExistence ||
 +
|-
 +
| 120 || [10.0.0+] ListOpenUsersInApplication ||
 +
|-
 +
| 130 || [6.0.0+] ActivateOpenContextRetention || Takes a total of 0x8-bytes of input, returns an [[#ISessionObject]].
 +
|-
 +
| 140 || [6.0.0+] ListQualifiedUsers ||
 +
|-
 +
| 150 || [10.0.0-10.2.0] AuthenticateApplicationAsync ||
 +
|-
 +
| 151 || [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync ||
 +
|-
 +
| 152 || [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount ||
 +
|-
 +
| 170 || [13.0.0+] GetNasOp2MembershipStateChangeNotifier ||
 +
|-
 +
| 190 || [1.0.0-9.2.0] GetUserLastOpenedApplication ||
 +
|-
 +
| 191 || [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
 +
|-
 +
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
 +
|-
 +
| 998 || DebugSetUserStateClose ||
 +
|-
 +
| 999 || DebugSetUserStateOpen ||
 +
|}
 +
 +
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input.
 +
 +
== IOAuthProcedureForUserRegistration ==
 +
This is "nn::account::nas::IOAuthProcedureForUserRegistration".
 +
 +
This was added with [8.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || PrepareAsync || No input, returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Takes a type-0x9 input buffer, returns an [[#IAsyncContext]].
 +
|-
 +
| 10 || Suspend ||
 +
|-
 +
| 100 || GetAccountId ||
 +
|-
 +
| 101 || GetLinkedNintendoAccountId ||
 +
|-
 +
| 102 || GetNickname ||
 +
|-
 +
| 103 || GetProfileImage ||
 +
|-
 +
| 110 || RegisterUserAsync || No input, returns an [[#IAsyncContext]].
 +
|-
 +
| 111 || GetUid ||
 +
|}
 +
 +
= VersionListData =
 +
This is "nn::ns::VersionListData".
 +
 +
= ApplicationUpdateInfo =
 +
This is "nn::ns::ApplicationUpdateInfo".
 +
 +
This is an u8. [[qlaunch]] just checks whether this is 0.
 +
 +
= ApplicationOccupiedSize =
 +
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
 +
 +
= ProgressForDeleteUserSaveDataAll =
 +
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
 +
 +
= ApplicationViewDeprecated =
 +
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
 +
 +
This is converted from [[#ApplicationView]] by [[#GetApplicationViewDeprecated]] on newer system-versions as follows:
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
 +
|-
 +
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
 +
|-
 +
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
 +
|-
 +
| 0x26 || 0x2 || Cleared to 0.
 +
|-
 +
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
 +
|-
 +
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
 +
|-
 +
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
 +
|-
 +
| 0x3D || 0x2 || Cleared to 0.
 +
|-
 +
| 0x3F || 0x1 || Cleared to 0.
 +
|}
 +
 +
= ApplicationView =
 +
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x4 || ?
 +
|-
 +
| 0xC || 0x4 || Flags
 +
|-
 +
| 0x10 || 0x40 || ?
 +
|}
 +
 +
= ApplicationViewWithPromotionInfo =
 +
This is a 0x70-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x50 || [[#ApplicationView]]
 +
|-
 +
| 0x50 || 0x20 || [[#PromotionInfo]]
 +
|}
 +
 +
= PromotionInfo =
 +
This is a 0x20-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || PosixTime start_timestamp.
 +
|-
 +
| 0x8 || 0x8 || PosixTime end_timestamp.
 +
|-
 +
| 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds).
 +
|-
 +
| 0x18 || 0x4 || Not set, left at zero.
 +
|-
 +
| 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set.
 +
|-
 +
| 0x1D || 0x3 || Padding
 +
|}
 +
 +
= NoDownloadRightsErrorResolution =
 +
This is "nn::ns::NoDownloadRightsErrorResolution".
 +
 +
= BackgroundNetworkUpdateState =
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 0 || No sysupdate task exists.
 +
|-
 +
| 1 || Sysupdate download in progress.
 +
|-
 +
| 2 || Sysupdate ready, pending install.
 +
|}
 +
 +
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
 +
 +
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
 +
 +
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
 +
 +
= SystemUpdateProgress =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || s64 Current size. This value can be larger than total_size when the async operation is finishing. When total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined.
 +
|-
 +
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
 +
|}
 +
 +
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
 +
 +
Commands which have this as output will return 0 with the output cleared, when no task is available.
 +
 +
= EulaDataPath =
 +
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
 +
 +
This contains a file path.
 +
 +
= SystemDeliveryInfo =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
 +
|-
 +
| 0x4 || 0x4 || ApplicationDeliveryProtocolVersion. Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0x8 || 0x1 || HasExFat. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0x9 || 0x3 || Reserved.
 +
|-
 +
| 0xC || 0x4 || SystemUpdateMetaVersion.
 +
|-
 +
| 0x10 || 0x8 || SystemUpdateMetaId.
 +
|-
 +
| 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]].
 +
|-
 +
| 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China).
 +
|-
 +
| 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
 +
|-
 +
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
 +
|}
 +
 +
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
 +
 +
= ApplicationDeliveryInfo =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || ?
 +
|-
 +
| 0x8 || 0x8 || ApplicationId.
 +
|-
 +
| 0x10 || 0x4 || ApplicationVersion.
 +
|-
 +
| 0x14 || 0x4 || ?
 +
|-
 +
| 0x18 || 0x4 || RequiredSystemVersion.
 +
|-
 +
| 0x1C || 0x4 || ?
 +
|-
 +
| 0x20 || 0xC0 || ?
 +
|-
 +
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
 +
|}
 +
 +
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
 +
 +
= LatestSystemUpdate =
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Value
 +
!  Description
 +
|-
 +
| 1 || Unknown.
 +
|-
 +
| 2 || Unknown.
 +
|-
 +
| Other values || Unknown.
 +
|}
 +
 +
This is "nn::ns::LatestSystemUpdate". This is an u8.
 +
 +
= ReceiveApplicationProgress =
 +
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
 +
 +
= SendApplicationProgress =
 +
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
 +
 +
= ApplicationRightsOnClient =
 +
This is a 0x20-byte struct.
 +
 +
[[qlaunch]] only uses +0x18/+0x19 in this struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
 +
|-
 +
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
 +
|-
 +
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
 +
|-
 +
| 0x1A || 0x6 || Unknown
 +
|}
 +
 +
= DownloadTaskStatus =
 +
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
 +
 +
= ApplicationLaunchInfo =
 +
This is a 0x40-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x4 || Application version
 +
|-
 +
| 0xC || 0x4 || [[Process_Manager_services#LaunchFlags|LaunchFlags]], set to hard-coded value 0xB by [[#GetApplicationLaunchInfo]].
 +
|-
 +
| 0x10 || 0x1 || Application [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x11 || 0x1 || Update [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x12 || 0x2E ||
 +
|}
 +
 +
= UserData =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4? || ?
 +
|-
 +
| 0x4 || 0x4? || Icon ID. 0 = Mii, the rest are character icon IDs.
 +
|-
 +
| 0x8 || 0x1? || Profile icon background color ID
 +
|-
 +
| 0x9 || 0x7 || ?
 +
|-
 +
| 0x10 || 0x10 || Some ID related to the Mii? All zeros when a character icon is used.
 +
|-
 +
| 0x20 || 0x60 || Usually zeros?
 +
|}
 +
 +
This is a 0x80-byte struct.
 +
 +
= ProfileBase =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x10 || userID
 +
|-
 +
| 0x10 || 0x8 || POSIX UTC timestamp, for last account edit.
 +
|-
 +
| 0x18 || 0x20 || UTF-8 Nickname. Official sw uses strncpy to copy this into another struct (<code>nn::account::Nickname</code>), with a NUL-byte written after the copied data.
 +
|-
 +
|}
 +
 +
This is a 0x38-byte struct.
 +
 +
= Uid =
 +
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu