Changes

Jump to navigation Jump to search
34,769 bytes added ,  23:37, 30 April 2023
m
Line 1: Line 1:  
= aoc:u =
 
= aoc:u =
 
This is "nn::aocsrv::detail::IAddOnContentManager".
 
This is "nn::aocsrv::detail::IAddOnContentManager".
 +
 +
This is only available when [[Process_Manager_services|pm:bm]] GetBootMode returns output 0 (Normal).
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 25: Line 27:  
|-
 
|-
 
| 9 || [10.0.0+] GetAddOnContentLostErrorCode
 
| 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
 +
|-
 +
| 300 || [16.0.0+] SetupHostAddOnContent
 +
|-
 +
| 301 || [16.0.0+] GetRegisteredAddOnContentPath
 +
|-
 +
| 302 || [16.0.0+] UpdateCachedList
 
|}
 
|}
   Line 47: Line 69:  
|-
 
|-
 
| 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 || [16.0.0+] RequestContentsAuthorizationTokenDeprecated ([12.0.0-15.0.1] [[#RequestContentsAuthorizationToken]])
 +
|-
 +
| 1 || [16.0.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 106: Line 161:  
| 33 || ResumeApplicationDownload
 
| 33 || ResumeApplicationDownload
 
|-
 
|-
| 34 ||  
+
| 34 || ClearTaskStatusList
 
|-
 
|-
 
| 35 || UpdateVersionList
 
| 35 || UpdateVersionList
Line 428: Line 483:  
|}
 
|}
   −
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web =
+
= ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro, ns:sweb =
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 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.
   −
{| class="wikitable" border="1"
+
[11.0.0+] ns:ro was added.
 +
 
 +
[15.0.0+] ns:sweb was added.
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
Line 515: Line 576:  
| 30 || [[#RequestApplicationUpdateInfo]]
 
| 30 || [[#RequestApplicationUpdateInfo]]
 
|-
 
|-
| 31 || [1.0.0-3.0.2]  
+
| 31 || [1.0.0-3.0.2] RequestUpdateApplication
 
|-
 
|-
 
| 32 || [[#CancelApplicationDownload]]
 
| 32 || [[#CancelApplicationDownload]]
Line 607: Line 668:  
| 87 || [4.0.0+] IsApplicationCrashReportEnabled
 
| 87 || [4.0.0+] IsApplicationCrashReportEnabled
 
|-
 
|-
| 90 || [4.0.0-8.1.0] BoostSystemMemoryResourceLimit
+
| 90 || [15.0.0+] BoostSystemMemoryResourceLimit ([4.0.0-8.1.0] BoostSystemMemoryResourceLimit)
 
|-
 
|-
 
| 91 || [5.0.0+] DeprecatedLaunchApplication
 
| 91 || [5.0.0+] DeprecatedLaunchApplication
Line 713: Line 774:  
| 603 || GetOwnedApplicationContentMetaStatus
 
| 603 || GetOwnedApplicationContentMetaStatus
 
|-
 
|-
| 604 || RegisterContentsExternalKey
+
| 604 || [1.0.0-15.0.1] RegisterContentsExternalKey
 
|-
 
|-
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
 
| 605 || ListApplicationContentMetaStatusWithRightsCheck
Line 720: Line 781:  
|-
 
|-
 
| 607 || [6.0.0+] [[#ListAvailableAddOnContent]]
 
| 607 || [6.0.0+] [[#ListAvailableAddOnContent]]
 +
|-
 +
| 609 || [13.0.0+] ListAvailabilityAssuredAddOnContent
 +
|-
 +
| 610 || [14.0.0+] GetInstalledContentMetaStorage
 +
|-
 +
| 611 || [16.0.0+] PrepareAddOnContent
 
|-
 
|-
 
| 700 || PushDownloadTaskList
 
| 700 || PushDownloadTaskList
Line 757: Line 824:  
| 908 || ListApplicationRecordInstalledContentMeta
 
| 908 || ListApplicationRecordInstalledContentMeta
 
|-
 
|-
| 909 || [3.0.0+] WithdrawCleanupAddOnContentsWithNoRightsRecommendation
+
| 909 || [3.0.0-14.1.2] WithdrawCleanupAddOnContentsWithNoRightsRecommendation
 
|-
 
|-
 
| 910 || [5.0.0+] HasApplicationRecord
 
| 910 || [5.0.0+] HasApplicationRecord
Line 770: Line 837:  
|-
 
|-
 
| 915 || [9.0.0+] ShowApplicationRecord
 
| 915 || [9.0.0+] ShowApplicationRecord
 +
|-
 +
| 916 || [11.0.0+] IsApplicationAutoDeleteDisabled
 
|-
 
|-
 
| 1000 || [[#RequestVerifyApplicationDeprecated]]
 
| 1000 || [[#RequestVerifyApplicationDeprecated]]
Line 797: Line 866:  
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
| 1309 || [6.0.0+] [[#CleanupUnavailableAddOnContents]]
 
|-
 
|-
| 1310 || [10.0.0+] RequestMoveApplicationEntity
+
| 1310 || [10.0.0+] [[#RequestMoveApplicationEntity]]
 
|-
 
|-
| 1311 || [10.0.0+] EstimateSizeToMove
+
| 1311 || [10.0.0+] [[#EstimateSizeToMove]]
 
|-
 
|-
 
| 1312 || [10.0.0+] HasMovableEntity
 
| 1312 || [10.0.0+] HasMovableEntity
 +
|-
 +
| 1313 || [11.0.0+] CleanupOrphanContents
 +
|-
 +
| 1314 || [11.0.0+] CheckPreconditionSatisfiedToMove
 
|-
 
|-
 
| 1400 || PrepareShutdown
 
| 1400 || PrepareShutdown
Line 830: Line 903:  
|-
 
|-
 
| 1704 || [8.0.0+] [[#GetApplicationViewWithPromotionInfo]]
 
| 1704 || [8.0.0+] [[#GetApplicationViewWithPromotionInfo]]
 +
|-
 +
| 1705 || [11.0.0+] [[#IsPatchAutoDeletableApplication]]
 
|-
 
|-
 
| 1800 || IsNotificationSetupCompleted
 
| 1800 || IsNotificationSetupCompleted
Line 839: Line 914:  
| 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]]
 
|-
 
|-
 
| 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 903: Line 980:  
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus
 
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus
 
|-
 
|-
| 2156 || [10.0.0+] CreateRightsEnvironmentForMicroApplication ([9.0.0-9.2.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 938: Line 1,015:  
|-
 
|-
 
| 2353 || [10.0.0+] GetApplicationDownloadTaskInfo
 
| 2353 || [10.0.0+] GetApplicationDownloadTaskInfo
 +
|-
 +
| 2354 || [11.0.0+] PrioritizeApplicationBackgroundTask
 +
|-
 +
| 2355 || [12.0.0+] PreferStorageEfficientUpdate
 +
|-
 +
| 2356 || [12.0.0+] RequestStorageEfficientUpdatePreferable
 +
|-
 +
| 2357 || [15.0.0+] EnableMultiCoreDownload
 +
|-
 +
| 2358 || [15.0.0+] DisableMultiCoreDownload
 +
|-
 +
| 2359 || [15.0.0+] IsMultiCoreDownloadEnabled
 
|-
 
|-
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
Line 961: Line 1,050:  
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 
| 2515 || [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask
 
|-
 
|-
| 2516 || [10.0.0+] EnsureApplicationCertificate
+
| 2516 || [10.0.0-14.1.2] 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
 
|-
 
|-
| 9999 || [10.0.0+] GetApplicationCertificate
+
| 3000 || [11.0.0+] [[#RegisterDeviceLockKey]]
|}
+
|-
 
+
| 3001 || [11.0.0+] [[#UnregisterDeviceLockKey]]
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input.
+
|-
 
+
| 3002 || [11.0.0+] [[#VerifyDeviceLockKey]]
==== GetApplicationRecordUpdateSystemEvent ====
+
|-
No input, returns an output Event handle with EventClearMode=1.
+
| 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 ====
 +
No input, returns an output Event handle with EventClearMode=1.
    
==== GetApplicationViewDeprecated ====
 
==== GetApplicationViewDeprecated ====
Line 998: Line 1,131:  
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]].
 
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]].
   −
Before using the cmd, official sw uses [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[#Network_Interface_services#GetClientId|GetClientId]], throwing an error when the returned bool is false.
+
Before using the cmd, official sw uses [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[Network_Interface_services#GetClientId|GetClientId]], throwing an error when the returned bool is false.
    
==== CancelApplicationDownload ====
 
==== CancelApplicationDownload ====
Line 1,110: Line 1,243:  
No input, returns an output u64.
 
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>.
+
A state flag must be non-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.
 
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.
Line 1,119: Line 1,252:  
No input, returns an output u64.
 
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>.
+
A state flag must be non-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.
 
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.
Line 1,193: Line 1,326:  
==== ListAvailableAddOnContent ====
 
==== ListAvailableAddOnContent ====
 
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
 
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
 +
 +
[15.0.0+] This now takes a total of 0x8-bytes of input instead of a total of 0x10-bytes of input.
    
==== RequestDownloadTaskListData ====
 
==== RequestDownloadTaskListData ====
Line 1,228: Line 1,363:  
==== CleanupUnavailableAddOnContents ====
 
==== CleanupUnavailableAddOnContents ====
 
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
 
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
 +
 +
==== RequestMoveApplicationEntity ====
 +
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of [[NCM_services#StorageId|StorageId]], a [[NCM_services#StorageId|StorageId]], an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an [[NCM_services#ApplicationId|ApplicationId]], an u64 tmem_size, returns an output Event handle and an [[#IProgressAsyncResult]].
 +
 +
The TransferMemory uses permissions=0.
 +
 +
==== EstimateSizeToMove ====
 +
Takes a type-0x5 input buffer containing an array of [[NCM_services#StorageId|StorageId]], a [[NCM_services#StorageId|StorageId]], an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
 +
 +
This calls a func also used by [[#RequestMoveApplicationEntity]], then calls another func.
    
==== FormatSdCard ====
 
==== FormatSdCard ====
Line 1,246: Line 1,391:  
==== 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,424: Line 1,574:     
==== CreateApplicationResource ====
 
==== CreateApplicationResource ====
Returns an [[#IApplicationResource]].
+
Takes an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
    
==== GetApplicationResource ====
 
==== GetApplicationResource ====
Returns an [[#IApplicationResource]].
+
Takes an input u64 ProcessId and an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
   −
=== IGameCardStopper ===
+
==== RegisterDeviceLockKey ====
This is "nn::ns::detail::IGameCardStopper".
+
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.
   −
This interface has no commands.
+
Runs code identical to [[#RegisterDeviceLockKey]], except the passed buffer/size are 0.
   −
=== IRequestServerStopper ===
+
==== VerifyDeviceLockKey ====
This is "nn::ns::detail::IRequestServerStopper".
+
Takes a type-0x5 input buffer containing an InArray of u8, no output.
   −
This interface has no commands.
+
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses [[HID_services#NpadButtonSet|NpadButton]].
   −
=== IProgressMonitorForDeleteUserSaveDataAll ===
+
This runs hashing similar to [[#RegisterDeviceLockKey]], with the calculated hash being verified with the one from state.
This is "nn::ns::detail::IProgressMonitorForDeleteUserSaveDataAll".
     −
{| class="wikitable" border="1"
+
==== 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 ===
 +
This is "nn::ns::detail::IGameCardStopper".
 +
 
 +
This interface has no commands.
 +
 
 +
=== IRequestServerStopper ===
 +
This is "nn::ns::detail::IRequestServerStopper".
 +
 
 +
This interface has no commands.
 +
 
 +
=== IProgressMonitorForDeleteUserSaveDataAll ===
 +
This is "nn::ns::detail::IProgressMonitorForDeleteUserSaveDataAll".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
Line 1,507: Line 1,714:  
|-
 
|-
 
| 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,690: Line 1,905:  
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
 
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
 
|-
 
|-
| 14 || [10.0.0+] SelectApplicationLicense
+
| 14 || [10.0.0-15.0.1] 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
 
|}
 
|}
   Line 1,728: Line 1,965:  
==== GetRunningApplicationStatus ====
 
==== GetRunningApplicationStatus ====
 
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an u32 "nn::ns::RunningApplicationStatus".
 
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"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSize
 +
|-
 +
| 1 || Get
 +
|-
 +
| 2 || Cancel
 +
|-
 +
| 3 || GetErrorContext
 +
|}
    
=== IECommerceInterface===
 
=== IECommerceInterface===
Line 1,751: Line 2,009:  
|-
 
|-
 
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 +
|-
 +
| 7 || [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability
 
|}
 
|}
   Line 1,818: Line 2,078:     
==== RequestResetToFactorySettingsSecurely ====
 
==== RequestResetToFactorySettingsSecurely ====
Takes a total of 8-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
+
Takes an input u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
 +
 
 +
The TransferMemory uses permissions=0.
    
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
 
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
Takes a total of 0x10-bytes of input, a handle, returns an output [[#IAsyncValueAndProgress]] and a handle.
+
Takes an input u32 "nn::ae::PlatformRegion", an u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
 +
 
 +
The TransferMemory uses permissions=0.
    
===== IAsyncValueAndProgress =====
 
===== IAsyncValueAndProgress =====
Line 2,009: Line 2,273:     
== ISystemUpdateControl ==
 
== ISystemUpdateControl ==
 +
This is "nn::ns::detail::ISystemUpdateControl".
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 2,306: Line 2,572:  
|-
 
|-
 
| 15 || [10.0.0+] [[#GetApplicationProgramIdFromHost]]
 
| 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,362: Line 2,638:  
Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
 
Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
   −
= VersionListData =
+
= acc:su =
This is "nn::ns::VersionListData".
+
This is "nn::account::IAccountServiceForAdministrator".
 
  −
= ApplicationUpdateInfo =
  −
This is "nn::ns::ApplicationUpdateInfo".
  −
 
  −
This is an u8. [[qlaunch]] just checks whether this is 0.
     −
= ApplicationOccupiedSize =
+
[13.0.0+] This was moved from [[Account_services|account]].
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
     −
= ProgressForDeleteUserSaveDataAll =
+
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
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"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
+
|-
! Description
+
| 0 || GetUserCount ||
 +
|-
 +
| 1 || GetUserExistence ||
 +
|-
 +
| 2 || ListAllUsers ||
 
|-
 
|-
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
+
| 3 || ListOpenUsers ||
 
|-
 
|-
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
+
| 4 || GetLastOpenedUser ||
 
|-
 
|-
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
+
| 5 || GetProfile || Returns an [[#IProfile]].
 
|-
 
|-
| 0x26 || 0x2 || Cleared to 0.
+
| 6 || [3.0.0+] GetProfileDigest ||
 
|-
 
|-
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
+
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
+
| 51 || [[#TrySelectUserWithoutInteraction]] ||
 
|-
 
|-
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
+
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 
|-
 
|-
| 0x3D || 0x2 || Cleared to 0.
+
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
 
|-
 
|-
| 0x3F || 0x1 || Cleared to 0.
+
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
|}
  −
 
  −
= ApplicationView =
  −
This is "nn::ns::ApplicationView". This is a 0x50-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
 
|-
 
|-
| 0x8 || 0x4 || ?
+
| 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 ||
 +
|-
 +
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug ||
 
|-
 
|-
!  Value
+
| 910 || [16.0.0+] RefreshFirmwareSettingsForDebug ||
!  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.
 +
 
 +
== IsUserRegistrationRequestPermitted ==
 +
Takes a PID, an input u64 pid_reserved, and returns an output u8 bool.
   −
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.
+
== TrySelectUserWithoutInteraction ==
 +
Takes an input u8 bool isNetworkServiceAccountRequired, returns an output Uid.
   −
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
+
== 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]].
|}
  −
 
  −
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
  −
 
  −
= ApplicationDeliveryInfo =
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
! Size
+
|-
! Description
+
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
 
|-
 
|-
| 0x0 || 0x8 || ?
+
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
 
|-
 
|-
| 0x8 || 0x8 || ApplicationId.
+
| 135 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
 
|-
 
|-
| 0x10 || 0x4 || ApplicationVersion.
+
| 140 || [5.0.0+] GetNetworkServiceLicenseCache ||  
 
|-
 
|-
| 0x14 || 0x4 || ?
+
| 141 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x18 || 0x4 || RequiredSystemVersion.
+
| 142 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x1C || 0x4 || ?
+
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
|-
 
|-
| 0x20 || 0xC0 || ?
+
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 
|-
 
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]].
+
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 
|}
 
|}
   −
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
+
== IFloatingRegistrationRequest ==
 +
This is "nn::account::baas::IFloatingRegistrationRequest".
 +
 
 +
Added with [3.0.0+].
   −
= LatestSystemUpdate =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Cmd || Name || Notes
!  Description
+
|-
 +
| 0 || GetSessionId ||
 +
|-
 +
| 12 || GetAccountId ||
 +
|-
 +
| 13 || GetLinkedNintendoAccountId ||
 
|-
 
|-
| 1 || Unknown.
+
| 14 || GetNickname ||
 
|-
 
|-
| 2 || Unknown.
+
| 15 || GetProfileImage ||
 
|-
 
|-
| Other values || Unknown.
+
| 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::ns::LatestSystemUpdate". This is an u8.
+
== IAdministrator ==
 +
This is "nn::account::baas::IAdministrator".
   −
= ReceiveApplicationProgress =
+
{| class="wikitable" border="1"
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
+
|-
 
+
! Cmd || Name || Notes
= SendApplicationProgress =
+
|-
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
+
| 0 || CheckAvailability ||
 
+
|-
= ApplicationRightsOnClient =
+
| 1 || GetAccountId ||
This is a 0x20-byte struct.
+
|-
 
+
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
[[qlaunch]] only uses +0x18/+0x19 in this struct.
+
|-
 
+
| 3 || LoadIdTokenCache ||
{| class="wikitable" border="1"
+
|-
 +
| 100 || SetSystemProgramIdentification ||
 
|-
 
|-
! Offset
+
| 101 || [7.0.0+] RefreshNotificationTokenAsync
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 110 || [4.0.0+] GetServiceEntryRequirementCache ||
 
|-
 
|-
| 0x8 || 0x10 || [[Account_services#Uid|Uid]]
+
| 111 || [4.0.0+] InvalidateServiceEntryRequirementCache ||
 
|-
 
|-
| 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7.
+
| 112 || [4.0.0-6.2.0] InvalidateTokenCache ||
 
|-
 
|-
| 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0.
+
| 113 || [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
 
|-
 
|-
| 0x1A || 0x6 || Unknown
+
| 120 || GetNintendoAccountId ||
|}
  −
 
  −
= DownloadTaskStatus =
  −
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
  −
 
  −
= ApplicationLaunchInfo =
  −
This is a 0x40-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 130 || GetNintendoAccountUserResourceCache ||
 
|-
 
|-
| 0x8 || 0x4 || Application version
+
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0xC || 0x4 || [[Process_Manager_services#LaunchFlags|LaunchFlags]], set to hard-coded value 0xB by [[#GetApplicationLaunchInfo]].
+
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0x10 || 0x1 || Application [[NCM_services#StorageId|StorageId]]
+
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
 
|-
 
|-
| 0x11 || 0x1 || Update [[NCM_services#StorageId|StorageId]]
+
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
 
|-
 
|-
| 0x12 || 0x2E ||  
+
| 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]].
 +
|-
 +
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 +
|-
 +
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 +
|-
 +
| 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".
 +
 +
{| 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 ||
 +
|-
 +
| 200 || [16.0.0+] ApplyAsyncWithAuthorizedToken ||
 +
|}
 +
 +
== 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]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
 +
 +
{| 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]].
 +
 +
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
 +
 +
{| 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.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || UpToDate
 +
|-
 +
| 1 || Updatable
 +
|}
 +
 +
[[qlaunch]] just checks whether this is 0.
 +
 +
= ApplicationOccupiedSize =
 +
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x20 * 4 || Array of [[#ApplicationOccupiedSizeEntity]]
 +
|}
 +
 +
= ApplicationOccupiedSizeEntity =
 +
This is "nn::ns::ApplicationOccupiedSizeEntity". This is a 0x20-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x1 || [[NCM_services#StorageId|StorageId]]
 +
|-
 +
| 0x1 || 0x7 || Reserved
 +
|-
 +
| 0x8 || 0x8 || AppSize
 +
|-
 +
| 0x10 || 0x8 || PatchSize
 +
|-
 +
| 0x18 || 0x8 || AocSize
 +
|}
 +
 +
= ProgressForDeleteUserSaveDataAll =
 +
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || StartedAt
 +
|-
 +
| 0x8 || 0x4 || Count
 +
|-
 +
| 0xC || 0x4 || Reserved
 +
|-
 +
| 0x10 || 0x8 || SizeInBytes
 +
|-
 +
| 0x18 || 0x1 || IsSystem
 +
|-
 +
| 0x19 || 0x7 || Reserved
 +
|-
 +
| 0x20 || 0x8 || ApplicationId
 +
|}
 +
 +
= ApplicationViewDeprecated =
 +
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x8 || 0x4 || Version
 +
|-
 +
| 0xC || 0x4 || [[#ApplicationViewFlag|Flag]]
 +
|-
 +
| 0x10 || 0x18 || [[#ApplicationDownloadProgress|Progress]]
 +
|-
 +
| 0x28 || 0x18 || [[#ApplicationApplyDeltaProgress|ApplyProgress]]
 +
|}
 +
 +
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.
 +
|}
 +
 +
= ApplicationViewFlag =
 +
This is "nn::ns::ApplicationViewFlag". This is a 32-bit flag.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Bit
 +
! Description
 +
|-
 +
| 0
 +
|
 +
|-
 +
| 1
 +
|
 +
|-
 +
| 2
 +
|
 +
|-
 +
| 3
 +
|
 +
|-
 +
| 4
 +
|
 +
|-
 +
| 5
 +
|
 +
|-
 +
| 6
 +
|
 +
|-
 +
| 7
 +
|
 +
|-
 +
| 8
 +
|
 +
|-
 +
| 9
 +
|
 +
|-
 +
| 10
 +
|
 +
|-
 +
| 11
 +
|
 +
|-
 +
| 12
 +
|
 +
|-
 +
| 13
 +
|
 +
|-
 +
| 14
 +
|
 +
|-
 +
| 15
 +
|
 +
|-
 +
| 16
 +
|
 +
|-
 +
| 17
 +
|
 +
|}
 +
 +
= ApplicationDownloadProgress =
 +
This is "nn::ns::ApplicationDownloadProgress". This is a 0x18-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || Downloaded
 +
|-
 +
| 0x8 || 0x8 || Total
 +
|-
 +
| 0x10 || 0x4 || LastResult
 +
|-
 +
| 0x14 || 0x1 || [[#ApplicationDownloadState|State]]
 +
|-
 +
| 0x15 || 0x3 || Reserved
 +
|}
 +
 +
= ApplicationApplyDeltaProgress =
 +
This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || Applied
 +
|-
 +
| 0x8 || 0x8 || Total
 +
|-
 +
| 0x10 || 0x4 || LastResult
 +
|-
 +
| 0x14 || 0x1 || [[#ApplicationApplyDeltaState|State]]
 +
|-
 +
| 0x15 || 0x3 || Reserved
 +
|}
 +
 +
= ApplicationDownloadState =
 +
This is "nn::ns::ApplicationDownloadState". This is an u8.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || Runnable
 +
|-
 +
| 1 || Suspended
 +
|-
 +
| 2 || NotEnoughSpace
 +
|-
 +
| 3 || Fatal
 +
|-
 +
| 4 || Finished
 +
|}
 +
 +
= ApplicationApplyDeltaState =
 +
This is "nn::ns::ApplicationApplyDeltaState". This is an u8.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || Applying
 +
|-
 +
| 1 || Suspended
 +
|-
 +
| 2 || NotEnoughSpace
 +
|-
 +
| 3 || Fatal
 +
|-
 +
| 4 || NoTask
 +
|-
 +
| 5 || WaitApply
 +
|-
 +
| 6 || Applied
 +
|}
 +
 +
= 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
 +
|}
 +
 +
= ApplicationResourceType =
 +
This is "nn::ns::ApplicationResourceType". This is an u8.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || ApplicationResource
 +
|-
 +
| 1 || MicroApplicationResource
 +
|}
 +
 +
= ApplicationErrorCodeCategory =
 +
This is "nn::ns::ApplicationErrorCodeCategory". This is an u64.
 +
 +
= NoDownloadRightsErrorResolution =
 +
This is "nn::ns::NoDownloadRightsErrorResolution".
 +
 +
= BackgroundNetworkUpdateState =
 +
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || None
 +
|-
 +
| 1 || InProgress
 +
|-
 +
| 2 || Ready
 +
|}
 +
 +
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 =
 +
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x8 || Loaded (this value can be larger than total_size when the async operation is finishing and 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 || Total (this field is only valid when >0)
 +
|}
 +
 +
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 =
 +
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
 +
 +
{| 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.
 +
|}
 +
 +
= ApplicationDeliveryInfo =
 +
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
 +
 +
{| 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]].
 +
|}
 +
 +
= LatestSystemUpdate =
 +
This is "nn::ns::LatestSystemUpdate". This is an u8.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || UpToDate
 +
|-
 +
| 1 || Downloaded
 +
|-
 +
| 2 || NeedsDownload
 +
|}
 +
 +
= 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.
 +
 +
{| 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
 +
|}
 +
 +
[[qlaunch]] only uses +0x18/+0x19 in this struct.
 +
 +
= DownloadTaskStatus =
 +
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0 || 0x10 || Uuid
 +
|-
 +
| 0x10 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 +
|-
 +
| 0x18 || 0x1 || [[#DownloadTaskStatusDetail|Detail]]
 +
|-
 +
| 0x19 || 0x1 || NeedsCleanup
 +
|-
 +
| 0x1A || 0x2 || Reserved
 +
|-
 +
| 0x1C || 0x4 || Result
 +
|}
 +
 +
= DownloadTaskStatusDetail =
 +
This is "nn::ns::DownloadTaskStatusDetail". This is an u8.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || Created
 +
|-
 +
| 1 || Added
 +
|-
 +
| 2 || AlreadyExists
 +
|-
 +
| 3 || Failed
 +
|}
 +
 +
= 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 =
 +
This is a 0x80-byte struct.
 +
 +
{| 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?
 +
|}
 +
 +
= ProfileBase =
 +
This is a 0x38-byte struct.
 +
 +
{| 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.
 +
|}
 +
 +
= Uid =
 +
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
 +
 +
= Notes =
 +
[[Process_Manager_services|pm:bm]] GetBootMode is used to determine whether aoc:u is available (see above). This value is also passed to thread "nn.ns.DelayedInitialization", which calls various funcs depending on the BootMode in various cases.
 +
 +
The "nn.ns.DelayedInitialization" thread uses BootMode as follows (this also handles various other initialization):
 +
* Initializes [[NPNS_services|npns:s]] only for BootMode Normal/Maintenance.
 +
* Initializes the hosted acc:* services and service [[Account_services|acc:su]] only for BootMode Normal/Maintenance.
 +
* Calls a func only for BootMode Normal.
 +
* Initializes [[ETicket_services|es]] and [[Shared_Database_services|avm]] only for BootMode Normal/Maintenance.
 +
 +
The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. Otherwise for BootMode Normal it continues with various initialization, including gamecard handling which handles launching the gamecard title in certain conditions (this is the only time ns launches anything with pgl outside of service cmds).
 +
 +
In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds.
    
[[Category:Services]]
 
[[Category:Services]]
77

edits

Navigation menu