Difference between revisions of "NS services"
m (→RequestApplicationUpdateInfo: fix link) |
|||
(11 intermediate revisions by 2 users not shown) | |||
Line 45: | Line 45: | ||
|- | |- | ||
| 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition | | 200 || [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition | ||
+ | |- | ||
+ | | 300 || [16.0.0+] SetupHostAddOnContent | ||
+ | |- | ||
+ | | 301 || [16.0.0+] GetRegisteredAddOnContentPath | ||
+ | |- | ||
+ | | 302 || [16.0.0+] UpdateCachedList | ||
|} | |} | ||
Line 74: | Line 80: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || [[#RequestContentsAuthorizationToken]] | + | | 0 || [16.0.0+] RequestContentsAuthorizationTokenDeprecated ([12.0.0-15.0.1] [[#RequestContentsAuthorizationToken]]) |
+ | |- | ||
+ | | 1 || [16.0.0+] RequestContentsAuthorizationToken | ||
|} | |} | ||
Line 766: | Line 774: | ||
| 603 || GetOwnedApplicationContentMetaStatus | | 603 || GetOwnedApplicationContentMetaStatus | ||
|- | |- | ||
− | | 604 || RegisterContentsExternalKey | + | | 604 || [1.0.0-15.0.1] RegisterContentsExternalKey |
|- | |- | ||
| 605 || ListApplicationContentMetaStatusWithRightsCheck | | 605 || ListApplicationContentMetaStatusWithRightsCheck | ||
Line 777: | Line 785: | ||
|- | |- | ||
| 610 || [14.0.0+] GetInstalledContentMetaStorage | | 610 || [14.0.0+] GetInstalledContentMetaStorage | ||
+ | |- | ||
+ | | 611 || [16.0.0+] PrepareAddOnContent | ||
|- | |- | ||
| 700 || PushDownloadTaskList | | 700 || PushDownloadTaskList | ||
Line 1,121: | Line 1,131: | ||
The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]]. | The data that can be read from the [[#IAsyncValue]] is [[#ApplicationUpdateInfo]]. | ||
− | Before using the cmd, official sw uses [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[ | + | Before using the cmd, official sw uses [[Network_Interface_services#IsAnyInternetRequestAccepted|IsAnyInternetRequestAccepted]] with the output from [[Network_Interface_services#GetClientId|GetClientId]], throwing an error when the returned bool is false. |
==== CancelApplicationDownload ==== | ==== CancelApplicationDownload ==== | ||
Line 1,233: | Line 1,243: | ||
No input, returns an output u64. | No input, returns an output u64. | ||
− | A state flag must be zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>. | + | A state flag must be non-zero, otherwise an error is thrown. When a state field is value 1, a hard-coded ProgramId for MaintenanceMenu is used. Otherwise, the ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!system_applet_id</code>. |
The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success. | The SystemApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success. | ||
Line 1,242: | Line 1,252: | ||
No input, returns an output u64. | No input, returns an output u64. | ||
− | A state flag must be zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>. | + | A state flag must be non-zero, otherwise an error is thrown. The ProgramId is loaded from [[System_Settings|system-setting]] <code>ns.applet!overlay_applet_id</code>. |
The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success. | The OverlayApplet is launched with StorageId=BuiltInSystem via [[Process_Manager_services|pmshell]] LaunchProgram ([10.0.0+] [[PGL_services#LaunchProgram|pgl]] with pgl_launch_flags=0). [[Process_Manager_services#LaunchFlags|LaunchFlags]] value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success. | ||
Line 1,564: | Line 1,574: | ||
==== CreateApplicationResource ==== | ==== CreateApplicationResource ==== | ||
− | Returns an [[#IApplicationResource]]. | + | Takes an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]]. |
==== GetApplicationResource ==== | ==== GetApplicationResource ==== | ||
− | Returns an [[#IApplicationResource]]. | + | Takes an input u64 ProcessId and an input [[#ApplicationResourceType]]. Returns an [[#IApplicationResource]]. |
==== RegisterDeviceLockKey ==== | ==== RegisterDeviceLockKey ==== | ||
Line 1,895: | Line 1,905: | ||
| 13 || [8.0.0+] [[#GetRunningApplicationStatus]] | | 13 || [8.0.0+] [[#GetRunningApplicationStatus]] | ||
|- | |- | ||
− | | 14 || [10.0.0 | + | | 14 || [10.0.0-15.0.1] SelectApplicationLicense |
|- | |- | ||
| 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]] | | 15 || [12.0.0+] [[#RequestContentsAuthorizationToken]] | ||
Line 2,736: | Line 2,746: | ||
|- | |- | ||
| 902 || [13.0.0+] ListUsersUnqualifiedForDebug || | | 902 || [13.0.0+] ListUsersUnqualifiedForDebug || | ||
+ | |- | ||
+ | | 910 || [16.0.0+] RefreshFirmwareSettingsForDebug || | ||
|- | |- | ||
| 997 || [3.0.0+] DebugInvalidateTokenCacheForUser || | | 997 || [3.0.0+] DebugInvalidateTokenCacheForUser || | ||
Line 2,802: | Line 2,814: | ||
|- | |- | ||
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]]. | | 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]]. | ||
+ | |- | ||
+ | | 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache || | ||
+ | |- | ||
+ | | 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount || | ||
|} | |} | ||
Line 2,888: | Line 2,904: | ||
|- | |- | ||
| 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]]. | | 150 || CreateAuthorizationRequest || Returns an [[#IAuthorizationRequest]]. | ||
+ | |- | ||
+ | | 160 || [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache || | ||
+ | |- | ||
+ | | 161 || [16.0.0+] RequireReauthenticationOfNetworkServiceAccount || | ||
|- | |- | ||
| 200 || IsRegistered || | | 200 || IsRegistered || | ||
Line 3,026: | Line 3,046: | ||
|- | |- | ||
| 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership || | | 199 || [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership || | ||
+ | |- | ||
+ | | 200 || [16.0.0+] ApplyAsyncWithAuthorizedToken || | ||
|} | |} | ||
Line 3,392: | Line 3,414: | ||
= ApplicationUpdateInfo = | = ApplicationUpdateInfo = | ||
− | This is "nn::ns::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 = | = ApplicationOccupiedSize = | ||
This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct. | This is "nn::ns::ApplicationOccupiedSize". This is a 0x80-byte struct. | ||
− | = | + | {| class="wikitable" border="1" |
− | + | |- | |
− | + | ! Offset | |
− | + | ! Size | |
− | + | ! Description | |
+ | |- | ||
+ | | 0x0 || 0x20 * 4 || Array of [[#ApplicationOccupiedSizeEntity]] | ||
+ | |} | ||
− | This is | + | = ApplicationOccupiedSizeEntity = |
+ | This is "nn::ns::ApplicationOccupiedSizeEntity". This is a 0x20-byte struct. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,413: | Line 3,449: | ||
! Description | ! Description | ||
|- | |- | ||
− | | 0x0 || | + | | 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. | |
− | |||
− | |||
− | |} | ||
− | |||
− | = | ||
− | This is "nn::ns:: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,441: | Line 3,469: | ||
! Description | ! Description | ||
|- | |- | ||
− | | 0x0 || 0x8 || | + | | 0x0 || 0x8 || StartedAt |
+ | |- | ||
+ | | 0x8 || 0x4 || Count | ||
+ | |- | ||
+ | | 0xC || 0x4 || Reserved | ||
+ | |- | ||
+ | | 0x10 || 0x8 || SizeInBytes | ||
|- | |- | ||
− | | | + | | 0x18 || 0x1 || IsSystem |
|- | |- | ||
− | | | + | | 0x19 || 0x7 || Reserved |
|- | |- | ||
− | | | + | | 0x20 || 0x8 || ApplicationId |
|} | |} | ||
− | = | + | = ApplicationViewDeprecated = |
− | This is a | + | This is "nn::ns::ApplicationViewDeprecated". This is a 0x40-byte struct. |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,459: | Line 3,493: | ||
! Description | ! Description | ||
|- | |- | ||
− | | 0x0 || | + | | 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: | |
− | This is | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 3,473: | Line 3,512: | ||
! Description | ! Description | ||
|- | |- | ||
− | | 0x0 || | + | | 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:: | + | This is "nn::ns::ApplicationViewFlag". This is a 32-bit flag. |
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Bit |
− | ! | + | ! Description |
+ | |- | ||
+ | | 0 | ||
+ | | | ||
+ | |- | ||
+ | | 1 | ||
+ | | | ||
+ | |- | ||
+ | | 2 | ||
+ | | | ||
+ | |- | ||
+ | | 3 | ||
+ | | | ||
+ | |- | ||
+ | | 4 | ||
+ | | | ||
+ | |- | ||
+ | | 5 | ||
+ | | | ||
+ | |- | ||
+ | | 6 | ||
+ | | | ||
+ | |- | ||
+ | | 7 | ||
+ | | | ||
+ | |- | ||
+ | | 8 | ||
+ | | | ||
+ | |- | ||
+ | | 9 | ||
+ | | | ||
+ | |- | ||
+ | | 10 | ||
+ | | | ||
+ | |- | ||
+ | | 11 | ||
+ | | | ||
+ | |- | ||
+ | | 12 | ||
+ | | | ||
+ | |- | ||
+ | | 13 | ||
+ | | | ||
+ | |- | ||
+ | | 14 | ||
+ | | | ||
|- | |- | ||
− | | | + | | 15 |
+ | | | ||
|- | |- | ||
− | | | + | | 16 |
+ | | | ||
|- | |- | ||
− | | | + | | 17 |
+ | | | ||
|} | |} | ||
− | This is "nn::ns:: | + | = ApplicationDownloadProgress = |
− | + | This is "nn::ns::ApplicationDownloadProgress". This is a 0x18-byte struct. | |
− | |||
− | |||
− | |||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,515: | Line 3,603: | ||
! Description | ! Description | ||
|- | |- | ||
− | | 0x0 || 0x8 || | + | | 0x0 || 0x8 || Downloaded |
|- | |- | ||
− | | 0x8 || 0x8 || | + | | 0x8 || 0x8 || Total |
+ | |- | ||
+ | | 0x10 || 0x4 || LastResult | ||
+ | |- | ||
+ | | 0x14 || 0x1 || [[#ApplicationDownloadState|State]] | ||
+ | |- | ||
+ | | 0x15 || 0x3 || Reserved | ||
|} | |} | ||
− | This is "nn::ns:: | + | = ApplicationApplyDeltaProgress = |
+ | This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,536: | Line 3,623: | ||
! Description | ! Description | ||
|- | |- | ||
− | | 0x0 || | + | | 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 |
|} | |} | ||
− | This is "nn::ns:: | + | = ApplicationApplyDeltaState = |
+ | This is "nn::ns::ApplicationApplyDeltaState". This is an u8. | ||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Value |
− | |||
! Description | ! Description | ||
|- | |- | ||
− | | | + | | 0 || Applying |
|- | |- | ||
− | | | + | | 1 || Suspended |
|- | |- | ||
− | | | + | | 2 || NotEnoughSpace |
− | |||
− | |||
|- | |- | ||
− | | | + | | 3 || Fatal |
|- | |- | ||
− | | | + | | 4 || NoTask |
|- | |- | ||
− | | | + | | 5 || WaitApply |
|- | |- | ||
− | | | + | | 6 || Applied |
|} | |} | ||
− | This is "nn::ns:: | + | = ApplicationView = |
− | + | This is "nn::ns::ApplicationView". This is a 0x50-byte struct. | |
− | = | + | |
− | {| class="wikitable" border="1" | + | {| class="wikitable" border="1" |
− | |- | + | |- |
− | ! | + | ! Offset |
− | ! | + | ! Size |
− | |- | + | ! Description |
− | | 1 || | + | |- |
− | |- | + | | 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] |
− | | 2 || Unknown. | + | |- |
− | |- | + | | 0x8 || 0x4 || ? |
− | | | + | |- |
− | |} | + | | 0xC || 0x4 || Flags |
− | + | |- | |
− | This is "nn::ns::LatestSystemUpdate". This is an u8. | + | | 0x10 || 0x40 || ? |
− | + | |} | |
− | = ReceiveApplicationProgress = | + | |
− | This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct. | + | = ApplicationViewWithPromotionInfo = |
− | + | This is a 0x70-byte struct. | |
− | = SendApplicationProgress = | + | |
− | This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct. | + | {| class="wikitable" border="1" |
− | + | |- | |
− | = ApplicationRightsOnClient = | + | ! Offset |
− | This is a 0x20-byte struct. | + | ! Size |
− | + | ! Description | |
− | [[qlaunch]] only uses +0x18/+0x19 in this struct. | + | |- |
− | + | | 0x0 || 0x50 || [[#ApplicationView]] | |
− | {| class="wikitable" border="1" | + | |- |
− | |- | + | | 0x50 || 0x20 || [[#PromotionInfo]] |
− | ! Offset | + | |} |
− | ! Size | + | |
− | ! Description | + | = PromotionInfo = |
+ | This is a 0x20-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 || 0x8 || PosixTime start_timestamp. | ||
+ | |- | ||
+ | | 0x8 || 0x8 || PosixTime end_timestamp. | ||
+ | |- | ||
+ | | 0x10 || 0x8 || Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds). | ||
+ | |- | ||
+ | | 0x18 || 0x4 || Not set, left at zero. | ||
+ | |- | ||
+ | | 0x1C || 0x1 || Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set. | ||
+ | |- | ||
+ | | 0x1D || 0x3 || Padding | ||
+ | |} | ||
+ | |||
+ | = ApplicationResourceType = | ||
+ | This is "nn::ns::ApplicationResourceType". This is an u8. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || ApplicationResource | ||
+ | |- | ||
+ | | 1 || MicroApplicationResource | ||
+ | |} | ||
+ | |||
+ | = ApplicationErrorCodeCategory = | ||
+ | This is "nn::ns::ApplicationErrorCodeCategory". This is an u64. | ||
+ | |||
+ | = NoDownloadRightsErrorResolution = | ||
+ | This is "nn::ns::NoDownloadRightsErrorResolution". | ||
+ | |||
+ | = BackgroundNetworkUpdateState = | ||
+ | This is "nn::ns::BackgroundNetworkUpdateState". This is an u8. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || None | ||
+ | |- | ||
+ | | 1 || InProgress | ||
+ | |- | ||
+ | | 2 || Ready | ||
+ | |} | ||
+ | |||
+ | Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0. | ||
+ | |||
+ | [[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89. | ||
+ | |||
+ | = SystemUpdateProgress = | ||
+ | This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 || 0x8 || Loaded (this value can be larger than total_size when the async operation is finishing and when total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined) | ||
+ | |- | ||
+ | | 0x8 || 0x8 || Total (this field is only valid when >0) | ||
+ | |} | ||
+ | |||
+ | Commands which have this as output will return 0 with the output cleared, when no task is available. | ||
+ | |||
+ | = EulaDataPath = | ||
+ | This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct. | ||
+ | |||
+ | This contains a file path. | ||
+ | |||
+ | = SystemDeliveryInfo = | ||
+ | This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 || 0x4 || SystemDeliveryProtocolVersion. Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>. | ||
+ | |- | ||
+ | | 0x4 || 0x4 || ApplicationDeliveryProtocolVersion. Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation. | ||
+ | |- | ||
+ | | 0x8 || 0x1 || HasExFat. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation. | ||
+ | |- | ||
+ | | 0x9 || 0x3 || Reserved. | ||
+ | |- | ||
+ | | 0xC || 0x4 || SystemUpdateMetaVersion. | ||
+ | |- | ||
+ | | 0x10 || 0x8 || SystemUpdateMetaId. | ||
+ | |- | ||
+ | | 0x18 || 0x1 || FirmwareVariationId. Used by [[#RequestSendSystemUpdate]]. | ||
+ | |- | ||
+ | | 0x19 || 0x1 || UpdatableFirmwareGroupId. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation. | ||
+ | |- | ||
+ | | 0x1A || 0x1 || PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China). | ||
+ | |- | ||
+ | | 0x1B || 0xC5 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation. | ||
+ | |- | ||
+ | | 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. | ||
+ | |} | ||
+ | |||
+ | = ApplicationDeliveryInfo = | ||
+ | This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 || 0x8 || ? | ||
+ | |- | ||
+ | | 0x8 || 0x8 || ApplicationId. | ||
+ | |- | ||
+ | | 0x10 || 0x4 || ApplicationVersion. | ||
+ | |- | ||
+ | | 0x14 || 0x4 || ? | ||
+ | |- | ||
+ | | 0x18 || 0x4 || RequiredSystemVersion. | ||
+ | |- | ||
+ | | 0x1C || 0x4 || ? | ||
+ | |- | ||
+ | | 0x20 || 0xC0 || ? | ||
+ | |- | ||
+ | | 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than [[#SystemDeliveryInfo]]. | ||
+ | |} | ||
+ | |||
+ | = LatestSystemUpdate = | ||
+ | This is "nn::ns::LatestSystemUpdate". This is an u8. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || UpToDate | ||
+ | |- | ||
+ | | 1 || Downloaded | ||
+ | |- | ||
+ | | 2 || NeedsDownload | ||
+ | |} | ||
+ | |||
+ | = ReceiveApplicationProgress = | ||
+ | This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct. | ||
+ | |||
+ | = SendApplicationProgress = | ||
+ | This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct. | ||
+ | |||
+ | = ApplicationRightsOnClient = | ||
+ | This is a 0x20-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | ||
+ | |- | ||
+ | | 0x8 || 0x10 || [[Account_services#Uid|Uid]] | ||
+ | |- | ||
+ | | 0x18 || 0x1 || Flags, [[qlaunch]] only uses bit0-bit4 and bit7. | ||
+ | |- | ||
+ | | 0x19 || 0x1 || Flags, [[qlaunch]] only uses bit0. | ||
+ | |- | ||
+ | | 0x1A || 0x6 || Unknown | ||
+ | |} | ||
+ | |||
+ | [[qlaunch]] only uses +0x18/+0x19 in this struct. | ||
+ | |||
+ | = DownloadTaskStatus = | ||
+ | This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 || 0x10 || Uuid | ||
+ | |- | ||
+ | | 0x10 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | ||
+ | |- | ||
+ | | 0x18 || 0x1 || [[#DownloadTaskStatusDetail|Detail]] | ||
+ | |- | ||
+ | | 0x19 || 0x1 || NeedsCleanup | ||
+ | |- | ||
+ | | 0x1A || 0x2 || Reserved | ||
+ | |- | ||
+ | | 0x1C || 0x4 || Result | ||
+ | |} | ||
+ | |||
+ | = DownloadTaskStatusDetail = | ||
+ | This is "nn::ns::DownloadTaskStatusDetail". This is an u8. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || Created | ||
+ | |- | ||
+ | | 1 || Added | ||
+ | |- | ||
+ | | 2 || AlreadyExists | ||
|- | |- | ||
− | | | + | | 3 || Failed |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
− | |||
− | |||
− | |||
= ApplicationLaunchInfo = | = ApplicationLaunchInfo = | ||
Line 3,656: | Line 3,952: | ||
= UserData = | = UserData = | ||
+ | This is a 0x80-byte struct. | ||
+ | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,673: | Line 3,971: | ||
|} | |} | ||
− | This is a | + | = ProfileBase = |
+ | This is a 0x38-byte struct. | ||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 3,685: | Line 3,983: | ||
|- | |- | ||
| 0x18 || 0x20 || UTF-8 Nickname. Official sw uses strncpy to copy this into another struct (<code>nn::account::Nickname</code>), with a NUL-byte written after the copied data. | | 0x18 || 0x20 || UTF-8 Nickname. Official sw uses strncpy to copy this into another struct (<code>nn::account::Nickname</code>), with a NUL-byte written after the copied data. | ||
− | |||
|} | |} | ||
− | |||
− | |||
= Uid = | = Uid = | ||
Line 3,696: | Line 3,991: | ||
[[Process_Manager_services|pm:bm]] GetBootMode is used to determine whether aoc:u is available (see above). This value is also passed to thread "nn.ns.DelayedInitialization", which calls various funcs depending on the BootMode in various cases. | [[Process_Manager_services|pm:bm]] GetBootMode is used to determine whether aoc:u is available (see above). This value is also passed to thread "nn.ns.DelayedInitialization", which calls various funcs depending on the BootMode in various cases. | ||
− | The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. | + | The "nn.ns.DelayedInitialization" thread uses BootMode as follows (this also handles various other initialization): |
+ | * Initializes [[NPNS_services|npns:s]] only for BootMode Normal/Maintenance. | ||
+ | * Initializes the hosted acc:* services and service [[Account_services|acc:su]] only for BootMode Normal/Maintenance. | ||
+ | * Calls a func only for BootMode Normal. | ||
+ | * Initializes [[ETicket_services|es]] and [[Shared_Database_services|avm]] only for BootMode Normal/Maintenance. | ||
+ | |||
+ | The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various [[NCM_services|ncm]] cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for [[Flash_Filesystem|ns_rightsid]] (0x800000000000004A) is deleted. Then 0 is returned. Otherwise for BootMode Normal it continues with various initialization, including gamecard handling which handles launching the gamecard title in certain conditions (this is the only time ns launches anything with pgl outside of service cmds). | ||
In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds. | In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds. | ||
[[Category:Services]] | [[Category:Services]] |
Revision as of 23:37, 30 April 2023
aoc:u
This is "nn::aocsrv::detail::IAddOnContentManager".
This is only available when pm:bm GetBootMode returns output 0 (Normal).
Cmd | Name |
---|---|
0 | [1.0.0-6.2.0] CountAddOnContentByApplicationId |
1 | [1.0.0-6.2.0] ListAddOnContentByApplicationId |
2 | CountAddOnContent |
3 | ListAddOnContent |
4 | [1.0.0-6.2.0] GetAddOnContentBaseIdByApplicationId |
5 | GetAddOnContentBaseId |
6 | [1.0.0-6.2.0] PrepareAddOnContentByApplicationId |
7 | PrepareAddOnContent |
8 | [4.0.0+] GetAddOnContentListChangedEvent |
9 | [10.0.0+] GetAddOnContentLostErrorCode |
10 | [11.0.0+] GetAddOnContentListChangedEventWithProcessId |
11 | [13.0.0+] NotifyMountAddOnContent |
12 | [13.0.0+] NotifyUnmountAddOnContent |
13 | [13.0.0+] IsAddOnContentMountedForDebug |
50 | [13.0.0+] CheckAddOnContentMountStatus |
100 | [7.0.0+] CreateEcPurchasedEventManager |
101 | [9.0.0+] CreatePermanentEcPurchasedEventManager |
110 | [12.0.0+] CreateContentsServiceManager |
200 | [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition |
300 | [16.0.0+] SetupHostAddOnContent |
301 | [16.0.0+] GetRegisteredAddOnContentPath |
302 | [16.0.0+] UpdateCachedList |
IPurchaseEventManager
This is "nn::ec::IPurchaseEventManager".
Cmd | Name |
---|---|
0 | SetDefaultDeliveryTarget |
1 | SetDeliveryTarget |
2 | GetPurchasedEventReadableHandle |
3 | PopPurchasedProductInfo |
4 | [9.0.0+] PopPurchasedProductInfoWithUid |
IContentsServiceManager
This is "nn::ec::IContentsServiceManager".
This was added with [12.0.0+].
Cmd | Name |
---|---|
0 | [16.0.0+] RequestContentsAuthorizationTokenDeprecated ([12.0.0-15.0.1] #RequestContentsAuthorizationToken) |
1 | [16.0.0+] RequestContentsAuthorizationToken |
RequestContentsAuthorizationToken
Takes a total of 0x50-bytes of input, a PID, a type-0x5 input buffer. Returns an IAsyncData and an output handle.
IAsyncData
This is "nn::ec::detail::IAsyncData".
This was added with [12.0.0+].
Cmd | Name |
---|---|
0 | GetSize |
1 | Get |
2 | Cancel |
ns:am
This is "nn::ns::detail::IApplicationManagerInterface".
[3.0.0+] This service was replaced by ns:am2.
Cmd | Name |
---|---|
0 | #ListApplicationRecord |
1 | GenerateApplicationRecordCount |
2 | GetApplicationRecordUpdateSystemEvent |
3 | GetApplicationViewDeprecated |
4 | DeleteApplicationEntity |
5 | DeleteApplicationCompletely |
6 | IsAnyApplicationEntityRedundant |
7 | DeleteRedundantApplicationEntity |
8 | IsApplicationEntityMovable |
9 | MoveApplicationEntity |
11 | #CalculateApplicationOccupiedSize |
16 | PushApplicationRecord |
17 | ListApplicationRecordContentMeta |
18 | CheckLaunchRights |
19 | #LaunchApplication |
21 | #GetApplicationContentPath |
22 | TerminateApplication |
23 | [2.0.0+] ResolveApplicationContentPath |
26 | BeginInstallApplication |
27 | DeleteApplicationRecord |
30 | RequestApplicationUpdateInfo |
31 | RequestUpdateApplication |
32 | CancelApplicationDownload |
33 | ResumeApplicationDownload |
34 | ClearTaskStatusList |
35 | UpdateVersionList |
36 | PushLaunchVersion |
37 | ListRequiredVersion |
38 | CheckApplicationLaunchVersion |
39 | CheckApplicationLaunchRights |
40 | GetApplicationLogoData |
41 | CalculateApplicationDownloadRequiredSize |
42 | CleanupSdCard |
43 | #CheckSdCardMountStatus |
44 | GetSdCardMountStatusChangedEvent |
45 | GetGameCardAttachmentEvent |
46 | GetGameCardAttachmentInfo |
47 | #GetTotalSpaceSize |
48 | #GetFreeSpaceSize |
49 | GetSdCardRemovedEvent |
52 | GetGameCardUpdateDetectionEvent |
53 | DisableApplicationAutoDelete |
54 | EnableApplicationAutoDelete |
55 | #GetApplicationDesiredLanguage |
56 | SetApplicationTerminateResult |
57 | ClearApplicationTerminateResult |
58 | GetLastSdCardMountUnexpectedResult |
59 | ConvertApplicationLanguageToLanguageCode |
60 | #ConvertLanguageCodeToApplicationLanguage |
61 | GetBackgroundDownloadStressTaskInfo |
62 | GetGameCardStopper |
63 | IsSystemProgramInstalled |
64 | [2.0.0+] StartApplyDeltaTask |
65 | [2.0.0+] GetRequestServerStopper |
100 | ResetToFactorySettings |
101 | ResetToFactorySettingsWithoutUserSaveData |
102 | [2.0.0+] ResetToFactorySettingsForRefurbishment |
200 | CalculateUserSaveDataStatistics |
201 | DeleteUserSaveDataAll |
210 | DeleteUserSystemSaveData |
220 | UnregisterNetworkServiceAccount |
300 | GetApplicationShellEvent |
301 | PopApplicationShellEventInfo |
302 | LaunchLibraryApplet |
303 | TerminateLibraryApplet |
304 | LaunchSystemApplet |
305 | TerminateSystemApplet |
306 | LaunchOverlayApplet |
307 | TerminateOverlayApplet |
400 | #GetApplicationControlData |
401 | InvalidateAllApplicationControlCache |
402 | RequestDownloadApplicationControlData |
403 | GetMaxApplicationControlCacheCount |
404 | [2.0.0+] InvalidateApplicationControlCache |
405 | [2.0.0+] ListApplicationControlCacheEntryInfo |
502 | [2.0.0+] RequestCheckGameCardRegistration |
503 | [2.0.0+] RequestGameCardRegistrationGoldPoint |
504 | [2.0.0+] RequestRegisterGameCard |
600 | [2.0.0+] #CountApplicationContentMeta |
601 | [2.0.0+] #ListApplicationContentMetaStatus |
602 | [2.0.0+] ListAvailableAddOnContent |
603 | [2.0.0+] GetOwnedApplicationContentMetaStatus |
604 | [2.0.0+] RegisterContentsExternalKey |
605 | [2.0.0+] ListApplicationContentMetaStatusWithRightsCheck |
700 | [2.0.0+] PushDownloadTaskList |
701 | [2.0.0+] #ClearTaskStatusList |
702 | [2.0.0+] #RequestDownloadTaskList |
703 | [2.0.0+] #RequestEnsureDownloadTask |
704 | [2.0.0+] #ListDownloadTaskStatus |
705 | [2.0.0+] RequestDownloadTaskListData |
800 | [2.0.0+] RequestVersionList |
801 | [2.0.0+] ListVersionList |
900 | [2.0.0+] GetApplicationRecord |
901 | [2.0.0+] GetApplicationRecordProperty |
902 | [2.0.0+] EnableApplicationAutoUpdate |
903 | [2.0.0+] DisableApplicationAutoUpdate |
904 | [2.0.0+] TouchApplication |
905 | [2.0.0+] RequestApplicationUpdate |
906 | [2.0.0+] IsApplicationUpdateRequested |
907 | [2.0.0+] WithdrawApplicationUpdateRequest |
908 | [2.0.0+] ListApplicationRecordInstalledContentMeta |
1000 | [2.0.0+] RequestVerifyApplicationDeprecated |
1001 | [2.0.0+] CorruptApplicationForDebug |
1200 | [2.0.0+] #NeedsUpdateVulnerability |
1300 | [2.0.0+] IsAnyApplicationEntityInstalled |
1301 | [2.0.0+] DeleteApplicationContentEntities |
1302 | [2.0.0+] CleanupUnrecordedApplicationEntity |
1400 | [2.0.0+] PrepareShutdown |
1500 | [2.0.0+] FormatSdCard |
1501 | [2.0.0+] NeedsSystemUpdateToFormatSdCard |
1502 | [2.0.0+] GetLastSdCardFormatUnexpectedResult |
1503 | [2.0.0+] |
1600 | [2.0.0+] GetSystemSeedForPseudoDeviceId |
1700 | [2.0.0+] ListApplicationDownloadingContentMeta |
1800 | [2.0.0+] IsNotificationSetupCompleted |
1801 | [2.0.0+] GetLastNotificationInfoCount |
1802 | [2.0.0+] ListLastNotificationInfo |
ListApplicationRecord
Takes a type-0x6 output buffer containing an array of the below record and an s32 entry_offset, returns an output s32 out_entrycount.
Returns an array of entries with the below format using the specified offset and count.
Application Record Format
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | ApplicationId |
0x8 | 0x1 | Type? (Known values: 0x2=Installing?, 0x3=Installed / Gamecard inserted, 0x5=Gamecard not inserted, 0xB=Archived) |
0x9 | 0x1 | Unknown, usually 0x02 |
0xA | 0x6 | Unknown, usually zeros? |
0x10 | 0x1 | Unknown, seems to change between reboots and removing/reinserting gamecards |
0x11 | 0x7 | Unknown, usually zeros? |
LaunchApplication
Takes an input ApplicationId, returns an output u64 PID.
Launches an application title which is registered with NS.
GetApplicationContentPath
Takes a 0x16-type output buffer, an u8 ContentMetaType, and an ApplicationId.
The input ApplicationId is used with the application-title table like various other cmds, anything not in that table can't be used with this.
Returns a string path for the specified type of patch content with this ApplicationId, otherwise returns regular-application paths when update-title not installed. Returns an error when the specified type of content doesn't exist for this title. Starts with "@{SdCardContent,UserContent}://" and ends in ".nca".
For gamecard content, the output path is: "@GcSXXXXXXXX:/<NcaId>.nca". NCA-type0 with gamecard returns 0 with an empty output string.
The output string is then used by the user-process with FS to mount the content.
GetTotalSpaceSize
Takes an input u8 StorageId, no output.
The StorageId must be SdCard.
Returns the s64 from NCM_services#IContentStorage GetFreeSpaceSize.
GetFreeSpaceSize
Takes an input u8 StorageId, no output.
The StorageId must be SdCard.
Returns the s64 from NCM_services#IContentStorage GetTotalSpaceSize.
GetApplicationDesiredLanguage
Takes an input u8 language-bitmask, returns an output u8 control.nacp langentry index.
User-processes generate the language-bitmask with the following for all 16 lang-entries: if(<either string in langentry[i] is non-empty>)bitmask |= 1<<i
ConvertLanguageCodeToApplicationLanguage
Takes an input u8 pointer for the resulting Id to be written to and a string represented as a u64 (i.e 0x53552D6E65 for 'en-US').
Returns 0 if an ID was successfully found, otherwise returns 0x25810.
GetApplicationControlData
Takes an input u8 #ApplicationControlSource, an ApplicationId, and a type-0x6 output buffer. Returns an output u32 for actual_size. Official user-processes use buffer size 0x24000. qlaunch only uses source value 0x1 (Storage if not in cache).
Loads cached control.nacp to buf+0 and the cached icon to buf+0x4000. Returns an error if the buffer is too small.
ApplicationControlSource
Value | Description |
---|---|
0x0 | CacheOnly (Returns data from cache) |
0x1 | Storage (Returns data from storage if not present in cache) |
0x2 | StorageOnly (Returns data from storage without using cache) |
ListApplicationContentMetaStatus
Takes a type-0x6 output buffer containing an array of the below entries, an input s32 index and ApplicationId, returns an output s32 out_entrycount.
Returns 0x10-byte entries using the specified ApplicationId starting at the specified index. Can only return game titles. The second entry if any is the update-title usually. When the input entryindex is >= totalentries, this will return 0 with out_entrycount=0.
Entry structure:
Offset | Size | Description |
---|---|---|
0x0 | 0x1 | ContentMetaType ("type") |
0x1 | 0x1 | StorageId ("installedStorage") |
0x2 | 0x1 | Unknown. Non-zero with output from cmd 605, differs for app/update titles. |
0x3 | 0x1 | Padding |
0x4 | 0x4 | Version |
0x8 | 0x8 | ApplicationId |
ns:am2, ns:ec, ns:rid, ns:rt, ns:web, ns:ro, ns:sweb
These are "nn::ns::detail::IServiceGetterInterface".
These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
[11.0.0+] ns:ro was added.
[15.0.0+] ns:sweb was added.
Cmd | Name |
---|---|
7988 | [6.0.0+] GetDynamicRightsInterface |
7989 | [5.1.0+] GetReadOnlyApplicationControlDataInterface |
7991 | [5.0.0+] GetReadOnlyApplicationRecordInterface |
7992 | [4.0.0+] GetECommerceInterface |
7993 | [4.0.0+] GetApplicationVersionInterface |
7994 | GetFactoryResetInterface |
7995 | GetAccountProxyInterface |
7996 | GetApplicationManagerInterface |
7997 | GetDownloadTaskInterface |
7998 | GetContentManagementInterface |
7999 | GetDocumentInterface |
IAccountProxyInterface
This is "nn::ns::detail::IAccountProxyInterface".
Cmd | Name |
---|---|
0 | CreateUserAccount |
IApplicationManagerInterface
This is "nn::ns::detail::IApplicationManagerInterface".
Cmd | Name |
---|---|
0 | #ListApplicationRecord |
1 | GenerateApplicationRecordCount |
2 | #GetApplicationRecordUpdateSystemEvent |
3 | #GetApplicationViewDeprecated |
4 | #DeleteApplicationEntity |
5 | #DeleteApplicationCompletely |
6 | IsAnyApplicationEntityRedundant |
7 | #DeleteRedundantApplicationEntity |
8 | #IsApplicationEntityMovable |
9 | [1.0.0-9.2.0] #MoveApplicationEntity |
11 | #CalculateApplicationOccupiedSize |
16 | PushApplicationRecord |
17 | ListApplicationRecordContentMeta |
19 | [1.0.0-5.1.0] LaunchApplicationOld |
21 | #GetApplicationContentPath |
22 | TerminateApplication |
23 | ResolveApplicationContentPath |
26 | BeginInstallApplication |
27 | DeleteApplicationRecord |
30 | #RequestApplicationUpdateInfo |
31 | [1.0.0-3.0.2] RequestUpdateApplication |
32 | #CancelApplicationDownload |
33 | #ResumeApplicationDownload |
35 | UpdateVersionList |
36 | PushLaunchVersion |
37 | ListRequiredVersion |
38 | #CheckApplicationLaunchVersion |
39 | [1.0.0-6.2.0] CheckApplicationLaunchRights |
40 | GetApplicationLogoData |
41 | CalculateApplicationDownloadRequiredSize |
42 | #CleanupSdCard |
43 | #CheckSdCardMountStatus |
44 | #GetSdCardMountStatusChangedEvent |
45 | GetGameCardAttachmentEvent |
46 | GetGameCardAttachmentInfo |
47 | #GetTotalSpaceSize |
48 | #GetFreeSpaceSize |
49 | GetSdCardRemovedEvent |
52 | #GetGameCardUpdateDetectionEvent |
53 | #DisableApplicationAutoDelete |
54 | #EnableApplicationAutoDelete |
55 | GetApplicationDesiredLanguage |
56 | #SetApplicationTerminateResult |
57 | #ClearApplicationTerminateResult |
58 | #GetLastSdCardMountUnexpectedResult |
59 | ConvertApplicationLanguageToLanguageCode |
60 | #ConvertLanguageCodeToApplicationLanguage |
61 | GetBackgroundDownloadStressTaskInfo |
62 | GetGameCardStopper |
63 | IsSystemProgramInstalled |
64 | StartApplyDeltaTask |
65 | #GetRequestServerStopper |
66 | [3.0.0+] GetBackgroundApplyDeltaStressTaskInfo |
67 | [3.0.0+] #CancelApplicationApplyDelta |
68 | [3.0.0+] #ResumeApplicationApplyDelta |
69 | [3.0.0+] #CalculateApplicationApplyDeltaRequiredSize |
70 | [3.0.0+] #ResumeAll |
71 | [3.0.0+] #GetStorageSize |
80 | [3.0.0+] RequestDownloadApplication |
81 | [3.0.0+] RequestDownloadAddOnContent |
82 | [3.0.0+] DownloadApplication |
83 | [4.0.0-6.2.0] CheckApplicationResumeRights |
84 | [4.0.0+] GetDynamicCommitEvent |
85 | [4.0.0+] #RequestUpdateApplication2 |
86 | [4.0.0+] EnableApplicationCrashReport |
87 | [4.0.0+] IsApplicationCrashReportEnabled |
90 | [15.0.0+] BoostSystemMemoryResourceLimit ([4.0.0-8.1.0] BoostSystemMemoryResourceLimit) |
91 | [5.0.0+] DeprecatedLaunchApplication |
92 | [5.0.0+] GetRunningApplicationProgramId |
93 | [5.0.0+] GetMainApplicationProgramIndex |
94 | [6.0.0+] LaunchApplication |
95 | [6.0.0+] #GetApplicationLaunchInfo |
96 | [6.0.0+] #AcquireApplicationLaunchInfo |
97 | [6.0.0+] GetMainApplicationProgramIndexByApplicationLaunchInfo |
98 | [6.0.0+] EnableApplicationAllThreadDumpOnCrash |
99 | [8.0.0+] #LaunchDevMenu |
100 | #ResetToFactorySettings |
101 | #ResetToFactorySettingsWithoutUserSaveData |
102 | #ResetToFactorySettingsForRefurbishment |
103 | [9.1.0+] #ResetToFactorySettingsWithPlatformRegion |
104 | [9.1.0+] #ResetToFactorySettingsWithPlatformRegionAuthentication |
105 | [10.0.0+] #RequestResetToFactorySettingsSecurely |
106 | [10.0.0+] #RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely |
200 | CalculateUserSaveDataStatistics |
201 | #DeleteUserSaveDataAll |
210 | #DeleteUserSystemSaveData |
211 | [6.0.0+] #DeleteSaveData |
220 | #UnregisterNetworkServiceAccount |
221 | [6.0.0+] #UnregisterNetworkServiceAccountWithUserSaveDataDeletion |
300 | GetApplicationShellEvent |
301 | PopApplicationShellEventInfo |
302 | #LaunchLibraryApplet |
303 | TerminateLibraryApplet |
304 | #LaunchSystemApplet |
305 | TerminateSystemApplet |
306 | #LaunchOverlayApplet |
307 | TerminateOverlayApplet |
400 | #GetApplicationControlData |
401 | InvalidateAllApplicationControlCache |
402 | #RequestDownloadApplicationControlData |
403 | GetMaxApplicationControlCacheCount |
404 | InvalidateApplicationControlCache |
405 | ListApplicationControlCacheEntryInfo |
406 | [6.0.0+] GetApplicationControlProperty |
407 | [8.0.0+] #ListApplicationTitle |
408 | [8.0.0+] #ListApplicationIcon |
502 | #RequestCheckGameCardRegistration |
503 | #RequestGameCardRegistrationGoldPoint |
504 | #RequestRegisterGameCard |
505 | [3.0.0+] #GetGameCardMountFailureEvent |
506 | [3.0.0+] #IsGameCardInserted |
507 | [3.0.0+] #EnsureGameCardAccess |
508 | [3.0.0+] #GetLastGameCardMountFailureResult |
509 | [5.0.0+] #ListApplicationIdOnGameCard |
510 | [9.0.0+] #GetGameCardPlatformRegion |
600 | #CountApplicationContentMeta |
601 | #ListApplicationContentMetaStatus |
602 | [2.0.0-5.1.0] ListAvailableAddOnContent |
603 | GetOwnedApplicationContentMetaStatus |
604 | [1.0.0-15.0.1] RegisterContentsExternalKey |
605 | ListApplicationContentMetaStatusWithRightsCheck |
606 | [3.0.0+] GetContentMetaStorage |
607 | [6.0.0+] #ListAvailableAddOnContent |
609 | [13.0.0+] ListAvailabilityAssuredAddOnContent |
610 | [14.0.0+] GetInstalledContentMetaStorage |
611 | [16.0.0+] PrepareAddOnContent |
700 | PushDownloadTaskList |
701 | #ClearTaskStatusList |
702 | #RequestDownloadTaskList |
703 | #RequestEnsureDownloadTask |
704 | #ListDownloadTaskStatus |
705 | #RequestDownloadTaskListData |
800 | RequestVersionList |
801 | ListVersionList |
802 | [3.0.0+] #RequestVersionListData |
900 | GetApplicationRecord |
901 | GetApplicationRecordProperty |
902 | EnableApplicationAutoUpdate |
903 | DisableApplicationAutoUpdate |
904 | #TouchApplication |
905 | RequestApplicationUpdate |
906 | #IsApplicationUpdateRequested |
907 | #WithdrawApplicationUpdateRequest |
908 | ListApplicationRecordInstalledContentMeta |
909 | [3.0.0-14.1.2] WithdrawCleanupAddOnContentsWithNoRightsRecommendation |
910 | [5.0.0+] HasApplicationRecord |
911 | [5.1.0+] SetPreInstalledApplication |
912 | [5.1.0+] ClearPreInstalledApplicationFlag |
913 | [9.0.0+] ListAllApplicationRecord |
914 | [9.0.0+] HideApplicationRecord |
915 | [9.0.0+] ShowApplicationRecord |
916 | [11.0.0+] IsApplicationAutoDeleteDisabled |
1000 | #RequestVerifyApplicationDeprecated |
1001 | CorruptApplicationForDebug |
1002 | [3.0.0-9.2.0] #RequestVerifyAddOnContentsRights |
1003 | [5.0.0+] #RequestVerifyApplication |
1004 | [5.0.0+] CorruptContentForDebug |
1200 | #NeedsUpdateVulnerability |
1300 | #IsAnyApplicationEntityInstalled |
1301 | DeleteApplicationContentEntities |
1302 | CleanupUnrecordedApplicationEntity |
1303 | [3.0.0-9.2.0] CleanupAddOnContentsWithNoRights |
1304 | [3.0.0+] DeleteApplicationContentEntity |
1308 | [5.0.0+] DeleteApplicationCompletelyForDebug |
1309 | [6.0.0+] #CleanupUnavailableAddOnContents |
1310 | [10.0.0+] #RequestMoveApplicationEntity |
1311 | [10.0.0+] #EstimateSizeToMove |
1312 | [10.0.0+] HasMovableEntity |
1313 | [11.0.0+] CleanupOrphanContents |
1314 | [11.0.0+] CheckPreconditionSatisfiedToMove |
1400 | PrepareShutdown |
1500 | #FormatSdCard |
1501 | #NeedsSystemUpdateToFormatSdCard |
1502 | #GetLastSdCardFormatUnexpectedResult |
1504 | [3.0.0+] InsertSdCard |
1505 | [3.0.0+] RemoveSdCard |
1506 | [9.0.0+] GetSdCardStartupStatus |
1600 | GetSystemSeedForPseudoDeviceId |
1601 | [3.0.0+] ResetSystemSeedForPseudoDeviceId |
1700 | ListApplicationDownloadingContentMeta |
1701 | [3.0.0+] #GetApplicationView |
1702 | [3.0.0+] GetApplicationDownloadTaskStatus |
1703 | [4.0.0+] #GetApplicationViewDownloadErrorContext |
1704 | [8.0.0+] #GetApplicationViewWithPromotionInfo |
1705 | [11.0.0+] #IsPatchAutoDeletableApplication |
1800 | IsNotificationSetupCompleted |
1801 | GetLastNotificationInfoCount |
1802 | ListLastNotificationInfo |
1803 | [3.0.0+] ListNotificationTask |
1900 | [3.0.0-12.1.0] IsActiveAccount |
1901 | [4.0.0+] #RequestDownloadApplicationPrepurchasedRights |
1902 | [5.0.0+] GetApplicationTicketInfo |
1903 | [13.1.0+] RequestDownloadApplicationPrepurchasedRightsForAccount |
2000 | [4.0.0+] #GetSystemDeliveryInfo |
2001 | [4.0.0+] #SelectLatestSystemDeliveryInfo |
2002 | [4.0.0+] #VerifyDeliveryProtocolVersion |
2003 | [4.0.0+] #GetApplicationDeliveryInfo |
2004 | [4.0.0+] #HasAllContentsToDeliver |
2005 | [4.0.0+] #CompareApplicationDeliveryInfo |
2006 | [4.0.0+] #CanDeliverApplication |
2007 | [4.0.0+] #ListContentMetaKeyToDeliverApplication |
2008 | [4.0.0+] #NeedsSystemUpdateToDeliverApplication |
2009 | [4.0.0+] #EstimateRequiredSize |
2010 | [4.0.0+] #RequestReceiveApplication |
2011 | [4.0.0+] #CommitReceiveApplication |
2012 | [4.0.0+] #GetReceiveApplicationProgress |
2013 | [4.0.0+] #RequestSendApplication |
2014 | [4.0.0+] #GetSendApplicationProgress |
2015 | [4.0.0+] #CompareSystemDeliveryInfo |
2016 | [4.0.0+] #ListNotCommittedContentMeta |
2017 | [4.0.0+] #RecoverDownloadTask |
2018 | [5.0.0+] #GetApplicationDeliveryInfoHash |
2050 | [6.0.0+] #GetApplicationRightsOnClient |
2051 | [9.0.0+] InvalidateRightsIdCache |
2100 | [6.0.0+] #GetApplicationTerminateResult |
2101 | [6.0.0+] GetRawApplicationTerminateResult |
2150 | [6.0.0+] CreateRightsEnvironment |
2151 | [6.0.0+] DestroyRightsEnvironment |
2152 | [6.0.0+] ActivateRightsEnvironment |
2153 | [6.0.0+] DeactivateRightsEnvironment |
2154 | [6.0.0+] ForceActivateRightsContextForExit |
2155 | [7.0.0+] UpdateRightsEnvironmentStatus |
2156 | [10.0.0-12.1.0] CreateRightsEnvironmentForMicroApplication ([9.0.0-9.2.0] CreateRightsEnvironmentForPreomia) |
2160 | [6.0.0+] AddTargetApplicationToRightsEnvironment |
2161 | [6.0.0+] SetUsersToRightsEnvironment |
2170 | [6.0.0+] GetRightsEnvironmentStatus |
2171 | [6.0.0+] GetRightsEnvironmentStatusChangedEvent |
2180 | [6.0.0+] RequestExtendExpirationInRightsEnvironment |
2181 | [6.0.0+] GetResultOfExtendExpirationInRightsEnvironment |
2182 | [6.0.0+] SetActiveRightsContextUsingStateToRightsEnvironment |
2190 | [6.0.0+] #GetRightsEnvironmentHandleForApplication |
2199 | [6.0.0+] GetRightsEnvironmentCountForDebug |
2200 | [6.0.0-9.2.0] GetGameCardApplicationCopyIdentifier |
2201 | [6.0.0-9.2.0] GetInstalledApplicationCopyIdentifier |
2250 | [6.0.0-6.2.0] RequestReportActiveELicence |
2300 | [6.0.0-8.1.0] ListEventLog |
2350 | [7.0.0+] PerformAutoUpdateByApplicationId |
2351 | [9.0.0+] #RequestNoDownloadRightsErrorResolution |
2352 | [9.0.0+] #RequestResolveNoDownloadRightsError |
2353 | [10.0.0+] GetApplicationDownloadTaskInfo |
2354 | [11.0.0+] PrioritizeApplicationBackgroundTask |
2355 | [12.0.0+] PreferStorageEfficientUpdate |
2356 | [12.0.0+] RequestStorageEfficientUpdatePreferable |
2357 | [15.0.0+] EnableMultiCoreDownload |
2358 | [15.0.0+] DisableMultiCoreDownload |
2359 | [15.0.0+] IsMultiCoreDownloadEnabled |
2400 | [8.0.0+] #GetPromotionInfo |
2401 | [8.0.0+] CountPromotionInfo |
2402 | [8.0.0+] ListPromotionInfo |
2403 | [8.0.0+] #ImportPromotionJsonForDebug |
2404 | [8.0.0+] #ClearPromotionInfoForDebug |
2500 | [8.0.0+] ConfirmAvailableTime |
2510 | [9.0.0+] #CreateApplicationResource |
2511 | [9.0.0+] #GetApplicationResource |
2513 | [10.0.0+] LaunchMicroApplication ([9.0.0-9.2.0] LaunchPreomia) |
2514 | [9.0.0+] ClearTaskOfAsyncTaskManager |
2515 | [10.0.0+] CleanupAllPlaceHolderAndFragmentsIfNoTask |
2516 | [10.0.0-14.1.2] EnsureApplicationCertificate |
2517 | [13.0.0+] CreateApplicationInstance |
2518 | [13.0.0+] UpdateQualificationForDebug |
2519 | [13.0.0+] IsQualificationTransitionSupported |
2520 | [13.0.0+] IsQualificationTransitionSupportedByProcessId |
2521 | [13.0.0+] GetRightsUserChangedEvent |
2522 | [14.0.0+] IsRomRedirectionAvailable |
2800 | [9.0.0+] GetApplicationIdOfPreomia |
3000 | [11.0.0+] #RegisterDeviceLockKey |
3001 | [11.0.0+] #UnregisterDeviceLockKey |
3002 | [11.0.0+] #VerifyDeviceLockKey |
3003 | [11.0.0+] #HideApplicationIcon |
3004 | [11.0.0+] #ShowApplicationIcon |
3005 | [11.0.0+] #HideApplicationTitle |
3006 | [11.0.0+] #ShowApplicationTitle |
3007 | [11.0.0+] #EnableGameCard |
3008 | [11.0.0+] #DisableGameCard |
3009 | [11.0.0+] #EnableLocalContentShare |
3010 | [11.0.0+] #DisableLocalContentShare |
3011 | [11.0.0+] #IsApplicationIconHidden |
3012 | [11.0.0+] #IsApplicationTitleHidden |
3013 | [11.0.0+] #IsGameCardEnabled |
3014 | [11.0.0+] #IsLocalContentShareEnabled |
3050 | [14.0.0+] ListAssignELicenseTaskResult |
9999 | [10.0.0-10.2.0] GetApplicationCertificate |
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input.
GetApplicationRecordUpdateSystemEvent
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 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.
DeleteApplicationEntity
Takes an input ApplicationId, no output.
DeleteApplicationCompletely
Takes an input ApplicationId, no output.
DeleteRedundantApplicationEntity
No input/output.
IsApplicationEntityMovable
Takes an input u8 StorageId, an ApplicationId, returns an output u8 bool.
MoveApplicationEntity
Takes an input u8 StorageId, an ApplicationId, no output.
RequestApplicationUpdateInfo
Takes an input ApplicationId, returns an output Event handle and an #IAsyncValue.
The data that can be read from the #IAsyncValue is #ApplicationUpdateInfo.
Before using the cmd, official sw uses IsAnyInternetRequestAccepted with the output from GetClientId, throwing an error when the returned bool is false.
CancelApplicationDownload
Takes an input ApplicationId, no output.
ResumeApplicationDownload
Takes an input ApplicationId, no output.
CheckApplicationLaunchVersion
Takes an input ApplicationId, no output.
CalculateApplicationDownloadRequiredSize
Takes an input u8 StorageId, an ApplicationId, returns an output s64.
CleanupSdCard
No input/output.
GetSdCardMountStatusChangedEvent
No input, returns an output Event handle with EventClearMode=0.
GetGameCardUpdateDetectionEvent
No input, returns an output Event handle with EventClearMode=0.
DisableApplicationAutoDelete
Takes an input ApplicationId, no output.
EnableApplicationAutoDelete
Takes an input ApplicationId, no output.
SetApplicationTerminateResult
Takes an input u32 Result, an ApplicationId, no output.
ClearApplicationTerminateResult
Takes an input ApplicationId, no output.
GetLastSdCardMountUnexpectedResult
No input/output.
GetRequestServerStopper
No input, returns an output #IRequestServerStopper.
CancelApplicationApplyDelta
Takes an input ApplicationId, no output.
ResumeApplicationApplyDelta
Takes an input ApplicationId, no output.
CalculateApplicationApplyDeltaRequiredSize
Takes an input u8 StorageId, an ApplicationId, returns an output s64.
ResumeAll
No input/output.
GetStorageSize
Takes an input u8 StorageId, returns two output s64s.
This temporarily mounts the ContentStorage specified by the StorageId (must be BuiltInUser or SdCard). The two output s64s are the output from GetTotalSpaceSize and GetFreeSpaceSize with this ContentStorage, with it this being unmounted afterwards.
RequestUpdateApplication2
Takes an input ApplicationId, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
LaunchApplication
Takes an input u8 ProgramIndex, an input #ApplicationLaunchInfo, returns an output u64.
GetApplicationLaunchInfo
Takes an input ApplicationId, returns an output #ApplicationLaunchInfo.
AcquireApplicationLaunchInfo
Takes an input ApplicationId, returns an output #ApplicationLaunchInfo.
This verifies that a state flag is set and that a state field matches the input ApplicationId, throwing an error otherwise. The #ApplicationLaunchInfo from state is copied to output, then the state flag is cleared.
LaunchDevMenu
No input/output.
This is used by AM cmd LaunchDevMenu.
This loads ProgramIds from system-settings ns.applet!devmenu_id
and ns.applet!devoverlaydisp_id
, which only exists on devunits. An error is thrown if loading these fail.
OpenContentMetaDatabase is used with StorageId = NandSystem, then IContentMetaDatabase GetLatestContentMetaKey is used with both of the above ProgramIds to verify that the cmd is successful.
Then if the above succeeds, the above titles are launched with the above StorageId via pmshell LaunchProgram ([10.0.0+] pgl with pgl_launch_flags=0), with a 0.5s sleep-thread afterwards on success. LaunchFlags value 0xB is used here.
DeleteUserSaveDataAll
Takes an input Uid, returns an output #IProgressMonitorForDeleteUserSaveDataAll.
On success, #IProgressMonitorForDeleteUserSaveDataAll GetProgress is used with the output being copied into object state.
DeleteUserSystemSaveData
Takes an input Uid, an u64 SystemSaveDataId, no output.
DeleteSaveData
Takes an input u8 SaveDataSpaceId, an u64 SaveDataId, no output.
UnregisterNetworkServiceAccount
Takes an input Uid, no output.
UnregisterNetworkServiceAccountWithUserSaveDataDeletion
Takes an input Uid, no output.
LaunchLibraryApplet
Takes an input u64 ProgramId, returns an output u64.
The specified program is launched with StorageId=BuiltInSystem via pmshell LaunchProgram ([10.0.0+] pgl with pgl_launch_flags=0). LaunchFlags value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
This is used by AM.
LaunchSystemApplet
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-setting ns.applet!system_applet_id
.
The SystemApplet is launched with StorageId=BuiltInSystem via pmshell LaunchProgram ([10.0.0+] pgl with pgl_launch_flags=0). LaunchFlags value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
This is used by AM.
LaunchOverlayApplet
No input, returns an output u64.
A state flag must be non-zero, otherwise an error is thrown. The ProgramId is loaded from system-setting ns.applet!overlay_applet_id
.
The OverlayApplet is launched with StorageId=BuiltInSystem via pmshell LaunchProgram ([10.0.0+] pgl with pgl_launch_flags=0). LaunchFlags value 0x9 is used here. The output u64 from here is written to the output for this cmd, on success.
This is used by AM.
RequestDownloadApplicationControlData
Takes an input ApplicationId, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
ListApplicationTitle
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of u64 ApplicationIds, an u8 #ApplicationControlSource, an u64 size, returns an output Event handle and an #IAsyncValue.
qlaunch uses value 0x1 for the u8.
The user-process creates the TransferMemory with permissions=R--.
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 title-entry for each specified ApplicationId.
The TransferMemory size must be at least: count*sizeof(title-entry) + count*sizeof(u64) + count*0x24000.
This is essentially an async wrapper for #GetApplicationControlData, with support for multiple ApplicationIds.
ListApplicationIcon
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of u64 ApplicationIds, an u8 #ApplicationControlSource, an u64 size, returns an output Event handle and an #IAsyncValue.
The user-process creates the TransferMemory with permissions=R--.
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 TransferMemory size must be at least: 0x4 + count*sizeof(u64) + count*0x20000 + count*sizeof(u64) + 0x24000.
This is essentially an async wrapper for #GetApplicationControlData, with support for multiple ApplicationIds.
RequestCheckGameCardRegistration
Takes an input ApplicationId, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
RequestGameCardRegistrationGoldPoint
Takes an input Uid, an ApplicationId, returns an output Event handle and an #IAsyncValue.
The data that can be read from the #IAsyncValue is 4-bytes.
See #RequestApplicationUpdateInfo regarding nifm.
RequestRegisterGameCard
Takes an input s32, an Uid, an ApplicationId, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
GetGameCardMountFailureEvent
No input, returns an output Event handle with EventClearMode=0.
IsGameCardInserted
No input, returns an output u8 bool.
EnsureGameCardAccess
No input/output.
GetLastGameCardMountFailureResult
No input/output.
ListApplicationIdOnGameCard
Takes a type-0x6 output buffer containing an array of u64 ApplicationIds, returns an output s32 for total output entries.
GetGameCardPlatformRegion
No input, returns an u8 GameCardPlatformRegion (0x00 = Global, 0x01 = China).
This calls fsp-srv IDeviceOperator GetGameCardCompatibilityType and returns the result.
ListAvailableAddOnContent
[10.0.0+] This now takes a total of 0x10-bytes of input instead of a total of 0x18-bytes of input.
[15.0.0+] This now takes a total of 0x8-bytes of input instead of a total of 0x10-bytes of input.
RequestDownloadTaskListData
No input, returns an output Event handle and an #IAsyncValue.
TouchApplication
Takes an input ApplicationId, no output.
IsApplicationUpdateRequested
Takes an input ApplicationId, returns an output u8 bool and an u32.
The output u32 is only valid when the output bool is set.
WithdrawApplicationUpdateRequest
Takes an input ApplicationId, no output.
RequestVerifyApplicationDeprecated
Takes an input TransferMemory handle, an ApplicationId, an u64 size, returns an output Event handle and an #IProgressAsyncResult.
On newer system-versions this calls the same func as #RequestVerifyApplication, with the u32 value set to 0x7.
RequestVerifyAddOnContentsRights
Takes an input ApplicationId, returns an output Event handle and an #IProgressAsyncResult.
RequestVerifyApplication
Takes an input TransferMemory handle, an u32, an 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.
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.
IsAnyApplicationEntityInstalled
Takes an input ApplicationId, returns an output u8 bool.
Takes an input u64 ApplicationId, an Uid, no output.
RequestMoveApplicationEntity
Takes an input TransferMemory handle, a type-0x5 input buffer containing an array of StorageId, a StorageId, an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an ApplicationId, an u64 tmem_size, returns an output Event handle and an #IProgressAsyncResult.
The TransferMemory uses permissions=0.
EstimateSizeToMove
Takes a type-0x5 input buffer containing an array of StorageId, a StorageId, an u32 bitfield of "nn::ns::KeepApplicationEntityFlagTag", an ApplicationId, returns an output s64.
This calls a func also used by #RequestMoveApplicationEntity, then calls another func.
FormatSdCard
No input/output.
NeedsSystemUpdateToFormatSdCard
No input, returns an output u8 bool.
GetLastSdCardFormatUnexpectedResult
No input/output.
GetApplicationView
Takes a type-0x6 output buffer containing an array of #ApplicationView, a type-0x5 input buffer containing an array of u64 ApplicationIds, no output.
GetApplicationViewDownloadErrorContext
Takes a type-0x16 output buffer containg an ErrorContext, an u64 ApplicationId, no output.
GetApplicationViewWithPromotionInfo
Takes a type-0x6 output buffer containing an array of #ApplicationViewWithPromotionInfo, a type-0x5 input buffer containing an array of u64 ApplicationIds, no output.
IsPatchAutoDeletableApplication
Takes an input ApplicationId, returns an output bool.
Compares the input ApplicationId with the value of system-setting ns.application!auto_deletable_application_id_on_not_enough_space
, with the bool being set to the comparsion result.
RequestDownloadApplicationPrepurchasedRights
Takes an input ApplicationId, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
GetSystemDeliveryInfo
Takes a type-0x16 output buffer containing a #SystemDeliveryInfo, no output.
This generates a #SystemDeliveryInfo using the currently installed SystemUpdate meta title.
SelectLatestSystemDeliveryInfo
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.
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.
VerifyDeliveryProtocolVersion
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.
GetApplicationDeliveryInfo
Takes a type-0x6 output buffer containing an array of #ApplicationDeliveryInfo, an input u32 bitmask nn::ns::ApplicationDeliveryAttributeTag
, an 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).
HasAllContentsToDeliver
Takes a type-0x5 input buffer containing an array of #ApplicationDeliveryInfo, 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.
CompareApplicationDeliveryInfo
Takes two type-0x5 input buffers containing an array of #ApplicationDeliveryInfo, returns an output s32.
The array-count for both buffers must be 1, otherwise an error is returned.
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.
CanDeliverApplication
Takes two type-0x5 input buffers containing an array of #ApplicationDeliveryInfo, returns an output u8 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.
ListContentMetaKeyToDeliverApplication
Takes a type-0x6 output buffer containing an array of ContentMetaKey, a type-0x5 input buffer containing an array of #ApplicationDeliveryInfo, a s32, and returns an output s32 total_out.
The array-count for ContentMetaKey must be at least 1, and for ApplicationDeliveryInfo it must match 1.
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.
NeedsSystemUpdateToDeliverApplication
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.
After validation etc, this sets the output bool by comparing system-version fields in the #SystemDeliveryInfo/#ApplicationDeliveryInfo and with a state field.
EstimateRequiredSize
Takes a type-0x5 input buffer containing an array of ContentMetaKey, returns an output s64.
When the array-count is less than 1, this will return 0 with the s64 set to 0.
RequestReceiveApplication
Takes a type-0x5 input buffer containing an array of ContentMetaKey, a StorageId, an u16 port, an u32 Ipv4Address, an ApplicationId, returns an output Event handle and an #IAsyncResult.
qlaunch uses value Any for the StorageId, and value 55556 for the port.
An error is thrown if a state ref-count is zero. An error is thrown if nim ListApplicationApplyDeltaTask returns a task.
This loops through the input ContentMetaKey array, throwing an error if the ContentMetaType doesn't match Patch. The input array is copied into state which is used later by the thread for nim cmd53, max entries is 0x12.
This does various setup then creates the #IAsyncResult + the async thread which handles the #IAsyncResult operation. Then the thread does:
- Calls a func which does:
- On success, this loads various data which is then used for saving a SystemPlayReport when the cached system-setting "systemreport!enabled" is set.
- The EventId is "receive_app_contents" with ApplicationId <NS ProgramId>.
CommitReceiveApplication
Takes an input ApplicationId, no output.
GetReceiveApplicationProgress
Takes an input ApplicationId, returns an output #ReceiveApplicationProgress.
An error is thrown if a state ref-count is zero. An error is thrown if nim ListApplicationApplyDeltaTask returns a task.
Uses nim cmd67, throwing an error if no task is returned. Then 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.
RequestSendApplication
Takes a type-0x5 input buffer containing an array of ContentMetaKey, an u16 port, an u32 Ipv4Address, an ApplicationId, returns an output Event handle and an #IAsyncResult.
qlaunch uses value 55556 for the port.
An error is thrown if a state ref-count is zero. An error is thrown if nim ListApplicationApplyDeltaTask returns a task.
The ContentMetaType must match Patch.
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:
- Calls a func which does:
- On success, this loads various data which is then used for saving a SystemPlayReport when the cached system-setting "systemreport!enabled" is set.
- The EventId is "send_app_contents" with ApplicationId <NS ProgramId>.
GetSendApplicationProgress
Takes an input ApplicationId, returns an output #SendApplicationProgress.
Same as #GetReceiveApplicationProgress except this is the Send version, and uses nim cmd68/cmd63 instead.
CompareSystemDeliveryInfo
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.
ListNotCommittedContentMeta
Takes a type-0x6 output buffer containing an array of ContentMetaKey, a s32, an ApplicationId, returns an output s32 total_out.
RecoverDownloadTask
Takes a type-0x5 input buffer containing an array of {unknown} and an input u64, no output.
GetApplicationDeliveryInfoHash
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.
GetApplicationRightsOnClient
Takes a type-0x6 output buffer containing an array of #ApplicationRightsOnClient, an input u32 flags, an ApplicationId, an 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.
For the output array count, qlaunch uses value 3.
GetApplicationTerminateResult
Takes an input ApplicationId, returns an output u32 Result.
GetRightsEnvironmentHandleForApplication
No input, returns a total of 8-bytes of output.
[9.0.0+] Now takes a total of 8-bytes of input, returns a total of 8-bytes of output.
RequestNoDownloadRightsErrorResolution
Takes an input ApplicationId, returns an output Event handle and an #IAsyncValue.
The data that can be read from the #IAsyncValue is #NoDownloadRightsErrorResolution.
See #RequestApplicationUpdateInfo regarding nifm.
RequestResolveNoDownloadRightsError
Takes an input ApplicationId, returns an output Event handle and an #IAsyncValue.
The data that can be read from the #IAsyncValue is #NoDownloadRightsErrorResolution.
See #RequestApplicationUpdateInfo regarding nifm.
GetPromotionInfo
Takes a type-0x6 output buffer containing an array of #PromotionInfo, a type-0x5 input buffer containing an array of u64 ApplicationIds, a type-0x5 input buffer containing an array of Uids, no output.
Official sw uses hard-coded value 1 for the count with each of these arrays.
ImportPromotionJsonForDebug
Takes a type-0x5 input buffer, no output.
The output from Settings_services#GetDebugModeFlag must be 1, otherwise an error is returned.
ClearPromotionInfoForDebug
No input/output.
The output from Settings_services#GetDebugModeFlag must be 1, otherwise an error is returned.
This just clears 0xC-bytes in state.
CreateApplicationResource
Takes an input #ApplicationResourceType. Returns an #IApplicationResource.
GetApplicationResource
Takes an input u64 ProcessId and an input #ApplicationResourceType. Returns an #IApplicationResource.
RegisterDeviceLockKey
Takes a type-0x5 input buffer containing an InArray of u8, no output.
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses NpadButton.
This does SHA256 hashing, etc.
UnregisterDeviceLockKey
No input/output.
Runs code identical to #RegisterDeviceLockKey, except the passed buffer/size are 0.
VerifyDeviceLockKey
Takes a type-0x5 input buffer containing an InArray of u8, no output.
User-processes expose this with two funcs: one which uses an user-specified u8 array directly, while the other uses NpadButton.
This runs hashing similar to #RegisterDeviceLockKey, with the calculated hash being verified with the one from state.
HideApplicationIcon
No input/output.
ShowApplicationIcon
No input/output.
HideApplicationTitle
No input/output.
ShowApplicationTitle
No input/output.
EnableGameCard
No input/output.
DisableGameCard
No input/output.
No input/output.
No input/output.
IsApplicationIconHidden
No input, returns an output bool.
IsApplicationTitleHidden
No input, returns an output bool.
IsGameCardEnabled
No input, returns an output bool.
No input, returns an output bool.
Various Deliver cmds now load the same flag used by this cmd (IsLocalContentShareEnabled), with an error being returned when it's not enabled.
IGameCardStopper
This is "nn::ns::detail::IGameCardStopper".
This interface has no commands.
IRequestServerStopper
This is "nn::ns::detail::IRequestServerStopper".
This interface has no commands.
IProgressMonitorForDeleteUserSaveDataAll
This is "nn::ns::detail::IProgressMonitorForDeleteUserSaveDataAll".
Cmd | Name |
---|---|
0 | GetSystemEvent |
1 | IsFinished |
2 | GetResult |
10 | GetProgress |
When closing the object, official sw uses IsFinished first, asserting when the output bool is false.
- GetSystemEvent: No input, returns an output Event handle. qlaunch doesn't use this.
- IsFinished: No input, returns an output u8 bool.
- GetResult: No input/output.
- GetProgress: No input, returns an output #ProgressForDeleteUserSaveDataAll. Official sw writes this struct directly to object state.
IProgressAsyncResult
This is "nn::ns::detail::IProgressAsyncResult".
Cmd | Name |
---|---|
0 | Get |
1 | Cancel |
2 | GetProgress |
3 | GetDetailResult |
4 | [4.0.0+] GetErrorContext |
IApplicationVersionInterface
This is "nn::ns::detail::IApplicationVersionInterface".
This was added with [4.0.0+].
Cmd | Name |
---|---|
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
No input, returns an output Event handle and an #IAsyncValue.
The data that can be read from the #IAsyncValue is #VersionListData.
IContentManagementInterface
This is "nn::ns::detail::IContentManagementInterface".
CalculateApplicationOccupiedSize
Takes an input ApplicationId, returns an output #ApplicationOccupiedSize.
CheckSdCardMountStatus
No input/output.
CountApplicationContentMeta
Takes an input 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".
Cmd | Name |
---|---|
21 | GetApplicationContentPath |
23 | ResolveApplicationContentPath |
92 | [5.0.0+] GetRunningApplicationProgramId |
IDownloadTaskInterface
This is "nn::ns::detail::IDownloadTaskInterface".
Cmd | Name |
---|---|
701 | #ClearTaskStatusList |
702 | #RequestDownloadTaskList |
703 | #RequestEnsureDownloadTask |
704 | #ListDownloadTaskStatus |
705 | #RequestDownloadTaskListData |
706 | [4.0.0+] #TryCommitCurrentApplicationDownloadTask |
707 | [4.0.0+] #EnableAutoCommit |
708 | [4.0.0+] #DisableAutoCommit |
709 | [4.0.0+] #TriggerDynamicCommitEvent |
ClearTaskStatusList
No input/output.
RequestDownloadTaskList
No input/output.
RequestEnsureDownloadTask
No input, returns an output Event handle and an #IAsyncResult.
ListDownloadTaskStatus
Takes a type-0x6 output buffer containing an array of #DownloadTaskStatus, returns an output s32 total_out.
A maximum of 0x100 tasks can be stored in state.
TryCommitCurrentApplicationDownloadTask
No input/output.
EnableAutoCommit
No input/output.
DisableAutoCommit
No input/output.
TriggerDynamicCommitEvent
No input/output.
IReadOnlyApplicationRecordInterface
This is "nn::ns::detail::IReadOnlyApplicationRecordInterface".
This was added with [5.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | HasApplicationRecord | Same as #IApplicationManagerInterface cmd 910 |
1 | [10.0.0+] NotifyApplicationFailure | |
2 | [10.0.0+] IsDataCorruptedResult |
IReadOnlyApplicationControlDataInterface
This is "nn::ns::detail::IReadOnlyApplicationControlDataInterface".
This was added with [5.1.0+].
Cmd | Name | Notes |
---|---|---|
0 | #GetApplicationControlData | Same as #IApplicationManagerInterface cmd 400 |
1 | #GetApplicationDesiredLanguage | Same as #IApplicationManagerInterface cmd 55 |
2 | ConvertApplicationLanguageToLanguageCode | Same as #IApplicationManagerInterface cmd 59 |
3 | #ConvertLanguageCodeToApplicationLanguage | Same as #IApplicationManagerInterface cmd 60 |
4 | [9.0.0+] SelectApplicationDesiredLanguage |
IDynamicRightsInterface
This is "nn::ns::detail::IDynamicRightsInterface".
This was added with [6.0.0+].
Cmd | Name |
---|---|
0 | #RequestApplicationRightsOnServer |
1 | #RequestAssignRights |
4 | #DeprecatedRequestAssignRightsToResume |
5 | #VerifyActivatedRightsOwners |
6 | #DeprecatedGetApplicationRightsStatus |
7 | #RequestPrefetchForDynamicRights |
8 | #GetDynamicRightsState |
9 | [7.0.0+] #RequestApplicationRightsOnServerToResume |
10 | [7.0.0+] #RequestAssignRightsToResume |
11 | [7.0.0+] #GetActivatedRightsUsers |
12 | [8.0.0+] #GetApplicationRightsStatus |
13 | [8.0.0+] #GetRunningApplicationStatus |
14 | [10.0.0-15.0.1] SelectApplicationLicense |
15 | [12.0.0+] #RequestContentsAuthorizationToken |
16 | [13.0.0+] QualifyUser |
17 | [13.0.0+] QualifyUserWithProcessId |
18 | [13.0.0+] NotifyApplicationRightsCheckStart |
19 | [13.0.0+] UpdateUserList |
20 | [13.0.0+] IsRightsLostUser |
21 | [13.1.0+] SetRequiredAddOnContentsOnContentsAvailabilityTransition |
22 | [14.0.0+] GetLimitedApplicationLicense |
23 | [14.0.0+] GetLimitedApplicationLicenseUpgradableEvent |
24 | [14.0.0+] NotifyLimitedApplicationLicenseUpgradableEventForDebug |
25 | [14.0.0+] RequestProceedDynamicRightsState |
RequestApplicationRightsOnServer
Takes an input ApplicationId, an Uid and an u32. Returns an output Event handle and an #IAsyncValue.
RequestAssignRights
Takes a type-0x5 input buffer containing an array of "nn::ns::ApplicationRightsOnServer". Returns an output Event handle and an #IAsyncResult.
DeprecatedRequestAssignRightsToResume
Takes an input u64 "nn::ns::RightsEnvironmentHandle" and an Uid. Returns an output Event handle and an #IAsyncResult.
VerifyActivatedRightsOwners
Takes an input u64 "nn::ns::RightsEnvironmentHandle". No output.
DeprecatedGetApplicationRightsStatus
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns a bool "nn::ns::ApplicationRightsStatus".
RequestPrefetchForDynamicRights
Takes an input Uid. Returns an output Event handle and an #IAsyncResult.
GetDynamicRightsState
No input. Returns a bool "nn::ns::DynamicRightsState".
RequestApplicationRightsOnServerToResume
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an #IAsyncValue.
RequestAssignRightsToResume
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an output Event handle and an #IAsyncResult.
GetActivatedRightsUsers
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns a bool, an u32 and a type-0x6 output buffer containing an array of Uid.
GetApplicationRightsStatus
Takes an input "nn::ns::RightsEnvironmentHandle". Returns 2 bools "nn::ns::ApplicationRightsStatus" and "nn::ns::ApplicationLicenseType".
GetRunningApplicationStatus
Takes an input u64 "nn::ns::RightsEnvironmentHandle". Returns an u32 "nn::ns::RunningApplicationStatus".
RequestContentsAuthorizationToken
Takes a total of 0x50-bytes of input, a type-0x5 input buffer. Returns an IAsyncData and an output handle.
IAsyncData
This is "nn::ns::detail::IAsyncData".
This was added with [12.0.0+].
Cmd | Name |
---|---|
0 | GetSize |
1 | Get |
2 | Cancel |
3 | GetErrorContext |
IECommerceInterface
This is "nn::ns::detail::IECommerceInterface".
This was added with [4.0.0+].
Cmd | Name |
---|---|
0 | #RequestLinkDevice |
1 | [6.0.0+] #RequestCleanupAllPreInstalledApplications |
2 | [6.0.0+] #RequestCleanupPreInstalledApplication |
3 | [6.0.0+] #RequestSyncRights |
4 | [6.0.0+] #RequestUnlinkDevice |
5 | [6.1.0+] #RequestRevokeAllELicense |
6 | [9.0.0+] #RequestSyncRightsBasedOnAssignedELicenses |
7 | [14.0.0+] RequestOnlineSubscriptionFreeTrialAvailability |
RequestLinkDevice
Takes an input Uid, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
RequestCleanupAllPreInstalledApplications
No input, returns an output Event handle and an #IAsyncResult.
RequestCleanupPreInstalledApplication
Takes an input ApplicationId, returns an output Event handle and an #IAsyncResult.
RequestSyncRights
No input, returns an output Event handle and an #IAsyncResult.
RequestUnlinkDevice
Takes an input Uid, returns an output Event handle and an #IAsyncResult.
See #RequestApplicationUpdateInfo regarding nifm.
RequestRevokeAllELicense
Takes an input 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".
Cmd | Name |
---|---|
100 | #ResetToFactorySettings |
101 | #ResetToFactorySettingsWithoutUserSaveData |
102 | #ResetToFactorySettingsForRefurbishment |
103 | [9.1.0+] #ResetToFactorySettingsWithPlatformRegion |
104 | [9.1.0+] #ResetToFactorySettingsWithPlatformRegionAuthentication |
105 | [10.0.0+] #RequestResetToFactorySettingsSecurely |
106 | [10.0.0+] #RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely |
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+].
Cmd | Name |
---|---|
0 | GetSize |
1 | Get |
2 | Cancel |
3 | GetErrorContext |
4 | GetProgress |
IApplicationResource
This is "nn::ns::detail::IApplicationResource".
This was added with [9.0.0+].
Cmd | Name |
---|---|
0 | Attach |
1 | BoostSystemMemoryResourceLimit |
ns:vm
This is "nn::ns::detail::IVulnerabilityManagerInterface".
Cmd | Name |
---|---|
1200 | [3.0.0+] #NeedsUpdateVulnerability |
1201 | [4.0.0+] #UpdateSafeSystemVersionForDebug |
1202 | [4.0.0+] #GetSafeSystemVersion |
NeedsUpdateVulnerability
No input, returns an output u8 bool flag.
Web-applets use this command to check if the system needs an update.
UpdateSafeSystemVersionForDebug
Takes an input ApplicationId and an u32 version.
This command is not available for retail units. On a debug unit, if the system setting vulnerability!enable_debug
is set, this mounts the system savegame 0x8000000000000049 as "ns_ssversion:/", opens the file "ns_ssversion:/entry" and writes the supplied ApplicationId and version in it.
Finally, it calls OpenContentMetaDatabase with StorageId 3, then calls GetLatestContentMetaKey with the supplied ApplicationId and compares the version field from the returned Content Meta Record with the supplied version.
If the supplied version is higher than the one in NCM's database, the value returned by NeedsUpdateVulnerability is set to "true".
GetSafeSystemVersion
No input, returns an output ContentMetaKey with the cached contents of "ns_ssversion:/entry" (ApplicationId, u32 version and u32 policy from vulnerability!needs_update_vulnerability_policy
).
ns:su
This is "nn::ns::detail::ISystemUpdateInterface".
Cmd | Name |
---|---|
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 |
GetBackgroundNetworkUpdateState
No input, returns an output #BackgroundNetworkUpdateState.
This is similar to #HasDownloaded, see #BackgroundNetworkUpdateState.
OpenSystemUpdateControl
No input, returns an #ISystemUpdateControl.
NotifyExFatDriverRequired
No input/output.
Only usable when an #ISystemUpdateControl isn't open.
This uses nim ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
Then this runs ExFat handling, updates state, and sets the same state flag as #RequestBackgroundNetworkUpdate.
ClearExFatDriverStatusForDebug
No input/output.
RequestBackgroundNetworkUpdate
No input/output.
Only usable when an #ISystemUpdateControl isn't open.
This sets a state flag to value 1.
NotifyBackgroundNetworkUpdate
Takes an input ContentMetaKey, no output.
This checks whether a sysupdate is needed with the input ContentMetaKey using NCM commands, if not this will just return 0. Otherwise, this will then run code which is identical to #RequestBackgroundNetworkUpdate.
NotifyExFatDriverDownloadedForDebug
No input/output.
GetSystemUpdateNotificationEventForContentDelivery
No input, returns an output Event handle with EventClearMode=0.
NotifySystemUpdateForContentDelivery
No input/output.
Signals the Event returned by #GetSystemUpdateNotificationEventForContentDelivery.
PrepareShutdown
No input/output.
This is used by AM.
Just returns 0 when an #ISystemUpdateControl is open.
This does various cleanup / uses various service-cmds etc for shutdown preparation.
DestroySystemUpdateTask
No input/output.
Only usable when an #ISystemUpdateControl isn't open.
This uses nim ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
RequestSendSystemUpdate
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 value 55556 for the port. IP is normally a local-WLAN address, however this can be any address. port/addr are little-endian.
NIM will use the input addr/port with bind(). During accept() handling the addr from there must match the input addr. Hence, addr must be the client addr. NIM will also eventually verify that the system is not Internet-connected.
This validates the #SystemDeliveryInfo and generates a ContentMetaKey from that, and creates the #IAsyncResult + the async thread which handles the #IAsyncResult operation. Then the thread does:
- Calls a func which does:
- 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".
Cmd | Name |
---|---|
0 | #HasDownloaded |
1 | #RequestCheckLatestUpdate |
2 | #RequestDownloadLatestUpdate |
3 | #GetDownloadProgress |
4 | #ApplyDownloadedUpdate |
5 | #RequestPrepareCardUpdate |
6 | #GetPrepareCardUpdateProgress |
7 | #HasPreparedCardUpdate |
8 | #ApplyCardUpdate |
9 | #GetDownloadedEulaDataSize |
10 | #GetDownloadedEulaData |
11 | #SetupCardUpdate |
12 | #GetPreparedCardUpdateEulaDataSize |
13 | #GetPreparedCardUpdateEulaData |
14 | [4.0.0+] #SetupCardUpdateViaSystemUpdater |
15 | [4.0.0+] #HasReceived |
16 | [4.0.0+] #RequestReceiveSystemUpdate |
17 | [4.0.0+] #GetReceiveProgress |
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.
All Card cmds except SetupCardUpdate* require #SetupCardUpdate/#SetupCardUpdateViaSystemUpdater to be used previously. #GetPreparedCardUpdateEulaDataSize/#GetPreparedCardUpdateEulaData checks a different state flag.
HasDownloaded
No input, returns an output u8 bool flag.
Gets whether a network sysupdate was downloaded, with install pending.
Uses nim ListSystemUpdateTask and nim GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output flag is set to: *((u8*)(taskinfo+0) == 0x3
. 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.
The data that can be read from the #IAsyncValue is #LatestSystemUpdate.
RequestDownloadLatestUpdate
No input, returns an output Event handle and an #IAsyncResult.
GetDownloadProgress
No input, returns an output #SystemUpdateProgress.
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.
ApplyDownloadedUpdate
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:
- Uses ListSystemUpdateTask again, then nim IsExFatDriverIncluded. Runs ExFat handling when the output flag is set.
- On newer system-versions, this uses nim GetSystemUpdateTaskInfo then on success uses data from there to save a SystemPlayReport when the cached 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 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 CommitSystemUpdateTask and 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 NotifySystemDataUpdateEvent, however this doesn't happen with ApplyDownloadedUpdate since that input flag is 0.
RequestPrepareCardUpdate
No input, returns an output Event handle and an #IAsyncResult.
GetPrepareCardUpdateProgress
No input, returns an output #SystemUpdateProgress.
HasPreparedCardUpdate
No input, returns an output u8 bool flag.
ApplyCardUpdate
No input/output.
GetDownloadedEulaDataSize
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.
Uses ListSystemUpdateTask again. Then nim GetDownloadedSystemDataPath, with the output ContentPath being used to mount the EULA title with FS.
Then "<mountname>:/<#EulaDataPath>" is opened, gets the filesize, then runs cleanup.
GetDownloadedEulaData
Takes a type-0x15 input buffer #EulaDataPath and a type-0x6 output buffer, returns an output u64 filesize.
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.
SetupCardUpdate
Takes an input u64 size and a TransferMemory handle, no output.
Official sw creates the TransferMemory with an user-specified buffer, with permissions=None.
qlaunch uses size 0x100000 for the TransferMemory buffer.
GetPreparedCardUpdateEulaDataSize
Takes a type-0x15 input buffer #EulaDataPath, returns an output u64 filesize.
This is similar to #GetDownloadedEulaDataSize.
GetPreparedCardUpdateEulaData
Takes a type-0x15 input buffer #EulaDataPath and a type-0x6 output buffer, returns an output u64 filesize.
This is similar to #GetDownloadedEulaData.
SetupCardUpdateViaSystemUpdater
Takes an input u64 size and a TransferMemory handle, no output.
The permissions for the TransferMemory is None.
Same as #SetupCardUpdate, except this doesn't have the code for GetGameCardHandle/GetGameCardUpdatePartitionInfo, and uses OpenRegisteredUpdatePartition instead of OpenGameCardFileSystem. This uses the same is_initialized bool state flag.
HasReceived
No input, returns an output u8 bool.
Same as #HasDownloaded except this uses 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.
qlaunch uses the same value for the port as #RequestSendSystemUpdate (see #RequestSendSystemUpdate for addr as well).
NIM will use the input addr/port with connect().
This validates the #SystemDeliveryInfo and generates a ContentMetaKey from that, and creates the #IAsyncResult + the async thread which handles the #IAsyncResult operation. Then the thread does:
- Calls a func which does:
- Throws an error if ListSystemUpdateTask returns any task.
- Checks whether a sysupdate is actually required using the previously generated ContentMetaKey, throwing an error if not.
- Uses nim cmd69, returning the Result on failure.
- Uses 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-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"
GetReceiveProgress
No input, returns an output #SystemUpdateProgress.
Same as #GetDownloadProgress except this uses nim cmd71 and cmd73.
ApplyReceivedUpdate
No input/output.
GetReceivedEulaDataSize
Takes a type-0x15 input buffer #EulaDataPath, returns an output u64 filesize.
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 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".
Cmd | Name |
---|---|
0 | GetSize |
1 | Get |
2 | Cancel |
3 | [4.0.0+] GetErrorContext |
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.
- 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 ErrorContext.
IAsyncResult
This is "nn::ns::detail::IAsyncResult".
Cmd | Name |
---|---|
0 | Get |
1 | Cancel |
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 ErrorContext.
ns:dev
This is "nn::ns::detail::IDevelopInterface".
[10.0.0+] Some of these cmds were replaced by the pgl system module.
Cmd | Name |
---|---|
0 | [1.0.0-9.2.0] #LaunchProgram |
1 | #TerminateProcess |
2 | [1.0.0-9.2.0] #TerminateProgram |
4 | [1.0.0-9.2.0] #GetShellEvent |
5 | [1.0.0-9.2.0] #GetShellEventInfo |
6 | #TerminateApplication |
7 | [1.0.0-9.2.0] #PrepareLaunchProgramFromHost |
8 | [10.0.0+] #LaunchApplicationFromHost ([1.0.0-9.2.0] #LaunchApplicationForDevelop) |
9 | #LaunchApplicationWithStorageIdForDevelop |
10 | [6.0.0-8.1.0] #IsSystemMemoryResourceLimitBoosted |
11 | [6.0.0+] #GetRunningApplicationProcessIdForDevelop |
12 | [6.0.0+] #SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop |
13 | [9.0.0+] #CreateApplicationResourceForDevelop |
14 | [9.0.0+] #IsPreomiaForDevelop |
15 | [10.0.0+] #GetApplicationProgramIdFromHost |
16 | [12.0.0+] RefreshCachedDebugValues |
17 | [12.0.0+] PrepareLaunchApplicationFromHost |
18 | [12.0.0+] GetLaunchEvent |
19 | [12.0.0+] GetLaunchResult |
20 | [14.0.0+] GetProgramId |
LaunchProgram
Wrapper for "pm:shell" LaunchProcess.
TerminateProcess
Wrapper for "pm:shell" TerminateProcess.
TerminateProgram
Wrapper for "pm:shell" TerminateProgram.
GetShellEvent
Wrapper for "pm:shell" GetProcessEventHandle.
GetShellEventInfo
Wrapper for "pm:shell" GetProcessEventInfo.
TerminateApplication
Calls "pm:shell" GetApplicationProcessIdForShell and sends the ProcessId to TerminateProcess.
PrepareLaunchProgramFromHost
Takes a type-0x5 input buffer containing the ContentPath, returns an output 0x10-byte struct.
Calls IPathResolverForStorage Set...NcaPath functions.
LaunchApplicationForDevelop
Takes an input u32 LaunchFlags and ApplicationId, returns an output u64 ProcessId.
Same as #LaunchApplicationWithStorageIdForDevelop except the last two params passed to the internal vtable funcptr call are value 0x6, instead of from the command input.
LaunchApplicationFromHost
Takes an input u32 LaunchFlags and a type-0x5 input buffer containing the ContentPath. Returns an output u64 ProcessId.
LaunchApplicationWithStorageIdForDevelop
Takes 2 input u8 StorageIds, an u32 LaunchFlags, and an ApplicationId. Returns an output u64 ProcessId.
Launches an application title which is registered with NS.
IsSystemMemoryResourceLimitBoosted
No input. Returns a bool.
GetRunningApplicationProcessIdForDevelop
Returns an output u64 ProcessId.
SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop
Takes an input bool. No output.
CreateApplicationResourceForDevelop
Takes an input u32 (1 = Preomia/MicroApplication). Returns an #IApplicationResource.
IsPreomiaForDevelop
Takes an input u64 ProgramId. Returns a bool.
GetApplicationProgramIdFromHost
Takes a type-0x5 input buffer containing the ContentPath. Returns an u64 ProgramId.
acc:su
This is "nn::account::IAccountServiceForAdministrator".
[13.0.0+] This was moved from account.
This is only available when the output from pm:bm GetBootMode is Normal/Maintenance.
Cmd | Name | Notes |
---|---|---|
0 | GetUserCount | |
1 | GetUserExistence | |
2 | ListAllUsers | |
3 | ListOpenUsers | |
4 | GetLastOpenedUser | |
5 | GetProfile | Returns an #IProfile. |
6 | [3.0.0+] GetProfileDigest | |
50 | #IsUserRegistrationRequestPermitted | |
51 | #TrySelectUserWithoutInteraction | |
60 | [5.0.0-5.1.0] ListOpenContextStoredUsers | |
99 | [6.0.0+] DebugActivateOpenContextRetention | No input, returns an #ISessionObject. |
100 | GetUserRegistrationNotifier | Returns an #INotifier. |
101 | GetUserStateChangeNotifier | Returns an #INotifier. |
102 | GetBaasAccountManagerForSystemService | Returns an #IManagerForSystemService. |
103 | GetBaasUserAvailabilityChangeNotifier | Returns an #INotifier. |
104 | GetProfileUpdateNotifier | Returns an #INotifier. |
105 | [4.0.0+] CheckNetworkServiceAvailabilityAsync | Returns an #IAsyncContext. |
106 | [9.0.0+] GetProfileSyncNotifier | |
110 | StoreSaveDataThumbnail | |
111 | ClearSaveDataThumbnail | |
112 | LoadSaveDataThumbnail | |
113 | [5.0.0+] GetSaveDataThumbnailExistence | |
120 | [10.0.0+] ListOpenUsersInApplication | |
130 | [6.0.0+] ActivateOpenContextRetention | Takes a total of 0x8-bytes of input, returns an #ISessionObject. |
140 | [6.0.0+] ListQualifiedUsers | |
150 | [10.0.0-10.2.0] AuthenticateApplicationAsync | |
151 | [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync | |
152 | [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount | |
170 | [13.0.0+] GetNasOp2MembershipStateChangeNotifier | |
190 | [1.0.0-9.2.0] GetUserLastOpenedApplication | |
191 | [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) | |
200 | BeginUserRegistration | |
201 | CompleteUserRegistration | |
202 | CancelUserRegistration | |
203 | DeleteUser | |
204 | SetUserPosition | |
205 | GetProfileEditor | Takes an input userID and returns an #IProfileEditor. |
206 | CompleteUserRegistrationForcibly | |
210 | [3.0.0+] CreateFloatingRegistrationRequest | Returns an #IFloatingRegistrationRequest. |
211 | [8.0.0+] CreateProcedureToRegisterUserWithNintendoAccount | Takes a total of 0x4-bytes of input and a handle, returns an #IOAuthProcedureForUserRegistration. |
212 | [8.0.0+] ResumeProcedureToRegisterUserWithNintendoAccount | Takes a total of 0x14-bytes of input and a handle, returns an #IOAuthProcedureForUserRegistration. |
230 | AuthenticateServiceAsync | Returns an #IAsyncContext. |
250 | GetBaasAccountAdministrator | Returns an #IAdministrator. |
290 | ProxyProcedureForGuestLoginWithNintendoAccount | Returns an #IOAuthProcedureForExternalNsa (formerly #IOAuthProcedureForGuestLogin with [1.0.0-2.3.0]). |
291 | [3.0.0+] ProxyProcedureForFloatingRegistrationWithNintendoAccount | Returns an #IOAuthProcedureForExternalNsa. |
299 | SuspendBackgroundDaemon | Returns an #ISessionObject. |
900 | [13.0.0+] SetUserUnqualifiedForDebug | |
901 | [13.0.0+] UnsetUserUnqualifiedForDebug | |
902 | [13.0.0+] ListUsersUnqualifiedForDebug | |
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.
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".
Cmd | Name | Notes |
---|---|---|
0 | CheckAvailability | |
1 | GetAccountId | |
2 | EnsureIdTokenCacheAsync | Returns an #IAsyncContext. |
3 | LoadIdTokenCache | |
100 | SetSystemProgramIdentification | |
101 | [7.0.0+] RefreshNotificationTokenAsync | |
110 | [4.0.0+] GetServiceEntryRequirementCache | |
111 | [4.0.0+] InvalidateServiceEntryRequirementCache | |
112 | [4.0.0-6.2.0] InvalidateTokenCache | |
113 | [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay | Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output. |
120 | GetNintendoAccountId | |
121 | [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint | |
130 | GetNintendoAccountUserResourceCache | |
131 | RefreshNintendoAccountUserResourceCacheAsync | Returns an #IAsyncContext. |
132 | RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed | Returns an #IAsyncContext. |
133 | [9.0.0+] GetNintendoAccountVerificationUrlCache | |
134 | [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync | |
135 | [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed | |
140 | [5.0.0+] GetNetworkServiceLicenseCache | |
141 | [5.0.0+] RefreshNetworkServiceLicenseCacheAsync | Returns an #IAsyncContext. |
142 | [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed | Returns an #IAsyncContext. |
150 | CreateAuthorizationRequest | Returns an #IAuthorizationRequest. |
160 | [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache | |
161 | [16.0.0+] RequireReauthenticationOfNetworkServiceAccount |
IFloatingRegistrationRequest
This is "nn::account::baas::IFloatingRegistrationRequest".
Added with [3.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | GetSessionId | |
12 | GetAccountId | |
13 | GetLinkedNintendoAccountId | |
14 | GetNickname | |
15 | GetProfileImage | |
21 | LoadIdTokenCache | |
100 | RegisterUser ([1.0.0-3.0.2] RegisterAsync) | [1.0.0-3.0.2] Used to return an #IAsyncContext. |
101 | RegisterUserWithUid ([1.0.0-3.0.2] RegisterWithUidAsync) | [1.0.0-3.0.2] Used to return an #IAsyncContext. |
102 | [4.0.0+] RegisterNetworkServiceAccountAsync | Returns an #IAsyncContext. |
103 | [4.0.0+] RegisterNetworkServiceAccountWithUidAsync | Returns an #IAsyncContext. |
110 | SetSystemProgramIdentification | |
111 | EnsureIdTokenCacheAsync | Returns an #IAsyncContext. |
IAdministrator
This is "nn::account::baas::IAdministrator".
Cmd | Name | Notes |
---|---|---|
0 | CheckAvailability | |
1 | GetAccountId | |
2 | EnsureIdTokenCacheAsync | Returns an #IAsyncContext. |
3 | LoadIdTokenCache | |
100 | SetSystemProgramIdentification | |
101 | [7.0.0+] RefreshNotificationTokenAsync | |
110 | [4.0.0+] GetServiceEntryRequirementCache | |
111 | [4.0.0+] InvalidateServiceEntryRequirementCache | |
112 | [4.0.0-6.2.0] InvalidateTokenCache | |
113 | [6.1.0+] GetServiceEntryRequirementCacheForOnlinePlay | Takes a total of 0x8-bytes of input, returns a total of 0x4-bytes of output. |
120 | GetNintendoAccountId | |
121 | [9.0.0+] CalculateNintendoAccountAuthenticationFingerprint | |
130 | GetNintendoAccountUserResourceCache | |
131 | RefreshNintendoAccountUserResourceCacheAsync | Returns an #IAsyncContext. |
132 | RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed | Returns an #IAsyncContext. |
133 | [9.0.0+] GetNintendoAccountVerificationUrlCache | |
134 | [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsync | |
135 | [9.0.0+] RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed | |
140 | [5.0.0+] GetNetworkServiceLicenseCache | |
141 | [5.0.0+] RefreshNetworkServiceLicenseCacheAsync | |
142 | [5.0.0+] RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed | |
150 | CreateAuthorizationRequest | Returns an #IAuthorizationRequest. |
160 | [15.0.0+] RequiresUpdateNetworkServiceAccountIdTokenCache | |
161 | [16.0.0+] RequireReauthenticationOfNetworkServiceAccount | |
200 | IsRegistered | |
201 | RegisterAsync | Returns an #IAsyncContext. |
202 | UnregisterAsync | Returns an #IAsyncContext. |
203 | DeleteRegistrationInfoLocally | |
220 | SynchronizeProfileAsync | Returns an #IAsyncContext. |
221 | UploadProfileAsync | Returns an #IAsyncContext. |
222 | SynchronizeProfileAsyncIfSecondsElapsed | Returns an #IAsyncContext. |
250 | IsLinkedWithNintendoAccount | |
251 | CreateProcedureToLinkWithNintendoAccount | Returns an #IOAuthProcedureForNintendoAccountLinkage. |
252 | ResumeProcedureToLinkWithNintendoAccount | Returns an #IOAuthProcedureForNintendoAccountLinkage. |
255 | CreateProcedureToUpdateLinkageStateOfNintendoAccount | Returns an #IOAuthProcedure. |
256 | ResumeProcedureToUpdateLinkageStateOfNintendoAccount | Returns an #IOAuthProcedure. |
260 | [3.0.0+] CreateProcedureToLinkNnidWithNintendoAccount | Returns an #IOAuthProcedure. |
261 | [3.0.0+] ResumeProcedureToLinkNnidWithNintendoAccount | Returns an #IOAuthProcedure. |
280 | ProxyProcedureToAcquireApplicationAuthorizationForNintendoAccount | Returns an #IOAuthProcedure. |
290 | [8.0.0+] GetRequestForNintendoAccountUserResourceView | |
300 | [6.0.0+] TryRecoverNintendoAccountUserStateAsync | Returns an #IAsyncContext. |
400 | [6.1.0+] IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay | Takes a total of 0x8-bytes of input, returns an output u8. |
401 | [6.1.0+] RefreshServiceEntryRequirementCacheForOnlinePlayAsync | Takes a total of 0x8-bytes of input, returns an #IAsyncContext. |
410 | [13.1.0+] CheckRequiredLicenseForLexAsync | |
900 | [9.0.0+] GetAuthenticationInfoForWin | |
901 | [9.0.0+] ImportAsyncForWin | |
997 | DebugUnlinkNintendoAccountAsync | Returns an #IAsyncContext. |
998 | DebugSetAvailabilityErrorDetail |
IAuthorizationRequest
This is "nn::account::nas::IAuthorizationRequest".
Cmd | Name | Notes |
---|---|---|
0 | GetSessionId | |
10 | InvokeWithoutInteractionAsync | Returns an #IAsyncContext. |
19 | IsAuthorized | |
20 | GetAuthorizationCode | |
21 | GetIdToken | |
22 | GetState |
IOAuthProcedure
This is "nn::account::http::IOAuthProcedure".
Cmd | Name | Notes |
---|---|---|
0 | PrepareAsync | Returns an #IAsyncContext. |
1 | GetRequest | |
2 | ApplyResponse | |
3 | ApplyResponseAsync | Returns an #IAsyncContext. |
10 | Suspend |
IOAuthProcedureForExternalNsa
This is "nn::account::nas::IOAuthProcedureForExternalNsa".
Added with [3.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | PrepareAsync | Returns an #IAsyncContext. |
1 | GetRequest | |
2 | ApplyResponse | |
3 | ApplyResponseAsync | Returns an #IAsyncContext. |
10 | Suspend | |
100 | GetAccountId | |
101 | GetLinkedNintendoAccountId | |
102 | GetNickname | |
103 | GetProfileImage |
IOAuthProcedureForNintendoAccountLinkage
This is "nn::account::nas::IOAuthProcedureForNintendoAccountLinkage".
Cmd | Name | Notes |
---|---|---|
0 | PrepareAsync | Returns an #IAsyncContext. |
1 | GetRequest | |
2 | ApplyResponse | |
3 | ApplyResponseAsync | Returns an #IAsyncContext. |
10 | Suspend | |
100 | GetRequestWithTheme | |
101 | IsNetworkServiceAccountReplaced | |
199 | [2.0.0-5.1.0] GetUrlForIntroductionOfExtraMembership | |
200 | [16.0.0+] ApplyAsyncWithAuthorizedToken |
INotifier
This is "nn::account::detail::INotifier".
Cmd | Name |
---|---|
0 | GetSystemEvent |
IProfile
This is "nn::account::profile::IProfile".
Cmd | Name |
---|---|
0 | #Get |
1 | #GetBase |
10 | #GetImageSize |
11 | #LoadImage |
Get
Takes an output type-0x1A buffer for #UserData, returns an output #ProfileBase.
GetBase
No input, returns an output #ProfileBase.
GetImageSize
No input, returns an output u32 for the size of the image buffer.
LoadImage
Takes an output type-0x6 buffer, returns the same output u32 as #GetImageSize.
The output buffer contains the JPEG profile image icon. This is valid for both Miis and character icons.
IProfileEditor
This is "nn::account::profile::IProfileEditor".
Cmd | Name |
---|---|
0 | #Get |
1 | #GetBase |
10 | #GetImageSize |
11 | #LoadImage |
100 | #Store |
101 | #StoreWithImage |
Store
Takes a #ProfileBase and an input type-0x19 buffer for #UserData.
StoreWithImage
Takes a #ProfileBase, an input type-0x19 buffer for #UserData, and an input type-0x5 buffer.
IAsyncContext
This is "nn::account::detail::IAsyncContext".
Cmd | Name |
---|---|
0 | GetSystemEvent |
1 | Cancel |
2 | HasDone |
3 | GetResult |
ISessionObject
This is "nn::account::detail::ISessionObject".
Cmd | Name |
---|---|
999 | Dummy |
acc:u0
This is "nn::account::IAccountServiceForApplication".
[13.0.0+] This was moved from account.
This is only available when the output from pm:bm GetBootMode is Normal/Maintenance.
Cmd | Name | Notes |
---|---|---|
0 | GetUserCount | |
1 | GetUserExistence | |
2 | ListAllUsers | |
3 | ListOpenUsers | |
4 | GetLastOpenedUser | |
5 | GetProfile | Takes an input userID, returns an #IProfile. |
6 | [3.0.0+] GetProfileDigest | |
50 | #IsUserRegistrationRequestPermitted | |
51 | #TrySelectUserWithoutInteraction | |
60 | [5.0.0-5.1.0] ListOpenContextStoredUsers | |
99 | [6.0.0+] DebugActivateOpenContextRetention | No input, returns an #ISessionObject. |
100 | #InitializeApplicationInfoV0 | |
101 | GetBaasAccountManagerForApplication | Takes an input userID, returns an #IManagerForApplication. |
102 | AuthenticateApplicationAsync | Returns an #IAsyncContext. |
103 | [4.0.0+] CheckNetworkServiceAvailabilityAsync | Returns an #IAsyncContext. |
110 | StoreSaveDataThumbnail | |
111 | ClearSaveDataThumbnail | |
120 | CreateGuestLoginRequest | Returns an #IGuestLoginRequest. |
130 | [5.0.0+] LoadOpenContext | |
131 | [6.0.0+] ListOpenContextStoredUsers | |
140 | [6.0.0+] #InitializeApplicationInfoV1 | |
141 | [6.0.0+] ListQualifiedUsers | |
150 | [6.0.0+] IsUserAccountSwitchLocked | |
160 | [13.0.0+] InitializeApplicationInfoV2 |
InitializeApplicationInfo* is used by the user-process during service init.
InitializeApplicationInfoV0
Takes a PID and an input u64 pid_placeholder, no output.
InitializeApplicationInfoV1
Takes a PID and an input u64 pid_placeholder, no output.
IGuestLoginRequest
This is "nn::account::baas::IGuestLoginRequest".
Cmd | Name |
---|---|
0 | GetSessionId |
11 | [1.0.0-2.3.0] |
12 | GetAccountId |
13 | GetLinkedNintendoAccountId |
14 | GetNickname |
15 | GetProfileImage |
21 | [3.0.0+] LoadIdTokenCache |
IManagerForApplication
This is "nn::account::baas::IManagerForApplication".
Cmd | Name | Notes |
---|---|---|
0 | CheckAvailability | |
1 | GetAccountId | |
2 | EnsureIdTokenCacheAsync | Returns an #IAsyncContext. |
3 | LoadIdTokenCache | |
130 | GetNintendoAccountUserResourceCacheForApplication | |
150 | CreateAuthorizationRequest | Returns an #IAuthorizationRequest. |
160 | [5.0.0+] StoreOpenContext | |
170 | [13.0.0+] EnsureIdTokenCacheForOnlinePlayAsync ([6.0.0-12.1.0] LoadNetworkServiceLicenseKindAsync) | No input, returns an #IAsyncContextForLoginForOnlinePlay ([6.0.0-12.1.0] #IAsyncNetworkServiceLicenseKindContext). |
IAsyncNetworkServiceLicenseKindContext
This is "nn::account::detail::IAsyncNetworkServiceLicenseKindContext".
This was added with [6.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | GetSystemEvent | |
1 | Cancel | |
2 | HasDone | |
3 | GetResult | |
100 | GetNetworkServiceLicenseKind |
IAsyncContextForLoginForOnlinePlay
This is "nn::account::baas::IAsyncContextForLoginForOnlinePlay".
This was added with [13.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | GetSystemEvent | |
1 | Cancel | |
2 | HasDone | |
3 | GetResult | |
100 | GetNetworkServiceLicenseInfoForOnlinePlay |
acc:u1
This is "nn::account::IAccountServiceForSystemService".
[13.0.0+] This was moved from account.
This is only available when the output from pm:bm GetBootMode is Normal/Maintenance.
Cmd | Name | Notes |
---|---|---|
0 | GetUserCount | |
1 | GetUserExistence | |
2 | ListAllUsers | |
3 | ListOpenUsers | |
4 | GetLastOpenedUser | |
5 | GetProfile | Returns an #IProfile. |
6 | [3.0.0+] GetProfileDigest | |
50 | #IsUserRegistrationRequestPermitted | |
51 | #TrySelectUserWithoutInteraction | |
60 | [5.0.0-5.1.0] ListOpenContextStoredUsers | |
99 | [6.0.0+] DebugActivateOpenContextRetention | No input, returns an #ISessionObject. |
100 | GetUserRegistrationNotifier | Returns an #INotifier. |
101 | GetUserStateChangeNotifier | Returns an #INotifier. |
102 | GetBaasAccountManagerForSystemService | Returns an #IManagerForSystemService. |
103 | GetBaasUserAvailabilityChangeNotifier | Returns an #INotifier. |
104 | GetProfileUpdateNotifier | Returns an #INotifier. |
105 | [4.0.0+] CheckNetworkServiceAvailabilityAsync | Returns an #IAsyncContext. |
106 | [9.0.0+] GetProfileSyncNotifier | |
110 | StoreSaveDataThumbnail | |
111 | ClearSaveDataThumbnail | |
112 | LoadSaveDataThumbnail | |
113 | [5.0.0+] GetSaveDataThumbnailExistence | |
120 | [10.0.0+] ListOpenUsersInApplication | |
130 | [6.0.0+] ActivateOpenContextRetention | Takes a total of 0x8-bytes of input, returns an #ISessionObject. |
140 | [6.0.0+] ListQualifiedUsers | |
150 | [10.0.0-10.2.0] AuthenticateApplicationAsync | |
151 | [12.0.0+] EnsureSignedDeviceIdentifierCacheForNintendoAccountAsync | |
152 | [12.0.0+] LoadSignedDeviceIdentifierCacheForNintendoAccount | |
170 | [13.0.0+] GetNasOp2MembershipStateChangeNotifier | |
190 | [1.0.0-9.2.0] GetUserLastOpenedApplication | |
191 | [7.0.0+] UpdateNotificationReceiverInfo ([5.0.0-5.1.0] ActivateOpenContextHolder) | |
997 | [3.0.0+] DebugInvalidateTokenCacheForUser | |
998 | DebugSetUserStateClose | |
999 | DebugSetUserStateOpen |
[10.0.0+] DebugSetUserStateClose/DebugSetUserStateOpen now takes an additional 8-bytes of input.
IOAuthProcedureForUserRegistration
This is "nn::account::nas::IOAuthProcedureForUserRegistration".
This was added with [8.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | PrepareAsync | No input, returns an #IAsyncContext. |
1 | GetRequest | |
2 | ApplyResponse | |
3 | ApplyResponseAsync | Takes a type-0x9 input buffer, returns an #IAsyncContext. |
10 | Suspend | |
100 | GetAccountId | |
101 | GetLinkedNintendoAccountId | |
102 | GetNickname | |
103 | GetProfileImage | |
110 | RegisterUserAsync | No input, returns an #IAsyncContext. |
111 | GetUid |
VersionListData
This is "nn::ns::VersionListData".
ApplicationUpdateInfo
This is "nn::ns::ApplicationUpdateInfo". This is an u8.
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.
Offset | Size | Description |
---|---|---|
0x0 | 0x20 * 4 | Array of #ApplicationOccupiedSizeEntity |
ApplicationOccupiedSizeEntity
This is "nn::ns::ApplicationOccupiedSizeEntity". This is a 0x20-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x1 | 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.
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.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | ApplicationId |
0x8 | 0x4 | Version |
0xC | 0x4 | Flag |
0x10 | 0x18 | Progress |
0x28 | 0x18 | ApplyProgress |
This is converted from #ApplicationView by #GetApplicationViewDeprecated on newer system-versions as follows:
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.
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.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Downloaded |
0x8 | 0x8 | Total |
0x10 | 0x4 | LastResult |
0x14 | 0x1 | State |
0x15 | 0x3 | Reserved |
ApplicationApplyDeltaProgress
This is "nn::ns::ApplicationApplyDeltaProgress". This is a 0x18-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Applied |
0x8 | 0x8 | Total |
0x10 | 0x4 | LastResult |
0x14 | 0x1 | State |
0x15 | 0x3 | Reserved |
ApplicationDownloadState
This is "nn::ns::ApplicationDownloadState". This is an u8.
Value | Description |
---|---|
0 | Runnable |
1 | Suspended |
2 | NotEnoughSpace |
3 | Fatal |
4 | Finished |
ApplicationApplyDeltaState
This is "nn::ns::ApplicationApplyDeltaState". This is an u8.
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.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | ApplicationId |
0x8 | 0x4 | ? |
0xC | 0x4 | Flags |
0x10 | 0x40 | ? |
ApplicationViewWithPromotionInfo
This is a 0x70-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x50 | #ApplicationView |
0x50 | 0x20 | #PromotionInfo |
PromotionInfo
This is a 0x20-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | PosixTime start_timestamp. |
0x8 | 0x8 | PosixTime end_timestamp. |
0x10 | 0x8 | Remaining time until the promotion ends, in nanoseconds ({end_timestamp - current_time} converted to nanoseconds). |
0x18 | 0x4 | Not set, left at zero. |
0x1C | 0x1 | Flags. Bit0: whether the PromotionInfo is valid (including bit1). Bit1 clear: u64 +0x10 is set. |
0x1D | 0x3 | Padding |
ApplicationResourceType
This is "nn::ns::ApplicationResourceType". This is an u8.
Value | Description |
---|---|
0 | ApplicationResource |
1 | MicroApplicationResource |
ApplicationErrorCodeCategory
This is "nn::ns::ApplicationErrorCodeCategory". This is an u64.
NoDownloadRightsErrorResolution
This is "nn::ns::NoDownloadRightsErrorResolution".
BackgroundNetworkUpdateState
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
Value | Description |
---|---|
0 | None |
1 | InProgress |
2 | Ready |
Similar to #HasDownloaded, #GetBackgroundNetworkUpdateState uses nim ListSystemUpdateTask and nim GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: 1 + *((u8*)(taskinfo+0) == 0x3
. Otherwise, value=0.
#GetBackgroundNetworkUpdateState always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
SystemUpdateProgress
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Loaded (this value can be larger than total_size when the async operation is finishing and when total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined) |
0x8 | 0x8 | Total (this field is only valid when >0) |
Commands which have this as output will return 0 with the output cleared, when no task is available.
EulaDataPath
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
This contains a file path.
SystemDeliveryInfo
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | SystemDeliveryProtocolVersion. Must be <= to and match system-setting contents_delivery!system_delivery_protocol_version .
|
0x4 | 0x4 | ApplicationDeliveryProtocolVersion. Loaded from system-setting contents_delivery!application_delivery_protocol_version . Unused by #RequestSendSystemUpdate/#RequestReceiveSystemUpdate, besides HMAC validation.
|
0x8 | 0x1 | HasExFat. Unused by #RequestSendSystemUpdate/#RequestReceiveSystemUpdate, besides HMAC validation. |
0x9 | 0x3 | Reserved. |
0xC | 0x4 | SystemUpdateMetaVersion. |
0x10 | 0x8 | SystemUpdateMetaId. |
0x18 | 0x1 | FirmwareVariationId. Used by #RequestSendSystemUpdate. |
0x19 | 0x1 | UpdatableFirmwareGroupId. Unused by #RequestSendSystemUpdate/#RequestReceiveSystemUpdate, besides HMAC validation. |
0x1A | 0x1 | PlatformRegion (0x00 = Unknown, 0x01 = Global, 0x02 = China). |
0x1B | 0xC5 | Unused by #RequestSendSystemUpdate/#RequestReceiveSystemUpdate, besides HMAC validation. |
0xE0 | 0x20 | HMAC-SHA256 over the previous 0xE0-bytes. |
ApplicationDeliveryInfo
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | ? |
0x8 | 0x8 | ApplicationId. |
0x10 | 0x4 | ApplicationVersion. |
0x14 | 0x4 | ? |
0x18 | 0x4 | RequiredSystemVersion. |
0x1C | 0x4 | ? |
0x20 | 0xC0 | ? |
0xE0 | 0x20 | HMAC-SHA256 over the previous 0xE0-bytes. Uses a different key than #SystemDeliveryInfo. |
LatestSystemUpdate
This is "nn::ns::LatestSystemUpdate". This is an u8.
Value | Description |
---|---|
0 | UpToDate |
1 | Downloaded |
2 | NeedsDownload |
ReceiveApplicationProgress
This is "nn::ns::ReceiveApplicationProgress". This is a 0x10-byte struct.
SendApplicationProgress
This is "nn::ns::SendApplicationProgress". This is a 0x10-byte struct.
ApplicationRightsOnClient
This is a 0x20-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | ApplicationId |
0x8 | 0x10 | Uid |
0x18 | 0x1 | Flags, qlaunch only uses bit0-bit4 and bit7. |
0x19 | 0x1 | Flags, qlaunch only uses bit0. |
0x1A | 0x6 | Unknown |
qlaunch only uses +0x18/+0x19 in this struct.
DownloadTaskStatus
This is "nn::ns::DownloadTaskStatus". This is a 0x20-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x10 | Uuid |
0x10 | 0x8 | ApplicationId |
0x18 | 0x1 | Detail |
0x19 | 0x1 | NeedsCleanup |
0x1A | 0x2 | Reserved |
0x1C | 0x4 | Result |
DownloadTaskStatusDetail
This is "nn::ns::DownloadTaskStatusDetail". This is an u8.
Value | Description |
---|---|
0 | Created |
1 | Added |
2 | AlreadyExists |
3 | Failed |
ApplicationLaunchInfo
This is a 0x40-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | ApplicationId |
0x8 | 0x4 | Application version |
0xC | 0x4 | LaunchFlags, set to hard-coded value 0xB by #GetApplicationLaunchInfo. |
0x10 | 0x1 | Application StorageId |
0x11 | 0x1 | Update StorageId |
0x12 | 0x2E |
UserData
This is a 0x80-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x4? | ? |
0x4 | 0x4? | Icon ID. 0 = Mii, the rest are character icon IDs. |
0x8 | 0x1? | Profile icon background color ID |
0x9 | 0x7 | ? |
0x10 | 0x10 | Some ID related to the Mii? All zeros when a character icon is used. |
0x20 | 0x60 | Usually zeros? |
ProfileBase
This is a 0x38-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x10 | userID |
0x10 | 0x8 | POSIX UTC timestamp, for last account edit. |
0x18 | 0x20 | UTF-8 Nickname. Official sw uses strncpy to copy this into another struct (nn::account::Nickname ), with a NUL-byte written after the copied data.
|
Uid
This is "nn::account::Uid". This is a 0x10-byte struct. This contains 2 u64s for the UserId.
Notes
pm:bm GetBootMode is used to determine whether aoc:u is available (see above). This value is also passed to thread "nn.ns.DelayedInitialization", which calls various funcs depending on the BootMode in various cases.
The "nn.ns.DelayedInitialization" thread uses BootMode as follows (this also handles various other initialization):
- Initializes npns:s only for BootMode Normal/Maintenance.
- Initializes the hosted acc:* services and service acc:su only for BootMode Normal/Maintenance.
- Calls a func only for BootMode Normal.
- Initializes es and avm only for BootMode Normal/Maintenance.
The output of GetBootMode is also written into state. This same func later enters a code block when BootMode is Maintenance/SafeMode: various ncm cmds are used with input StorageId=BuiltInUser (VerifyContentMetaDatabase, VerifyContentStorage, ActivateContentMetaDatabase, ActivateContentStorage, InactivateContentMetaDatabase, InactivateContentStorage) and state fields are written. Then if the BootMode is Maintenance the savedata for ns_rightsid (0x800000000000004A) is deleted. Then 0 is returned. Otherwise for BootMode Normal it continues with various initialization, including gamecard handling which handles launching the gamecard title in certain conditions (this is the only time ns launches anything with pgl outside of service cmds).
In the above block, InactivateContentMetaDatabase/InactivateContentStorage are only used if using ActivateContentMetaDatabase/ActivateContentStorage failed (error is only checked after using both cmds). If any of the ncm cmds prior to this fail, it will skip using the rest of the ncm cmds.