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]] |