Changes

Jump to navigation Jump to search
no edit summary
Line 767: Line 767:  
|-
 
|-
 
| 420 || [19.0.0+] CloneApplicationControlDataCacheForDebug
 
| 420 || [19.0.0+] CloneApplicationControlDataCacheForDebug
 +
|-
 +
| 421 || [20.0.0+]
 +
|-
 +
| 422 || [20.0.0+]
 +
|-
 +
| 423 || [20.0.0+]
 +
|-
 +
| 424 || [20.0.0+]
 +
|-
 +
| 425 || [20.0.0+]
 +
|-
 +
| 426 || [20.0.0+]
 +
|-
 +
| 427 || [20.0.0+]
 
|-
 
|-
 
| 502 || [[#RequestCheckGameCardRegistration]]
 
| 502 || [[#RequestCheckGameCardRegistration]]
Line 789: Line 803:  
|-
 
|-
 
| 512 || [19.0.0+] IsGameCardApplicationRunning
 
| 512 || [19.0.0+] IsGameCardApplicationRunning
 +
|-
 +
| 513 || [20.0.0+]
 +
|-
 +
| 514 || [20.0.0+]
 +
|-
 +
| 515 || [20.0.0+]
 
|-
 
|-
 
| 600 || [[#CountApplicationContentMeta]]
 
| 600 || [[#CountApplicationContentMeta]]
Line 863: Line 883:  
|-
 
|-
 
| 916 || [11.0.0+] IsApplicationAutoDeleteDisabled
 
| 916 || [11.0.0+] IsApplicationAutoDeleteDisabled
 +
|-
 +
| 917 || [20.0.0+]
 +
|-
 +
| 918 || [20.0.0+]
 +
|-
 +
| 919 || [20.0.0+]
 +
|-
 +
| 920 || [20.0.0+]
 +
|-
 +
| 921 || [20.0.0+]
 +
|-
 +
| 922 || [20.0.0+]
 +
|-
 +
| 923 || [20.0.0+]
 +
|-
 +
| 928 || [20.0.0+]
 +
|-
 +
| 929 || [20.0.0+]
 +
|-
 +
| 930 || [20.0.0+]
 +
|-
 +
| 931 || [20.0.0+]
 
|-
 
|-
 
| 1000 || [[#RequestVerifyApplicationDeprecated]]
 
| 1000 || [[#RequestVerifyApplicationDeprecated]]
Line 913: Line 955:  
|-
 
|-
 
| 1506 || [9.0.0+] GetSdCardStartupStatus
 
| 1506 || [9.0.0+] GetSdCardStartupStatus
 +
|-
 +
| 1508 || [20.0.0+]
 +
|-
 +
| 1509 || [20.0.0+]
 +
|-
 +
| 1510 || [20.0.0+]
 +
|-
 +
| 1511 || [20.0.0+]
 +
|-
 +
| 1512 || [20.0.0+]
 
|-
 
|-
 
| 1600 || GetSystemSeedForPseudoDeviceId
 
| 1600 || GetSystemSeedForPseudoDeviceId
Line 929: Line 981:  
|-
 
|-
 
| 1705 || [11.0.0+] [[#IsPatchAutoDeletableApplication]]
 
| 1705 || [11.0.0+] [[#IsPatchAutoDeletableApplication]]
 +
|-
 +
| 1706 || [20.0.0+]
 
|-
 
|-
 
| 1800 || IsNotificationSetupCompleted
 
| 1800 || IsNotificationSetupCompleted
Line 983: Line 1,037:  
|-
 
|-
 
| 2018 || [5.0.0+] [[#GetApplicationDeliveryInfoHash]]
 
| 2018 || [5.0.0+] [[#GetApplicationDeliveryInfoHash]]
 +
|-
 +
| 2019 || [20.0.0+]
 
|-
 
|-
 
| 2050 || [6.0.0+] [[#GetApplicationRightsOnClient]]
 
| 2050 || [6.0.0+] [[#GetApplicationRightsOnClient]]
 
|-
 
|-
 
| 2051 || [9.0.0+] InvalidateRightsIdCache
 
| 2051 || [9.0.0+] InvalidateRightsIdCache
 +
|-
 +
| 2052 || [20.0.0+]
 +
|-
 +
| 2053 || [20.0.0+]
 
|-
 
|-
 
| 2100 || [6.0.0+] [[#GetApplicationTerminateResult]]
 
| 2100 || [6.0.0+] [[#GetApplicationTerminateResult]]
Line 1,055: Line 1,115:  
|-
 
|-
 
| 2361 || [19.0.0+] GetMaxApplicationDownloadTaskCount
 
| 2361 || [19.0.0+] GetMaxApplicationDownloadTaskCount
 +
|-
 +
| 2362 || [20.0.0+]
 +
|-
 +
| 2363 || [20.0.0+]
 +
|-
 +
| 2364 || [20.0.0+]
 +
|-
 +
| 2365 || [20.0.0+]
 +
|-
 +
| 2366 || [20.0.0+]
 +
|-
 +
| 2367 || [20.0.0+]
 +
|-
 +
| 2368 || [20.0.0+]
 
|-
 
|-
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
 
| 2400 || [8.0.0+] [[#GetPromotionInfo]]
Line 1,060: Line 1,134:  
| 2401 || [8.0.0+] CountPromotionInfo
 
| 2401 || [8.0.0+] CountPromotionInfo
 
|-
 
|-
| 2402 || [8.0.0+] ListPromotionInfo
+
| 2402 || [8.0.0+] [[#ListPromotionInfo|ListPromotionInfo]]
 
|-
 
|-
 
| 2403 || [8.0.0+] [[#ImportPromotionJsonForDebug]]
 
| 2403 || [8.0.0+] [[#ImportPromotionJsonForDebug]]
Line 1,095: Line 1,169:  
|-
 
|-
 
| 2524 || [19.0.0+]  
 
| 2524 || [19.0.0+]  
 +
|-
 +
| 2525 || [20.0.0+]
 
|-
 
|-
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
 
| 2800 || [9.0.0+] GetApplicationIdOfPreomia
Line 1,142: Line 1,218:  
| 3105 || [18.0.0+] GetApplicationStartupMovie
 
| 3105 || [18.0.0+] GetApplicationStartupMovie
 
|-
 
|-
| 5000 || [18.0.0+]  
+
| 4000 || [20.0.0+]
 +
|-
 +
| 4004 || [20.0.0+]
 +
|-
 +
| 4006 || [20.0.0+]
 +
|-
 +
| 4007 || [20.0.0+]
 +
|-
 +
| 4008 || [20.0.0+]
 +
|-
 +
| 4009 || [20.0.0+]
 +
|-
 +
| 4010 || [20.0.0+]
 +
|-
 +
| 4011 || [20.0.0+]
 +
|-
 +
| 4012 || [20.0.0+]
 +
|-
 +
| 4013 || [20.0.0+]
 +
|-
 +
| 4015 || [20.0.0+]
 +
|-
 +
| 4017 || [20.0.0+]
 +
|-
 +
| 4019 || [20.0.0+]
 +
|-
 +
| 4020 || [20.0.0+]
 +
|-
 +
| 4021 || [20.0.0+]
 +
|-
 +
| 4022 || [20.0.0+]
 +
|-
 +
| 4023 || [20.0.0+]
 +
|-
 +
| 4024 || [20.0.0+]
 
|-
 
|-
| 5001 || [18.0.0+]  
+
| 4025 || [20.0.0+]
 
|-
 
|-
| 9999 || [10.0.0-10.2.0] GetApplicationCertificate
+
| 4026 || [20.0.0+]
|}
+
|-
 
+
| 4027 || [20.0.0+]
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input.
+
|-
 
+
| 4028 || [20.0.0+]
==== GetApplicationRecordUpdateSystemEvent ====
+
|-
No input, returns an output Event handle with EventClearMode=1.
+
| 4029 || [20.0.0+]
 
+
|-
==== GetApplicationViewDeprecated ====
+
| 4030 || [20.0.0+]
Takes a type-0x6 output buffer containing an array of [[#ApplicationViewDeprecated]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
+
|-
 
+
| 4031 || [20.0.0+]
On newer system-versions this is the same as [[#GetApplicationView]], except this converts the output from the func called in the loop from [[#ApplicationView]] to [[#ApplicationViewDeprecated]].
+
|-
 
+
| 4032 || [20.0.0+]
==== DeleteApplicationEntity ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
| 4033 || [20.0.0+]
 
+
|-
==== DeleteApplicationCompletely ====
+
| 4034 || [20.0.0+]
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
|-
 
+
| 4035 || [20.0.0+]
==== DeleteRedundantApplicationEntity ====
+
|-
No input/output.
+
| 4037 || [20.0.0+]
 
+
|-
==== IsApplicationEntityMovable ====
+
| 4038 || [20.0.0+]
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool.
+
|-
 
+
| 4039 || [20.0.0+]
==== MoveApplicationEntity ====
+
|-
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], no output.
+
| 4040 || [20.0.0+]
 
+
|-
==== RequestApplicationUpdateInfo ====
+
| 4041 || [20.0.0+]
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
+
|-
 
+
| 4042 || [20.0.0+]
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]].
+
|-
 
+
| 4043 || [20.0.0+]
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.
+
|-
 
+
| 4044 || [20.0.0+]
==== CancelApplicationDownload ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
| 4045 || [20.0.0+]
 
+
|-
==== ResumeApplicationDownload ====
+
| 4046 || [20.0.0+]
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
|-
 
+
| 4049 || [20.0.0+]
==== CheckApplicationLaunchVersion ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
| 4050 || [20.0.0+]
 
+
|-
==== CalculateApplicationDownloadRequiredSize ====
+
| 4051 || [20.0.0+]
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
+
|-
 
+
| 4052 || [20.0.0+]
==== CleanupSdCard ====
+
|-
No input/output.
+
| 4053 || [20.0.0+]
 
+
|-
==== GetSdCardMountStatusChangedEvent ====
+
| 4054 || [20.0.0+]
No input, returns an output Event handle with EventClearMode=0.
+
|-
 
+
| 4055 || [20.0.0+]
==== GetGameCardUpdateDetectionEvent ====
+
|-
No input, returns an output Event handle with EventClearMode=0.
+
| 4056 || [20.0.0+]
 
+
|-
==== DisableApplicationAutoDelete ====
+
| 4057 || [20.0.0+]
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
|-
 
+
| 4058 || [20.0.0+]
==== EnableApplicationAutoDelete ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
| 4059 || [20.0.0+]
 
+
|-
==== SetApplicationTerminateResult ====
+
| 4060 || [20.0.0+]
Takes an input u32 Result, an [[NCM_services#ApplicationId|ApplicationId]], no output.
+
|-
 
+
| 4061 || [20.0.0+]
==== ClearApplicationTerminateResult ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
| 4062 || [20.0.0+]
 
+
|-
==== GetLastSdCardMountUnexpectedResult ====
+
| 4063 || [20.0.0+]
No input/output.
+
|-
 
+
| 4064 || [20.0.0+]
==== GetRequestServerStopper ====
+
|-
No input, returns an output [[#IRequestServerStopper]].
+
| 4065 || [20.0.0+]
 +
|-
 +
| 4066 || [20.0.0+]
 +
|-
 +
| 4067 || [20.0.0+]
 +
|-
 +
| 4068 || [20.0.0+]
 +
|-
 +
| 4069 || [20.0.0+]
 +
|-
 +
| 4070 || [20.0.0+]
 +
|-
 +
| 4071 || [20.0.0+]
 +
|-
 +
| 4072 || [20.0.0+]
 +
|-
 +
| 4073 || [20.0.0+]
 +
|-
 +
| 4074 || [20.0.0+]
 +
|-
 +
| 4075 || [20.0.0+]
 +
|-
 +
| 4076 || [20.0.0+]
 +
|-
 +
| 4077 || [20.0.0+]
 +
|-
 +
| 4078 || [20.0.0+]
 +
|-
 +
| 4079 || [20.0.0+]
 +
|-
 +
| 4080 || [20.0.0+]
 +
|-
 +
| 4081 || [20.0.0+]
 +
|-
 +
| 4083 || [20.0.0+]
 +
|-
 +
| 4084 || [20.0.0+]
 +
|-
 +
| 4085 || [20.0.0+]
 +
|-
 +
| 4086 || [20.0.0+]
 +
|-
 +
| 4087 || [20.0.0+]
 +
|-
 +
| 4088 || [20.0.0+]
 +
|-
 +
| 4089 || [20.0.0+]
 +
|-
 +
| 4090 || [20.0.0+]
 +
|-
 +
| 4091 || [20.0.0+]
 +
|-
 +
| 4092 || [20.0.0+]
 +
|-
 +
| 4093 || [20.0.0+]
 +
|-
 +
| 4094 || [20.0.0+]
 +
|-
 +
| 4095 || [20.0.0+]
 +
|-
 +
| 4096 || [20.0.0+]
 +
|-
 +
| 4097 || [20.0.0+]
 +
|-
 +
| 5000 || [18.0.0+]  
 +
|-
 +
| 5001 || [18.0.0+]  
 +
|-
 +
| 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 ====
 +
Takes a type-0x6 output buffer containing an array of [[#ApplicationViewDeprecated]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
 +
 
 +
On newer system-versions this is the same as [[#GetApplicationView]], except this converts the output from the func called in the loop from [[#ApplicationView]] to [[#ApplicationViewDeprecated]].
   −
==== CancelApplicationApplyDelta ====
+
==== DeleteApplicationEntity ====
 
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
 
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
==== ResumeApplicationApplyDelta ====
+
==== DeleteApplicationCompletely ====
 
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
 
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
==== CalculateApplicationApplyDeltaRequiredSize ====
+
==== DeleteRedundantApplicationEntity ====
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
+
No input/output.
   −
==== ResumeAll ====
+
==== IsApplicationEntityMovable ====
No input/output.
+
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool.
   −
==== GetStorageSize ====
+
==== MoveApplicationEntity ====
Takes an input u8 [[NCM_services#StorageId|StorageId]], returns two output s64s.
+
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
This temporarily mounts the [[Filesystem_services#OpenContentStorageFileSystem|ContentStorage]] specified by the StorageId (must be BuiltInUser or SdCard). The two output s64s are the output from [[Filesystem_services#GetTotalSpaceSize|GetTotalSpaceSize]] and [[Filesystem_services#GetFreeSpaceSize|GetFreeSpaceSize]] with this ContentStorage, with it this being unmounted afterwards.
+
==== RequestApplicationUpdateInfo ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
   −
==== RequestUpdateApplication2 ====
+
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]].
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
     −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
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.
   −
==== LaunchApplication ====
+
==== CancelApplicationDownload ====
Takes an input u8 ProgramIndex, an input [[#ApplicationLaunchInfo]], returns an output u64.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[18.0.0+] Now takes a total of 0x58 bytes of input.
+
==== ResumeApplicationDownload ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[19.0.0+] Now takes a total of 0x88 bytes of input.
+
==== CheckApplicationLaunchVersion ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
==== GetApplicationLaunchInfo ====
+
==== CalculateApplicationDownloadRequiredSize ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
+
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
   −
[18.0.0+] Now returns a total of 0x50 bytes of output.
+
==== CleanupSdCard ====
 +
No input/output.
   −
[19.0.0+] Now returns a total of 0x80 bytes of output.
+
==== GetSdCardMountStatusChangedEvent ====
 +
No input, returns an output Event handle with EventClearMode=0.
   −
==== AcquireApplicationLaunchInfo ====
+
==== GetGameCardUpdateDetectionEvent ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
+
No input, returns an output Event handle with EventClearMode=0.
   −
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.
+
==== DisableApplicationAutoDelete ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[18.0.0+] Now returns a total of 0x50 bytes of output.
+
==== EnableApplicationAutoDelete ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[19.0.0+] Now returns a total of 0x80 bytes of output.
+
==== SetApplicationTerminateResult ====
 +
Takes an input u32 Result, an [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
==== GetMainApplicationProgramIndexByApplicationLaunchInfo ====
+
==== ClearApplicationTerminateResult ====
[18.0.0+] Now takes a total of 0x50 bytes of input.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[19.0.0+] Now returns a total of 0x80 bytes of output.
+
==== GetLastSdCardMountUnexpectedResult ====
 
  −
==== LaunchDevMenu ====
   
No input/output.
 
No input/output.
   −
This is used by AM cmd [[Applet_Manager_services#LaunchDevMenu|LaunchDevMenu]].
+
==== GetRequestServerStopper ====
 +
No input, returns an output [[#IRequestServerStopper]].
   −
This loads ProgramIds from [[System_Settings|system-settings]] <code>ns.applet!devmenu_id</code> and <code>ns.applet!devoverlaydisp_id</code>, which only exists on devunits. An error is thrown if loading these fail.
+
==== CancelApplicationApplyDelta ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[[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.
+
==== ResumeApplicationApplyDelta ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
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.
+
==== CalculateApplicationApplyDeltaRequiredSize ====
 +
Takes an input u8 [[NCM_services#StorageId|StorageId]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output s64.
   −
==== DeleteUserSaveDataAll ====
+
==== ResumeAll ====
Takes an input [[Account_services#Uid|Uid]], returns an output [[#IProgressMonitorForDeleteUserSaveDataAll]].
+
No input/output.
   −
On success, [[#IProgressMonitorForDeleteUserSaveDataAll]] GetProgress is used with the output being copied into object state.
+
==== GetStorageSize ====
 +
Takes an input u8 [[NCM_services#StorageId|StorageId]], returns two output s64s.
   −
==== DeleteUserSystemSaveData ====
+
This temporarily mounts the [[Filesystem_services#OpenContentStorageFileSystem|ContentStorage]] specified by the StorageId (must be BuiltInUser or SdCard). The two output s64s are the output from [[Filesystem_services#GetTotalSpaceSize|GetTotalSpaceSize]] and [[Filesystem_services#GetFreeSpaceSize|GetFreeSpaceSize]] with this ContentStorage, with it this being unmounted afterwards.
Takes an input [[Account_services#Uid|Uid]], an u64 SystemSaveDataId, no output.
     −
==== DeleteSaveData ====
+
==== RequestUpdateApplication2 ====
Takes an input u8 [[Filesystem_services#SaveDataSpaceId|SaveDataSpaceId]], an u64 SaveDataId, no output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
==== UnregisterNetworkServiceAccount ====
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
Takes an input [[Account_services#Uid|Uid]], no output.
     −
==== UnregisterNetworkServiceAccountWithUserSaveDataDeletion ====
+
==== LaunchApplication ====
Takes an input [[Account_services#Uid|Uid]], no output.
+
Takes an input u8 ProgramIndex, an input [[#ApplicationLaunchInfo]], returns an output u64.
   −
==== LaunchLibraryApplet ====
+
[18.0.0+] Now takes a total of 0x58 bytes of input.
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.
+
[19.0.0+] Now takes a total of 0x88 bytes of input.
   −
This is used by [[Applet_Manager_services|AM]].
+
==== GetApplicationLaunchInfo ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
   −
==== LaunchSystemApplet ====
+
[18.0.0+] Now returns a total of 0x50 bytes of output.
No input, returns an output u64.
     −
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>.
+
[19.0.0+] Now returns a total of 0x80 bytes of output.
   −
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.
+
==== AcquireApplicationLaunchInfo ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationLaunchInfo]].
   −
This is used by [[Applet_Manager_services|AM]].
+
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.
   −
==== LaunchOverlayApplet ====
+
[18.0.0+] Now returns a total of 0x50 bytes of output.
No input, returns an output u64.
     −
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>.
+
[19.0.0+] Now returns a total of 0x80 bytes of output.
   −
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.
+
==== GetMainApplicationProgramIndexByApplicationLaunchInfo ====
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
   −
This is used by [[Applet_Manager_services|AM]].
+
[19.0.0+] Now returns a total of 0x80 bytes of output.
   −
==== RequestDownloadApplicationControlData ====
+
==== LaunchDevMenu ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
+
No input/output.
   −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
This is used by AM cmd [[Applet_Manager_services#LaunchDevMenu|LaunchDevMenu]].
   −
==== GetApplicationControlProperty ====
+
This loads ProgramIds from [[System_Settings|system-settings]] <code>ns.applet!devmenu_id</code> and <code>ns.applet!devoverlaydisp_id</code>, which only exists on devunits. An error is thrown if loading these fail.
[18.0.0+] Now takes a total of 0x58 bytes of input.
     −
==== ListApplicationTitle ====
+
[[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.
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], an u8 [[#ApplicationControlSource]], an u64 size, returns an output Event handle and an [[#IAsyncValue]].
     −
[[qlaunch]] uses value 0x1 for the u8.
+
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.
   −
The user-process creates the TransferMemory with permissions=R--.
+
==== DeleteUserSaveDataAll ====
 +
Takes an input [[Account_services#Uid|Uid]], returns an output [[#IProgressMonitorForDeleteUserSaveDataAll]].
   −
The data available with [[#IAsyncValue]] Get is a s32 for the offset within the TransferMemory where the output data is located, GetSize returns the total byte-size of the data located here. The data located here is the [[NACP_Format|NACP]] title-entry for each specified ApplicationId.
+
On success, [[#IProgressMonitorForDeleteUserSaveDataAll]] GetProgress is used with the output being copied into object state.
   −
The TransferMemory size must be at least: count*sizeof([[NACP_Format|title-entry]]) + count*sizeof(u64) + count*[[#GetApplicationControlData|0x24000]].
+
==== DeleteUserSystemSaveData ====
 +
Takes an input [[Account_services#Uid|Uid]], an u64 SystemSaveDataId, no output.
   −
This is essentially an async wrapper for [[#GetApplicationControlData]], with support for multiple ApplicationIds.
+
==== DeleteSaveData ====
 +
Takes an input u8 [[Filesystem_services#SaveDataSpaceId|SaveDataSpaceId]], an u64 SaveDataId, no output.
   −
==== ListApplicationIcon ====
+
==== UnregisterNetworkServiceAccount ====
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], an u8 [[#ApplicationControlSource]], an u64 size, returns an output Event handle and an [[#IAsyncValue]].
+
Takes an input [[Account_services#Uid|Uid]], no output.
   −
The user-process creates the TransferMemory with permissions=R--.
+
==== UnregisterNetworkServiceAccountWithUserSaveDataDeletion ====
 +
Takes an input [[Account_services#Uid|Uid]], no output.
 +
 
 +
==== LaunchLibraryApplet ====
 +
Takes an input u64 [[NCM_services#ProgramId|ProgramId]], returns an output u64.
   −
The data available with [[#IAsyncValue]] Get is a s32 for the offset within the TransferMemory where the output data is located, GetSize returns the total byte-size of the data located here. This data is: an u64 for total entries, an array of u64s for each icon size, then the icon JPEGs for the specified ApplicationIds.
+
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.
   −
The TransferMemory size must be at least: 0x4 + count*sizeof(u64) + count*[[#GetApplicationControlData|0x20000]] + count*sizeof(u64) + [[#GetApplicationControlData|0x24000]].
+
This is used by [[Applet_Manager_services|AM]].
   −
This is essentially an async wrapper for [[#GetApplicationControlData]], with support for multiple ApplicationIds.
+
==== LaunchSystemApplet ====
 +
No input, returns an output u64.
   −
==== RequestCheckGameCardRegistration ====
+
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>.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
     −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
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.
   −
==== RequestGameCardRegistrationGoldPoint ====
+
This is used by [[Applet_Manager_services|AM]].
Takes an input [[Account_services#Uid|Uid]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
     −
The data that can be read from the [[#IAsyncValue]] is 4-bytes.
+
==== LaunchOverlayApplet ====
 +
No input, returns an output u64.
   −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
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>.
   −
==== RequestRegisterGameCard ====
+
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.
Takes an input s32, an [[Account_services#Uid|Uid]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
     −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
This is used by [[Applet_Manager_services|AM]].
   −
==== GetGameCardMountFailureEvent ====
+
==== RequestDownloadApplicationControlData ====
No input, returns an output Event handle with EventClearMode=0.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
==== IsGameCardInserted ====
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
No input, returns an output u8 bool.
     −
==== EnsureGameCardAccess ====
+
==== GetApplicationControlProperty ====
No input/output.
+
[18.0.0+] Now takes a total of 0x58 bytes of input.
   −
==== GetLastGameCardMountFailureResult ====
+
==== ListApplicationTitle ====
No input/output.
+
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], an u8 [[#ApplicationControlSource]], an u64 size, returns an output Event handle and an [[#IAsyncValue]].
   −
==== ListApplicationIdOnGameCard ====
+
[[qlaunch]] uses value 0x1 for the u8.
Takes a type-0x6 output buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], returns an output s32 for total output entries.
     −
==== GetGameCardPlatformRegion ====
+
The user-process creates the TransferMemory with permissions=R--.
No input, returns an u8 '''GameCardPlatformRegion''' (0x00 = Global, 0x01 = China).
     −
This calls [[Filesystem_services#IDeviceOperator|fsp-srv IDeviceOperator]] GetGameCardCompatibilityType and returns the result.
+
The data available with [[#IAsyncValue]] Get is a s32 for the offset within the TransferMemory where the output data is located, GetSize returns the total byte-size of the data located here. The data located here is the [[NACP_Format|NACP]] title-entry for each specified ApplicationId.
   −
==== ListAvailableAddOnContent ====
+
The TransferMemory size must be at least: count*sizeof([[NACP_Format|title-entry]]) + count*sizeof(u64) + count*[[#GetApplicationControlData|0x24000]].
[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.
+
This is essentially an async wrapper for [[#GetApplicationControlData]], with support for multiple ApplicationIds.
   −
==== RequestDownloadTaskListData ====
+
==== ListApplicationIcon ====
No input, returns an output Event handle and an [[#IAsyncValue]].
+
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], an u8 [[#ApplicationControlSource]], an u64 size, returns an output Event handle and an [[#IAsyncValue]].
   −
==== TouchApplication ====
+
The user-process creates the TransferMemory with permissions=R--.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
     −
==== IsApplicationUpdateRequested ====
+
The data available with [[#IAsyncValue]] Get is a s32 for the offset within the TransferMemory where the output data is located, GetSize returns the total byte-size of the data located here. This data is: an u64 for total entries, an array of u64s for each icon size, then the icon JPEGs for the specified ApplicationIds.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool and an u32.
     −
The output u32 is only valid when the output bool is set.
+
The TransferMemory size must be at least: 0x4 + count*sizeof(u64) + count*[[#GetApplicationControlData|0x20000]] + count*sizeof(u64) + [[#GetApplicationControlData|0x24000]].
   −
==== WithdrawApplicationUpdateRequest ====
+
This is essentially an async wrapper for [[#GetApplicationControlData]], with support for multiple ApplicationIds.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
     −
==== RequestVerifyApplicationDeprecated ====
+
==== RequestCheckGameCardRegistration ====
Takes an input TransferMemory handle, an [[NCM_services#ApplicationId|ApplicationId]], an u64 size, returns an output Event handle and an [[#IProgressAsyncResult]].
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
On newer system-versions this calls the same func as [[#RequestVerifyApplication]], with the u32 value set to 0x7.
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
==== RequestVerifyAddOnContentsRights ====
+
==== RequestGameCardRegistrationGoldPoint ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IProgressAsyncResult]].
+
Takes an input [[Account_services#Uid|Uid]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
   −
==== RequestVerifyApplication ====
+
The data that can be read from the [[#IAsyncValue]] is 4-bytes.
Takes an input TransferMemory handle, an u32, an [[NCM_services#ApplicationId|ApplicationId]], an u64 size, returns an output Event handle and an [[#IProgressAsyncResult]].
     −
Official sw creates the TransferMemory with an user-specified buffer with permissions=0. [[qlaunch]] uses buffer size 0x100000.
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
Official sw has an additional wrapper func which calls the original wrapper func, this uses value 0x7 for the u32. This is the same func used by [[qlaunch]].
+
==== RequestRegisterGameCard ====
 +
Takes an input s32, an [[Account_services#Uid|Uid]], an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
==== IsAnyApplicationEntityInstalled ====
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool.
     −
==== CleanupUnavailableAddOnContents ====
+
==== GetGameCardMountFailureEvent ====
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
+
No input, returns an output Event handle with EventClearMode=0.
   −
==== RequestMoveApplicationEntity ====
+
==== IsGameCardInserted ====
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]].
+
No input, returns an output u8 bool.
   −
The TransferMemory uses permissions=0.
+
==== EnsureGameCardAccess ====
 +
No input/output.
   −
==== EstimateSizeToMove ====
+
==== GetLastGameCardMountFailureResult ====
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.
+
No input/output.
   −
This calls a func also used by [[#RequestMoveApplicationEntity]], then calls another func.
+
==== ListApplicationIdOnGameCard ====
 +
Takes a type-0x6 output buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], returns an output s32 for total output entries.
   −
==== FormatSdCard ====
+
==== GetGameCardPlatformRegion ====
No input/output.
+
No input, returns an u8 '''GameCardPlatformRegion''' (0x00 = Global, 0x01 = China).
   −
==== NeedsSystemUpdateToFormatSdCard ====
+
This calls [[Filesystem_services#IDeviceOperator|fsp-srv IDeviceOperator]] GetGameCardCompatibilityType and returns the result.
No input, returns an output u8 bool.
     −
==== GetLastSdCardFormatUnexpectedResult ====
+
==== ListAvailableAddOnContent ====
No input/output.
+
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
   −
==== GetApplicationView ====
+
[15.0.0+] This now takes a total of 0x8-bytes of input instead of a total of 0x10-bytes of input.
Takes a type-0x6 output buffer containing an array of [[#ApplicationView]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
     −
==== GetApplicationViewDownloadErrorContext ====
+
==== RequestDownloadTaskListData ====
Takes a type-0x16 output buffer containg an [[Error_Applet#ErrorContext|ErrorContext]], an u64 [[NCM_services#ApplicationId|ApplicationId]], no output.
+
No input, returns an output Event handle and an [[#IAsyncValue]].
   −
==== GetApplicationViewWithPromotionInfo ====
+
==== TouchApplication ====
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 an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
==== IsPatchAutoDeletableApplication ====
+
==== IsApplicationUpdateRequested ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output bool.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool and an u32.
   −
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.
+
The output u32 is only valid when the output bool is set.
   −
==== ListLastNotificationInfo ====
+
==== WithdrawApplicationUpdateRequest ====
Takes a type-0x6 buffer containing an array with struct entry size 0x90-bytes. Returns 4-bytes of output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
[19.0.0+] The struct size is now 0x98-bytes.
+
==== RequestVerifyApplicationDeprecated ====
 +
Takes an input TransferMemory handle, an [[NCM_services#ApplicationId|ApplicationId]], an u64 size, returns an output Event handle and an [[#IProgressAsyncResult]].
   −
==== ListNotificationTask ====
+
On newer system-versions this calls the same func as [[#RequestVerifyApplication]], with the u32 value set to 0x7.
Takes a type-0x6 buffer containing an array with struct entry size 0xB0-bytes. Returns 4-bytes of output.
     −
[19.0.0+] The struct size is now 0xB8-bytes.
+
==== RequestVerifyAddOnContentsRights ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IProgressAsyncResult]].
   −
==== RequestDownloadApplicationPrepurchasedRights ====
+
==== RequestVerifyApplication ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
+
Takes an input TransferMemory handle, an u32, an [[NCM_services#ApplicationId|ApplicationId]], an u64 size, returns an output Event handle and an [[#IProgressAsyncResult]].
   −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
Official sw creates the TransferMemory with an user-specified buffer with permissions=0. [[qlaunch]] uses buffer size 0x100000.
   −
==== GetSystemDeliveryInfo ====
+
Official sw has an additional wrapper func which calls the original wrapper func, this uses value 0x7 for the u32. This is the same func used by [[qlaunch]].
Takes a type-0x16 output buffer containing a [[#SystemDeliveryInfo]], no output.
     −
This generates a [[#SystemDeliveryInfo]] using the currently installed SystemUpdate meta title.
+
==== IsAnyApplicationEntityInstalled ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u8 bool.
   −
==== SelectLatestSystemDeliveryInfo ====
+
==== CleanupUnavailableAddOnContents ====
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], a type-0x5 input buffer containing an array of [[#SystemDeliveryInfo]], a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], and returns an output s32.
+
Takes an input u64 [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], no output.
   −
This determines the latest version from the input [[#ApplicationDeliveryInfo]] array, using value 0 if the array is empty. If this value is less than a state field, the state field value is used instead. Then this selects a [[#SystemDeliveryInfo]] with the latest version from the input array, where the minimum version is the previously mentioned value. The version must also be also be at least the version value from the type-0x15 [[#SystemDeliveryInfo]] buffer. This also does various validation, etc. The output s32 is an index in that array for the selected entry, -1 if none found.
+
==== 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]].
   −
==== VerifyDeliveryProtocolVersion ====
+
The TransferMemory uses permissions=0.
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], no output.
     −
This validates the [[#SystemDeliveryInfo]] HMAC and the protocol-version fields. Then the meta version is compared with a state field, an error is returned on match otherwise 0 is returned.
+
==== 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.
   −
==== GetApplicationDeliveryInfo ====
+
This calls a func also used by [[#RequestMoveApplicationEntity]], then calls another func.
Takes a type-0x6 output buffer containing an array of [[#ApplicationDeliveryInfo]], an input u32 bitmask <code>nn::ns::ApplicationDeliveryAttributeTag</code>, an [[NCM_services#ApplicationId|ApplicationId]], and returns an output s32 total_out.
     −
An error is thrown if any bit is set in ApplicationDeliveryAttributeTag besides bit1. The output array-count must be at least 1: only 1 entry will be written to this array (hence on success total_out will also only be 1 on success).
+
==== FormatSdCard ====
 +
No input/output.
   −
==== HasAllContentsToDeliver ====
+
==== NeedsSystemUpdateToFormatSdCard ====
Takes a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], returns an output u8 bool.
+
No input, returns an output u8 bool.
   −
The array-count must match 1. After validating the [[#ApplicationDeliveryInfo]], the output bool is set to u32 [[#ApplicationDeliveryInfo]]+0x1C & 0x10000002 != 0x2, then this returns 0.
+
==== GetLastSdCardFormatUnexpectedResult ====
 +
No input/output.
   −
==== CompareApplicationDeliveryInfo ====
+
==== GetApplicationView ====
Takes two type-0x5 input buffers containing an array of [[#ApplicationDeliveryInfo]], returns an output s32.
+
Takes a type-0x6 output buffer containing an array of [[#ApplicationView]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], no output.
   −
The array-count for both buffers must be 1, otherwise an error is returned.
+
==== GetApplicationViewDownloadErrorContext ====
 +
Takes a type-0x16 output buffer containg an [[Error_Applet#ErrorContext|ErrorContext]], an u64 [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
Both [[#ApplicationDeliveryInfo]] are validated, then the application-version in the first/second buffer are compared. The output s32 is set to the comparison result: -1 for less than, 0 for equal, and 1 for higher than.
+
==== 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.
   −
==== CanDeliverApplication ====
+
==== IsPatchAutoDeletableApplication ====
Takes two type-0x5 input buffers containing an array of [[#ApplicationDeliveryInfo]], returns an output u8 bool.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output bool.
   −
The array-count for the second buffer must be 1 and the array-count for the first buffer must be <=1, otherwise an error is returned. If the array-count for the first buffer is 0, this will return 0 with the output bool set to 0.
+
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.
   −
==== ListContentMetaKeyToDeliverApplication ====
+
==== ListLastNotificationInfo ====
Takes a type-0x6 output buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], a s32, and returns an output s32 total_out.
+
Takes a type-0x6 buffer containing an array with struct entry size 0x90-bytes. Returns 4-bytes of output.
   −
The array-count for ContentMetaKey must be at least 1, and for ApplicationDeliveryInfo it must match 1.
+
[19.0.0+] The struct size is now 0x98-bytes.
   −
This will only return 1 ContentMetaKey entry. This will not output the entry when the input s32 is larger than 0. This also does other validation, etc.
+
==== ListNotificationTask ====
 +
Takes a type-0x6 buffer containing an array with struct entry size 0xB0-bytes. Returns 4-bytes of output.
   −
==== NeedsSystemUpdateToDeliverApplication ====
+
[19.0.0+] The struct size is now 0xB8-bytes.
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], and returns an output u8 bool.
     −
The array-count must match 1.
+
==== RequestDownloadApplicationPrepurchasedRights ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
After validation etc, this sets the output bool by comparing system-version fields in the [[#SystemDeliveryInfo]]/[[#ApplicationDeliveryInfo]] and with a state field.
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
==== EstimateRequiredSize ====
+
==== GetSystemDeliveryInfo ====
Takes a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output s64.
+
Takes a type-0x16 output buffer containing a [[#SystemDeliveryInfo]], no output.
   −
When the array-count is less than 1, this will return 0 with the s64 set to 0.
+
This generates a [[#SystemDeliveryInfo]] using the currently installed SystemUpdate meta title.
   −
==== RequestReceiveApplication ====
+
==== SelectLatestSystemDeliveryInfo ====
Takes a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], a [[NCM_services#StorageId|StorageId]], an u16 port, an u32 Ipv4Address, an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
+
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], a type-0x5 input buffer containing an array of [[#SystemDeliveryInfo]], a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], and returns an output s32.
   −
[[qlaunch]] uses value Any for the StorageId, and value 55556 for the port.
+
This determines the latest version from the input [[#ApplicationDeliveryInfo]] array, using value 0 if the array is empty. If this value is less than a state field, the state field value is used instead. Then this selects a [[#SystemDeliveryInfo]] with the latest version from the input array, where the minimum version is the previously mentioned value. The version must also be also be at least the version value from the type-0x15 [[#SystemDeliveryInfo]] buffer. This also does various validation, etc. The output s32 is an index in that array for the selected entry, -1 if none found.
   −
An error is thrown if a state ref-count is zero. An error is thrown if [[NIM_services|nim]] ListApplicationApplyDeltaTask returns a task.
+
==== VerifyDeliveryProtocolVersion ====
 +
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], no output.
   −
This loops through the input [[NCM_services#ContentMetaKey|ContentMetaKey]] array, throwing an error if the [[NCM_services#ContentMetaType|ContentMetaType]] doesn't match Patch. The input array is copied into state which is used later by the thread for [[NIM_services|nim]] cmd53, max entries is 0x12.
+
This validates the [[#SystemDeliveryInfo]] HMAC and the protocol-version fields. Then the meta version is compared with a state field, an error is returned on match otherwise 0 is returned.
   −
This does various setup then creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
+
==== GetApplicationDeliveryInfo ====
 +
Takes a type-0x6 output buffer containing an array of [[#ApplicationDeliveryInfo]], an input u32 bitmask <code>nn::ns::ApplicationDeliveryAttributeTag</code>, an [[NCM_services#ApplicationId|ApplicationId]], and returns an output s32 total_out.
   −
* Calls a func which does:
+
An error is thrown if any bit is set in ApplicationDeliveryAttributeTag besides bit1. The output array-count must be at least 1: only 1 entry will be written to this array (hence on success total_out will also only be 1 on success).
** Throws an error if a state flag is set.
  −
** Uses [[NIM_services|nim]] cmd53, returning the Result on failure.
  −
** 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.
  −
* 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>.
     −
==== CommitReceiveApplication ====
+
==== HasAllContentsToDeliver ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
+
Takes a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], returns an output u8 bool.
   −
==== GetReceiveApplicationProgress ====
+
The array-count must match 1. After validating the [[#ApplicationDeliveryInfo]], the output bool is set to u32 [[#ApplicationDeliveryInfo]]+0x1C & 0x10000002 != 0x2, then this returns 0.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ReceiveApplicationProgress]].
     −
An error is thrown if a state ref-count is zero. An error is thrown if [[NIM_services|nim]] ListApplicationApplyDeltaTask returns a task.
+
==== CompareApplicationDeliveryInfo ====
 +
Takes two type-0x5 input buffers containing an array of [[#ApplicationDeliveryInfo]], returns an output s32.
   −
Uses [[NIM_services|nim]] cmd67, throwing an error if no task is returned. Then [[NIM_services|nim]] cmd57 is used, returning the error from there on failure. Lastly, this writes the 0x10-bytes from output+8 from the latter cmd to the output [[#ReceiveApplicationProgress]], and returns 0.
+
The array-count for both buffers must be 1, otherwise an error is returned.
   −
==== RequestSendApplication ====
+
Both [[#ApplicationDeliveryInfo]] are validated, then the application-version in the first/second buffer are compared. The output s32 is set to the comparison result: -1 for less than, 0 for equal, and 1 for higher than.
Takes a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], an u16 port, an u32 Ipv4Address, an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
     −
[[qlaunch]] uses value 55556 for the port.
+
==== CanDeliverApplication ====
 +
Takes two type-0x5 input buffers containing an array of [[#ApplicationDeliveryInfo]], returns an output u8 bool.
   −
An error is thrown if a state ref-count is zero. An error is thrown if [[NIM_services|nim]] ListApplicationApplyDeltaTask returns a task.
+
The array-count for the second buffer must be 1 and the array-count for the first buffer must be <=1, otherwise an error is returned. If the array-count for the first buffer is 0, this will return 0 with the output bool set to 0.
   −
The [[NCM_services#ContentMetaType|ContentMetaType]] must match Patch.
+
==== ListContentMetaKeyToDeliverApplication ====
 +
Takes a type-0x6 output buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], a s32, and returns an output s32 total_out.
   −
This does various setup and selects a ContentMetaKey to use from the input, then creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
+
The array-count for ContentMetaKey must be at least 1, and for ApplicationDeliveryInfo it must match 1.
   −
* Calls a func which does:
+
This will only return 1 ContentMetaKey entry. This will not output the entry when the input s32 is larger than 0. This also does other validation, etc.
** Throws an error if a state flag is set.
  −
** Uses [[NIM_services|nim]] cmd60, returning the Result on failure.
  −
** 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.
  −
* 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>.
     −
==== GetSendApplicationProgress ====
+
==== NeedsSystemUpdateToDeliverApplication ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#SendApplicationProgress]].
+
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], and returns an output u8 bool.
   −
Same as [[#GetReceiveApplicationProgress]] except this is the Send version, and uses [[NIM_services|nim]] cmd68/cmd63 instead.
+
The array-count must match 1.
   −
==== CompareSystemDeliveryInfo ====
+
After validation etc, this sets the output bool by comparing system-version fields in the [[#SystemDeliveryInfo]]/[[#ApplicationDeliveryInfo]] and with a state field.
Takes two type-0x15 input buffers containing a [[#SystemDeliveryInfo]], returns an output s32.
     −
This is essentially the same as [[#CompareApplicationDeliveryInfo]], except this compares the [[#SystemDeliveryInfo]] SystemUpdate version.
+
==== EstimateRequiredSize ====
 +
Takes a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output s64.
   −
==== ListNotCommittedContentMeta ====
+
When the array-count is less than 1, this will return 0 with the s64 set to 0.
Takes a type-0x6 output buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], a s32, an [[NCM_services#ApplicationId|ApplicationId]], returns an output s32 total_out.
     −
==== RecoverDownloadTask ====
+
==== RequestReceiveApplication ====
Takes a type-0x5 input buffer containing an array of {unknown} and an input u64, no output.
+
Takes a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], a [[NCM_services#StorageId|StorageId]], an u16 port, an u32 Ipv4Address, an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
==== GetApplicationDeliveryInfoHash ====
+
[[qlaunch]] uses value Any for the StorageId, and value 55556 for the port.
Takes a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], returns an output 0x20-byte SHA256 hash.
     −
This extracts data from the input array for hashing with SHA256, with validation being done when handling each entry.
+
An error is thrown if a state ref-count is zero. An error is thrown if [[NIM_services|nim]] ListApplicationApplyDeltaTask returns a task.
   −
==== GetApplicationRightsOnClient ====
+
This loops through the input [[NCM_services#ContentMetaKey|ContentMetaKey]] array, throwing an error if the [[NCM_services#ContentMetaType|ContentMetaType]] doesn't match Patch. The input array is copied into state which is used later by the thread for [[NIM_services|nim]] cmd53, max entries is 0x12.
Takes a type-0x6 output buffer containing an array of [[#ApplicationRightsOnClient]], an input u32 flags, an [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], returns 4-bytes of output for total output entries.
     −
Official sw has at least two wrappers which use this cmd: one with an all-zero Uid, one with an user-specified Uid. With both of these, the passed flags are hard-coded to value 0x3.
+
This does various setup then creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
   −
For the output array count, [[qlaunch]] uses value 3.
+
* Calls a func which does:
 +
** Throws an error if a state flag is set.
 +
** Uses [[NIM_services|nim]] cmd53, returning the Result on failure.
 +
** 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.
 +
* 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>.
   −
==== GetApplicationTerminateResult ====
+
==== CommitReceiveApplication ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u32 Result.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], no output.
   −
==== GetRightsEnvironmentHandleForApplication ====
+
==== GetReceiveApplicationProgress ====
No input, returns a total of 8-bytes of output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ReceiveApplicationProgress]].
   −
[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 8-bytes of output.
+
An error is thrown if a state ref-count is zero. An error is thrown if [[NIM_services|nim]] ListApplicationApplyDeltaTask returns a task.
   −
==== RequestNoDownloadRightsErrorResolution ====
+
Uses [[NIM_services|nim]] cmd67, throwing an error if no task is returned. Then [[NIM_services|nim]] cmd57 is used, returning the error from there on failure. Lastly, this writes the 0x10-bytes from output+8 from the latter cmd to the output [[#ReceiveApplicationProgress]], and returns 0.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
     −
The data that can be read from the [[#IAsyncValue]] is [[#NoDownloadRightsErrorResolution]].
+
==== RequestSendApplication ====
 +
Takes a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], an u16 port, an u32 Ipv4Address, an [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
[[qlaunch]] uses value 55556 for the port.
   −
==== RequestResolveNoDownloadRightsError ====
+
An error is thrown if a state ref-count is zero. An error is thrown if [[NIM_services|nim]] ListApplicationApplyDeltaTask returns a task.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
     −
The data that can be read from the [[#IAsyncValue]] is [[#NoDownloadRightsErrorResolution]].
+
The [[NCM_services#ContentMetaType|ContentMetaType]] must match Patch.
   −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
This does various setup and selects a ContentMetaKey to use from the input, then creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
   −
==== GetPromotionInfo ====
+
* Calls a func which does:
Takes a type-0x6 output buffer containing an array of [[#PromotionInfo]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], a type-0x5 input buffer containing an array of [[Account_services#Uid|Uids]], no output.
+
** Throws an error if a state flag is set.
 +
** Uses [[NIM_services|nim]] cmd60, returning the Result on failure.
 +
** 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.
 +
* 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>.
   −
Official sw uses hard-coded value 1 for the count with each of these arrays.
+
==== GetSendApplicationProgress ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#SendApplicationProgress]].
   −
==== ImportPromotionJsonForDebug ====
+
Same as [[#GetReceiveApplicationProgress]] except this is the Send version, and uses [[NIM_services|nim]] cmd68/cmd63 instead.
Takes a type-0x5 input buffer, no output.
     −
The output from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
+
==== CompareSystemDeliveryInfo ====
 +
Takes two type-0x15 input buffers containing a [[#SystemDeliveryInfo]], returns an output s32.
   −
==== ClearPromotionInfoForDebug ====
+
This is essentially the same as [[#CompareApplicationDeliveryInfo]], except this compares the [[#SystemDeliveryInfo]] SystemUpdate version.
No input/output.
     −
The output from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
+
==== ListNotCommittedContentMeta ====
 +
Takes a type-0x6 output buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], a s32, an [[NCM_services#ApplicationId|ApplicationId]], returns an output s32 total_out.
   −
This just clears 0xC-bytes in state.
+
==== RecoverDownloadTask ====
 +
Takes a type-0x5 input buffer containing an array of {unknown} and an input u64, no output.
   −
==== CreateApplicationResource ====
+
==== GetApplicationDeliveryInfoHash ====
Takes an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
+
Takes a type-0x5 input buffer containing an array of [[#ApplicationDeliveryInfo]], returns an output 0x20-byte SHA256 hash.
   −
==== GetApplicationResource ====
+
This extracts data from the input array for hashing with SHA256, with validation being done when handling each entry.
Takes an input u64 ProcessId and an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
     −
==== LaunchMicroApplication ====
+
==== GetApplicationRightsOnClient ====
[18.0.0+] Now takes a total of 0x50 bytes of input.
+
Takes a type-0x6 output buffer containing an array of [[#ApplicationRightsOnClient]], an input u32 flags, an [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]], returns 4-bytes of output for total output entries.
   −
[19.0.0+] Now takes a total of 0x80 bytes of input.
+
Official sw has at least two wrappers which use this cmd: one with an all-zero Uid, one with an user-specified Uid. With both of these, the passed flags are hard-coded to value 0x3.
   −
==== CreateApplicationInstance ====
+
For the output array count, [[qlaunch]] uses value 3.
[18.0.0+] Now takes a total of 0x50 bytes of input.
     −
[19.0.0+] Now takes a total of 0x80 bytes of input.
+
==== GetApplicationTerminateResult ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output u32 Result.
   −
==== RegisterDeviceLockKey ====
+
==== GetRightsEnvironmentHandleForApplication ====
Takes a type-0x5 input buffer containing an InArray of u8, no output.
+
No input, returns a total of 8-bytes of 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]].
+
[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 8-bytes of output.
   −
This does SHA256 hashing, etc.
+
==== RequestNoDownloadRightsErrorResolution ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
   −
==== UnregisterDeviceLockKey ====
+
The data that can be read from the [[#IAsyncValue]] is [[#NoDownloadRightsErrorResolution]].
No input/output.
     −
Runs code identical to [[#RegisterDeviceLockKey]], except the passed buffer/size are 0.
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
==== VerifyDeviceLockKey ====
+
==== RequestResolveNoDownloadRightsError ====
Takes a type-0x5 input buffer containing an InArray of u8, no output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncValue]].
   −
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses [[HID_services#NpadButtonSet|NpadButton]].
+
The data that can be read from the [[#IAsyncValue]] is [[#NoDownloadRightsErrorResolution]].
   −
This runs hashing similar to [[#RegisterDeviceLockKey]], with the calculated hash being verified with the one from state.
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
==== HideApplicationIcon ====
+
==== GetPromotionInfo ====
No input/output.
+
Takes a type-0x6 output buffer containing an array of [[#PromotionInfo]], a type-0x5 input buffer containing an array of u64 [[NCM_services#ApplicationId|ApplicationIds]], a type-0x5 input buffer containing an array of [[Account_services#Uid|Uids]], no output.
   −
==== ShowApplicationIcon ====
+
Official sw uses hard-coded value 1 for the count with each of these arrays.
No input/output.
     −
==== HideApplicationTitle ====
+
==== ListPromotionInfo ====
No input/output.
+
[20.0.0+] The input struct size is now 0x28-bytes instead of 0x20-bytes.  
   −
==== ShowApplicationTitle ====
+
==== ImportPromotionJsonForDebug ====
No input/output.
+
Takes a type-0x5 input buffer, no output.
   −
==== EnableGameCard ====
+
The output from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
No input/output.
     −
==== DisableGameCard ====
+
==== ClearPromotionInfoForDebug ====
 
No input/output.
 
No input/output.
   −
==== EnableLocalContentShare ====
+
The output from [[Settings_services#GetDebugModeFlag]] must be 1, otherwise an error is returned.
No input/output.
     −
==== DisableLocalContentShare ====
+
This just clears 0xC-bytes in state.
No input/output.
     −
==== IsApplicationIconHidden ====
+
==== CreateApplicationResource ====
No input, returns an output bool.
+
Takes an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
   −
==== IsApplicationTitleHidden ====
+
==== GetApplicationResource ====
No input, returns an output bool.
+
Takes an input u64 ProcessId and an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]].
 +
 
 +
==== LaunchMicroApplication ====
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
   −
==== IsGameCardEnabled ====
+
==== CreateApplicationInstance ====
No input, returns an output bool.
+
[18.0.0+] Now takes a total of 0x50 bytes of input.
   −
==== IsLocalContentShareEnabled ====
+
[19.0.0+] Now takes a total of 0x80 bytes of input.
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.
+
==== RegisterDeviceLockKey ====
 +
Takes a type-0x5 input buffer containing an InArray of u8, no output.
   −
=== IGameCardStopper ===
+
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 is "nn::ns::detail::IGameCardStopper".
     −
This interface has no commands.
+
This does SHA256 hashing, etc.
   −
=== IRequestServerStopper ===
+
==== UnregisterDeviceLockKey ====
This is "nn::ns::detail::IRequestServerStopper".
+
No input/output.
   −
This interface has no commands.
+
Runs code identical to [[#RegisterDeviceLockKey]], except the passed buffer/size are 0.
   −
=== IProgressMonitorForDeleteUserSaveDataAll ===
+
==== VerifyDeviceLockKey ====
This is "nn::ns::detail::IProgressMonitorForDeleteUserSaveDataAll".
+
Takes a type-0x5 input buffer containing an InArray of u8, no output.
   −
{| class="wikitable" border="1"
+
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses [[HID_services#NpadButtonSet|NpadButton]].
|-
+
 
! Cmd || Name
+
This runs hashing similar to [[#RegisterDeviceLockKey]], with the calculated hash being verified with the one from state.
|-
  −
| 0 || GetSystemEvent
  −
|-
  −
| 1 || IsFinished
  −
|-
  −
| 2 || GetResult
  −
|-
  −
| 10 || GetProgress
  −
|}
     −
When closing the object, official sw uses IsFinished first, asserting when the output bool is false.
+
==== HideApplicationIcon ====
 +
No input/output.
   −
* GetSystemEvent: No input, returns an output Event handle. [[qlaunch]] doesn't use this.
+
==== ShowApplicationIcon ====
 +
No input/output.
   −
* IsFinished: No input, returns an output u8 bool.
+
==== HideApplicationTitle ====
 +
No input/output.
   −
* GetResult: No input/output.
+
==== ShowApplicationTitle ====
 +
No input/output.
   −
* GetProgress: No input, returns an output [[#ProgressForDeleteUserSaveDataAll]]. Official sw writes this struct directly to object state.
+
==== EnableGameCard ====
 +
No input/output.
   −
=== IProgressAsyncResult ===
+
==== DisableGameCard ====
This is "nn::ns::detail::IProgressAsyncResult".
+
No input/output.
   −
{| class="wikitable" border="1"
+
==== EnableLocalContentShare ====
|-
+
No input/output.
! Cmd || Name
+
 
|-
+
==== DisableLocalContentShare ====
| 0 || Get
+
No input/output.
|-
+
 
| 1 || Cancel
+
==== IsApplicationIconHidden ====
|-
+
No input, returns an output bool.
| 2 || GetProgress
+
 
|-
+
==== IsApplicationTitleHidden ====
| 3 || GetDetailResult
+
No input, returns an output bool.
|-
+
 
| 4 || [4.0.0+] GetErrorContext
+
==== IsGameCardEnabled ====
|}
+
No input, returns an output bool.
   −
=== IApplicationVersionInterface ===
+
==== IsLocalContentShareEnabled ====
This is "nn::ns::detail::IApplicationVersionInterface".
+
No input, returns an output bool.
   −
This was added with [4.0.0+].
+
Various Deliver cmds now load the same flag used by this cmd (IsLocalContentShareEnabled), with an error being returned when it's not enabled.
   −
{| class="wikitable" border="1"
+
=== IGameCardStopper ===
|-
+
This is "nn::ns::detail::IGameCardStopper".
! Cmd || Name
+
 
|-
+
This interface has no commands.
| 0 || GetLaunchRequiredVersion
  −
|-
  −
| 1 || UpgradeLaunchRequiredVersion
  −
|-
  −
| 35 || UpdateVersionList
  −
|-
  −
| 36 || PushLaunchVersion
  −
|-
  −
| 37 || ListRequiredVersion
  −
|-
  −
| 800 || RequestVersionList
  −
|-
  −
| 801 || ListVersionList
  −
|-
  −
| 802 || [[#RequestVersionListData]]
  −
|-
  −
| 900 || [12.0.0+] ImportAutoUpdatePolicyJsonForDebug
  −
|-
  −
| 901 || [12.0.0+] ListDefaultAutoUpdatePolicy
  −
|-
  −
| 902 || [12.0.0+] ListAutoUpdatePolicyForSpecificApplication
  −
|-
  −
| 1000 || PerformAutoUpdate
  −
|-
  −
| 1001 || [11.0.0+] ListAutoUpdateSchedule
  −
|}
     −
==== RequestVersionListData ====
+
=== IRequestServerStopper ===
No input, returns an output Event handle and an [[#IAsyncValue]].
+
This is "nn::ns::detail::IRequestServerStopper".
   −
The data that can be read from the [[#IAsyncValue]] is [[#VersionListData]].
+
This interface has no commands.
   −
=== IContentManagementInterface ===
+
=== IProgressMonitorForDeleteUserSaveDataAll ===
This is "nn::ns::detail::IContentManagementInterface".
+
This is "nn::ns::detail::IProgressMonitorForDeleteUserSaveDataAll".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,826: Line 1,994:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 11 || [[#CalculateApplicationOccupiedSize]]
+
| 0 || GetSystemEvent
 
|-
 
|-
| 43 || [[#CheckSdCardMountStatus]]
+
| 1 || IsFinished
 
|-
 
|-
| 47 || [[#GetTotalSpaceSize]]
+
| 2 || GetResult
 
|-
 
|-
| 48 || [[#GetFreeSpaceSize]]
+
| 10 || GetProgress
|-
  −
| 600 || [[#CountApplicationContentMeta]]
  −
|-
  −
| 601 || [[#ListApplicationContentMetaStatus]]
  −
|-
  −
| 605 || [[#ListApplicationContentMetaStatusWithRightsCheck]]
  −
|-
  −
| 607 || [[#IsAnyApplicationRunning]]
   
|}
 
|}
   −
==== CalculateApplicationOccupiedSize ====
+
When closing the object, official sw uses IsFinished first, asserting when the output bool is false.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationOccupiedSize]].
     −
==== CheckSdCardMountStatus ====
+
* GetSystemEvent: No input, returns an output Event handle. [[qlaunch]] doesn't use this.
No input/output.
     −
==== CountApplicationContentMeta ====
+
* IsFinished: No input, returns an output u8 bool.
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output s32.
     −
==== ListApplicationContentMetaStatusWithRightsCheck ====
+
* GetResult: No input/output.
Same input/output as [[#ListApplicationContentMetaStatus]].
     −
==== IsAnyApplicationRunning ====
+
* GetProgress: No input, returns an output [[#ProgressForDeleteUserSaveDataAll]]. Official sw writes this struct directly to object state.
No input, returns an output u8 bool.
     −
=== IDocumentInterface ===
+
=== IProgressAsyncResult ===
This is "nn::ns::detail::IDocumentInterface".
+
This is "nn::ns::detail::IProgressAsyncResult".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,865: Line 2,020:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 21 || GetApplicationContentPath
+
| 0 || Get
 
|-
 
|-
| 23 || ResolveApplicationContentPath
+
| 1 || Cancel
 
|-
 
|-
| 92 || [5.0.0+] GetRunningApplicationProgramId
+
| 2 || GetProgress
 +
|-
 +
| 3 || GetDetailResult
 
|-
 
|-
| 2524 || [19.0.0+]  
+
| 4 || [4.0.0+] GetErrorContext
 
|}
 
|}
   −
=== IDownloadTaskInterface ===
+
=== IApplicationVersionInterface ===
This is "nn::ns::detail::IDownloadTaskInterface".
+
This is "nn::ns::detail::IApplicationVersionInterface".
 +
 
 +
This was added with [4.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,881: Line 2,040:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 701 || [[#ClearTaskStatusList]]
+
| 0 || GetLaunchRequiredVersion
 +
|-
 +
| 1 || UpgradeLaunchRequiredVersion
 +
|-
 +
| 35 || UpdateVersionList
 +
|-
 +
| 36 || PushLaunchVersion
 +
|-
 +
| 37 || ListRequiredVersion
 
|-
 
|-
| 702 || [[#RequestDownloadTaskList]]
+
| 800 || RequestVersionList
 
|-
 
|-
| 703 || [[#RequestEnsureDownloadTask]]
+
| 801 || ListVersionList
 
|-
 
|-
| 704 || [[#ListDownloadTaskStatus]]
+
| 802 || [[#RequestVersionListData]]
 
|-
 
|-
| 705 || [[#RequestDownloadTaskListData]]
+
| 900 || [12.0.0+] ImportAutoUpdatePolicyJsonForDebug
 
|-
 
|-
| 706 || [4.0.0+] [[#TryCommitCurrentApplicationDownloadTask]]
+
| 901 || [12.0.0+] ListDefaultAutoUpdatePolicy
 
|-
 
|-
| 707 || [4.0.0+] [[#EnableAutoCommit]]
+
| 902 || [12.0.0+] ListAutoUpdatePolicyForSpecificApplication
 
|-
 
|-
| 708 || [4.0.0+] [[#DisableAutoCommit]]
+
| 1000 || PerformAutoUpdate
 
|-
 
|-
| 709 || [4.0.0+] [[#TriggerDynamicCommitEvent]]
+
| 1001 || [11.0.0+] ListAutoUpdateSchedule
 
|}
 
|}
   −
==== ClearTaskStatusList ====
+
==== RequestVersionListData ====
No input/output.
+
No input, returns an output Event handle and an [[#IAsyncValue]].
   −
==== RequestDownloadTaskList ====
+
The data that can be read from the [[#IAsyncValue]] is [[#VersionListData]].
No input/output.
     −
==== RequestEnsureDownloadTask ====
+
=== IContentManagementInterface ===
No input, returns an output Event handle and an [[#IAsyncResult]].
+
This is "nn::ns::detail::IContentManagementInterface".
 
  −
==== ListDownloadTaskStatus ====
  −
Takes a type-0x6 output buffer containing an array of [[#DownloadTaskStatus]], returns an output s32 total_out.
  −
 
  −
A maximum of 0x100 tasks can be stored in state.
  −
 
  −
==== TryCommitCurrentApplicationDownloadTask ====
  −
No input/output.
  −
 
  −
==== EnableAutoCommit ====
  −
No input/output.
  −
 
  −
==== DisableAutoCommit ====
  −
No input/output.
  −
 
  −
==== TriggerDynamicCommitEvent ====
  −
No input/output.
  −
 
  −
=== IReadOnlyApplicationRecordInterface ===
  −
This is "nn::ns::detail::IReadOnlyApplicationRecordInterface".
  −
 
  −
This was added with [5.0.0+].
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || HasApplicationRecord || Same as [[#IApplicationManagerInterface]] cmd 910
+
| 11 || [[#CalculateApplicationOccupiedSize]]
 
|-
 
|-
| 1 || [10.0.0+] NotifyApplicationFailure ||
+
| 43 || [[#CheckSdCardMountStatus]]
 
|-
 
|-
| 2 || [10.0.0+] IsDataCorruptedResult ||
+
| 47 || [[#GetTotalSpaceSize]]
|}
  −
 
  −
=== IReadOnlyApplicationControlDataInterface ===
  −
This is "nn::ns::detail::IReadOnlyApplicationControlDataInterface".
  −
 
  −
This was added with [5.1.0+].
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 48 || [[#GetFreeSpaceSize]]
 
|-
 
|-
| 0 || [[#GetApplicationControlData]] || Same as [[#IApplicationManagerInterface]] cmd 400
+
| 600 || [[#CountApplicationContentMeta]]
 
|-
 
|-
| 1 || [[#GetApplicationDesiredLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 55
+
| 601 || [[#ListApplicationContentMetaStatus]]
 
|-
 
|-
| 2 || ConvertApplicationLanguageToLanguageCode || Same as [[#IApplicationManagerInterface]] cmd 59
+
| 605 || [[#ListApplicationContentMetaStatusWithRightsCheck]]
 
|-
 
|-
| 3 || [[#ConvertLanguageCodeToApplicationLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 60
+
| 607 || [[#IsAnyApplicationRunning]]
|-
  −
| 4 || [9.0.0+] SelectApplicationDesiredLanguage ||
  −
|-
  −
| 5 || [19.0.0+] ||
  −
|-
  −
| 6 || [19.0.0+] ||
   
|}
 
|}
   −
=== IDynamicRightsInterface ===
+
==== CalculateApplicationOccupiedSize ====
This is "nn::ns::detail::IDynamicRightsInterface".
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output [[#ApplicationOccupiedSize]].
   −
This was added with [6.0.0+].
+
==== CheckSdCardMountStatus ====
 +
No input/output.
   −
{| class="wikitable" border="1"
+
==== CountApplicationContentMeta ====
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output s32.
 +
 
 +
==== ListApplicationContentMetaStatusWithRightsCheck ====
 +
Same input/output as [[#ListApplicationContentMetaStatus]].
 +
 
 +
==== IsAnyApplicationRunning ====
 +
No input, returns an output u8 bool.
 +
 
 +
=== IDocumentInterface ===
 +
This is "nn::ns::detail::IDocumentInterface".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#RequestApplicationRightsOnServer]]
+
| 21 || GetApplicationContentPath
 
|-
 
|-
| 1 || [[#RequestAssignRights]]
+
| 23 || ResolveApplicationContentPath
 
|-
 
|-
| 4 || [[#DeprecatedRequestAssignRightsToResume]]
+
| 92 || [5.0.0+] GetRunningApplicationProgramId
 
|-
 
|-
| 5 || [[#VerifyActivatedRightsOwners]]
+
| 2524 || [19.0.0+]  
 +
|}
 +
 
 +
=== IDownloadTaskInterface ===
 +
This is "nn::ns::detail::IDownloadTaskInterface".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 6 || [[#DeprecatedGetApplicationRightsStatus]]
+
! Cmd || Name
 
|-
 
|-
| 7 || [[#RequestPrefetchForDynamicRights]]
+
| 701 || [[#ClearTaskStatusList]]
 
|-
 
|-
| 8 || [[#GetDynamicRightsState]]
+
| 702 || [[#RequestDownloadTaskList]]
 
|-
 
|-
| 9 || [7.0.0+] [[#RequestApplicationRightsOnServerToResume]]
+
| 703 || [[#RequestEnsureDownloadTask]]
 
|-
 
|-
| 10 || [7.0.0+] [[#RequestAssignRightsToResume]]
+
| 704 || [[#ListDownloadTaskStatus]]
 
|-
 
|-
| 11 || [7.0.0+] [[#GetActivatedRightsUsers]]
+
| 705 || [[#RequestDownloadTaskListData]]
 
|-
 
|-
| 12 || [8.0.0+] [[#GetApplicationRightsStatus]]
+
| 706 || [4.0.0+] [[#TryCommitCurrentApplicationDownloadTask]]
 
|-
 
|-
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
+
| 707 || [4.0.0+] [[#EnableAutoCommit]]
 
|-
 
|-
| 14 || [10.0.0-15.0.1] SelectApplicationLicense
+
| 708 || [4.0.0+] [[#DisableAutoCommit]]
 
|-
 
|-
| 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]]
+
| 709 || [4.0.0+] [[#TriggerDynamicCommitEvent]]
 
|-
 
|-
| 16 || [13.0.0+] QualifyUser
+
| 710 || [20.0.0+]
|-
  −
| 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
  −
|-
  −
| 26 || [18.0.0+] HasAccountRestrictedRightsInRunningApplications
   
|}
 
|}
   −
==== RequestApplicationRightsOnServer ====
+
==== ClearTaskStatusList ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]], an [[Account_services#Uid|Uid]] and an u32. Returns an output Event handle and an [[#IAsyncValue]].
+
No input/output.
   −
==== RequestAssignRights ====
+
==== RequestDownloadTaskList ====
Takes a type-0x5 input buffer containing an array of "nn::ns::ApplicationRightsOnServer". Returns an output Event handle and an [[#IAsyncResult]].
+
No input/output.
   −
==== DeprecatedRequestAssignRightsToResume ====
+
==== RequestEnsureDownloadTask ====
Takes an input u64 "nn::ns::RightsEnvironmentHandle" and an [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]].
+
No input, returns an output Event handle and an [[#IAsyncResult]].
   −
==== VerifyActivatedRightsOwners ====
+
==== ListDownloadTaskStatus ====
Takes an input u64 "nn::ns::RightsEnvironmentHandle". No output.
+
Takes a type-0x6 output buffer containing an array of [[#DownloadTaskStatus]], returns an output s32 total_out.
   −
==== DeprecatedGetApplicationRightsStatus ====
+
A maximum of 0x100 tasks can be stored in state.
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns a bool "nn::ns::ApplicationRightsStatus".
     −
==== RequestPrefetchForDynamicRights ====
+
==== TryCommitCurrentApplicationDownloadTask ====
Takes an input [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]].
+
No input/output.
   −
==== GetDynamicRightsState ====
+
==== EnableAutoCommit ====
No input. Returns a bool "nn::ns::DynamicRightsState".
+
No input/output.
   −
==== RequestApplicationRightsOnServerToResume ====
+
==== DisableAutoCommit ====
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncValue]].
+
No input/output.
   −
==== RequestAssignRightsToResume ====
+
==== TriggerDynamicCommitEvent ====
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncResult]].
+
No input/output.
   −
==== GetActivatedRightsUsers ====
+
=== IReadOnlyApplicationRecordInterface ===
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]].
+
This is "nn::ns::detail::IReadOnlyApplicationRecordInterface".
   −
==== GetApplicationRightsStatus ====
+
This was added with [5.0.0+].
Takes an input "nn::ns::RightsEnvironmentHandle". Returns 2 bools "nn::ns::ApplicationRightsStatus" and "nn::ns::ApplicationLicenseType".
     −
==== GetRunningApplicationStatus ====
+
{| class="wikitable" border="1"
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
+
! Cmd || Name || Notes
 
|-
 
|-
| 0 || GetSize
+
| 0 || HasApplicationRecord || Same as [[#IApplicationManagerInterface]] cmd 910
 
|-
 
|-
| 1 || Get
+
| 1 || [10.0.0+] NotifyApplicationFailure ||
 
|-
 
|-
| 2 || Cancel
+
| 2 || [10.0.0+] IsDataCorruptedResult ||
 
|-
 
|-
| 3 || GetErrorContext
+
| 3 || [20.0.0+] ||
 
|}
 
|}
   −
=== IECommerceInterface===
+
=== IReadOnlyApplicationControlDataInterface ===
This is "nn::ns::detail::IECommerceInterface".
+
This is "nn::ns::detail::IReadOnlyApplicationControlDataInterface".
   −
This was added with [4.0.0+].
+
This was added with [5.1.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Cmd || Name || Notes
 
|-
 
|-
| 0 || [[#RequestLinkDevice]]
+
| 0 || [[#GetApplicationControlData]] || Same as [[#IApplicationManagerInterface]] cmd 400
 
|-
 
|-
| 1 || [6.0.0+] [[#RequestCleanupAllPreInstalledApplications]]
+
| 1 || [[#GetApplicationDesiredLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 55
 
|-
 
|-
| 2 || [6.0.0+] [[#RequestCleanupPreInstalledApplication]]
+
| 2 || ConvertApplicationLanguageToLanguageCode || Same as [[#IApplicationManagerInterface]] cmd 59
 
|-
 
|-
| 3 || [6.0.0+] [[#RequestSyncRights]]
+
| 3 || [[#ConvertLanguageCodeToApplicationLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 60
 
|-
 
|-
| 4 || [6.0.0+] [[#RequestUnlinkDevice]]
+
| 4 || [9.0.0+] SelectApplicationDesiredLanguage ||
 +
|-
 +
| 5 || [19.0.0+] ||
 +
|-
 +
| 6 || [19.0.0+] ||
 +
|-
 +
| 7 || [20.0.0+] ||
 +
|-
 +
| 8 || [20.0.0+] ||
 +
|-
 +
| 9 || [20.0.0+] ||
 +
|-
 +
| 10 || [20.0.0+] ||
 +
|-
 +
| 11 || [20.0.0+] ||
 +
|-
 +
| 12 || [20.0.0+] ||
 +
|-
 +
| 13 || [20.0.0+] ||
 
|-
 
|-
| 5 || [6.1.0+] [[#RequestRevokeAllELicense]]
+
| 14 || [20.0.0+] ||
 
|-
 
|-
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
+
| 15 || [20.0.0+] ||
 
|-
 
|-
| 7 || [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability
+
| 16 || [20.0.0+] ||
 
|}
 
|}
   −
==== RequestLinkDevice ====
+
=== IDynamicRightsInterface ===
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
+
This is "nn::ns::detail::IDynamicRightsInterface".
   −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
+
This was added with [6.0.0+].
   −
==== RequestCleanupAllPreInstalledApplications ====
+
{| class="wikitable" border="1"
No input, returns an output Event handle and an [[#IAsyncResult]].
+
|-
 
+
! Cmd || Name
==== RequestCleanupPreInstalledApplication ====
+
|-
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
+
| 0 || [[#RequestApplicationRightsOnServer]]
 
+
|-
==== RequestSyncRights ====
+
| 1 || [[#RequestAssignRights]]
No input, returns an output Event handle and an [[#IAsyncResult]].
+
|-
 
+
| 4 || [[#DeprecatedRequestAssignRightsToResume]]
==== RequestUnlinkDevice ====
+
|-
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
+
| 5 || [[#VerifyActivatedRightsOwners]]
 
  −
See [[#RequestApplicationUpdateInfo]] regarding nifm.
  −
 
  −
==== RequestRevokeAllELicense ====
  −
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
  −
 
  −
==== RequestSyncRightsBasedOnAssignedELicenses ====
  −
No input, returns an output Event handle and an [[#IAsyncResult]].
  −
 
  −
=== IFactoryResetInterface ===
  −
This is "nn::ns::detail::IFactoryResetInterface".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 6 || [[#DeprecatedGetApplicationRightsStatus]]
 
|-
 
|-
| 100 || [[#ResetToFactorySettings]]
+
| 7 || [[#RequestPrefetchForDynamicRights]]
 
|-
 
|-
| 101 || [[#ResetToFactorySettingsWithoutUserSaveData]]
+
| 8 || [[#GetDynamicRightsState]]
 
|-
 
|-
| 102 || [[#ResetToFactorySettingsForRefurbishment]]
+
| 9 || [7.0.0+] [[#RequestApplicationRightsOnServerToResume]]
 
|-
 
|-
| 103 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegion]]
+
| 10 || [7.0.0+] [[#RequestAssignRightsToResume]]
 
|-
 
|-
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]]
+
| 11 || [7.0.0+] [[#GetActivatedRightsUsers]]
 
|-
 
|-
| 105 || [10.0.0+] [[#RequestResetToFactorySettingsSecurely]]
+
| 12 || [8.0.0+] [[#GetApplicationRightsStatus]]
 
|-
 
|-
| 106 || [10.0.0+] [[#RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely]]
+
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]]
|}
  −
 
  −
==== ResetToFactorySettings ====
  −
No input/output.
  −
 
  −
As of [9.1.0] this is the only [[#IFactoryResetInterface]] cmd used by [[qlaunch]].
  −
 
  −
==== ResetToFactorySettingsWithoutUserSaveData ====
  −
No input/output.
  −
 
  −
==== ResetToFactorySettingsForRefurbishment ====
  −
No input/output.
  −
 
  −
==== ResetToFactorySettingsWithPlatformRegion ====
  −
No input/output.
  −
 
  −
==== ResetToFactorySettingsWithPlatformRegionAuthentication ====
  −
No input/output.
  −
 
  −
==== RequestResetToFactorySettingsSecurely ====
  −
Takes an input u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
  −
 
  −
The TransferMemory uses permissions=0.
  −
 
  −
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
  −
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 =====
  −
This is "nn::ns::detail::IAsyncValueAndProgress".
  −
 
  −
This was added with [10.0.0+].
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 14 || [10.0.0-15.0.1] SelectApplicationLicense
 
|-
 
|-
| 0 || GetSize
+
| 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]]
 
|-
 
|-
| 1 || Get
+
| 16 || [13.0.0+] QualifyUser
 
|-
 
|-
| 2 || Cancel
+
| 17 || [13.0.0+] QualifyUserWithProcessId
 
|-
 
|-
| 3 || GetErrorContext
+
| 18 || [13.0.0+] NotifyApplicationRightsCheckStart
 
|-
 
|-
| 4 || GetProgress
+
| 19 || [13.0.0+] UpdateUserList
|}
  −
 
  −
=== IApplicationResource ===
  −
This is "nn::ns::detail::IApplicationResource".
  −
 
  −
This was added with [9.0.0+].
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 20 || [13.0.0+] IsRightsLostUser
 
|-
 
|-
| 0 || Attach
+
| 21 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition
 
|-
 
|-
| 1 || BoostSystemMemoryResourceLimit
+
| 22 || [14.0.0+] GetLimitedApplicationLicense
|}
  −
 
  −
= ns:vm =
  −
This is "nn::ns::detail::IVulnerabilityManagerInterface".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 23 || [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent
 
|-
 
|-
| 1200 || [3.0.0+] [[#NeedsUpdateVulnerability]]
+
| 24 || [14.0.0+] NotifyLimitedApplicationLicenseUpgradableEventForDebug
 
|-
 
|-
| 1201 || [4.0.0+] [[#UpdateSafeSystemVersionForDebug]]
+
| 25 || [14.0.0+] RequestProceedDynamicRightsState
 
|-
 
|-
| 1202 || [4.0.0+] [[#GetSafeSystemVersion]]
+
| 26 || [18.0.0+] HasAccountRestrictedRightsInRunningApplications
 
|-
 
|-
| 3100 || [18.0.0+]  
+
| 27 || [20.0.0+]
 
|-
 
|-
| 3101 || [18.0.0+]
+
| 28 || [20.0.0+]
|-
  −
| 3102 || [18.0.0+]  
   
|}
 
|}
   −
== NeedsUpdateVulnerability ==
+
==== RequestApplicationRightsOnServer ====
No input, returns an output u8 bool flag.
+
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]].
   −
Web-applets use this command to check if the system needs an update.
+
==== DeprecatedRequestAssignRightsToResume ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle" and an [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]].
   −
== UpdateSafeSystemVersionForDebug ==
+
==== VerifyActivatedRightsOwners ====
Takes an input [[NCM_services#ApplicationId|ApplicationId]] and an u32 '''version'''.
+
Takes an input u64 "nn::ns::RightsEnvironmentHandle". No output.
   −
This command is not available for retail units. On a debug unit, if the [[System_Settings|system setting]] <code>vulnerability!enable_debug</code> is set, this mounts the system savegame [[Flash_Filesystem#System_Savegames|0x8000000000000049]] as "ns_ssversion:/", opens the file "ns_ssversion:/entry" and writes the supplied [[NCM_services#ApplicationId|ApplicationId]] and '''version''' in it.
+
==== DeprecatedGetApplicationRightsStatus ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns a bool "nn::ns::ApplicationRightsStatus".
   −
Finally, it calls [[NCM_services#ncm|OpenContentMetaDatabase]] with [[NCM_services#StorageId|StorageId]] 3, then calls [[NCM_services#IContentMetaDatabase|GetLatestContentMetaKey]] with the supplied [[NCM_services#ApplicationId|ApplicationId]] and compares the version field from the returned [[CNMT#Content_Meta_Records|Content Meta Record]] with the supplied '''version'''.
+
==== RequestPrefetchForDynamicRights ====
 +
Takes an input [[Account_services#Uid|Uid]]. Returns an output Event handle and an [[#IAsyncResult]].
   −
If the supplied '''version''' is higher than the one in NCM's database, the value returned by [[NS_Services#NeedsUpdateVulnerability|NeedsUpdateVulnerability]] is set to "true".
+
==== GetDynamicRightsState ====
 +
No input. Returns a bool "nn::ns::DynamicRightsState".
   −
== GetSafeSystemVersion ==
+
==== RequestApplicationRightsOnServerToResume ====
No input, returns an output [[NCM_services#ContentMetaKey|ContentMetaKey]] with the cached contents of "ns_ssversion:/entry" ([[NCM_services#ApplicationId|ApplicationId]], u32 '''version''' and u32 '''policy''' from <code>vulnerability!needs_update_vulnerability_policy</code>).
+
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncValue]].
   −
= ns:su =
+
==== RequestAssignRightsToResume ====
This is "nn::ns::detail::ISystemUpdateInterface".
+
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an [[#IAsyncResult]].
   −
{| class="wikitable" border="1"
+
==== 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]].
! Cmd || Name
+
 
 +
==== GetApplicationRightsStatus ====
 +
Takes an input "nn::ns::RightsEnvironmentHandle". Returns 2 bools "nn::ns::ApplicationRightsStatus" and "nn::ns::ApplicationLicenseType".
 +
 
 +
==== GetRunningApplicationStatus ====
 +
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an u32 "nn::ns::RunningApplicationStatus".
 +
 
 +
==== RequestContentsAuthorizationToken ====
 +
Takes a total of 0x50-bytes of input, a type-0x5 input buffer. Returns an [[#IAsyncData_2|IAsyncData]] and an output handle.
 +
 
 +
==== IAsyncData ====
 +
This is "nn::ns::detail::IAsyncData".
 +
 
 +
This was added with [12.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0 || [[#GetBackgroundNetworkUpdateState]]
+
! Cmd || Name
 
|-
 
|-
| 1 || [[#OpenSystemUpdateControl]]
+
| 0 || GetSize
 
|-
 
|-
| 2 || [[#NotifyExFatDriverRequired]]
+
| 1 || Get
 
|-
 
|-
| 3 || [[#ClearExFatDriverStatusForDebug]]
+
| 2 || Cancel
 
|-
 
|-
| 4 || [[#RequestBackgroundNetworkUpdate]]
+
| 3 || GetErrorContext
 +
|}
 +
 
 +
=== IECommerceInterface===
 +
This is "nn::ns::detail::IECommerceInterface".
 +
 
 +
This was added with [4.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 5 || [[#NotifyBackgroundNetworkUpdate]]
+
! Cmd || Name
 +
|-
 +
| 0 || [[#RequestLinkDevice]]
 +
|-
 +
| 1 || [6.0.0+] [[#RequestCleanupAllPreInstalledApplications]]
 +
|-
 +
| 2 || [6.0.0+] [[#RequestCleanupPreInstalledApplication]]
 
|-
 
|-
| 6 || [[#NotifyExFatDriverDownloadedForDebug]]
+
| 3 || [6.0.0+] [[#RequestSyncRights]]
 
|-
 
|-
| 9 || [[#GetSystemUpdateNotificationEventForContentDelivery]]
+
| 4 || [6.0.0+] [[#RequestUnlinkDevice]]
 
|-
 
|-
| 10 || [[#NotifySystemUpdateForContentDelivery]]
+
| 5 || [6.1.0+] [[#RequestRevokeAllELicense]]
 
|-
 
|-
| 11 || [3.0.0+] [[#PrepareShutdown]]
+
| 6 || [9.0.0+] [[#RequestSyncRightsBasedOnAssignedELicenses]]
 
|-
 
|-
| 12 || [3.0.0-3.0.2]
+
| 7 || [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability
 
|-
 
|-
| 13 || [3.0.0-3.0.2]
+
| 8 || [20.0.0+]
 
|-
 
|-
| 14 || [3.0.0-3.0.2]
+
| 9 || [20.0.0+]
 
|-
 
|-
| 15 || [3.0.0-3.0.2]
+
| 10 || [20.0.0+]
 
|-
 
|-
| 16 || [4.0.0+] [[#DestroySystemUpdateTask]]
+
| 11 || [20.0.0+]
 
|-
 
|-
| 17 || [4.0.0+] [[#RequestSendSystemUpdate]]
+
| 12 || [20.0.0+]
 
|-
 
|-
| 18 || [4.0.0+] [[#GetSendSystemUpdateProgress]]
+
| 13 || [20.0.0+]
 
|}
 
|}
   −
== GetBackgroundNetworkUpdateState ==
+
==== RequestLinkDevice ====
No input, returns an output [[#BackgroundNetworkUpdateState]].
+
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
   −
This is similar to [[#HasDownloaded]], see [[#BackgroundNetworkUpdateState]].
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
== OpenSystemUpdateControl ==
+
==== RequestCleanupAllPreInstalledApplications ====
No input, returns an [[#ISystemUpdateControl]].
+
No input, returns an output Event handle and an [[#IAsyncResult]].
   −
== NotifyExFatDriverRequired ==
+
==== RequestCleanupPreInstalledApplication ====
No input/output.
+
Takes an input [[NCM_services#ApplicationId|ApplicationId]], returns an output Event handle and an [[#IAsyncResult]].
   −
Only usable when an [[#ISystemUpdateControl]] isn't open.
+
==== RequestSyncRights ====
 +
No input, returns an output Event handle and an [[#IAsyncResult]].
   −
This uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
+
==== RequestUnlinkDevice ====
 +
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
   −
Then this runs ExFat handling, updates state, and sets the same state flag as [[#RequestBackgroundNetworkUpdate]].
+
See [[#RequestApplicationUpdateInfo]] regarding nifm.
   −
== ClearExFatDriverStatusForDebug ==
+
==== RequestRevokeAllELicense ====
No input/output.
+
Takes an input [[Account_services#Uid|Uid]], returns an output Event handle and an [[#IAsyncResult]].
   −
== RequestBackgroundNetworkUpdate ==
+
==== RequestSyncRightsBasedOnAssignedELicenses ====
No input/output.
+
No input, returns an output Event handle and an [[#IAsyncResult]].
   −
Only usable when an [[#ISystemUpdateControl]] isn't open.
+
=== IFactoryResetInterface ===
 +
This is "nn::ns::detail::IFactoryResetInterface".
   −
This sets a state flag to value 1.
+
{| class="wikitable" border="1"
 
+
|-
== NotifyBackgroundNetworkUpdate ==
+
! Cmd || Name
Takes an input [[NCM_services#ContentMetaKey|ContentMetaKey]], no output.
+
|-
 
+
| 100 || [[#ResetToFactorySettings]]
This checks whether a sysupdate is needed with the input ContentMetaKey using [[NCM_services|NCM]] commands, if not this will just return 0. Otherwise, this will then run code which is identical to [[#RequestBackgroundNetworkUpdate]].
+
|-
 
+
| 101 || [[#ResetToFactorySettingsWithoutUserSaveData]]
== NotifyExFatDriverDownloadedForDebug ==
+
|-
No input/output.
+
| 102 || [[#ResetToFactorySettingsForRefurbishment]]
 +
|-
 +
| 103 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegion]]
 +
|-
 +
| 104 || [9.1.0+] [[#ResetToFactorySettingsWithPlatformRegionAuthentication]]
 +
|-
 +
| 105 || [10.0.0+] [[#RequestResetToFactorySettingsSecurely]]
 +
|-
 +
| 106 || [10.0.0+] [[#RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely]]
 +
|-
 +
| 107 || [20.0.0+]
 +
|-
 +
| 108 || [20.0.0+]
 +
|}
   −
== GetSystemUpdateNotificationEventForContentDelivery ==
+
==== ResetToFactorySettings ====
No input, returns an output Event handle with EventClearMode=0.
  −
 
  −
== NotifySystemUpdateForContentDelivery ==
   
No input/output.
 
No input/output.
   −
Signals the Event returned by [[#GetSystemUpdateNotificationEventForContentDelivery]].
+
As of [9.1.0] this is the only [[#IFactoryResetInterface]] cmd used by [[qlaunch]].
   −
== PrepareShutdown ==
+
==== ResetToFactorySettingsWithoutUserSaveData ====
 
No input/output.
 
No input/output.
   −
This is used by [[AM_services|AM]].
+
==== ResetToFactorySettingsForRefurbishment ====
 +
No input/output.
   −
Just returns 0 when an [[#ISystemUpdateControl]] is open.  
+
==== ResetToFactorySettingsWithPlatformRegion ====
 +
No input/output.
   −
This does various cleanup / uses various service-cmds etc for shutdown preparation.
+
==== ResetToFactorySettingsWithPlatformRegionAuthentication ====
 
  −
== DestroySystemUpdateTask ==
   
No input/output.
 
No input/output.
   −
Only usable when an [[#ISystemUpdateControl]] isn't open.
+
==== RequestResetToFactorySettingsSecurely ====
 +
Takes an input u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
   −
This uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
+
The TransferMemory uses permissions=0.
   −
== RequestSendSystemUpdate ==
+
==== RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely ====
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 Ipv4Address, returns an output Event handle and an [[#IAsyncResult]].
+
Takes an input u32 "nn::ae::PlatformRegion", an u64 tmem_size, a TransferMemory handle, returns an output [[#IAsyncValueAndProgress]] and an Event handle.
   −
[[qlaunch]] uses value 55556 for the port. IP is normally a local-WLAN address, however this can be any address. port/addr are little-endian.
+
The TransferMemory uses permissions=0.
   −
[[NIM_services|NIM]] will use the input addr/port with [[Sockets_services|bind()]]. During [[Sockets_services|accept()]] handling the addr from there must match the input addr. Hence, addr must be the client addr. [[NIM_services|NIM]] will also eventually verify that the system is not Internet-connected.
+
===== IAsyncValueAndProgress =====
 +
This is "nn::ns::detail::IAsyncValueAndProgress".
   −
This validates the [[#SystemDeliveryInfo]] and generates a [[NCM_services#ContentMetaKey|ContentMetaKey]] from that, and creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
+
This was added with [10.0.0+].
* Calls a func which does:
  −
** Uses [[NIM_services|nim]] cmd76, returning the Result on failure.
  −
** Uses [[NIM_services|nim]] cmd77, 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.
  −
* Unlike [[#RequestReceiveSystemUpdate]], this doesn't save a SystemPlayReport.
  −
 
  −
== GetSendSystemUpdateProgress ==
  −
No input, returns an output [[#SystemUpdateProgress]].
  −
 
  −
Same as [[#GetReceiveProgress]] except this uses nim cmd81 and cmd78.
  −
 
  −
== ISystemUpdateControl ==
  −
This is "nn::ns::detail::ISystemUpdateControl".
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,381: Line 2,489:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#HasDownloaded]]
+
| 0 || GetSize
 
|-
 
|-
| 1 || [[#RequestCheckLatestUpdate]]
+
| 1 || Get
 
|-
 
|-
| 2 || [[#RequestDownloadLatestUpdate]]
+
| 2 || Cancel
 
|-
 
|-
| 3 || [[#GetDownloadProgress]]
+
| 3 || GetErrorContext
 
|-
 
|-
| 4 || [[#ApplyDownloadedUpdate]]
+
| 4 || GetProgress
|-
+
|}
| 5 || [[#RequestPrepareCardUpdate]]
+
 
 +
=== IApplicationResource ===
 +
This is "nn::ns::detail::IApplicationResource".
 +
 
 +
This was added with [9.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 6 || [[#GetPrepareCardUpdateProgress]]
+
! Cmd || Name
 
|-
 
|-
| 7 || [[#HasPreparedCardUpdate]]
+
| 0 || Attach
 
|-
 
|-
| 8 || [[#ApplyCardUpdate]]
+
| 1 || BoostSystemMemoryResourceLimit
 +
|}
 +
 
 +
= ns:vm =
 +
This is "nn::ns::detail::IVulnerabilityManagerInterface".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 9 || [[#GetDownloadedEulaDataSize]]
+
! Cmd || Name
 
|-
 
|-
| 10 || [[#GetDownloadedEulaData]]
+
| 1200 || [3.0.0+] [[#NeedsUpdateVulnerability]]
 
|-
 
|-
| 11 || [[#SetupCardUpdate]]
+
| 1201 || [4.0.0+] [[#UpdateSafeSystemVersionForDebug]]
 
|-
 
|-
| 12 || [[#GetPreparedCardUpdateEulaDataSize]]
+
| 1202 || [4.0.0+] [[#GetSafeSystemVersion]]
 
|-
 
|-
| 13 || [[#GetPreparedCardUpdateEulaData]]
+
| 3100 || [18.0.0+]  
 
|-
 
|-
| 14 || [4.0.0+] [[#SetupCardUpdateViaSystemUpdater]]
+
| 3101 || [18.0.0+]  
 
|-
 
|-
| 15 || [4.0.0+] [[#HasReceived]]
+
| 3102 || [18.0.0+]  
|-
+
|}
| 16 || [4.0.0+] [[#RequestReceiveSystemUpdate]]
+
 
|-
+
== NeedsUpdateVulnerability ==
| 17 || [4.0.0+] [[#GetReceiveProgress]]
+
No input, returns an output u8 bool flag.
|-
  −
| 18 || [4.0.0+] [[#ApplyReceivedUpdate]]
  −
|-
  −
| 19 || [4.0.0+] [[#GetReceivedEulaDataSize]]
  −
|-
  −
| 20 || [4.0.0+] [[#GetReceivedEulaData]]
  −
|-
  −
| 21 || [4.0.0+] [[#SetupToReceiveSystemUpdate]]
  −
|-
  −
| 22 || [6.0.0+] [[#RequestCheckLatestUpdateIncludesRebootlessUpdate]]
  −
|}
     −
Only 1 ISystemUpdateControl can be open at a time.
+
Web-applets use this command to check if the system needs an update.
   −
All Card cmds except SetupCardUpdate* require [[#SetupCardUpdate]]/[[#SetupCardUpdateViaSystemUpdater]] to be used previously. [[#GetPreparedCardUpdateEulaDataSize]]/[[#GetPreparedCardUpdateEulaData]] checks a different state flag.
+
== UpdateSafeSystemVersionForDebug ==
 +
Takes an input [[NCM_services#ApplicationId|ApplicationId]] and an u32 '''version'''.
   −
=== HasDownloaded ===
+
This command is not available for retail units. On a debug unit, if the [[System_Settings|system setting]] <code>vulnerability!enable_debug</code> is set, this mounts the system savegame [[Flash_Filesystem#System_Savegames|0x8000000000000049]] as "ns_ssversion:/", opens the file "ns_ssversion:/entry" and writes the supplied [[NCM_services#ApplicationId|ApplicationId]] and '''version''' in it.
No input, returns an output u8 bool flag.
     −
Gets whether a network sysupdate was downloaded, with install pending.
+
Finally, it calls [[NCM_services#ncm|OpenContentMetaDatabase]] with [[NCM_services#StorageId|StorageId]] 3, then calls [[NCM_services#IContentMetaDatabase|GetLatestContentMetaKey]] with the supplied [[NCM_services#ApplicationId|ApplicationId]] and compares the version field from the returned [[CNMT#Content_Meta_Records|Content Meta Record]] with the supplied '''version'''.
   −
Uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output flag is set to: <code>*((u8*)(taskinfo+0) == 0x3</code>. Otherwise, flag=0.
+
If the supplied '''version''' is higher than the one in NCM's database, the value returned by [[NS_Services#NeedsUpdateVulnerability|NeedsUpdateVulnerability]] is set to "true".
   −
This always returns 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
+
== GetSafeSystemVersion ==
 +
No input, returns an output [[NCM_services#ContentMetaKey|ContentMetaKey]] with the cached contents of "ns_ssversion:/entry" ([[NCM_services#ApplicationId|ApplicationId]], u32 '''version''' and u32 '''policy''' from <code>vulnerability!needs_update_vulnerability_policy</code>).
   −
=== RequestCheckLatestUpdate ===
+
= ns:su =
No input, returns an output Event handle and an [[#IAsyncValue]].
+
This is "nn::ns::detail::ISystemUpdateInterface".
   −
The data that can be read from the [[#IAsyncValue]] is [[#LatestSystemUpdate]].
+
{| class="wikitable" border="1"
 
+
|-
=== RequestDownloadLatestUpdate ===
+
! Cmd || Name
No input, returns an output Event handle and an [[#IAsyncResult]].
+
|-
 +
| 0 || [[#GetBackgroundNetworkUpdateState]]
 +
|-
 +
| 1 || [[#OpenSystemUpdateControl]]
 +
|-
 +
| 2 || [[#NotifyExFatDriverRequired]]
 +
|-
 +
| 3 || [[#ClearExFatDriverStatusForDebug]]
 +
|-
 +
| 4 || [[#RequestBackgroundNetworkUpdate]]
 +
|-
 +
| 5 || [[#NotifyBackgroundNetworkUpdate]]
 +
|-
 +
| 6 || [[#NotifyExFatDriverDownloadedForDebug]]
 +
|-
 +
| 9 || [[#GetSystemUpdateNotificationEventForContentDelivery]]
 +
|-
 +
| 10 || [[#NotifySystemUpdateForContentDelivery]]
 +
|-
 +
| 11 || [3.0.0+] [[#PrepareShutdown]]
 +
|-
 +
| 12 || [3.0.0-3.0.2]
 +
|-
 +
| 13 || [3.0.0-3.0.2]
 +
|-
 +
| 14 || [3.0.0-3.0.2]
 +
|-
 +
| 15 || [3.0.0-3.0.2]
 +
|-
 +
| 16 || [4.0.0+] [[#DestroySystemUpdateTask]]
 +
|-
 +
| 17 || [4.0.0+] [[#RequestSendSystemUpdate]]
 +
|-
 +
| 18 || [4.0.0+] [[#GetSendSystemUpdateProgress]]
 +
|}
   −
=== GetDownloadProgress ===
+
== GetBackgroundNetworkUpdateState ==
No input, returns an output [[#SystemUpdateProgress]].
+
No input, returns an output [[#BackgroundNetworkUpdateState]].
 +
 
 +
This is similar to [[#HasDownloaded]], see [[#BackgroundNetworkUpdateState]].
   −
Similar to [[#HasDownloaded]] except instead of a flag, this returns the 0x10-bytes from taskinfo+8. The output struct is cleared when the task(info) isn't available.
+
== OpenSystemUpdateControl ==
 +
No input, returns an [[#ISystemUpdateControl]].
   −
=== ApplyDownloadedUpdate ===
+
== NotifyExFatDriverRequired ==
 
No input/output.
 
No input/output.
   −
Runs code similar to [[#HasDownloaded]], throwing an error if a network sysupdate isn't ready for install. Then the sysupdate is installed:
+
Only usable when an [[#ISystemUpdateControl]] isn't open.
   −
* Uses ListSystemUpdateTask again, then [[NIM_services|nim]] IsExFatDriverIncluded. Runs ExFat handling when the output flag is set.
+
This uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
* 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 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).
  −
** The EventId is "systemupdate_pass" with ApplicationId 0100000000001021.
  −
** This report has the following fields:
  −
*** "Type"
  −
*** "SourceSystemUpdateMetaId"
  −
*** "SourceSystemUpdateMetaVersion"
  −
*** "SourceExFatStatus"
  −
*** "DestinationSystemUpdateMetaId"
  −
*** "DestinationSystemUpdateMetaVersion"
  −
*** "DestinationExFatStatus"
  −
*** "Rebootless"
  −
* Since FIRM will be installed later, the two flags in [[Flash_Filesystem#System_Update_Control]] are set to 1.
  −
* Uses [[NIM_services|nim]] CommitSystemUpdateTask and [[NIM_services|nim]] DestroySystemUpdateTask.
  −
* Installs FIRM. After installing each FIRM, the associated flag in [[Flash_Filesystem#System_Update_Control]] is set to 0.
  −
* On newer system versions when an input flag is set, this uses [[Filesystem_services|NotifySystemDataUpdateEvent]], however this doesn't happen with ApplyDownloadedUpdate since that input flag is 0.
     −
=== RequestPrepareCardUpdate ===
+
Then this runs ExFat handling, updates state, and sets the same state flag as [[#RequestBackgroundNetworkUpdate]].
No input, returns an output Event handle and an [[#IAsyncResult]].
     −
=== GetPrepareCardUpdateProgress ===
+
== ClearExFatDriverStatusForDebug ==
No input, returns an output [[#SystemUpdateProgress]].
+
No input/output.
   −
=== HasPreparedCardUpdate ===
+
== RequestBackgroundNetworkUpdate ==
No input, returns an output u8 bool flag.
  −
 
  −
=== ApplyCardUpdate ===
   
No input/output.
 
No input/output.
   −
=== GetDownloadedEulaDataSize ===
+
Only usable when an [[#ISystemUpdateControl]] isn't open.
Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''.
     −
Runs code similar to [[#HasDownloaded]], throwing an error if a network sysupdate isn't ready for install.
+
This sets a state flag to value 1.
   −
Uses ListSystemUpdateTask again. Then [[NIM_services|nim]] GetDownloadedSystemDataPath, with the output ContentPath being used to mount the EULA title with FS.
+
== NotifyBackgroundNetworkUpdate ==
 +
Takes an input [[NCM_services#ContentMetaKey|ContentMetaKey]], no output.
   −
Then "<mountname>:/<[[#EulaDataPath]]>" is opened, gets the '''filesize''', then runs cleanup.
+
This checks whether a sysupdate is needed with the input ContentMetaKey using [[NCM_services|NCM]] commands, if not this will just return 0. Otherwise, this will then run code which is identical to [[#RequestBackgroundNetworkUpdate]].
   −
=== GetDownloadedEulaData ===
+
== NotifyExFatDriverDownloadedForDebug ==
Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''.
+
No input/output.
   −
Similar to [[#GetDownloadedEulaDataSize]] except this reads the file instead, using the specified output buffer with size=filesize. This will throw an error if the filesize is larger than the buffer size.
+
== GetSystemUpdateNotificationEventForContentDelivery ==
 +
No input, returns an output Event handle with EventClearMode=0.
   −
=== SetupCardUpdate ===
+
== NotifySystemUpdateForContentDelivery ==
Takes an input u64 size and a TransferMemory handle, no output.
+
No input/output.
   −
Official sw creates the TransferMemory with an user-specified buffer, with permissions=None.
+
Signals the Event returned by [[#GetSystemUpdateNotificationEventForContentDelivery]].
   −
[[qlaunch]] uses size 0x100000 for the TransferMemory buffer.
+
== PrepareShutdown ==
 +
No input/output.
   −
=== GetPreparedCardUpdateEulaDataSize ===
+
This is used by [[AM_services|AM]].
Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''.
     −
This is similar to [[#GetDownloadedEulaDataSize]].
+
Just returns 0 when an [[#ISystemUpdateControl]] is open.  
   −
=== GetPreparedCardUpdateEulaData ===
+
This does various cleanup / uses various service-cmds etc for shutdown preparation.
Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''.
     −
This is similar to [[#GetDownloadedEulaData]].
+
== DestroySystemUpdateTask ==
 +
No input/output.
   −
=== SetupCardUpdateViaSystemUpdater ===
+
Only usable when an [[#ISystemUpdateControl]] isn't open.
Takes an input u64 size and a TransferMemory handle, no output.
     −
The permissions for the TransferMemory is None.
+
This uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
   −
Same as [[#SetupCardUpdate]], except this doesn't have the code for [[Filesystem_services|GetGameCardHandle/GetGameCardUpdatePartitionInfo]], and uses [[Filesystem_services|OpenRegisteredUpdatePartition]] instead of [[Filesystem_services|OpenGameCardFileSystem]]. This uses the same is_initialized bool state flag.
+
== RequestSendSystemUpdate ==
 
  −
=== HasReceived ===
  −
No input, returns an output u8 bool.
  −
 
  −
Same as [[#HasDownloaded]] except this uses [[NIM_services|nim]] cmd71 and cmd73.
  −
 
  −
=== RequestReceiveSystemUpdate ===
   
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 Ipv4Address, returns an output Event handle and an [[#IAsyncResult]].
 
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 Ipv4Address, returns an output Event handle and an [[#IAsyncResult]].
   −
[[qlaunch]] uses the same value for the port as [[#RequestSendSystemUpdate]] (see [[#RequestSendSystemUpdate]] for addr as well).
+
[[qlaunch]] uses value 55556 for the port. IP is normally a local-WLAN address, however this can be any address. port/addr are little-endian.
   −
[[NIM_services|NIM]] will use the input addr/port with [[Sockets_services|connect()]].
+
[[NIM_services|NIM]] will use the input addr/port with [[Sockets_services|bind()]]. During [[Sockets_services|accept()]] handling the addr from there must match the input addr. Hence, addr must be the client addr. [[NIM_services|NIM]] will also eventually verify that the system is not Internet-connected.
    
This validates the [[#SystemDeliveryInfo]] and generates a [[NCM_services#ContentMetaKey|ContentMetaKey]] from that, and creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
 
This validates the [[#SystemDeliveryInfo]] and generates a [[NCM_services#ContentMetaKey|ContentMetaKey]] from that, and creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
   
* Calls a func which does:
 
* Calls a func which does:
** Throws an error if [[NIM_services#ListSystemUpdateTask|ListSystemUpdateTask]] returns any task.
+
** Uses [[NIM_services|nim]] cmd76, returning the Result on failure.
** Checks whether a sysupdate is actually required using the previously generated [[NCM_services#ContentMetaKey|ContentMetaKey]], throwing an error if not.
+
** Uses [[NIM_services|nim]] cmd77, 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]] cmd69, returning the Result on failure.
  −
** 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 the cached [[System_Settings|system-setting]] "systemreport!enabled" is set.
+
* Unlike [[#RequestReceiveSystemUpdate]], this doesn't save a SystemPlayReport.
** The EventId is "receive_system_update" with ApplicationId <NS ProgramId>.
+
 
** This report has the following fields:
+
== GetSendSystemUpdateProgress ==
*** "SourceSystemUpdateId"
  −
*** "DestinationSystemUpdateId"
  −
*** "SourceSystemUpdateVersion"
  −
*** "DestinationSystemUpdateVersion"
  −
*** "SenderFirmwareVariationId"
  −
*** "ReceiverFirmwareVariationId"
  −
*** "SenderPlatformRegion"
  −
*** "ReceiverPlatformRegion"
  −
*** "SenderHasExFat"
  −
*** "ReceiverHasExFat"
  −
*** "Size"
  −
*** "ThroughputKBps"
  −
 
  −
=== GetReceiveProgress ===
   
No input, returns an output [[#SystemUpdateProgress]].
 
No input, returns an output [[#SystemUpdateProgress]].
   −
Same as [[#GetDownloadProgress]] except this uses [[NIM_services|nim]] cmd71 and cmd73.
+
Same as [[#GetReceiveProgress]] except this uses nim cmd81 and cmd78.
   −
=== ApplyReceivedUpdate ===
+
== ISystemUpdateControl ==
No input/output.
+
This is "nn::ns::detail::ISystemUpdateControl".
   −
=== GetReceivedEulaDataSize ===
+
{| class="wikitable" border="1"
Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''.
+
|-
 
+
! Cmd || Name
This is similar to [[#GetDownloadedEulaDataSize]].
+
|-
 
+
| 0 || [[#HasDownloaded]]
=== GetReceivedEulaData ===
+
|-
Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''.
+
| 1 || [[#RequestCheckLatestUpdate]]
 
+
|-
This is similar to [[#GetDownloadedEulaData]].
+
| 2 || [[#RequestDownloadLatestUpdate]]
 
+
|-
=== SetupToReceiveSystemUpdate ===
+
| 3 || [[#GetDownloadProgress]]
No input/output.
+
|-
 
+
| 4 || [[#ApplyDownloadedUpdate]]
This just uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
+
|-
 
+
| 5 || [[#RequestPrepareCardUpdate]]
[[qlaunch]] uses this before [[#RequestReceiveSystemUpdate]].
  −
 
  −
=== RequestCheckLatestUpdateIncludesRebootlessUpdate ===
  −
No input, returns an output Event handle and an [[#IAsyncValue]].
  −
 
  −
= IAsyncValue =
  −
This is "nn::ns::detail::IAsyncValue".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 6 || [[#GetPrepareCardUpdateProgress]]
 
|-
 
|-
| 0 || GetSize
+
| 7 || [[#HasPreparedCardUpdate]]
 
|-
 
|-
| 1 || Get
+
| 8 || [[#ApplyCardUpdate]]
 
|-
 
|-
| 2 || Cancel
+
| 9 || [[#GetDownloadedEulaDataSize]]
 
|-
 
|-
| 3 || [4.0.0+] GetErrorContext
+
| 10 || [[#GetDownloadedEulaData]]
|}
+
|-
 
+
| 11 || [[#SetupCardUpdate]]
Official sw creates a container object for this using the output from the service commands, which contains the IAsyncValue object, and the Event with EventClearMode=0.
+
|-
 
+
| 12 || [[#GetPreparedCardUpdateEulaDataSize]]
* GetSize: No input, returns an output u64.
+
|-
* Get: Takes a type-0x6 output buffer, no output. Official sw waits on the Event prior to using this cmd.
+
| 13 || [[#GetPreparedCardUpdateEulaData]]
* Cancel: No input/output. Used by official sw when closing the object, when the serv-obj is initialized (after using the cmd, official sw will also wait on the Event). This cmd is also used in other official sw funcs.
+
|-
* GetErrorContext: No input/output, takes a type-0x16 output buffer containing an [[Error_Applet#ErrorContext|ErrorContext]].
+
| 14 || [4.0.0+] [[#SetupCardUpdateViaSystemUpdater]]
 
+
|-
= IAsyncResult =
+
| 15 || [4.0.0+] [[#HasReceived]]
This is "nn::ns::detail::IAsyncResult".
+
|-
 
+
| 16 || [4.0.0+] [[#RequestReceiveSystemUpdate]]
{| class="wikitable" border="1"
+
|-
 +
| 17 || [4.0.0+] [[#GetReceiveProgress]]
 +
|-
 +
| 18 || [4.0.0+] [[#ApplyReceivedUpdate]]
 
|-
 
|-
! Cmd || Name
+
| 19 || [4.0.0+] [[#GetReceivedEulaDataSize]]
 
|-
 
|-
| 0 || Get
+
| 20 || [4.0.0+] [[#GetReceivedEulaData]]
 
|-
 
|-
| 1 || Cancel
+
| 21 || [4.0.0+] [[#SetupToReceiveSystemUpdate]]
 
|-
 
|-
| 2 || [4.0.0+] GetErrorContext
+
| 22 || [6.0.0+] [[#RequestCheckLatestUpdateIncludesRebootlessUpdate]]
 
|}
 
|}
   −
Official sw creates a container object for this using the output from the service commands, which contains the IAsyncResult object, and the Event with EventClearMode=0.
+
Only 1 ISystemUpdateControl can be open at a time.
   −
* Get: No input/output. Official sw waits on the Event prior to using this cmd.
+
All Card cmds except SetupCardUpdate* require [[#SetupCardUpdate]]/[[#SetupCardUpdateViaSystemUpdater]] to be used previously. [[#GetPreparedCardUpdateEulaDataSize]]/[[#GetPreparedCardUpdateEulaData]] checks a different state flag.
* Cancel: No input/output. Used by official sw when closing the object, when the serv-obj is initialized (after using the cmd, official sw will also wait on the Event). This cmd is also used in other official sw funcs.
+
 
* GetErrorContext: No input/output, takes a type-0x16 output buffer containing an [[Error_Applet#ErrorContext|ErrorContext]].
+
=== HasDownloaded ===
 +
No input, returns an output u8 bool flag.
 +
 
 +
Gets whether a network sysupdate was downloaded, with install pending.
 +
 
 +
Uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output flag is set to: <code>*((u8*)(taskinfo+0) == 0x3</code>. Otherwise, flag=0.
 +
 
 +
This always returns 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
 +
 
 +
=== RequestCheckLatestUpdate ===
 +
No input, returns an output Event handle and an [[#IAsyncValue]].
   −
= ns:dev =
+
The data that can be read from the [[#IAsyncValue]] is [[#LatestSystemUpdate]].
This is "nn::ns::detail::IDevelopInterface".
     −
[10.0.0+] Some of these cmds were replaced by the [[PGL_services|pgl]] system module.
+
=== RequestDownloadLatestUpdate ===
 +
No input, returns an output Event handle and an [[#IAsyncResult]].
   −
{| class="wikitable" border="1"
+
=== GetDownloadProgress ===
|-
+
No input, returns an output [[#SystemUpdateProgress]].
! Cmd || Name
+
 
|-
+
Similar to [[#HasDownloaded]] except instead of a flag, this returns the 0x10-bytes from taskinfo+8. The output struct is cleared when the task(info) isn't available.
| 0 || [1.0.0-9.2.0] [[#LaunchProgram]]
+
 
|-
+
=== ApplyDownloadedUpdate ===
| 1 || [[#TerminateProcess]]
+
No input/output.
|-
+
 
| 2 || [1.0.0-9.2.0] [[#TerminateProgram]]
+
Runs code similar to [[#HasDownloaded]], throwing an error if a network sysupdate isn't ready for install. Then the sysupdate is installed:
|-
+
 
| 4 || [1.0.0-9.2.0] [[#GetShellEvent]]
+
* 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 the cached [[System_Settings|system-setting]] "systemreport!enabled" is set.
| 5 || [1.0.0-9.2.0] [[#GetShellEventInfo]]
+
** 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".
| 6 || [[#TerminateApplication]]
+
* 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.
| 7 || [1.0.0-9.2.0] [[#PrepareLaunchProgramFromHost]]
+
** This report has the following fields:
|-
+
*** "Type"
| 8 || [10.0.0-17.0.1] [[#LaunchApplicationFromHost]] ([1.0.0-9.2.0] LaunchApplication)
+
*** "SourceSystemUpdateMetaId"
|-
+
*** "SourceSystemUpdateMetaVersion"
| 9 || [1.0.0-17.0.1] [[#LaunchApplicationWithStorageId]]
+
*** "SourceExFatStatus"
|-
+
*** "DestinationSystemUpdateMetaId"
| 10 || [6.0.0-8.1.0] [[#IsSystemMemoryResourceLimitBoosted]]
+
*** "DestinationSystemUpdateMetaVersion"
|-
+
*** "DestinationExFatStatus"
| 11 || [6.0.0+] [[#GetRunningApplicationProcessId]]
+
*** "Rebootless"
|-
+
* Since FIRM will be installed later, the two flags in [[Flash_Filesystem#System_Update_Control]] are set to 1.
| 12 || [6.0.0+] [[#SetCurrentApplicationRightsEnvironmentCanBeActive]]
+
* Uses [[NIM_services|nim]] CommitSystemUpdateTask and [[NIM_services|nim]] DestroySystemUpdateTask.
|-
+
* Installs FIRM. After installing each FIRM, the associated flag in [[Flash_Filesystem#System_Update_Control]] is set to 0.
| 13 || [9.0.0+] [[#CreateApplicationResource]]
+
* On newer system versions when an input flag is set, this uses [[Filesystem_services|NotifySystemDataUpdateEvent]], however this doesn't happen with ApplyDownloadedUpdate since that input flag is 0.
|-
  −
| 14 || [9.0.0+] [[#IsPreomia]]
  −
|-
  −
| 15 || [10.0.0-17.0.1] [[#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
  −
|-
  −
| 21 || [18.0.0+] [[#PrepareLaunchApplication]]
  −
|-
  −
| 22 || [18.0.0+] [[#LaunchApplication]]
  −
|-
  −
| 23 || [18.0.0+] [[#GetProgramIdByApplicationLaunchInfo]]
  −
|-
  −
| 24 || [18.0.0+] DestroyApplicationLaunchPreparation
  −
|}
     −
== LaunchProgram ==
+
=== RequestPrepareCardUpdate ===
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|LaunchProcess]].
+
No input, returns an output Event handle and an [[#IAsyncResult]].
   −
== TerminateProcess ==
+
=== GetPrepareCardUpdateProgress ===
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|TerminateProcess]].
+
No input, returns an output [[#SystemUpdateProgress]].
   −
== TerminateProgram ==
+
=== HasPreparedCardUpdate ===
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|TerminateProgram]].
+
No input, returns an output u8 bool flag.
   −
== GetShellEvent ==
+
=== ApplyCardUpdate ===
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|GetProcessEventHandle]].
+
No input/output.
   −
== GetShellEventInfo ==
+
=== GetDownloadedEulaDataSize ===
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|GetProcessEventInfo]].
+
Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''.
   −
== TerminateApplication ==
+
Runs code similar to [[#HasDownloaded]], throwing an error if a network sysupdate isn't ready for install.
Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends the ProcessId to [[Process_Manager_services#pm:shell|TerminateProcess]].
     −
== PrepareLaunchProgramFromHost ==
+
Uses ListSystemUpdateTask again. Then [[NIM_services|nim]] GetDownloadedSystemDataPath, with the output ContentPath being used to mount the EULA title with FS.
Takes a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]], returns an output 0x10-byte struct.
     −
Calls [[NCM_services#IPathResolverForStorage|IPathResolverForStorage]] Set...NcaPath functions.
+
Then "<mountname>:/<[[#EulaDataPath]]>" is opened, gets the '''filesize''', then runs cleanup.
   −
== LaunchApplicationFromHost ==
+
=== GetDownloadedEulaData ===
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]]. Returns an output u64 ProcessId.
+
Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''.
   −
== LaunchApplicationWithStorageId ==
+
Similar to [[#GetDownloadedEulaDataSize]] except this reads the file instead, using the specified output buffer with size=filesize. This will throw an error if the filesize is larger than the buffer size.
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.
+
=== SetupCardUpdate ===
 +
Takes an input u64 size and a TransferMemory handle, no output.
   −
== IsSystemMemoryResourceLimitBoosted ==
+
Official sw creates the TransferMemory with an user-specified buffer, with permissions=None.
No input. Returns a bool.
     −
== GetRunningApplicationProcessId ==
+
[[qlaunch]] uses size 0x100000 for the TransferMemory buffer.
Returns an output u64 ProcessId.
     −
== SetCurrentApplicationRightsEnvironmentCanBeActive ==
+
=== GetPreparedCardUpdateEulaDataSize ===
Takes an input bool. No output.
+
Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''.
   −
== CreateApplicationResource ==
+
This is similar to [[#GetDownloadedEulaDataSize]].
Takes an input u32 (1 = Preomia/MicroApplication). Returns an [[#IApplicationResource]].
     −
== IsPreomia ==
+
=== GetPreparedCardUpdateEulaData ===
Takes an input u64 [[NCM_services#ProgramId|ProgramId]]. Returns a bool.
+
Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''.
   −
== GetApplicationProgramIdFromHost ==
+
This is similar to [[#GetDownloadedEulaData]].
Takes a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
     −
== PrepareLaunchApplicationFromHost ==
+
=== SetupCardUpdateViaSystemUpdater ===
[18.0.0+] Now returns a total of 0x50 bytes of output.
+
Takes an input u64 size and a TransferMemory handle, no output.
   −
[19.0.0+] Now returns a total of 0x80 bytes of output.
+
The permissions for the TransferMemory is None.
   −
== GetLaunchEvent ==
+
Same as [[#SetupCardUpdate]], except this doesn't have the code for [[Filesystem_services|GetGameCardHandle/GetGameCardUpdatePartitionInfo]], and uses [[Filesystem_services|OpenRegisteredUpdatePartition]] instead of [[Filesystem_services|OpenGameCardFileSystem]]. This uses the same is_initialized bool state flag.
[18.0.0+] Now takes a total of 0x50 bytes of input.
     −
[19.0.0+] Now takes a total of 0x80 bytes of input.
+
=== HasReceived ===
 +
No input, returns an output u8 bool.
   −
== GetLaunchResult ==
+
Same as [[#HasDownloaded]] except this uses [[NIM_services|nim]] cmd71 and cmd73.
[18.0.0+] Now takes a total of 0x50 bytes of input.
     −
[19.0.0+] Now takes a total of 0x80 bytes of input.
+
=== RequestReceiveSystemUpdate ===
 +
Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 Ipv4Address, returns an output Event handle and an [[#IAsyncResult]].
   −
== PrepareLaunchApplication ==
+
[[qlaunch]] uses the same value for the port as [[#RequestSendSystemUpdate]] (see [[#RequestSendSystemUpdate]] for addr as well).
Takes a total of 0x10-bytes of input. Returns a total of 0x50-bytes of output.
     −
[19.0.0+] Now returns a total of 0x80-bytes of output.
+
[[NIM_services|NIM]] will use the input addr/port with [[Sockets_services|connect()]].
   −
== LaunchApplication ==
+
This validates the [[#SystemDeliveryInfo]] and generates a [[NCM_services#ContentMetaKey|ContentMetaKey]] from that, and creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does:
Takes a total of 0x50-bytes of input. Returns a total of 8-bytes of output.
     −
[19.0.0+] Now takes a total of 0x80 bytes of input.
+
* Calls a func which does:
 +
** Throws an error if [[NIM_services#ListSystemUpdateTask|ListSystemUpdateTask]] returns any task.
 +
** Checks whether a sysupdate is actually required using the previously generated [[NCM_services#ContentMetaKey|ContentMetaKey]], throwing an error if not.
 +
** Uses [[NIM_services|nim]] cmd69, returning the Result on failure.
 +
** 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.
 +
* 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>.
 +
** This report has the following fields:
 +
*** "SourceSystemUpdateId"
 +
*** "DestinationSystemUpdateId"
 +
*** "SourceSystemUpdateVersion"
 +
*** "DestinationSystemUpdateVersion"
 +
*** "SenderFirmwareVariationId"
 +
*** "ReceiverFirmwareVariationId"
 +
*** "SenderPlatformRegion"
 +
*** "ReceiverPlatformRegion"
 +
*** "SenderHasExFat"
 +
*** "ReceiverHasExFat"
 +
*** "Size"
 +
*** "ThroughputKBps"
   −
== GetProgramIdByApplicationLaunchInfo ==
+
=== GetReceiveProgress ===
Takes a total of 0x50-bytes of input. Returns a total of 8-bytes of output.
+
No input, returns an output [[#SystemUpdateProgress]].
   −
[19.0.0+] Now takes a total of 0x80 bytes of input.
+
Same as [[#GetDownloadProgress]] except this uses [[NIM_services|nim]] cmd71 and cmd73.
   −
= acc:su =
+
=== ApplyReceivedUpdate ===
This is "nn::account::IAccountServiceForAdministrator".
+
No input/output.
   −
[13.0.0+] This was moved from [[Account_services|account]].
+
=== GetReceivedEulaDataSize ===
 +
Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''.
   −
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
+
This is similar to [[#GetDownloadedEulaDataSize]].
 +
 
 +
=== GetReceivedEulaData ===
 +
Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''.
 +
 
 +
This is similar to [[#GetDownloadedEulaData]].
 +
 
 +
=== SetupToReceiveSystemUpdate ===
 +
No input/output.
 +
 
 +
This just uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
 +
 
 +
[[qlaunch]] uses this before [[#RequestReceiveSystemUpdate]].
 +
 
 +
=== RequestCheckLatestUpdateIncludesRebootlessUpdate ===
 +
No input, returns an output Event handle and an [[#IAsyncValue]].
 +
 
 +
= IAsyncValue =
 +
This is "nn::ns::detail::IAsyncValue".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || GetUserCount ||
+
| 0 || GetSize
 
|-
 
|-
| 1 || GetUserExistence ||
+
| 1 || Get
 
|-
 
|-
| 2 || ListAllUsers ||
+
| 2 || Cancel
 
|-
 
|-
| 3 || ListOpenUsers ||
+
| 3 || [4.0.0+] GetErrorContext
|-
+
|}
| 4 || GetLastOpenedUser ||
+
 
|-
+
Official sw creates a container object for this using the output from the service commands, which contains the IAsyncValue object, and the Event with EventClearMode=0.
| 5 || GetProfile || Returns an [[#IProfile]].
+
 
 +
* GetSize: No input, returns an output u64.
 +
* Get: Takes a type-0x6 output buffer, no output. Official sw waits on the Event prior to using this cmd.
 +
* Cancel: No input/output. Used by official sw when closing the object, when the serv-obj is initialized (after using the cmd, official sw will also wait on the Event). This cmd is also used in other official sw funcs.
 +
* GetErrorContext: No input/output, takes a type-0x16 output buffer containing an [[Error_Applet#ErrorContext|ErrorContext]].
 +
 
 +
= IAsyncResult =
 +
This is "nn::ns::detail::IAsyncResult".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 6 || [3.0.0+] GetProfileDigest ||
+
! Cmd || Name
 
|-
 
|-
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
+
| 0 || Get
 
|-
 
|-
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
+
| 1 || Cancel
 
|-
 
|-
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
+
| 2 || [4.0.0+] GetErrorContext
 +
|}
 +
 
 +
Official sw creates a container object for this using the output from the service commands, which contains the IAsyncResult object, and the Event with EventClearMode=0.
 +
 
 +
* Get: No input/output. Official sw waits on the Event prior to using this cmd.
 +
* Cancel: No input/output. Used by official sw when closing the object, when the serv-obj is initialized (after using the cmd, official sw will also wait on the Event). This cmd is also used in other official sw funcs.
 +
* GetErrorContext: No input/output, takes a type-0x16 output buffer containing an [[Error_Applet#ErrorContext|ErrorContext]].
 +
 
 +
= ns:dev =
 +
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"
 
|-
 
|-
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
+
! Cmd || Name
 
|-
 
|-
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
+
| 0 || [1.0.0-9.2.0] [[#LaunchProgram]]
 
|-
 
|-
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
+
| 1 || [[#TerminateProcess]]
 
|-
 
|-
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
+
| 2 || [1.0.0-9.2.0] [[#TerminateProgram]]
 
|-
 
|-
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
+
| 4 || [1.0.0-9.2.0] [[#GetShellEvent]]
 
|-
 
|-
| 103 || GetBaasUserAvailabilityChangeNotifier || Returns an [[#INotifier]].
+
| 5 || [1.0.0-9.2.0] [[#GetShellEventInfo]]
 
|-
 
|-
| 104 || GetProfileUpdateNotifier || Returns an [[#INotifier]].
+
| 6 || [[#TerminateApplication]]
 
|-
 
|-
| 105 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
+
| 7 || [1.0.0-9.2.0] [[#PrepareLaunchProgramFromHost]]
 
|-
 
|-
| 106 || [9.0.0+] GetProfileSyncNotifier ||
+
| 8 || [10.0.0-17.0.1] [[#LaunchApplicationFromHost]] ([1.0.0-9.2.0] LaunchApplication)
 
|-
 
|-
| 110 || StoreSaveDataThumbnail ||
+
| 9 || [1.0.0-17.0.1] [[#LaunchApplicationWithStorageId]]
 
|-
 
|-
| 111 || ClearSaveDataThumbnail ||
+
| 10 || [6.0.0-8.1.0] [[#IsSystemMemoryResourceLimitBoosted]]
 
|-
 
|-
| 112 || LoadSaveDataThumbnail ||
+
| 11 || [6.0.0+] [[#GetRunningApplicationProcessId]]
 
|-
 
|-
| 113 || [5.0.0+] GetSaveDataThumbnailExistence ||
+
| 12 || [6.0.0+] [[#SetCurrentApplicationRightsEnvironmentCanBeActive]]
 
|-
 
|-
| 120 || [10.0.0+] ListOpenUsersInApplication ||
+
| 13 || [9.0.0+] [[#CreateApplicationResource]]
 
|-
 
|-
| 130 || [6.0.0+] ActivateOpenContextRetention || Takes a total of 0x8-bytes of input, returns an [[#ISessionObject]].
+
| 14 || [9.0.0+] [[#IsPreomia]]
 
|-
 
|-
| 140 || [6.0.0+] ListQualifiedUsers ||
+
| 15 || [10.0.0-17.0.1] [[#GetApplicationProgramIdFromHost]]
 
|-
 
|-
| 150 || [10.0.0-10.2.0] AuthenticateApplicationAsync ||
+
| 16 || [12.0.0+] RefreshCachedDebugValues
 
|-
 
|-
| 151 || [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync ||
+
| 17 || [12.0.0+] [[#PrepareLaunchApplicationFromHost]]
 
|-
 
|-
| 152 || [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount ||
+
| 18 || [12.0.0+] [[#GetLaunchEvent]]
 
|-
 
|-
| 170 || [13.0.0+] GetNasOp2MembershipStateChangeNotifier ||
+
| 19 || [12.0.0+] [[#GetLaunchResult]]
 
|-
 
|-
| 190 || [1.0.0-9.2.0] GetUserLastOpenedApplication ||
+
| 20 || [14.0.0+] GetProgramId
 
|-
 
|-
| 191 || [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
+
| 21 || [18.0.0+] [[#PrepareLaunchApplication]]
 
|-
 
|-
| 200 || BeginUserRegistration ||
+
| 22 || [18.0.0+] [[#LaunchApplication]]
 
|-
 
|-
| 201 || CompleteUserRegistration ||
+
| 23 || [18.0.0+] [[#GetProgramIdByApplicationLaunchInfo]]
 
|-
 
|-
| 202 || CancelUserRegistration ||
+
| 24 || [18.0.0+] DestroyApplicationLaunchPreparation
|-
+
|}
| 203 || DeleteUser ||
+
 
|-
+
== LaunchProgram ==
| 204 || SetUserPosition ||
+
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|LaunchProcess]].
|-
+
 
| 205 || GetProfileEditor || Takes an input userID and returns an [[#IProfileEditor]].
+
== TerminateProcess ==
|-
+
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|TerminateProcess]].
| 206 || CompleteUserRegistrationForcibly ||
+
 
|-
+
== TerminateProgram ==
| 210 || [3.0.0+] CreateFloatingRegistrationRequest || Returns an [[#IFloatingRegistrationRequest]].
+
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|TerminateProgram]].
|-
+
 
| 211 || [8.0.0+] CreateProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x4-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
+
== GetShellEvent ==
|-
+
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|GetProcessEventHandle]].
| 212 || [8.0.0+] ResumeProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x14-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
+
 
|-
+
== GetShellEventInfo ==
| 213 || [17.0.0+] CreateProcedureToCreateUserWithNintendoAccount ||
+
Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|GetProcessEventInfo]].
|-
+
 
| 214 || [17.0.0+] ResumeProcedureToCreateUserWithNintendoAccount ||
+
== TerminateApplication ==
|-
+
Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends the ProcessId to [[Process_Manager_services#pm:shell|TerminateProcess]].
| 215 || [17.0.0+] ResumeProcedureToCreateUserWithNintendoAccountAfterApplyResponse ||
+
 
|-
+
== PrepareLaunchProgramFromHost ==
| 230 || AuthenticateServiceAsync || Returns an [[#IAsyncContext]].
+
Takes a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]], returns an output 0x10-byte struct.
|-
+
 
| 250 || GetBaasAccountAdministrator || Returns an [[#IAdministrator]].
+
Calls [[NCM_services#IPathResolverForStorage|IPathResolverForStorage]] Set...NcaPath functions.
|-
+
 
| 290 || ProxyProcedureForGuestLoginWithNintendoAccount || Returns an [[#IOAuthProcedureForExternalNsa]] (formerly [[#IOAuthProcedureForGuestLogin]] with [1.0.0-2.3.0]).
+
== LaunchApplicationFromHost ==
|-
+
Takes an input u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]] and a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]]. Returns an output u64 ProcessId.
| 291 || [3.0.0+] ProxyProcedureForFloatingRegistrationWithNintendoAccount || Returns an [[#IOAuthProcedureForExternalNsa]].
+
 
|-
+
== LaunchApplicationWithStorageId ==
| 299 || SuspendBackgroundDaemon || Returns an [[#ISessionObject]].
+
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.
|-
+
 
| 400 || [18.0.0+] SetPinCode ||
+
Launches an application title which is registered with NS.
|-
+
 
| 401 || [18.0.0+] GetPinCodeLength ||
+
== IsSystemMemoryResourceLimitBoosted ==
|-
+
No input. Returns a bool.
| 402 || [18.0.0+] GetPinCode ||
  −
|-
  −
| 410 || [18.0.0+] GetPinCodeErrorCount ||
  −
|-
  −
| 411 || [18.0.0+] ResetPinCodeErrorCount ||
  −
|-
  −
| 412 || [18.0.0+] IncrementPinCodeErrorCount ||
  −
|-
  −
| 420 || [19.0.0+] SetStartPenaltyTime ||
  −
|-
  −
| 421 || [19.0.0+] GetStartPenaltyTime ||
  −
|-
  −
| 900 || [13.0.0+] SetUserUnqualifiedForDebug ||
  −
|-
  −
| 901 || [13.0.0+] UnsetUserUnqualifiedForDebug ||
  −
|-
  −
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug ||
  −
|-
  −
| 910 || [16.0.0+] RefreshFirmwareSettingsForDebug ||
  −
|-
  −
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
  −
|-
  −
| 998 || DebugSetUserStateClose ||
  −
|-
  −
| 999 || DebugSetUserStateOpen ||
  −
|}
     −
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input.
+
== GetRunningApplicationProcessId ==
 +
Returns an output u64 ProcessId.
   −
== IsUserRegistrationRequestPermitted ==
+
== SetCurrentApplicationRightsEnvironmentCanBeActive ==
Takes a PID, an input u64 pid_reserved, and returns an output u8 bool.
+
Takes an input bool. No output.
   −
== TrySelectUserWithoutInteraction ==
+
== CreateApplicationResource ==
Takes an input u8 bool isNetworkServiceAccountRequired, returns an output Uid.
+
Takes an input u32 (1 = Preomia/MicroApplication). Returns an [[#IApplicationResource]].
   −
== IManagerForSystemService ==
+
== IsPreomia ==
This is "nn::account::baas::IManagerForSystemService".
+
Takes an input u64 [[NCM_services#ProgramId|ProgramId]]. Returns a bool.
 +
 
 +
== GetApplicationProgramIdFromHost ==
 +
Takes a type-0x5 input buffer containing the [[Filesystem_services#FspPath|FspPath]]. Returns an u64 [[NCM_services#ProgramId|ProgramId]].
 +
 
 +
== PrepareLaunchApplicationFromHost ==
 +
[18.0.0+] Now returns a total of 0x50 bytes of output.
 +
 
 +
[19.0.0+] Now returns a total of 0x80 bytes of output.
 +
 
 +
== GetLaunchEvent ==
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
 +
 
 +
[19.0.0+] Now takes a total of 0x80 bytes of input.
 +
 
 +
== GetLaunchResult ==
 +
[18.0.0+] Now takes a total of 0x50 bytes of input.
   −
{| class="wikitable" border="1"
+
[19.0.0+] Now takes a total of 0x80 bytes of input.
|-
+
 
! Cmd || Name || Notes
+
== PrepareLaunchApplication ==
|-
+
Takes a total of 0x10-bytes of input. Returns a total of 0x50-bytes of output.
| 0 || CheckAvailability ||
+
 
|-
+
[19.0.0+] Now returns a total of 0x80-bytes of output.
| 1 || GetAccountId ||
+
 
|-
+
== LaunchApplication ==
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
+
Takes a total of 0x50-bytes of input. Returns a total of 8-bytes of output.
|-
+
 
| 3 || LoadIdTokenCache ||
+
[19.0.0+] Now takes a total of 0x80 bytes of input.
|-
+
 
| 100 || SetSystemProgramIdentification ||
+
== GetProgramIdByApplicationLaunchInfo ==
|-
+
Takes a total of 0x50-bytes of input. Returns a total of 8-bytes of output.
| 101 || [7.0.0+] RefreshNotificationTokenAsync ||
+
 
|-
+
[19.0.0+] Now takes a total of 0x80 bytes of input.
| 110 || [4.0.0+] GetServiceEntryRequirementCache ||
+
 
|-
+
= acc:su =
| 111 || [4.0.0+] InvalidateServiceEntryRequirementCache ||
+
This is "nn::account::IAccountServiceForAdministrator".
 +
 
 +
[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"
 
|-
 
|-
| 112 || [4.0.0-6.2.0] InvalidateTokenCache ||
+
! Cmd || Name || Notes
 
|-
 
|-
| 113 || [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
+
| 0 || GetUserCount ||
 
|-
 
|-
| 120 || GetNintendoAccountId ||
+
| 1 || GetUserExistence ||
 
|-
 
|-
| 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint ||
+
| 2 || ListAllUsers ||
 
|-
 
|-
| 130 || GetNintendoAccountUserResourceCache ||
+
| 3 || ListOpenUsers ||
 
|-
 
|-
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
+
| 4 || GetLastOpenedUser ||
 
|-
 
|-
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
+
| 5 || GetProfile || Returns an [[#IProfile]].
 
|-
 
|-
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
+
| 6 || [3.0.0+] GetProfileDigest ||
 
|-
 
|-
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
+
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 135 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
+
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
 
|-
 
|-
| 140 || [5.0.0+] GetNetworkServiceLicenseCache ||  
+
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
 
|-
 
|-
| 141 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsync || Returns an [[#IAsyncContext]].
+
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
 
|-
 
|-
| 142 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
+
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
 
|-
 
|-
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
+
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
 
|-
 
|-
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
+
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
 
|-
 
|-
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
+
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
 
|-
 
|-
| 170 || [17.0.0+] CreateDeviceHistoryRequest ||
+
| 103 || GetBaasUserAvailabilityChangeNotifier || Returns an [[#INotifier]].
 
|-
 
|-
| 180 || [18.0.0+] GetRequestForNintendoAccountReauthentication ||
+
| 104 || GetProfileUpdateNotifier || Returns an [[#INotifier]].
|}
  −
 
  −
== IFloatingRegistrationRequest ==
  −
This is "nn::account::baas::IFloatingRegistrationRequest".
  −
 
  −
Added with [3.0.0+].
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 105 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 0 || GetSessionId ||
+
| 106 || [9.0.0+] GetProfileSyncNotifier ||
 
|-
 
|-
| 12 || GetAccountId ||
+
| 110 || StoreSaveDataThumbnail ||
 
|-
 
|-
| 13 || GetLinkedNintendoAccountId ||
+
| 111 || ClearSaveDataThumbnail ||
 
|-
 
|-
| 14 || GetNickname ||
+
| 112 || LoadSaveDataThumbnail ||
 
|-
 
|-
| 15 || GetProfileImage ||
+
| 113 || [5.0.0+] GetSaveDataThumbnailExistence ||
 
|-
 
|-
| 16 || [18.0.0+] GetProfileLargeImage ||
+
| 120 || [10.0.0+] ListOpenUsersInApplication ||
 
|-
 
|-
| 21 || LoadIdTokenCache ||
+
| 130 || [6.0.0+] ActivateOpenContextRetention || Takes a total of 0x8-bytes of input, returns an [[#ISessionObject]].
 
|-
 
|-
| 100 || RegisterUser ([1.0.0-3.0.2] RegisterAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]].
+
| 140 || [6.0.0+] ListQualifiedUsers ||  
 
|-
 
|-
| 101 || RegisterUserWithUid ([1.0.0-3.0.2] RegisterWithUidAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]].
+
| 150 || [10.0.0-10.2.0] AuthenticateApplicationAsync ||  
 
|-
 
|-
| 102 || [4.0.0+] RegisterNetworkServiceAccountAsync || Returns an [[#IAsyncContext]].
+
| 151 || [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync ||  
 
|-
 
|-
| 103 || [4.0.0+] RegisterNetworkServiceAccountWithUidAsync || Returns an [[#IAsyncContext]].
+
| 152 || [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount ||
 
|-
 
|-
| 110 || SetSystemProgramIdentification ||
+
| 170 || [13.0.0+] GetNasOp2MembershipStateChangeNotifier ||
 
|-
 
|-
| 111 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
+
| 190 || [1.0.0-9.2.0] GetUserLastOpenedApplication ||
|}
  −
 
  −
== IAdministrator ==
  −
This is "nn::account::baas::IAdministrator".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 191 || [7.0.0-19.0.1] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
 
|-
 
|-
| 0 || CheckAvailability ||
+
| 200 || BeginUserRegistration ||
 
|-
 
|-
| 1 || GetAccountId ||
+
| 201 || CompleteUserRegistration ||
 
|-
 
|-
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
+
| 202 || CancelUserRegistration ||
 
|-
 
|-
| 3 || LoadIdTokenCache ||
+
| 203 || DeleteUser ||
 
|-
 
|-
| 100 || SetSystemProgramIdentification ||
+
| 204 || SetUserPosition ||
 
|-
 
|-
| 101 || [7.0.0+] RefreshNotificationTokenAsync
+
| 205 || GetProfileEditor || Takes an input userID and returns an [[#IProfileEditor]].
 
|-
 
|-
| 110 || [4.0.0+] GetServiceEntryRequirementCache ||
+
| 206 || CompleteUserRegistrationForcibly ||
 
|-
 
|-
| 111 || [4.0.0+] InvalidateServiceEntryRequirementCache ||
+
| 210 || [3.0.0+] CreateFloatingRegistrationRequest || Returns an [[#IFloatingRegistrationRequest]].
 
|-
 
|-
| 112 || [4.0.0-6.2.0] InvalidateTokenCache ||
+
| 211 || [8.0.0+] CreateProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x4-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
 
|-
 
|-
| 113 || [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
+
| 212 || [8.0.0+] ResumeProcedureToRegisterUserWithNintendoAccount || Takes a total of 0x14-bytes of input and a handle, returns an [[#IOAuthProcedureForUserRegistration]].
 
|-
 
|-
| 120 || GetNintendoAccountId ||
+
| 213 || [17.0.0+] CreateProcedureToCreateUserWithNintendoAccount ||
 
|-
 
|-
| 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint ||
+
| 214 || [17.0.0+] ResumeProcedureToCreateUserWithNintendoAccount ||
 
|-
 
|-
| 130 || GetNintendoAccountUserResourceCache ||
+
| 215 || [17.0.0+] ResumeProcedureToCreateUserWithNintendoAccountAfterApplyResponse ||
 
|-
 
|-
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
+
| 230 || AuthenticateServiceAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
+
| 250 || GetBaasAccountAdministrator || Returns an [[#IAdministrator]].
 
|-
 
|-
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
+
| 251 || [20.0.0+] ||
 
|-
 
|-
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
+
| 290 || ProxyProcedureForGuestLoginWithNintendoAccount || Returns an [[#IOAuthProcedureForExternalNsa]] (formerly [[#IOAuthProcedureForGuestLogin]] with [1.0.0-2.3.0]).
 
|-
 
|-
| 135 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
+
| 291 || [3.0.0+] ProxyProcedureForFloatingRegistrationWithNintendoAccount || Returns an [[#IOAuthProcedureForExternalNsa]].
 
|-
 
|-
| 140 || [5.0.0+] GetNetworkServiceLicenseCache ||
+
| 292 || [20.0.0+] ||
 
|-
 
|-
| 141 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsync ||
+
| 293 || [20.0.0+] ||
 
|-
 
|-
| 142 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed ||
+
| 299 || SuspendBackgroundDaemon || Returns an [[#ISessionObject]].
 
|-
 
|-
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
+
| 350 || [20.0.0+] ||
 
|-
 
|-
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
+
| 351 || [20.0.0+] ||
 
|-
 
|-
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
+
| 352 || [20.0.0+] ||
 
|-
 
|-
| 170 || [17.0.0+] CreateDeviceHistoryRequest ||
+
| 353 || [20.0.0+] ||
 
|-
 
|-
| 180 || [18.0.0+] GetRequestForNintendoAccountReauthentication ||
+
| 400 || [18.0.0+] SetPinCode ||
 
|-
 
|-
| 200 || IsRegistered ||
+
| 401 || [18.0.0+] GetPinCodeLength ||
 
|-
 
|-
| 201 || RegisterAsync || Returns an [[#IAsyncContext]].
+
| 402 || [18.0.0-19.0.1] GetPinCode ||
 
|-
 
|-
| 202 || UnregisterAsync || Returns an [[#IAsyncContext]].
+
| 403 || [20.0.0+] ||
 
|-
 
|-
| 203 || DeleteRegistrationInfoLocally ||
+
| 404 || [20.0.0+] ||
 
|-
 
|-
| 220 || SynchronizeProfileAsync || Returns an [[#IAsyncContext]].
+
| 405 || [20.0.0+] ||
 
|-
 
|-
| 221 || UploadProfileAsync || Returns an [[#IAsyncContext]].
+
| 410 || [18.0.0+] GetPinCodeErrorCount ||
 
|-
 
|-
| 222 || SynchronizeProfileAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
+
| 411 || [18.0.0-19.0.1] ResetPinCodeErrorCount ||
 
|-
 
|-
| 250 || IsLinkedWithNintendoAccount ||
+
| 412 || [18.0.0-19.0.1] IncrementPinCodeErrorCount ||
 
|-
 
|-
| 251 || CreateProcedureToLinkWithNintendoAccount || Returns an [[#IOAuthProcedureForNintendoAccountLinkage]].
+
| 413 || [20.0.0+] ||
 
|-
 
|-
| 252 || ResumeProcedureToLinkWithNintendoAccount || Returns an [[#IOAuthProcedureForNintendoAccountLinkage]].
+
| 420 || [19.0.0+] SetStartPenaltyTime ||  
 
|-
 
|-
| 255 || CreateProcedureToUpdateLinkageStateOfNintendoAccount || Returns an [[#IOAuthProcedure]].
+
| 421 || [19.0.0+] GetStartPenaltyTime ||  
 
|-
 
|-
| 256 || ResumeProcedureToUpdateLinkageStateOfNintendoAccount || Returns an [[#IOAuthProcedure]].
+
| 900 || [13.0.0+] SetUserUnqualifiedForDebug ||
 
|-
 
|-
| 260 || [3.0.0+] CreateProcedureToLinkNnidWithNintendoAccount || Returns an [[#IOAuthProcedure]].
+
| 901 || [13.0.0+] UnsetUserUnqualifiedForDebug ||
 
|-
 
|-
| 261 || [3.0.0+] ResumeProcedureToLinkNnidWithNintendoAccount || Returns an [[#IOAuthProcedure]].
+
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug ||
 
|-
 
|-
| 280 || ProxyProcedureToAcquireApplicationAuthorizationForNintendoAccount || Returns an [[#IOAuthProcedure]].
+
| 910 || [16.0.0+] RefreshFirmwareSettingsForDebug ||
 
|-
 
|-
| 290 || [8.0.0+] GetRequestForNintendoAccountUserResourceView ||  
+
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
 
|-
 
|-
| 300 || [6.0.0+] TryRecoverNintendoAccountUserStateAsync || Returns an [[#IAsyncContext]].
+
| 998 || DebugSetUserStateClose ||
 
|-
 
|-
| 400 || [6.1.0+] IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay || Takes a total of 0x8-bytes of input, returns an output u8.
+
| 999 || DebugSetUserStateOpen ||
|-
  −
| 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 ==
+
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input.
This is "nn::account::nas::IAuthorizationRequest".
+
 
 +
== 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"
Line 3,134: Line 3,249:  
! Cmd || Name || Notes
 
! Cmd || Name || Notes
 
|-
 
|-
| 0 || GetSessionId ||
+
| 0 || CheckAvailability ||
 +
|-
 +
| 1 || GetAccountId ||
 +
|-
 +
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 10 || InvokeWithoutInteractionAsync || Returns an [[#IAsyncContext]].
+
| 3 || [19.0.0+] LoadIdTokenCacheDeprecated ([1.0.0-18.1.0] LoadIdTokenCache) ||
 
|-
 
|-
| 19 || IsAuthorized ||
+
| 4 || [19.0.0+] LoadIdTokenCache ||
 
|-
 
|-
| 20 || GetAuthorizationCode ||
+
| 100 || SetSystemProgramIdentification ||
 
|-
 
|-
| 21 || GetIdToken ||
+
| 101 || RefreshNotificationTokenAsync ||  
 
|-
 
|-
| 22 || GetState ||
+
| 110 || GetServiceEntryRequirementCacheForLogin ||
|}
  −
 
  −
== IOAuthProcedure ==
  −
This is "nn::account::http::IOAuthProcedure".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name || Notes
+
| 111 || InvalidateServiceEntryRequirementCache ||
 
|-
 
|-
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
+
| 113 || GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
 
|-
 
|-
| 1 || GetRequest ||
+
| 120 || GetNintendoAccountId ||
 
|-
 
|-
| 2 || ApplyResponse ||
+
| 121 || CalculateNintendoAccountAuthenticationFingerprint ||
 
|-
 
|-
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
+
| 130 || GetNintendoAccountUserResourceCache ||
 
|-
 
|-
| 10 || Suspend ||
+
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
|}
+
|-
 
+
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
== IOAuthProcedureForExternalNsa ==
+
|-
This is "nn::account::nas::IOAuthProcedureForExternalNsa".
+
| 133 || GetNintendoAccountVerificationUrlCache ||
 
+
|-
Added with [3.0.0+].
+
| 134 || RefreshNintendoAccountVerificationUrlCacheAsync ||
 
+
|-
{| class="wikitable" border="1"
+
| 135 || RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
 
|-
 
|-
! Cmd || Name || Notes
+
| 136 || [19.0.0+] GetNintendoAccountUserResourceCache ||
 
|-
 
|-
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
+
| 140 || GetNetworkServiceLicenseCache ||  
 
|-
 
|-
| 1 || GetRequest ||
+
| 141 || RefreshNetworkServiceLicenseCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 2 || ApplyResponse ||
+
| 142 || RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
+
| 143 || [15.0.0+] GetNetworkServiceLicenseCacheEx ||
 
|-
 
|-
| 10 || Suspend ||
+
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
|-
 
|-
| 100 || GetAccountId ||
+
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 
|-
 
|-
| 101 || GetLinkedNintendoAccountId ||
+
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
 
|-
 
|-
| 102 || GetNickname ||
+
| 180 || [18.0.0-19.0.1] GetRequestForNintendoAccountReauthentication ||
 
|-
 
|-
| 103 || GetProfileImage ||
+
| 181 || [20.0.0+] ||
 
|-
 
|-
| 104 || [18.0.0+] GetProfileLargeImage ||
+
| 182 || [20.0.0+] ||
 
|}
 
|}
   −
== IOAuthProcedureForNintendoAccountLinkage ==
+
== IFloatingRegistrationRequest ==
This is "nn::account::nas::IOAuthProcedureForNintendoAccountLinkage".
+
This is "nn::account::baas::IFloatingRegistrationRequest".
 +
 
 +
Added with [3.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,202: Line 3,317:  
! Cmd || Name || Notes
 
! Cmd || Name || Notes
 
|-
 
|-
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
+
| 0 || GetSessionId ||
 
|-
 
|-
| 1 || GetRequest ||
+
| 12 || GetAccountId ||
 
|-
 
|-
| 2 || ApplyResponse ||
+
| 13 || GetLinkedNintendoAccountId ||
 +
|-
 +
| 14 || GetNickname ||
 +
|-
 +
| 15 || GetProfileImage ||
 
|-
 
|-
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
+
| 16 || [18.0.0+] GetProfileLargeImage ||
 
|-
 
|-
| 10 || Suspend ||
+
| 21 || LoadIdTokenCache ||
 
|-
 
|-
| 100 || GetRequestWithTheme ||
+
| 100 || RegisterUser ([1.0.0-3.0.2] RegisterAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]].
 
|-
 
|-
| 101 || IsNetworkServiceAccountReplaced ||
+
| 101 || RegisterUserWithUid ([1.0.0-3.0.2] RegisterWithUidAsync) || [1.0.0-3.0.2] Used to return an [[#IAsyncContext]].
 
|-
 
|-
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
+
| 102 || [4.0.0+] RegisterNetworkServiceAccountAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 200 || [16.0.0+] ApplyAsyncWithAuthorizedToken ||
+
| 103 || [4.0.0+] RegisterNetworkServiceAccountWithUidAsync || Returns an [[#IAsyncContext]].
|}
  −
 
  −
== INotifier ==
  −
This is "nn::account::detail::INotifier".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 110 || SetSystemProgramIdentification ||
 
|-
 
|-
| 0 || GetSystemEvent
+
| 111 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 
|}
 
|}
   −
== IProfile ==
+
== IAdministrator ==
This is "nn::account::profile::IProfile".
+
This is "nn::account::baas::IAdministrator".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Cmd || Name || Notes
 
|-
 
|-
| 0 || [[#Get]]
+
| 0 || CheckAvailability ||
 
|-
 
|-
| 1 || [[#GetBase]]
+
| 1 || GetAccountId ||
 
|-
 
|-
| 10 || [[#GetImageSize]]
+
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 11 || [[#LoadImage]]
+
| 3 || [19.0.0+] LoadIdTokenCacheDeprecated ([1.0.0-18.1.0] LoadIdTokenCache) ||
 
|-
 
|-
| 20 || [18.0.0+] GetLargeImageSize
+
| 4 || [19.0.0+] LoadIdTokenCache ||
 
|-
 
|-
| 21 || [18.0.0+] LoadLargeImage
+
| 100 || SetSystemProgramIdentification ||
 
|-
 
|-
| 30 || [18.0.0+] GetImageId
+
| 101 || [7.0.0+] RefreshNotificationTokenAsync
|}
  −
 
  −
=== 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
+
| 110 || [4.0.0+] GetServiceEntryRequirementCache ||
 
|-
 
|-
| 0 || [[#Get]]
+
| 111 || [4.0.0+] InvalidateServiceEntryRequirementCache ||
 
|-
 
|-
| 1 || [[#GetBase]]
+
| 112 || [4.0.0-6.2.0] InvalidateTokenCache ||
 
|-
 
|-
| 10 || [[#GetImageSize]]
+
| 113 || [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay || Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output.
 
|-
 
|-
| 11 || [[#LoadImage]]
+
| 120 || GetNintendoAccountId ||
 +
|-
 +
| 121 || [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint ||
 +
|-
 +
| 130 || GetNintendoAccountUserResourceCache ||
 
|-
 
|-
| 20 || [18.0.0+] GetLargeImageSize
+
| 131 || RefreshNintendoAccountUserResourceCacheAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 21 || [18.0.0+] LoadLargeImage
+
| 132 || RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 30 || [18.0.0+] GetImageId
+
| 133 || [9.0.0+] GetNintendoAccountVerificationUrlCache ||
 
|-
 
|-
| 100 || [[#Store]]
+
| 134 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync ||
 
|-
 
|-
| 101 || [[#StoreWithImage]]
+
| 135 || [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed ||
 
|-
 
|-
| 110 || [18.0.0+] StoreWithLargeImage
+
| 136 || [19.0.0+] GetNintendoAccountUserResourceCache ||
|}
  −
 
  −
=== 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
+
| 140 || [5.0.0+] GetNetworkServiceLicenseCache ||
 
|-
 
|-
| 0 || GetSystemEvent
+
| 141 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsync ||
 
|-
 
|-
| 1 || Cancel
+
| 142 || [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed ||
 
|-
 
|-
| 2 || HasDone
+
| 143 || [15.0.0+] GetNetworkServiceLicenseCacheEx ||
 
|-
 
|-
| 3 || GetResult
+
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
|}
  −
 
  −
== ISessionObject ==
  −
This is "nn::account::detail::ISessionObject".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Cmd || Name
+
| 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache ||
 
|-
 
|-
| 999 || Dummy
+
| 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount ||
|}
  −
 
  −
= 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
+
| 180 || [18.0.0-19.0.1] GetRequestForNintendoAccountReauthentication ||
 
|-
 
|-
| 0 || GetUserCount ||
+
| 181 || [20.0.0+] ||
 
|-
 
|-
| 1 || GetUserExistence ||
+
| 182 || [20.0.0+] ||
 
|-
 
|-
| 2 || ListAllUsers ||
+
| 200 || IsRegistered ||
 
|-
 
|-
| 3 || ListOpenUsers ||
+
| 201 || RegisterAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 4 || GetLastOpenedUser ||
+
| 202 || UnregisterAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 5 || GetProfile || Takes an input userID, returns an [[#IProfile]].
+
| 203 || DeleteRegistrationInfoLocally ||
 
|-
 
|-
| 6 || [3.0.0+] GetProfileDigest ||
+
| 204 || [19.0.0-19.0.1] UnregisterDeviceAsync ||
 
|-
 
|-
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
+
| 220 || SynchronizeProfileAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
+
| 221 || UploadProfileAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
+
| 222 || SynchronizeProfileAsyncIfSecondsElapsed || Returns an [[#IAsyncContext]].
 +
|-
 +
| 223 || [19.0.0+] DownloadProfileAsync ||
 +
|-
 +
| 250 || IsLinkedWithNintendoAccount ||
 
|-
 
|-
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
+
| 251 || CreateProcedureToLinkWithNintendoAccount || Returns an [[#IOAuthProcedureForNintendoAccountLinkage]].
 
|-
 
|-
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
+
| 252 || ResumeProcedureToLinkWithNintendoAccount || Returns an [[#IOAuthProcedureForNintendoAccountLinkage]].
 
|-
 
|-
| 100 || [[#InitializeApplicationInfoV0]] ||
+
| 255 || CreateProcedureToUpdateLinkageStateOfNintendoAccount || Returns an [[#IOAuthProcedure]].
 
|-
 
|-
| 101 || GetBaasAccountManagerForApplication || Takes an input userID, returns an [[#IManagerForApplication]].
+
| 256 || ResumeProcedureToUpdateLinkageStateOfNintendoAccount || Returns an [[#IOAuthProcedure]].
 
|-
 
|-
| 102 || AuthenticateApplicationAsync || Returns an [[#IAsyncContext]].
+
| 260 || [3.0.0+] CreateProcedureToLinkNnidWithNintendoAccount || Returns an [[#IOAuthProcedure]].
 
|-
 
|-
| 103 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
+
| 261 || [3.0.0+] ResumeProcedureToLinkNnidWithNintendoAccount || Returns an [[#IOAuthProcedure]].
 
|-
 
|-
| 110 || StoreSaveDataThumbnail ||
+
| 280 || ProxyProcedureToAcquireApplicationAuthorizationForNintendoAccount || Returns an [[#IOAuthProcedure]].
 
|-
 
|-
| 111 || ClearSaveDataThumbnail ||
+
| 290 || [8.0.0+] GetRequestForNintendoAccountUserResourceView ||  
 
|-
 
|-
| 120 || CreateGuestLoginRequest || Returns an [[#IGuestLoginRequest]].
+
| 300 || [6.0.0+] TryRecoverNintendoAccountUserStateAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 130 || [5.0.0+] LoadOpenContext ||
+
| 400 || [6.1.0+] IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay || Takes a total of 0x8-bytes of input, returns an output u8.
 
|-
 
|-
| 131 || [6.0.0+] ListOpenContextStoredUsers ||  
+
| 401 || [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync || Takes a total of 0x8-bytes of input, returns an [[#IAsyncContext]].
 
|-
 
|-
| 140 || [6.0.0+] [[#InitializeApplicationInfoV1]] ||  
+
| 900 || [9.0.0+] GetAuthenticationInfoForWin ||
 
|-
 
|-
| 141 || [6.0.0+] ListQualifiedUsers ||  
+
| 901 || [9.0.0+] ImportAsyncForWin ||
 
|-
 
|-
| 150 || [6.0.0+] IsUserAccountSwitchLocked ||
+
| 997 || DebugUnlinkNintendoAccountAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 160 || [13.0.0+] InitializeApplicationInfoV2 ||  
+
| 998 || DebugSetAvailabilityErrorDetail ||
 
|}
 
|}
   −
InitializeApplicationInfo* is used by the user-process during service init.
+
== IAuthorizationRequest ==
 
+
This is "nn::account::nas::IAuthorizationRequest".
== 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"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Cmd || Name || Notes
 
|-
 
|-
| 0 || GetSessionId
+
| 0 || GetSessionId ||
 
|-
 
|-
| 11 || [1.0.0-2.3.0]
+
| 10 || InvokeWithoutInteractionAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 12 || GetAccountId
+
| 19 || IsAuthorized ||
 
|-
 
|-
| 13 || GetLinkedNintendoAccountId
+
| 20 || GetAuthorizationCode ||
 
|-
 
|-
| 14 || GetNickname
+
| 21 || GetIdToken ||
 
|-
 
|-
| 15 || GetProfileImage
+
| 22 || GetState ||
|-
  −
| 16 || [18.0.0+] GetProfileLargeImage
  −
|-
  −
| 21 || [3.0.0+] LoadIdTokenCache
   
|}
 
|}
   −
== IManagerForApplication ==
+
== IOAuthProcedure ==
This is "nn::account::baas::IManagerForApplication".
+
This is "nn::account::http::IOAuthProcedure".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,428: Line 3,489:  
! Cmd || Name || Notes
 
! Cmd || Name || Notes
 
|-
 
|-
| 0 || CheckAvailability ||
+
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 1 || GetAccountId ||
+
| 1 || GetRequest ||
 
|-
 
|-
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
+
| 2 || ApplyResponse ||
 
|-
 
|-
| 3 || LoadIdTokenCache ||
+
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 130 || GetNintendoAccountUserResourceCacheForApplication ||
+
| 10 || Suspend ||
|-
  −
| 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 ==
+
== IOAuthProcedureForExternalNsa ==
This is "nn::account::detail::IAsyncNetworkServiceLicenseKindContext".
+
This is "nn::account::nas::IOAuthProcedureForExternalNsa".
   −
This was added with [6.0.0+].
+
Added with [3.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,454: Line 3,509:  
! Cmd || Name || Notes
 
! Cmd || Name || Notes
 
|-
 
|-
| 0 || GetSystemEvent ||  
+
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 10 || Suspend ||
 +
|-
 +
| 100 || GetAccountId ||
 
|-
 
|-
| 1 || Cancel ||  
+
| 101 || GetLinkedNintendoAccountId ||
 
|-
 
|-
| 2 || HasDone ||  
+
| 102 || GetNickname ||
 
|-
 
|-
| 3 || GetResult ||  
+
| 103 || GetProfileImage ||
 
|-
 
|-
| 100 || GetNetworkServiceLicenseKind ||  
+
| 104 || [18.0.0+] GetProfileLargeImage ||
 
|}
 
|}
   −
== IAsyncContextForLoginForOnlinePlay ==
+
== IOAuthProcedureForNintendoAccountLinkage ==
This is "nn::account::baas::IAsyncContextForLoginForOnlinePlay".
+
This is "nn::account::nas::IOAuthProcedureForNintendoAccountLinkage".
 
  −
This was added with [13.0.0+].
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 3,474: Line 3,537:  
! Cmd || Name || Notes
 
! Cmd || Name || Notes
 
|-
 
|-
| 0 || GetSystemEvent ||  
+
| 0 || PrepareAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 10 || Suspend ||
 
|-
 
|-
| 1 || Cancel ||  
+
| 100 || GetRequestWithTheme ||
 
|-
 
|-
| 2 || HasDone ||  
+
| 101 || IsNetworkServiceAccountReplaced ||
 
|-
 
|-
| 3 || GetResult ||  
+
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership ||
 
|-
 
|-
| 100 || GetNetworkServiceLicenseInfoForOnlinePlay ||  
+
| 200 || [16.0.0+] ApplyAsyncWithAuthorizedToken ||
 
|}
 
|}
   −
= acc:u1 =
+
== INotifier ==
This is "nn::account::IAccountServiceForSystemService".
+
This is "nn::account::detail::INotifier".
   −
[13.0.0+] This was moved from [[Account_services|account]].
+
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetSystemEvent
 +
|}
   −
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is Normal/Maintenance.
+
== IProfile ==
 +
This is "nn::account::profile::IProfile".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || GetUserCount ||
+
| 0 || [[#Get]]
 
|-
 
|-
| 1 || GetUserExistence ||
+
| 1 || [[#GetBase]]
 
|-
 
|-
| 2 || ListAllUsers ||
+
| 10 || [[#GetImageSize]]
 
|-
 
|-
| 3 || ListOpenUsers ||
+
| 11 || [[#LoadImage]]
 
|-
 
|-
| 4 || GetLastOpenedUser ||
+
| 20 || [18.0.0+] GetLargeImageSize
 
|-
 
|-
| 5 || GetProfile || Returns an [[#IProfile]].
+
| 21 || [18.0.0+] LoadLargeImage
 
|-
 
|-
| 6 || [3.0.0+] GetProfileDigest ||
+
| 30 || [18.0.0+] GetImageId
 +
|}
 +
 
 +
=== 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"
 
|-
 
|-
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
+
! Cmd || Name
 
|-
 
|-
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
+
| 0 || [[#Get]]
 
|-
 
|-
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
+
| 1 || [[#GetBase]]
 
|-
 
|-
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
+
| 10 || [[#GetImageSize]]
 
|-
 
|-
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
+
| 11 || [[#LoadImage]]
 
|-
 
|-
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
+
| 20 || [18.0.0+] GetLargeImageSize
 
|-
 
|-
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
+
| 21 || [18.0.0+] LoadLargeImage
 
|-
 
|-
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
+
| 30 || [18.0.0+] GetImageId
 
|-
 
|-
| 103 || GetBaasUserAvailabilityChangeNotifier || Returns an [[#INotifier]].
+
| 100 || [[#Store]]
 
|-
 
|-
| 104 || GetProfileUpdateNotifier || Returns an [[#INotifier]].
+
| 101 || [[#StoreWithImage]]
 
|-
 
|-
| 105 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
+
| 110 || [18.0.0+] StoreWithLargeImage
 +
|}
 +
 
 +
=== 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"
 
|-
 
|-
| 106 || [9.0.0+] GetProfileSyncNotifier ||
+
! Cmd || Name
 
|-
 
|-
| 110 || StoreSaveDataThumbnail ||
+
| 0 || GetSystemEvent
 
|-
 
|-
| 111 || ClearSaveDataThumbnail ||
+
| 1 || Cancel
 
|-
 
|-
| 112 || LoadSaveDataThumbnail ||
+
| 2 || HasDone
 
|-
 
|-
| 113 || [5.0.0+] GetSaveDataThumbnailExistence ||
+
| 3 || GetResult
 +
|}
 +
 
 +
== ISessionObject ==
 +
This is "nn::account::detail::ISessionObject".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 120 || [10.0.0+] ListOpenUsersInApplication ||
+
! Cmd || Name
 
|-
 
|-
| 130 || [6.0.0+] ActivateOpenContextRetention || Takes a total of 0x8-bytes of input, returns an [[#ISessionObject]].
+
| 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"
 
|-
 
|-
| 140 || [6.0.0+] ListQualifiedUsers ||  
+
! Cmd || Name || Notes
 
|-
 
|-
| 150 || [10.0.0-10.2.0] AuthenticateApplicationAsync ||
+
| 0 || GetUserCount ||
 
|-
 
|-
| 151 || [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync ||  
+
| 1 || GetUserExistence ||
 
|-
 
|-
| 152 || [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount ||
+
| 2 || ListAllUsers ||
 
|-
 
|-
| 170 || [13.0.0+] GetNasOp2MembershipStateChangeNotifier ||
+
| 3 || ListOpenUsers ||
 
|-
 
|-
| 190 || [1.0.0-9.2.0] GetUserLastOpenedApplication ||
+
| 4 || GetLastOpenedUser ||
 
|-
 
|-
| 191 || [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
+
| 5 || GetProfile || Takes an input userID, returns an [[#IProfile]].
 
|-
 
|-
| 401 || [18.0.0+] GetPinCodeLength ||
+
| 6 || [3.0.0+] GetProfileDigest ||
 
|-
 
|-
| 402 || [18.0.0+] GetPinCode ||
+
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
+
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
 
|-
 
|-
| 998 || DebugSetUserStateClose ||
+
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
 
|-
 
|-
| 999 || DebugSetUserStateOpen ||
+
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
|}
  −
 
  −
[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
+
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
 
|-
 
|-
| 0 || PrepareAsync || No input, returns an [[#IAsyncContext]].
+
| 100 || [[#InitializeApplicationInfoV0]] ||
 
|-
 
|-
| 1 || GetRequest ||  
+
| 101 || GetBaasAccountManagerForApplication || Takes an input userID, returns an [[#IManagerForApplication]].
 
|-
 
|-
| 2 || ApplyResponse ||  
+
| 102 || AuthenticateApplicationAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 3 || ApplyResponseAsync || Takes a type-0x9 input buffer, returns an [[#IAsyncContext]].
+
| 103 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
 
|-
 
|-
| 10 || Suspend ||  
+
| 110 || StoreSaveDataThumbnail ||
 
|-
 
|-
| 100 || GetAccountId ||  
+
| 111 || ClearSaveDataThumbnail ||
 
|-
 
|-
| 101 || GetLinkedNintendoAccountId ||  
+
| 120 || CreateGuestLoginRequest || Returns an [[#IGuestLoginRequest]].
 
|-
 
|-
| 102 || GetNickname ||  
+
| 130 || [5.0.0+] LoadOpenContext ||
 
|-
 
|-
| 103 || GetProfileImage ||  
+
| 131 || [6.0.0+] ListOpenContextStoredUsers ||  
 
|-
 
|-
| 104 || [18.0.0+] GetProfileLargeImage ||  
+
| 140 || [6.0.0+] [[#InitializeApplicationInfoV1]] ||  
 
|-
 
|-
| 110 || RegisterUserAsync || No input, returns an [[#IAsyncContext]].
+
| 141 || [6.0.0+] ListQualifiedUsers ||  
 
|-
 
|-
| 111 || GetUid ||  
+
| 150 || [6.0.0+] IsUserAccountSwitchLocked ||  
 
|-
 
|-
| 200 || [17.0.0+] ApplyResponseForUserCreationAsync ||
+
| 160 || [13.0.0+] InitializeApplicationInfoV2 ||  
|-
  −
| 205 || [17.0.0+] SuspendAfterApplyResponse ||
  −
|-
  −
| 210 || [17.0.0+] IsProfileAvailable ||
  −
|-
  −
| 220 || [17.0.0+] RegisterUserAsyncWithoutProfile ||
  −
|-
  −
| 221 || [17.0.0+] RegisterUserWithProfileAsync ||
  −
|-
  −
| 230 || [18.0.0+] RegisterUserWithLargeImageProfileAsync ||  
   
|}
 
|}
   −
= VersionListData =
+
InitializeApplicationInfo* is used by the user-process during service init.
This is "nn::ns::VersionListData".
+
 
 +
== InitializeApplicationInfoV0 ==
 +
Takes a PID and an input u64 pid_placeholder, no output.
 +
 
 +
== InitializeApplicationInfoV1 ==
 +
Takes a PID and an input u64 pid_placeholder, no output.
   −
= ApplicationUpdateInfo =
+
== IGuestLoginRequest ==
This is "nn::ns::ApplicationUpdateInfo". This is an u8.
+
This is "nn::account::baas::IGuestLoginRequest".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Cmd || Name
! Description
+
|-
 +
| 0 || GetSessionId
 +
|-
 +
| 11 || [1.0.0-2.3.0]
 +
|-
 +
| 12 || GetAccountId
 +
|-
 +
| 13 || GetLinkedNintendoAccountId
 
|-
 
|-
| 0 || UpToDate
+
| 14 || GetNickname
 
|-
 
|-
| 1 || Updatable
+
| 15 || GetProfileImage
|}
  −
 
  −
[[qlaunch]] just checks whether this is 0.
  −
 
  −
= ApplicationOccupiedSize =
  −
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 16 || [18.0.0+] GetProfileLargeImage
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x20 * 4 || Array of [[#ApplicationOccupiedSizeEntity]]
+
| 21 || [3.0.0+] LoadIdTokenCache
 
|}
 
|}
   −
= ApplicationOccupiedSizeEntity =
+
== IManagerForApplication ==
This is "nn::ns::ApplicationOccupiedSizeEntity". This is a 0x20-byte struct.
+
This is "nn::account::baas::IManagerForApplication".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x1 || [[NCM_services#StorageId|StorageId]]
+
| 0 || CheckAvailability ||
 
|-
 
|-
| 0x1 || 0x7 || Reserved
+
| 1 || GetAccountId ||
 +
|-
 +
| 2 || EnsureIdTokenCacheAsync || Returns an [[#IAsyncContext]].
 +
|-
 +
| 3 || LoadIdTokenCache ||
 +
|-
 +
| 130 || GetNintendoAccountUserResourceCacheForApplication ||
 
|-
 
|-
| 0x8 || 0x8 || AppSize
+
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]].
 
|-
 
|-
| 0x10 || 0x8 || PatchSize
+
| 160 || [5.0.0+] StoreOpenContext ||
 
|-
 
|-
| 0x18 || 0x8 || AocSize
+
| 170 || [13.0.0+] EnsureIdTokenCacheForOnlinePlayAsync ([6.0.0-12.1.0] LoadNetworkServiceLicenseKindAsync) || No input, returns an [[#IAsyncContextForLoginForOnlinePlay]] ([6.0.0-12.1.0] [[#IAsyncNetworkServiceLicenseKindContext]]).
 
|}
 
|}
   −
= ProgressForDeleteUserSaveDataAll =
+
== IAsyncNetworkServiceLicenseKindContext ==
This is "nn::ns::detail::ProgressForDeleteUserSaveDataAll". This is a 0x28-byte struct.
+
This is "nn::account::detail::IAsyncNetworkServiceLicenseKindContext".
 +
 
 +
This was added with [6.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || StartedAt
+
| 0 || GetSystemEvent ||  
 
|-
 
|-
| 0x8 || 0x4 || Count
+
| 1 || Cancel ||  
 
|-
 
|-
| 0xC || 0x4 || Reserved
+
| 2 || HasDone ||  
 
|-
 
|-
| 0x10 || 0x8 || SizeInBytes
+
| 3 || GetResult ||  
 
|-
 
|-
| 0x18 || 0x1 || IsSystem
+
| 100 || GetNetworkServiceLicenseKind ||  
|-
+
|}
| 0x19 || 0x7 || Reserved
+
 
|-
+
== IAsyncContextForLoginForOnlinePlay ==
| 0x20 || 0x8 || ApplicationId
+
This is "nn::account::baas::IAsyncContextForLoginForOnlinePlay".
|}
     −
= ApplicationViewDeprecated =
+
This was added with [13.0.0+].
This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct.
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
+
| 0 || GetSystemEvent ||  
 
|-
 
|-
| 0x8 || 0x4 || Version
+
| 1 || Cancel ||  
 
|-
 
|-
| 0xC || 0x4 || [[#ApplicationViewFlag|Flag]]
+
| 2 || HasDone ||  
 
|-
 
|-
| 0x10 || 0x18 || [[#ApplicationDownloadProgress|Progress]]
+
| 3 || GetResult ||  
 
|-
 
|-
| 0x28 || 0x18 || [[#ApplicationApplyDeltaProgress|ApplyProgress]]
+
| 100 || GetNetworkServiceLicenseInfoForOnlinePlay ||  
 
|}
 
|}
   −
This is converted from [[#ApplicationView]] by [[#GetApplicationViewDeprecated]] on newer system-versions as follows:
+
= 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"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Cmd || Name || Notes
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x20 || Same as [[#ApplicationView]] +0x0.
+
| 0 || GetUserCount ||
 
|-
 
|-
| 0x20 || 0x4 || Same as [[#ApplicationView]] +0x20.
+
| 1 || GetUserExistence ||
 
|-
 
|-
| 0x24 || 0x2 || Same as [[#ApplicationView]] +0x24.
+
| 2 || ListAllUsers ||
 
|-
 
|-
| 0x26 || 0x2 || Cleared to 0.
+
| 3 || ListOpenUsers ||
 
|-
 
|-
| 0x28 || 0x10 || Same as [[#ApplicationView]] +0x30.
+
| 4 || GetLastOpenedUser ||
 
|-
 
|-
| 0x38 || 0x4 || Same as [[#ApplicationView]] +0x40.
+
| 5 || GetProfile || Returns an [[#IProfile]].
 
|-
 
|-
| 0x3C || 0x1 || Same as [[#ApplicationView]] +0x44.
+
| 6 || [3.0.0+] GetProfileDigest ||
 
|-
 
|-
| 0x3D || 0x2 || Cleared to 0.
+
| 50 || [[#IsUserRegistrationRequestPermitted]] ||
 
|-
 
|-
| 0x3F || 0x1 || Cleared to 0.
+
| 51 || TrySelectUserWithoutInteractionDeprecated ([1.0.0-18.1.0] [[#TrySelectUserWithoutInteraction]]) ||
|}
  −
 
  −
= ApplicationViewFlag =
  −
This is "nn::ns::ApplicationViewFlag". This is a 32-bit flag.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Bit
+
| 52 || [19.0.0+] TrySelectUserWithoutInteraction ||
! Description
   
|-
 
|-
| 0
+
| 60 || [5.0.0-5.1.0] ListOpenContextStoredUsers ||
|  
   
|-
 
|-
| 1
+
| 99 || [6.0.0+] DebugActivateOpenContextRetention || No input, returns an [[#ISessionObject]].
|  
   
|-
 
|-
| 2
+
| 100 || GetUserRegistrationNotifier || Returns an [[#INotifier]].
|  
   
|-
 
|-
| 3
+
| 101 || GetUserStateChangeNotifier || Returns an [[#INotifier]].
|  
   
|-
 
|-
| 4
+
| 102 || GetBaasAccountManagerForSystemService || Returns an [[#IManagerForSystemService]].
|  
   
|-
 
|-
| 5
+
| 103 || GetBaasUserAvailabilityChangeNotifier || Returns an [[#INotifier]].
|  
   
|-
 
|-
| 6
+
| 104 || GetProfileUpdateNotifier || Returns an [[#INotifier]].
|  
   
|-
 
|-
| 7
+
| 105 || [4.0.0+] CheckNetworkServiceAvailabilityAsync || Returns an [[#IAsyncContext]].
|  
   
|-
 
|-
| 8
+
| 106 || [9.0.0+] GetProfileSyncNotifier ||
|  
   
|-
 
|-
| 9
+
| 110 || StoreSaveDataThumbnail ||
|  
   
|-
 
|-
| 10
+
| 111 || ClearSaveDataThumbnail ||
|  
   
|-
 
|-
| 11
+
| 112 || LoadSaveDataThumbnail ||
|  
   
|-
 
|-
| 12
+
| 113 || [5.0.0+] GetSaveDataThumbnailExistence ||
|  
   
|-
 
|-
| 13
+
| 120 || [10.0.0+] ListOpenUsersInApplication ||
|  
   
|-
 
|-
| 14
+
| 130 || [6.0.0+] ActivateOpenContextRetention || Takes a total of 0x8-bytes of input, returns an [[#ISessionObject]].
|  
   
|-
 
|-
| 15
+
| 140 || [6.0.0+] ListQualifiedUsers ||  
|  
   
|-
 
|-
| 16
+
| 150 || [10.0.0-10.2.0] AuthenticateApplicationAsync ||
|  
   
|-
 
|-
| 17
+
| 151 || [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync ||  
|  
  −
|}
  −
 
  −
= ApplicationDownloadProgress =
  −
This is "nn::ns::ApplicationDownloadProgress". This is a 0x18-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 152 || [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || Downloaded
+
| 170 || [13.0.0+] GetNasOp2MembershipStateChangeNotifier ||
 
|-
 
|-
| 0x8 || 0x8 || Total
+
| 190 || [1.0.0-9.2.0] GetUserLastOpenedApplication ||
 
|-
 
|-
| 0x10 || 0x4 || LastResult
+
| 191 || [7.0.0-19.0.1] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) ||
 
|-
 
|-
| 0x14 || 0x1 || [[#ApplicationDownloadState|State]]
+
| 401 || [18.0.0+] GetPinCodeLength ||
 
|-
 
|-
| 0x15 || 0x3 || Reserved
+
| 402 || [18.0.0-19.0.1] GetPinCode ||
|}
  −
 
  −
= ApplicationApplyDeltaProgress =
  −
This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Offset
+
| 403 || [20.0.0+] ||
! Size
  −
! Description
   
|-
 
|-
| 0x0 || 0x8 || Applied
+
| 404 || [20.0.0+] ||
 
|-
 
|-
| 0x8 || 0x8 || Total
+
| 405 || [20.0.0+] ||
 
|-
 
|-
| 0x10 || 0x4 || LastResult
+
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser ||
 
|-
 
|-
| 0x14 || 0x1 || [[#ApplicationApplyDeltaState|State]]
+
| 998 || DebugSetUserStateClose ||
 
|-
 
|-
| 0x15 || 0x3 || Reserved
+
| 999 || DebugSetUserStateOpen ||
 
|}
 
|}
   −
= ApplicationDownloadState =
+
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input.
This is "nn::ns::ApplicationDownloadState". This is an u8.
+
 
 +
== IOAuthProcedureForUserRegistration ==
 +
This is "nn::account::nas::IOAuthProcedureForUserRegistration".
 +
 
 +
This was added with [8.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value
+
! Cmd || Name || Notes
! Description
+
|-
 +
| 0 || PrepareAsync || No input, returns an [[#IAsyncContext]].
 +
|-
 +
| 1 || GetRequest ||
 +
|-
 +
| 2 || ApplyResponse ||
 +
|-
 +
| 3 || ApplyResponseAsync || Takes a type-0x9 input buffer, returns an [[#IAsyncContext]].
 
|-
 
|-
| 0 || Runnable
+
| 10 || Suspend ||  
 
|-
 
|-
| 1 || Suspended
+
| 100 || GetAccountId ||  
 
|-
 
|-
| 2 || NotEnoughSpace
+
| 101 || GetLinkedNintendoAccountId ||  
 
|-
 
|-
| 3 || Fatal
+
| 102 || GetNickname ||  
 
|-
 
|-
| 4 || Finished
+
| 103 || GetProfileImage ||  
|}
  −
 
  −
= ApplicationApplyDeltaState =
  −
This is "nn::ns::ApplicationApplyDeltaState". This is an u8.
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Value
+
| 104 || [18.0.0+] GetProfileLargeImage ||
! Description
+
|-
|-
+
| 110 || RegisterUserAsync || No input, returns an [[#IAsyncContext]].
| 0 || Applying
+
|-
|-
+
| 111 || GetUid ||
| 1 || Suspended
+
|-
|-
+
| 200 || [17.0.0+] ApplyResponseForUserCreationAsync ||
| 2 || NotEnoughSpace
+
|-
|-
+
| 205 || [17.0.0+] SuspendAfterApplyResponse ||
| 3 || Fatal
+
|-
|-
+
| 210 || [17.0.0+] IsProfileAvailable ||
| 4 || NoTask
+
|-
|-
+
| 220 || [17.0.0+] RegisterUserAsyncWithoutProfile ||
| 5 || WaitApply
+
|-
|-
+
| 221 || [17.0.0+] RegisterUserWithProfileAsync ||
| 6 || Applied
+
|-
|}
+
| 230 || [18.0.0+] RegisterUserWithLargeImageProfileAsync ||
 +
|}
 +
 
 +
= 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.
   −
= ApplicationView =
+
[20.0.0+] This is a 0x78-byte struct.
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"
 
{| class="wikitable" border="1"

Navigation menu