NS services: Difference between revisions
(44 intermediate revisions by 4 users not shown) | |||
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]] | |||
|- | |||
| 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition | |||
|} | |} | ||
Line 45: | Line 61: | ||
|- | |- | ||
| 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 129: | ||
| 17 || ListApplicationRecordContentMeta | | 17 || ListApplicationRecordContentMeta | ||
|- | |- | ||
| 18 || | | 18 || CheckLaunchRights | ||
|- | |- | ||
| 19 || [[#LaunchApplication]] | | 19 || [[#LaunchApplication]] | ||
Line 104: | Line 151: | ||
| 33 || ResumeApplicationDownload | | 33 || ResumeApplicationDownload | ||
|- | |- | ||
| 34 || | | 34 || ClearTaskStatusList | ||
|- | |- | ||
| 35 || UpdateVersionList | | 35 || UpdateVersionList | ||
Line 426: | Line 473: | ||
|} | |} | ||
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web = | = ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro = | ||
These | These are "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 484: | ||
! 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 542: | ||
| 8 || [[#IsApplicationEntityMovable]] | | 8 || [[#IsApplicationEntityMovable]] | ||
|- | |- | ||
| 9 || [[#MoveApplicationEntity]] | | 9 || [1.0.0-9.2.0] [[#MoveApplicationEntity]] | ||
|- | |- | ||
| 11 || [[#CalculateApplicationOccupiedSize]] | | 11 || [[#CalculateApplicationOccupiedSize]] | ||
Line 513: | Line 564: | ||
| 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 664: | ||
| 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 685: | ||
|- | |- | ||
| 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 706: | ||
| 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 713: | Line 768: | ||
| 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 | |||
|- | |||
| 610 || [14.0.0+] GetInstalledContentMetaStorage | |||
|- | |- | ||
| 700 || PushDownloadTaskList | | 700 || PushDownloadTaskList | ||
Line 764: | Line 823: | ||
|- | |- | ||
| 915 || [9.0.0+] ShowApplicationRecord | | 915 || [9.0.0+] ShowApplicationRecord | ||
|- | |||
| 916 || [11.0.0+] IsApplicationAutoDeleteDisabled | |||
|- | |- | ||
| 1000 || [[#RequestVerifyApplicationDeprecated]] | | 1000 || [[#RequestVerifyApplicationDeprecated]] | ||
Line 769: | Line 830: | ||
| 1001 || CorruptApplicationForDebug | | 1001 || CorruptApplicationForDebug | ||
|- | |- | ||
| 1002 || [3.0.0 | | 1002 || [3.0.0-9.2.0] [[#RequestVerifyAddOnContentsRights]] | ||
|- | |- | ||
| 1003 || [5.0.0+] [[#RequestVerifyApplication]] | | 1003 || [5.0.0+] [[#RequestVerifyApplication]] | ||
Line 783: | Line 844: | ||
| 1302 || CleanupUnrecordedApplicationEntity | | 1302 || CleanupUnrecordedApplicationEntity | ||
|- | |- | ||
| 1303 || [3.0.0 | | 1303 || [3.0.0-9.2.0] CleanupAddOnContentsWithNoRights | ||
|- | |- | ||
| 1304 || [3.0.0+] DeleteApplicationContentEntity | | 1304 || [3.0.0+] DeleteApplicationContentEntity | ||
Line 790: | Line 851: | ||
|- | |- | ||
| 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 889: | ||
|- | |- | ||
| 1704 || [8.0.0+] [[#GetApplicationViewWithPromotionInfo]] | | 1704 || [8.0.0+] [[#GetApplicationViewWithPromotionInfo]] | ||
|- | |||
| 1705 || [11.0.0+] [[#IsPatchAutoDeletableApplication]] | |||
|- | |- | ||
| 1800 || IsNotificationSetupCompleted | | 1800 || IsNotificationSetupCompleted | ||
Line 827: | Line 900: | ||
| 1803 || [3.0.0+] ListNotificationTask | | 1803 || [3.0.0+] ListNotificationTask | ||
|- | |- | ||
| 1900 || [3.0.0 | | 1900 || [3.0.0-12.1.0] IsActiveAccount | ||
|- | |- | ||
| 1901 || [4.0.0+] [[#RequestDownloadApplicationPrepurchasedRights]] | | 1901 || [4.0.0+] [[#RequestDownloadApplicationPrepurchasedRights]] | ||
|- | |- | ||
| 1902 || [5.0.0+] GetApplicationTicketInfo | | 1902 || [5.0.0+] GetApplicationTicketInfo | ||
|- | |||
| 1903 || [13.1.0+] RequestDownloadApplicationPrepurchasedRightsForAccount | |||
|- | |- | ||
| 2000 || [4.0.0+] [[#GetSystemDeliveryInfo]] | | 2000 || [4.0.0+] [[#GetSystemDeliveryInfo]] | ||
Line 891: | Line 966: | ||
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus | | 2155 || [7.0.0+] UpdateRightsEnvironmentStatus | ||
|- | |- | ||
| 2156 || [9.0.0 | | 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 986: | ||
| 2199 || [6.0.0+] GetRightsEnvironmentCountForDebug | | 2199 || [6.0.0+] GetRightsEnvironmentCountForDebug | ||
|- | |- | ||
| 2200 || [6.0.0 | | 2200 || [6.0.0-9.2.0] GetGameCardApplicationCopyIdentifier | ||
|- | |- | ||
| 2201 || [6.0.0 | | 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 999: | ||
|- | |- | ||
| 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,024: | ||
| 2511 || [9.0.0+] [[#GetApplicationResource]] | | 2511 || [9.0.0+] [[#GetApplicationResource]] | ||
|- | |- | ||
| 2513 || [9.0.0 | | 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 | |||
|- | |||
| 2522 || [14.0.0+] IsRomRedirectionAvailable | |||
|- | |- | ||
| 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]] | |||
|- | |||
| 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]] | |||
|- | |||
| 3050 || [14.0.0+] ListAssignELicenseTaskResult | |||
|- | |||
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate | |||
|} | |||
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input. | |||
==== GetApplicationRecordUpdateSystemEvent ==== | ==== GetApplicationRecordUpdateSystemEvent ==== | ||
No input, returns an output Event handle with EventClearMode=1. | No input, returns an output Event handle with EventClearMode=1. | ||
Line 1,040: | Line 1,173: | ||
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,194: | ||
[[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,212: | ||
==== 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,303: | ||
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,359: | ||
==== 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,442: | ||
** 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 | * 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,471: | ||
** 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 | * 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,546: | ||
==== 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,682: | ||
|- | |- | ||
| 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,572: | Line 1,814: | ||
|- | |- | ||
| 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,601: | Line 1,847: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 0 || [[#RequestApplicationRightsOnServer]] | |||
|- | |||
| 1 || [[#RequestAssignRights]] | |||
|- | |||
| 4 || [[#DeprecatedRequestAssignRightsToResume]] | |||
|- | |||
| 5 || [[#VerifyActivatedRightsOwners]] | |||
|- | |||
| 6 || [[#DeprecatedGetApplicationRightsStatus]] | |||
|- | |||
| 7 || [[#RequestPrefetchForDynamicRights]] | |||
|- | |||
| 8 || [[#GetDynamicRightsState]] | |||
|- | |||
| 9 || [7.0.0+] [[#RequestApplicationRightsOnServerToResume]] | |||
|- | |||
| 10 || [7.0.0+] [[#RequestAssignRightsToResume]] | |||
|- | |||
| 11 || [7.0.0+] [[#GetActivatedRightsUsers]] | |||
|- | |||
| 12 || [8.0.0+] [[#GetApplicationRightsStatus]] | |||
|- | |||
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]] | |||
|- | |- | ||
| | | 14 || [10.0.0+] SelectApplicationLicense | ||
|- | |- | ||
| | | 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]] | ||
|- | |- | ||
| | | 16 || [13.0.0+] QualifyUser | ||
|- | |- | ||
| | | 17 || [13.0.0+] QualifyUserWithProcessId | ||
|- | |- | ||
| | | 18 || [13.0.0+] NotifyApplicationRightsCheckStart | ||
|- | |- | ||
| | | 19 || [13.0.0+] UpdateUserList | ||
|- | |- | ||
| | | 20 || [13.0.0+] IsRightsLostUser | ||
|- | |- | ||
| | | 21 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition | ||
|- | |- | ||
| | | 22 || [14.0.0+] GetLimitedApplicationLicense | ||
|- | |- | ||
| | | 23 || [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent | ||
|- | |- | ||
| | | 24 || [14.0.0+] NotifyLimitedApplicationLicenseUpgradableEventForDebug | ||
|- | |- | ||
| | | 25 || [14.0.0+] RequestProceedDynamicRightsState | ||
|} | |} | ||
==== RequestApplicationRightsOnServer ==== | ==== RequestApplicationRightsOnServer ==== | ||
Takes a | Takes an input [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]] and an u32. Returns an output Event handle and an [[#IAsyncValue]]. | ||
==== RequestAssignRights ==== | |||
Takes a type-0x5 input buffer containing an array of "nn::ns::ApplicationRightsOnServer". Returns an output Event handle and an [[#IAsyncResult]]. | |||
==== DeprecatedRequestAssignRightsToResume ==== | |||
Takes an input u64 "nn::ns::RightsEnvironmentHandle" and an [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]]. | |||
==== 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 ==== | ==== RequestApplicationRightsOnServerToResume ==== | ||
Takes | Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncValue]]. | ||
=== | ==== RequestAssignRightsToResume ==== | ||
This is "nn::ns::detail:: | 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 [ | This was added with [12.0.0+]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,643: | Line 1,946: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || GetSize | ||
|- | |- | ||
| 1 || [6.0.0+] [[#RequestCleanupAllPreInstalledApplications]] | | 1 || Get | ||
|- | |||
| 2 || Cancel | |||
|- | |||
| 3 || GetErrorContext | |||
|} | |||
=== IECommerceInterface=== | |||
This is "nn::ns::detail::IECommerceInterface". | |||
This was added with [4.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#RequestLinkDevice]] | |||
|- | |||
| 1 || [6.0.0+] [[#RequestCleanupAllPreInstalledApplications]] | |||
|- | |- | ||
| 2 || [6.0.0+] [[#RequestCleanupPreInstalledApplication]] | | 2 || [6.0.0+] [[#RequestCleanupPreInstalledApplication]] | ||
Line 1,656: | Line 1,977: | ||
|- | |- | ||
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]] | | 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]] | ||
|- | |||
| 7 || [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability | |||
|} | |} | ||
==== RequestLinkDevice ==== | ==== RequestLinkDevice ==== | ||
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]]. | Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]]. | ||
See [[#RequestApplicationUpdateInfo]] regarding nifm. | |||
==== RequestCleanupAllPreInstalledApplications ==== | ==== RequestCleanupAllPreInstalledApplications ==== | ||
Line 1,672: | Line 1,997: | ||
==== RequestUnlinkDevice ==== | ==== RequestUnlinkDevice ==== | ||
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]]. | Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]]. | ||
See [[#RequestApplicationUpdateInfo]] regarding nifm. | |||
==== RequestRevokeAllELicense ==== | ==== RequestRevokeAllELicense ==== | ||
Line 1,695: | Line 2,022: | ||
|- | |- | ||
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]] | | 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]] | ||
|- | |||
| 105 || [10.0.0+] [[#RequestResetToFactorySettingsSecurely]] | |||
|- | |||
| 106 || [10.0.0+] [[#RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely]] | |||
|} | |} | ||
Line 1,714: | Line 2,045: | ||
No input/output. | No input/output. | ||
=== | ==== RequestResetToFactorySettingsSecurely ==== | ||
This is "nn::ns::detail:: | 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 [ | This was added with [10.0.0+]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,723: | Line 2,060: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || GetSize | ||
|- | |||
| 1 || Get | |||
|- | |- | ||
| 1 || BoostSystemMemoryResourceLimit | | 2 || Cancel | ||
|- | |||
| 3 || GetErrorContext | |||
|- | |||
| 4 || GetProgress | |||
|} | |||
=== IApplicationResource === | |||
This is "nn::ns::detail::IApplicationResource". | |||
This was added with [9.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || Attach | |||
|- | |||
| 1 || BoostSystemMemoryResourceLimit | |||
|} | |} | ||
Line 1,880: | Line 2,237: | ||
== ISystemUpdateControl == | == ISystemUpdateControl == | ||
This is "nn::ns::detail::ISystemUpdateControl". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,963: | Line 2,322: | ||
* 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 | * 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 2,052: | Line 2,411: | ||
** 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 | * 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,128: | Line 2,500: | ||
= 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,133: | Line 2,507: | ||
! 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 | |||
|- | |||
| 20 || [14.0.0+] GetProgramId | |||
|} | |} | ||
Line 2,178: | Line 2,564: | ||
== TerminateApplication == | == TerminateApplication == | ||
Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends | Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends the ProcessId to [[Process_Manager_services#pm:shell|TerminateProcess]]. | ||
== PrepareLaunchProgramFromHost == | == PrepareLaunchProgramFromHost == | ||
Line 2,186: | Line 2,572: | ||
== LaunchApplicationForDevelop == | == LaunchApplicationForDevelop == | ||
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and [[NCM_services#ApplicationId|ApplicationId]], returns an output u64 | Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and [[NCM_services#ApplicationId|ApplicationId]], returns an output u64 ProcessId. | ||
Same as | Same as [[#LaunchApplicationWithStorageIdForDevelop]] 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 | 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. | ||
= | == GetApplicationProgramIdFromHost == | ||
Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]]. | |||
= | = acc:su = | ||
This is "nn:: | This is "nn::account::IAccountServiceForAdministrator". | ||
[13.0.0+] This was moved from [[Account_services|account]]. | |||
This | |||
{| class="wikitable" border="1" | {| 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) || | |||
|- | |||
| 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 || | |||
|- | |- | ||
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug || | |||
|- | |- | ||
| 0 || | | 997 || [3.0.0+] DebugInvalidateTokenCacheForUser || | ||
|- | |- | ||
| | | 998 || DebugSetUserStateClose || | ||
|- | |- | ||
| | | 999 || DebugSetUserStateOpen || | ||
|} | |} | ||
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input. | |||
== IsUserRegistrationRequestPermitted == | |||
Takes a PID, an input u64 pid_reserved, and returns an output u8 bool. | |||
== TrySelectUserWithoutInteraction == | |||
Takes an input u8 bool isNetworkServiceAccountRequired, returns an output Uid. | |||
== IManagerForSystemService == | |||
This is "nn::account::baas::IManagerForSystemService". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name || Notes | ||
|- | |- | ||
| | | 0 || CheckAvailability || | ||
|- | |- | ||
| | | 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. | ||
|- | |- | ||
| | | 120 || GetNintendoAccountId || | ||
|- | |- | ||
| | | 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint || | ||
|- | |- | ||
| | | 130 || GetNintendoAccountUserResourceCache || | ||
|- | |- | ||
| | | 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:: | == IFloatingRegistrationRequest == | ||
This is "nn::account::baas::IFloatingRegistrationRequest". | |||
Added with [3.0.0+]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name || Notes | ||
|- | |||
| 0 || GetSessionId || | |||
|- | |||
| 12 || GetAccountId || | |||
|- | |||
| 13 || GetLinkedNintendoAccountId || | |||
|- | |||
| 14 || GetNickname || | |||
|- | |- | ||
| | | 15 || GetProfileImage || | ||
|- | |- | ||
| | | 21 || LoadIdTokenCache || | ||
|- | |- | ||
| | | 100 || RegisterUser ([1.0.0-3.0.2] RegisterAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]]. | ||
|- | |- | ||
| | | 101 || RegisterUserWithUid ([1.0.0-3.0.2] RegisterWithUidAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]]. | ||
|- | |- | ||
| | | 102 || [4.0.0+] RegisterNetworkServiceAccountAsync || Returns an [[#IAsyncContext]]. | ||
|- | |- | ||
| | | 103 || [4.0.0+] RegisterNetworkServiceAccountWithUidAsync || Returns an [[#IAsyncContext]]. | ||
|- | |- | ||
| | | 110 || SetSystemProgramIdentification || | ||
|- | |- | ||
| | | 111 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]]. | ||
|} | |} | ||
This is "nn:: | == IAdministrator == | ||
This is "nn::account::baas::IAdministrator". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name || Notes | ||
|- | |- | ||
| | | 0 || CheckAvailability || | ||
|- | |- | ||
| 2 || | | 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. | ||
| | |||
|- | |- | ||
| 120 || GetNintendoAccountId || | |||
|- | |- | ||
| | | 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint || | ||
|- | |- | ||
| | | 130 || GetNintendoAccountUserResourceCache || | ||
|- | |- | ||
| | | 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 || | |||
|- | |||
| 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]]. | |||
|- | |||
| 410 || [13.1.0+] CheckRequiredLicenseForLexAsync || | |||
|- | |||
| 900 || [9.0.0+] GetAuthenticationInfoForWin || | |||
|- | |||
| 901 || [9.0.0+] ImportAsyncForWin || | |||
|- | |||
| 997 || DebugUnlinkNintendoAccountAsync || Returns an [[#IAsyncContext]]. | |||
|- | |||
| 998 || DebugSetAvailabilityErrorDetail || | |||
|} | |||
== IAuthorizationRequest == | |||
This is "nn::account::nas::IAuthorizationRequest". | |||
= DownloadTaskStatus = | {| 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. | 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]] |