Difference between revisions of "NS services"
(35 intermediate revisions by 3 users not shown) | |||
Line 25: | Line 25: | ||
|- | |- | ||
| 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]] | | 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]] | ||
+ | |- | ||
+ | | 101 || [9.0.0+] [[#IPurchaseEventManager|CreatePermanentEcPurchasedEventManager]] | ||
|} | |} | ||
Line 41: | Line 43: | ||
|- | |- | ||
| 3 || PopPurchasedProductInfo | | 3 || PopPurchasedProductInfo | ||
+ | |- | ||
+ | | 4 || [9.0.0+] PopPurchasedProductInfoWithUid | ||
|} | |} | ||
Line 293: | Line 297: | ||
=== Application Record Format === | === Application Record Format === | ||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 408: | Line 411: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 7988 || [6.0.0+] | + | | 7988 || [6.0.0+] [[#IDynamicRightsInterface|GetDynamicRightsInterface]]. |
|- | |- | ||
− | | 7989 || [5.1.0+] | + | | 7989 || [5.1.0+] [[#IReadOnlyApplicationControlDataInterface|GetReadOnlyApplicationControlDataInterface]]. |
|- | |- | ||
− | | 7991 || [5.0.0+] | + | | 7991 || [5.0.0+] [[#IReadOnlyApplicationRecordInterface|GetReadOnlyApplicationRecordInterface]]. |
|- | |- | ||
| 7992 || [4.0.0+] [[#IECommerceInterface|GetECommerceInterface]] | | 7992 || [4.0.0+] [[#IECommerceInterface|GetECommerceInterface]] | ||
Line 429: | Line 432: | ||
|- | |- | ||
| 7999 || [[#IDocumentInterface|GetDocumentInterface]] | | 7999 || [[#IDocumentInterface|GetDocumentInterface]] | ||
− | |||
|} | |} | ||
Line 440: | Line 442: | ||
|- | |- | ||
| 0 || CreateUserAccount | | 0 || CreateUserAccount | ||
− | |||
|} | |} | ||
Line 490: | Line 491: | ||
| 30 || RequestApplicationUpdateInfo | | 30 || RequestApplicationUpdateInfo | ||
|- | |- | ||
− | | [1.0.0-3.0.2] | + | | 31 || [1.0.0-3.0.2] |
|- | |- | ||
| 32 || CancelApplicationDownload | | 32 || CancelApplicationDownload | ||
Line 504: | Line 505: | ||
| 38 || CheckApplicationLaunchVersion | | 38 || CheckApplicationLaunchVersion | ||
|- | |- | ||
− | | [1.0.0-6.2.0] | + | | 39 || [1.0.0-6.2.0] CheckApplicationLaunchRights |
|- | |- | ||
| 40 || GetApplicationLogoData | | 40 || GetApplicationLogoData | ||
Line 572: | Line 573: | ||
| 82 || [3.0.0+] DownloadApplication | | 82 || [3.0.0+] DownloadApplication | ||
|- | |- | ||
− | | [4.0.0-6.2.0] | + | | 83 || [4.0.0-6.2.0] CheckApplicationResumeRights |
|- | |- | ||
| 84 || [4.0.0+] GetDynamicCommitEvent | | 84 || [4.0.0+] GetDynamicCommitEvent | ||
Line 582: | Line 583: | ||
| 87 || [4.0.0+] IsApplicationCrashReportEnabled | | 87 || [4.0.0+] IsApplicationCrashReportEnabled | ||
|- | |- | ||
− | | 90 || [4.0.0 | + | | 90 || [4.0.0-8.1.0] BoostSystemMemoryResourceLimit |
|- | |- | ||
| 91 || [5.0.0+] DeprecatedLaunchApplication | | 91 || [5.0.0+] DeprecatedLaunchApplication | ||
Line 600: | Line 601: | ||
| 98 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash | | 98 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash | ||
|- | |- | ||
− | | 99 || [8.0.0+] LaunchDevMenu | + | | 99 || [8.0.0+] [[#LaunchDevMenu]] |
|- | |- | ||
| 100 || ResetToFactorySettings | | 100 || ResetToFactorySettings | ||
Line 669: | Line 670: | ||
|- | |- | ||
| 509 || [5.0.0+] ListApplicationIdOnGameCard | | 509 || [5.0.0+] ListApplicationIdOnGameCard | ||
+ | |- | ||
+ | | 510 || [9.0.0+] [[#GetGameCardPlatformRegion]] | ||
|- | |- | ||
| 600 || CountApplicationContentMeta | | 600 || CountApplicationContentMeta | ||
Line 729: | Line 732: | ||
|- | |- | ||
| 912 || [5.1.0+] ClearPreInstalledApplicationFlag | | 912 || [5.1.0+] ClearPreInstalledApplicationFlag | ||
+ | |- | ||
+ | | 913 || [9.0.0+] ListAllApplicationRecord | ||
+ | |- | ||
+ | | 914 || [9.0.0+] HideApplicationRecord | ||
+ | |- | ||
+ | | 915 || [9.0.0+] ShowApplicationRecord | ||
|- | |- | ||
| 1000 || RequestVerifyApplicationDeprecated | | 1000 || RequestVerifyApplicationDeprecated | ||
Line 767: | Line 776: | ||
|- | |- | ||
| 1505 || [3.0.0+] RemoveSdCard | | 1505 || [3.0.0+] RemoveSdCard | ||
+ | |- | ||
+ | | 1506 || [9.0.0+] GetSdCardStartupStatus | ||
|- | |- | ||
| 1600 || GetSystemSeedForPseudoDeviceId | | 1600 || GetSystemSeedForPseudoDeviceId | ||
Line 835: | Line 846: | ||
|- | |- | ||
| 2050 || [6.0.0+] GetApplicationRightsOnClient | | 2050 || [6.0.0+] GetApplicationRightsOnClient | ||
+ | |- | ||
+ | | 2051 || [9.0.0+] InvalidateRightsIdCache | ||
|- | |- | ||
| 2100 || [6.0.0+] GetApplicationTerminateResult | | 2100 || [6.0.0+] GetApplicationTerminateResult | ||
Line 851: | Line 864: | ||
|- | |- | ||
| 2155 || [7.0.0+] UpdateRightsEnvironmentStatus | | 2155 || [7.0.0+] UpdateRightsEnvironmentStatus | ||
+ | |- | ||
+ | | 2156 || [9.0.0+] CreateRightsEnvironmentForPreomia | ||
|- | |- | ||
| 2160 || [6.0.0+] AddTargetApplicationToRightsEnvironment | | 2160 || [6.0.0+] AddTargetApplicationToRightsEnvironment | ||
Line 866: | Line 881: | ||
| 2182 || [6.0.0+] SetActiveRightsContextUsingStateToRightsEnvironment | | 2182 || [6.0.0+] SetActiveRightsContextUsingStateToRightsEnvironment | ||
|- | |- | ||
− | | 2190 || [6.0.0+] GetRightsEnvironmentHandleForApplication | + | | 2190 || [6.0.0+] [[#GetRightsEnvironmentHandleForApplication]] |
|- | |- | ||
| 2199 || [6.0.0+] GetRightsEnvironmentCountForDebug | | 2199 || [6.0.0+] GetRightsEnvironmentCountForDebug | ||
Line 874: | Line 889: | ||
| 2201 || [6.0.0+] GetInstalledApplicationCopyIdentifier | | 2201 || [6.0.0+] GetInstalledApplicationCopyIdentifier | ||
|- | |- | ||
− | | [6.0.0-6.2.0] | + | | 2250 || [6.0.0-6.2.0] RequestReportActiveELicence |
|- | |- | ||
− | | 2300 || [6.0.0 | + | | 2300 || [6.0.0-8.1.0] ListEventLog |
|- | |- | ||
| 2350 || [7.0.0+] PerformAutoUpdateByApplicationId | | 2350 || [7.0.0+] PerformAutoUpdateByApplicationId | ||
+ | |- | ||
+ | | 2351 || [9.0.0+] RequestNoDownloadRightsErrorResolution | ||
+ | |- | ||
+ | | 2352 || [9.0.0+] RequestResolveNoDownloadRightsError | ||
|- | |- | ||
| 2400 || [8.0.0+] GetPromotionInfo | | 2400 || [8.0.0+] GetPromotionInfo | ||
Line 892: | Line 911: | ||
| 2500 || [8.0.0+] ConfirmAvailableTime | | 2500 || [8.0.0+] ConfirmAvailableTime | ||
|- | |- | ||
+ | | 2510 || [9.0.0+] [[#CreateApplicationResource]] | ||
+ | |- | ||
+ | | 2511 || [9.0.0+] [[#GetApplicationResource]] | ||
+ | |- | ||
+ | | 2513 || [9.0.0+] LaunchPreomia | ||
+ | |- | ||
+ | | 2514 || [9.0.0+] ClearTaskOfAsyncTaskManager | ||
+ | |- | ||
+ | | 2800 || [9.0.0+] GetApplicationIdOfPreomia | ||
|} | |} | ||
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input. | [4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input. | ||
− | ==== | + | ==== LaunchDevMenu ==== |
No input/output. | No input/output. | ||
Line 903: | Line 931: | ||
This loads titleIDs from [[System_Settings|system-settings]] <code>ns.applet!devmenu_id</code> and <code>ns.applet!devoverlaydisp_id</code>, which only exists on devunits. An error is thrown if loading these fail. | This loads titleIDs from [[System_Settings|system-settings]] <code>ns.applet!devmenu_id</code> and <code>ns.applet!devoverlaydisp_id</code>, which only exists on devunits. An error is thrown if loading these fail. | ||
− | [[ | + | [[NCM_services|NCM]] OpenContentMetaDatabase is used with StorageId = NandSystem, then IContentMetaDatabase GetLatestContentMetaKey is used with both of the above titleIDs to verify that the cmd is successful. |
Then if the above succeeds, the above titles are launched with the above StorageId via [[Process_Manager_services|pmshell]] LaunchProgram, with a 0.5s sleep-thread afterwards on success. | Then if the above succeeds, the above titles are launched with the above StorageId via [[Process_Manager_services|pmshell]] LaunchProgram, with a 0.5s sleep-thread afterwards on success. | ||
+ | |||
+ | ==== GetGameCardPlatformRegion ==== | ||
+ | No input, returns an u8 '''PlatformRegion''' (0x00 = Default, 0x01 = China). | ||
+ | |||
+ | This calls [[Filesystem_services#IDeviceOperator|fsp-srv IDeviceOperator]] GetGameCardCompatibilityType and returns the 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. | ||
+ | |||
+ | ==== CreateApplicationResource ==== | ||
+ | Returns an [[#IApplicationResource]]. | ||
+ | |||
+ | ==== GetApplicationResource ==== | ||
+ | Returns an [[#IApplicationResource]]. | ||
=== IApplicationVersionInterface === | === IApplicationVersionInterface === | ||
Line 933: | Line 977: | ||
|- | |- | ||
| 1000 || PerformAutoUpdate | | 1000 || PerformAutoUpdate | ||
− | |||
|} | |} | ||
Line 958: | Line 1,001: | ||
|- | |- | ||
| 607 || IsAnyApplicationRunning | | 607 || IsAnyApplicationRunning | ||
− | |||
|} | |} | ||
Line 973: | Line 1,015: | ||
|- | |- | ||
| 92 || [5.0.0+] GetRunningApplicationProgramId | | 92 || [5.0.0+] GetRunningApplicationProgramId | ||
− | |||
|} | |} | ||
Line 1,000: | Line 1,041: | ||
|- | |- | ||
| 709 || [4.0.0+] TriggerDynamicCommitEvent | | 709 || [4.0.0+] TriggerDynamicCommitEvent | ||
− | |||
|} | |} | ||
Line 1,031: | Line 1,071: | ||
|- | |- | ||
| 3 || [[#ConvertLanguageCodeToApplicationLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 60 | | 3 || [[#ConvertLanguageCodeToApplicationLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 60 | ||
+ | |- | ||
+ | | 4 || [9.0.0+] SelectApplicationDesiredLanguage || | ||
|} | |} | ||
Line 1,062: | Line 1,104: | ||
| 11 || [7.0.0+] GetActivatedRightsUsers || | | 11 || [7.0.0+] GetActivatedRightsUsers || | ||
|- | |- | ||
− | | 12 || [8.0.0+] GetApplicationRightsStatus | + | | 12 || [8.0.0+] GetApplicationRightsStatus || |
− | | | ||
− | | | ||
|- | |- | ||
+ | | 13 || [8.0.0+] GetRunningApplicationStatus || | ||
|} | |} | ||
Line 1,088: | Line 1,129: | ||
|- | |- | ||
| 5 || [6.1.0+] RequestRevokeAllELicense || Takes a total of 0x10-bytes of input, returns an [[#IAsyncResult]]. | | 5 || [6.1.0+] RequestRevokeAllELicense || Takes a total of 0x10-bytes of input, returns an [[#IAsyncResult]]. | ||
+ | |- | ||
+ | | 6 || [9.0.0+] RequestSyncRightsBasedOnAssignedELicenses || | ||
|} | |} | ||
Line 1,102: | Line 1,145: | ||
|- | |- | ||
| 102 || ResetToFactorySettingsForRefurbishment | | 102 || ResetToFactorySettingsForRefurbishment | ||
+ | |} | ||
+ | |||
+ | === IApplicationResource === | ||
+ | This is "nn::ns::detail::IApplicationResource". | ||
+ | |||
+ | This was added with [9.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
|- | |- | ||
+ | | 0 || Attach | ||
+ | |- | ||
+ | | 1 || BoostSystemMemoryResourceLimit | ||
|} | |} | ||
Line 1,117: | Line 1,173: | ||
|- | |- | ||
| 1202 || [4.0.0+] [[#GetSafeSystemVersion]] | | 1202 || [4.0.0+] [[#GetSafeSystemVersion]] | ||
− | |||
|} | |} | ||
Line 1,144: | Line 1,199: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 | + | | 0 || [[#GetBackgroundNetworkUpdateState]] |
− | |||
− | |||
|- | |- | ||
− | | | + | | 1 || [[#OpenSystemUpdateControl]] |
|- | |- | ||
− | | | + | | 2 || [[#NotifyExFatDriverRequired]] |
|- | |- | ||
− | | | + | | 3 || [[#ClearExFatDriverStatusForDebug]] |
|- | |- | ||
− | | | + | | 4 || [[#RequestBackgroundNetworkUpdate]] |
|- | |- | ||
− | | | + | | 5 || [[#NotifyBackgroundNetworkUpdate]] |
|- | |- | ||
− | | | + | | 6 || [[#NotifyExFatDriverDownloadedForDebug]] |
|- | |- | ||
− | | | + | | 9 || [[#GetSystemUpdateNotificationEventForContentDelivery]] |
|- | |- | ||
− | | | + | | 10 || [[#NotifySystemUpdateForContentDelivery]] |
|- | |- | ||
− | | [3.0.0 | + | | 11 || [3.0.0+] [[#PrepareShutdown]] |
|- | |- | ||
− | | [3.0.0-3.0.2] | + | | 12 || [3.0.0-3.0.2] |
|- | |- | ||
− | | [3.0.0-3.0.2] | + | | 13 || [3.0.0-3.0.2] |
|- | |- | ||
− | | [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]]. | ||
+ | |||
+ | == OpenSystemUpdateControl == | ||
+ | No input, returns an [[#ISystemUpdateControl]]. | ||
+ | |||
+ | == NotifyExFatDriverRequired == | ||
+ | No input/output. | ||
+ | |||
+ | == ClearExFatDriverStatusForDebug == | ||
+ | No input/output. | ||
+ | |||
+ | == RequestBackgroundNetworkUpdate == | ||
+ | No input/output. | ||
+ | |||
+ | == NotifyBackgroundNetworkUpdate == | ||
+ | Takes an input [[NCM_services#ContentMetaKey|ContentMetaKey]], no output. | ||
+ | |||
+ | == NotifyExFatDriverDownloadedForDebug == | ||
+ | No input/output. | ||
+ | |||
+ | == GetSystemUpdateNotificationEventForContentDelivery == | ||
+ | No input, returns an output Event handle with EventClearMode=0. | ||
+ | |||
+ | == NotifySystemUpdateForContentDelivery == | ||
+ | No input/output. | ||
+ | |||
+ | == PrepareShutdown == | ||
+ | No input/output. | ||
+ | |||
+ | == DestroySystemUpdateTask == | ||
+ | No input/output. | ||
+ | |||
+ | == RequestSendSystemUpdate == | ||
+ | Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16, an u32, returns an output Event handle and an [[#IAsyncResult]]. | ||
+ | |||
+ | == GetSendSystemUpdateProgress == | ||
+ | No input, returns an output [[#SystemUpdateProgress]]. | ||
== ISystemUpdateControl == | == ISystemUpdateControl == | ||
Line 1,187: | Line 1,280: | ||
| 0 || [[#HasDownloaded]] | | 0 || [[#HasDownloaded]] | ||
|- | |- | ||
− | | 1 || RequestCheckLatestUpdate | + | | 1 || [[#RequestCheckLatestUpdate]] |
|- | |- | ||
− | | 2 || RequestDownloadLatestUpdate | + | | 2 || [[#RequestDownloadLatestUpdate]] |
|- | |- | ||
| 3 || [[#GetDownloadProgress]] | | 3 || [[#GetDownloadProgress]] | ||
Line 1,195: | Line 1,288: | ||
| 4 || [[#ApplyDownloadedUpdate]] | | 4 || [[#ApplyDownloadedUpdate]] | ||
|- | |- | ||
− | | 5 || RequestPrepareCardUpdate | + | | 5 || [[#RequestPrepareCardUpdate]] |
|- | |- | ||
− | | 6 || GetPrepareCardUpdateProgress | + | | 6 || [[#GetPrepareCardUpdateProgress]] |
|- | |- | ||
− | | 7 || HasPreparedCardUpdate | + | | 7 || [[#HasPreparedCardUpdate]] |
|- | |- | ||
− | | 8 || ApplyCardUpdate | + | | 8 || [[#ApplyCardUpdate]] |
|- | |- | ||
| 9 || [[#GetDownloadedEulaDataSize]] | | 9 || [[#GetDownloadedEulaDataSize]] | ||
Line 1,207: | Line 1,300: | ||
| 10 || [[#GetDownloadedEulaData]] | | 10 || [[#GetDownloadedEulaData]] | ||
|- | |- | ||
− | | 11 || SetupCardUpdate | + | | 11 || [[#SetupCardUpdate]] |
|- | |- | ||
− | | 12 || GetPreparedCardUpdateEulaDataSize | + | | 12 || [[#GetPreparedCardUpdateEulaDataSize]] |
|- | |- | ||
− | | 13 || GetPreparedCardUpdateEulaData | + | | 13 || [[#GetPreparedCardUpdateEulaData]] |
|- | |- | ||
− | | 14 || [4.0.0+] SetupCardUpdateViaSystemUpdater | + | | 14 || [4.0.0+] [[#SetupCardUpdateViaSystemUpdater]] |
|- | |- | ||
− | | 15 || [4.0.0+] HasReceived | + | | 15 || [4.0.0+] [[#HasReceived]] |
|- | |- | ||
− | | 16 || [4.0.0+] RequestReceiveSystemUpdate | + | | 16 || [4.0.0+] [[#RequestReceiveSystemUpdate]] |
|- | |- | ||
− | | 17 || [4.0.0+] GetReceiveProgress | + | | 17 || [4.0.0+] [[#GetReceiveProgress]] |
|- | |- | ||
− | | 18 || [4.0.0+] ApplyReceivedUpdate | + | | 18 || [4.0.0+] [[#ApplyReceivedUpdate]] |
|- | |- | ||
− | | 19 || [4.0.0+] GetReceivedEulaDataSize | + | | 19 || [4.0.0+] [[#GetReceivedEulaDataSize]] |
|- | |- | ||
− | | 20 || [4.0.0+] GetReceivedEulaData | + | | 20 || [4.0.0+] [[#GetReceivedEulaData]] |
|- | |- | ||
− | | 21 || [4.0.0+] SetupToReceiveSystemUpdate | + | | 21 || [4.0.0+] [[#SetupToReceiveSystemUpdate]] |
|- | |- | ||
− | | 22 || [6.0.0+] RequestCheckLatestUpdateIncludesRebootlessUpdate | + | | 22 || [6.0.0+] [[#RequestCheckLatestUpdateIncludesRebootlessUpdate]] |
|} | |} | ||
+ | |||
+ | Only 1 ISystemUpdateControl can be open at a time. | ||
+ | |||
+ | On newer sysvers, all pre-4.0.0 Card cmds require [[#SetupCardUpdateViaSystemUpdater]] to be used previously, except for RequestPrepareCardUpdate. | ||
=== HasDownloaded === | === HasDownloaded === | ||
Line 1,240: | Line 1,337: | ||
This always returns 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89. | 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 === | === GetDownloadProgress === | ||
− | No input, returns | + | 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. | 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. | ||
Line 1,252: | Line 1,357: | ||
* Uses ListSystemUpdateTask again, then [[NIM_services|nim]] IsExFatDriverIncluded. Runs ExFat handling when the output flag is set. | * Uses ListSystemUpdateTask again, then [[NIM_services|nim]] IsExFatDriverIncluded. Runs ExFat handling when the output flag is set. | ||
− | * The two flags in [[Flash_Filesystem#System_Update_Control]] are set to 1. | + | * On newer system-versions, this uses [[NIM_services|nim]] GetSystemUpdateTaskInfo then on success uses data from there to save a SystemPlayReport when a state flag is set (by default it's not set). |
+ | ** The EventId is "systemupdate_dl_throughput" with ApplicationId 0100000000001018. | ||
+ | ** The following fields are added to the report, see [[NIM_services#SystemUpdateTaskInfo|nim SystemUpdateTaskInfo]]: "ContentMetaId", "Version", "DownloadSize", and "ThroughputKBps", | ||
+ | * On newer system-versions, this saves another SystemPlayReport when a state flag is set (same flag mentioned above). | ||
+ | ** The EventId is "systemupdate_pass" with ApplicationId 0100000000001021. | ||
+ | ** This report has the following fields: | ||
+ | *** "Type" | ||
+ | *** "SourceSystemUpdateMetaId" | ||
+ | *** "SourceSystemUpdateMetaVersion" | ||
+ | *** "SourceExFatStatus" | ||
+ | *** "DestinationSystemUpdateMetaId" | ||
+ | *** "DestinationSystemUpdateMetaVersion" | ||
+ | *** "DestinationExFatStatus" | ||
+ | *** "Rebootless" | ||
+ | * Since FIRM will be installed later, the two flags in [[Flash_Filesystem#System_Update_Control]] are set to 1. | ||
* Uses [[NIM_services|nim]] CommitSystemUpdateTask and [[NIM_services|nim]] DestroySystemUpdateTask. | * Uses [[NIM_services|nim]] CommitSystemUpdateTask and [[NIM_services|nim]] DestroySystemUpdateTask. | ||
− | * Installs FIRM. | + | * Installs FIRM. After installing each FIRM, the associated flag in [[Flash_Filesystem#System_Update_Control]] is set to 0. |
+ | * On newer system versions when an input flag is set, this uses [[Filesystem_services|NotifySystemDataUpdateEvent]], however this doesn't happen with ApplyDownloadedUpdate since that input flag is 0. | ||
+ | |||
+ | === RequestPrepareCardUpdate === | ||
+ | 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 === | === GetDownloadedEulaDataSize === | ||
− | Takes a type-0x15 input buffer | + | 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. | Runs code similar to [[#HasDownloaded]], throwing an error if a network sysupdate isn't ready for install. | ||
Line 1,263: | Line 1,395: | ||
Uses ListSystemUpdateTask again. Then [[NIM_services|nim]] GetDownloadedSystemDataPath, with the output ContentPath being used to mount the EULA title with FS. | Uses ListSystemUpdateTask again. Then [[NIM_services|nim]] GetDownloadedSystemDataPath, with the output ContentPath being used to mount the EULA title with FS. | ||
− | Then "<mountname>:/< | + | Then "<mountname>:/<[[#EulaDataPath]]>" is opened, gets the '''filesize''', then runs cleanup. |
=== GetDownloadedEulaData === | === GetDownloadedEulaData === | ||
− | Takes a type-0x15 input buffer | + | 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. | 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. | ||
+ | |||
+ | The permissions for the TransferMemory is None. | ||
+ | |||
+ | === GetPreparedCardUpdateEulaDataSize === | ||
+ | Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''. | ||
+ | |||
+ | === GetPreparedCardUpdateEulaData === | ||
+ | Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''. | ||
+ | |||
+ | === 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 [[Filesystem_services|GetGameCardHandle/GetGameCardUpdatePartitionInfo]], and uses [[Filesystem_services|OpenRegisteredUpdatePartition]] instead of [[Filesystem_services|OpenGameCardFileSystem]]. This also uses a different is_initialized bool state flag. | ||
+ | |||
+ | === HasReceived === | ||
+ | No input, returns an output u8 bool. | ||
+ | |||
+ | Same as [[#HasDownloaded]] except this uses [[NIM_services|nim]] cmd71 and cmd73. | ||
+ | |||
+ | === RequestReceiveSystemUpdate === | ||
+ | Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16, an u32, returns an output Event handle and an [[#IAsyncResult]]. | ||
+ | |||
+ | === GetReceiveProgress === | ||
+ | No input, returns an output [[#SystemUpdateProgress]]. | ||
+ | |||
+ | Same as [[#GetDownloadProgress]] except this uses [[NIM_services|nim]] cmd71 and cmd73. | ||
+ | |||
+ | === ApplyReceivedUpdate === | ||
+ | No input/output. | ||
+ | |||
+ | === GetReceivedEulaDataSize === | ||
+ | Takes a type-0x15 input buffer [[#EulaDataPath]], returns an output u64 '''filesize'''. | ||
+ | |||
+ | === GetReceivedEulaData === | ||
+ | Takes a type-0x15 input buffer [[#EulaDataPath]] and a type-0x6 output buffer, returns an output u64 '''filesize'''. | ||
+ | |||
+ | === SetupToReceiveSystemUpdate === | ||
+ | No input/output. | ||
+ | |||
+ | This just uses [[NIM_services|nim]] ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask. | ||
+ | |||
+ | === RequestCheckLatestUpdateIncludesRebootlessUpdate === | ||
+ | No input, returns an output Event handle and an [[#IAsyncValue]]. | ||
+ | |||
+ | == BackgroundNetworkUpdateState == | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || Unknown. Values >2 are handled the same as this by [[qlaunch]]. | ||
+ | |- | ||
+ | | 1 || Unknown. | ||
+ | |- | ||
+ | | 2 || Unknown. | ||
+ | |} | ||
+ | |||
+ | This is "nn::ns::BackgroundNetworkUpdateState". This is an u8. | ||
+ | |||
+ | == SystemUpdateProgress == | ||
+ | This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct. | ||
+ | |||
+ | == 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. | ||
+ | |||
+ | == LatestSystemUpdate == | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 1 || Unknown. | ||
+ | |- | ||
+ | | 2 || Unknown. | ||
+ | |- | ||
+ | | Other values || Unknown. | ||
+ | |} | ||
+ | |||
+ | This is "nn::ns::LatestSystemUpdate". This is an u8. | ||
= IAsyncValue = | = IAsyncValue = | ||
Line 1,329: | Line 1,550: | ||
| 9 || [[#LaunchApplicationWithStorageIdForDevelop]] | | 9 || [[#LaunchApplicationWithStorageIdForDevelop]] | ||
|- | |- | ||
− | | 10 || [6.0.0 | + | | 10 || [6.0.0-8.1.0] IsSystemMemoryResourceLimitBoosted |
|- | |- | ||
| 11 || [6.0.0+] GetRunningApplicationProcessIdForDevelop | | 11 || [6.0.0+] GetRunningApplicationProcessIdForDevelop | ||
|- | |- | ||
| 12 || [6.0.0+] SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop | | 12 || [6.0.0+] SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop | ||
+ | |- | ||
+ | | 13 || [9.0.0+] [[#CreateApplicationResourceForDevelop]] | ||
+ | |- | ||
+ | | 14 || [9.0.0+] [[#IsPreomiaForDevelop]] | ||
|} | |} | ||
== LaunchProgram == | == LaunchProgram == | ||
− | Wrapper for "pm:shell" [[Process_Manager_services# | + | Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|LaunchProcess]]. |
== TerminateProcess == | == TerminateProcess == | ||
− | Wrapper for "pm:shell" [[Process_Manager_services# | + | Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|TerminateProcess]]. |
== TerminateProgram == | == TerminateProgram == | ||
− | Wrapper for "pm:shell" [[Process_Manager_services# | + | Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|TerminateProgram]]. |
== GetShellEvent == | == GetShellEvent == | ||
− | Wrapper for "pm:shell" [[Process_Manager_services# | + | Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|GetProcessEventHandle]]. |
== GetShellEventInfo == | == GetShellEventInfo == | ||
− | Wrapper for "pm:shell" [[Process_Manager_services# | + | Wrapper for "pm:shell" [[Process_Manager_services#pm:shell|GetProcessEventInfo]]. |
== TerminateApplication == | == TerminateApplication == | ||
− | Calls "pm:shell" [[Process_Manager_services# | + | Calls "pm:shell" [[Process_Manager_services#pm:shell|GetApplicationProcessIdForShell]] and sends PID to [[Process_Manager_services#pm:shell|TerminateProcess]]. |
== PrepareLaunchProgramFromHost == | == PrepareLaunchProgramFromHost == | ||
Line 1,367: | Line 1,592: | ||
Takes 2 input u8s, an u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an u64 titleID. Returns an output u64 PID. | Takes 2 input u8s, an u32 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an u64 titleID. Returns an output u64 PID. | ||
− | Launches an application title which is registered with NS. | + | Launches an application title which is registered with NS. |
+ | |||
+ | == CreateApplicationResourceForDevelop == | ||
+ | Takes an input u32 (1 = Preomia). Returns an [[#IApplicationResource]]. | ||
+ | |||
+ | == IsPreomiaForDevelop == | ||
+ | Takes an u64 titleID. Returns a bool. | ||
[[Category:Services]] | [[Category:Services]] |
Revision as of 19:50, 21 September 2019
aoc:u
This is "nn::aocsrv::detail::IAddOnContentManager".
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 |
100 | [7.0.0+] CreateEcPurchasedEventManager |
101 | [9.0.0+] CreatePermanentEcPurchasedEventManager |
IPurchaseEventManager
This is "nn::ec::IPurchaseEventManager".
Cmd | Name |
---|---|
0 | SetDefaultDeliveryTarget |
1 | SetDeliveryTarget |
2 | GetPurchasedEventReadableHandle |
3 | PopPurchasedProductInfo |
4 | [9.0.0+] PopPurchasedProductInfoWithUid |
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 | |
19 | #LaunchApplication |
21 | #GetApplicationContentPath |
22 | TerminateApplication |
23 | [2.0.0+] ResolveApplicationContentPath |
26 | BeginInstallApplication |
27 | DeleteApplicationRecord |
30 | RequestApplicationUpdateInfo |
31 | RequestUpdateApplication |
32 | CancelApplicationDownload |
33 | ResumeApplicationDownload |
34 | |
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-6 output buffer and an u32 entry_offset.
Returns an array of title-info entries using the specified offset and size. No input titleID is passed to this.
Application Record Format
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x1 | Type? (Known values: 2=Installing?, 3=Gamecard?, 4=Installed?) |
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 u64 titleID, returns an output u64 PID.
Launches an application title which is registered with NS.
GetApplicationContentPath
Takes a 0x16-type output buffer, an u8 title type, and an u64 titleID.
The input titleID 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 titleID, 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 media-id that must be 5.
Returns the u64 from Content_Manager_services#IContentStorage cmd22.
GetFreeSpaceSize
Takes an input media-id that must be 5.
Returns the u64 from Content_Manager_services#IContentStorage cmd23.
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 flag, an u64 titleID, and a type-0x6 output buffer. Returns an output u32 for actual_size. Official user-processes use buffer size 0x24000. qlaunch only uses flag value 0x1.
Loads cached control.nacp to buf+0 and the cached icon to buf+0x4000. Returns an error if the buffer is too small.
ListApplicationContentMetaStatus
Returns 0x10-byte entries using the specified titleID starting at the specified u32 entryindex. 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 | u8 "type". Title type (String is from web-applet) |
0x1 | 0x1 | u8 "installedStorage" / StorageId (String is from web-applet) |
0x2 | 0x1 | Unknown. Non-zero with output from cmd 605, differs for app/update titles. |
0x3 | 0x1 | Padding |
0x4 | 0x4 | u32 Title-version |
0x8 | 0x8 | u64 titleID |
ns:am2, ns:ec, ns:rid, ns:rt, ns:web
These services are all, at the top level, "nn::ns::detail::IServiceGetterInterface". These commands check a state field for a command-specific bit and returns an error if not set, this is likely a permissions check for service+command.
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 | 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] |
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 | [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 |
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 | RegisterContentsExternalKey |
605 | ListApplicationContentMetaStatusWithRightsCheck |
606 | [3.0.0+] GetContentMetaStorage |
607 | [6.0.0+] ListAvailableAddOnContent |
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+] 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 |
1000 | RequestVerifyApplicationDeprecated |
1001 | CorruptApplicationForDebug |
1002 | [3.0.0+] RequestVerifyAddOnContentsRights |
1003 | [5.0.0+] RequestVerifyApplication |
1004 | [5.0.0+] CorruptContentForDebug |
1200 | #NeedsUpdateVulnerability |
1300 | IsAnyApplicationEntityInstalled |
1301 | DeleteApplicationContentEntities |
1302 | CleanupUnrecordedApplicationEntity |
1303 | [3.0.0+] CleanupAddOnContentsWithNoRights |
1304 | [3.0.0+] DeleteApplicationContentEntity |
1308 | [5.0.0+] DeleteApplicationCompletelyForDebug |
1309 | [6.0.0+] CleanupUnavailableAddOnContents |
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 |
1800 | IsNotificationSetupCompleted |
1801 | GetLastNotificationInfoCount |
1802 | ListLastNotificationInfo |
1803 | [3.0.0+] ListNotificationTask |
1900 | [3.0.0+] IsActiveAccount |
1901 | [4.0.0+] RequestDownloadApplicationPrepurchasedRights |
1902 | [5.0.0+] GetApplicationTicketInfo |
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 | [9.0.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+] GetGameCardApplicationCopyIdentifier |
2201 | [6.0.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 |
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 | [9.0.0+] LaunchPreomia |
2514 | [9.0.0+] ClearTaskOfAsyncTaskManager |
2800 | [9.0.0+] GetApplicationIdOfPreomia |
[4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input.
LaunchDevMenu
No input/output.
This is used by AM cmd LaunchDevMenu.
This loads titleIDs 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.
NCM OpenContentMetaDatabase is used with StorageId = NandSystem, then IContentMetaDatabase GetLatestContentMetaKey is used with both of the above titleIDs to verify that the cmd is successful.
Then if the above succeeds, the above titles are launched with the above StorageId via pmshell LaunchProgram, with a 0.5s sleep-thread afterwards on success.
GetGameCardPlatformRegion
No input, returns an u8 PlatformRegion (0x00 = Default, 0x01 = China).
This calls fsp-srv IDeviceOperator GetGameCardCompatibilityType and returns the 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.
CreateApplicationResource
Returns an #IApplicationResource.
GetApplicationResource
Returns an #IApplicationResource.
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 |
1000 | PerformAutoUpdate |
IContentManagerInterface
This is "nn::ns::detail::IContentManagementInterface".
Cmd | Name |
---|---|
11 | CalculateApplicationOccupiedSize |
43 | CheckSdCardMountStatus |
47 | GetTotalSpaceSize |
48 | GetFreeSpaceSize |
600 | CountApplicationContentMeta |
601 | ListApplicationContentMetaStatus |
605 | ListApplicationContentMetaStatusWithRightsCheck |
607 | IsAnyApplicationRunning |
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 |
IReadOnlyApplicationRecordInterface
This is "nn::ns::detail::IReadOnlyApplicationRecordInterface".
This was added with [5.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | HasApplicationRecord | Same as #IApplicationManagerInterface cmd 910 |
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 | Notes |
---|---|---|
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 |
IECommerceInterface
This is "nn::ns::detail::IECommerceInterface".
This was added with [4.0.0+].
Cmd | Name | Notes |
---|---|---|
0 | RequestLinkDevice | Takes a total of 0x10-bytes of input, returns an #IAsyncResult. |
1 | [6.0.0+] RequestCleanupAllPreInstalledApplications | No input, returns an #IAsyncResult. |
2 | [6.0.0+] RequestCleanupPreInstalledApplication | Takes a total of 0x8-bytes of input, returns an #IAsyncResult. |
3 | [6.0.0+] RequestSyncRights | No input, returns an #IAsyncResult. |
4 | [6.0.0+] RequestUnlinkDevice | Takes a total of 0x10-bytes of input, returns an #IAsyncResult. |
5 | [6.1.0+] RequestRevokeAllELicense | Takes a total of 0x10-bytes of input, returns an #IAsyncResult. |
6 | [9.0.0+] RequestSyncRightsBasedOnAssignedELicenses |
IFactoryResetInterface
This is "nn::ns::detail::IFactoryResetInterface".
Cmd | Name |
---|---|
100 | ResetToFactorySettings |
101 | ResetToFactorySettingsWithoutUserSaveData |
102 | ResetToFactorySettingsForRefurbishment |
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 u64 titleID 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 titleID and version in it.
Finally, it calls OpenContentMetaDatabase with StorageID 3, then calls GetLatestContentMetaKey with the supplied titleID 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 a 0x10 byte array with the cached contents of "ns_ssversion:/entry" (u64 titleID, 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.
OpenSystemUpdateControl
No input, returns an #ISystemUpdateControl.
NotifyExFatDriverRequired
No input/output.
ClearExFatDriverStatusForDebug
No input/output.
RequestBackgroundNetworkUpdate
No input/output.
NotifyBackgroundNetworkUpdate
Takes an input ContentMetaKey, no output.
NotifyExFatDriverDownloadedForDebug
No input/output.
GetSystemUpdateNotificationEventForContentDelivery
No input, returns an output Event handle with EventClearMode=0.
NotifySystemUpdateForContentDelivery
No input/output.
PrepareShutdown
No input/output.
DestroySystemUpdateTask
No input/output.
RequestSendSystemUpdate
Takes a type-0x15 input buffer containing a #SystemDeliveryInfo, an u16, an u32, returns an output Event handle and an #IAsyncResult.
GetSendSystemUpdateProgress
No input, returns an output #SystemUpdateProgress.
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.
On newer sysvers, all pre-4.0.0 Card cmds require #SetupCardUpdateViaSystemUpdater to be used previously, except for RequestPrepareCardUpdate.
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 a state flag is set (by default it's not 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.
The permissions for the TransferMemory is None.
GetPreparedCardUpdateEulaDataSize
Takes a type-0x15 input buffer #EulaDataPath, returns an output u64 filesize.
GetPreparedCardUpdateEulaData
Takes a type-0x15 input buffer #EulaDataPath and a type-0x6 output buffer, returns an output u64 filesize.
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 also uses a different 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, an u32, returns an output Event handle and an #IAsyncResult.
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.
GetReceivedEulaData
Takes a type-0x15 input buffer #EulaDataPath and a type-0x6 output buffer, returns an output u64 filesize.
SetupToReceiveSystemUpdate
No input/output.
This just uses nim ListSystemUpdateTask, then when a task is returned uses it with DestroySystemUpdateTask.
RequestCheckLatestUpdateIncludesRebootlessUpdate
No input, returns an output Event handle and an #IAsyncValue.
BackgroundNetworkUpdateState
Value | Description |
---|---|
0 | Unknown. Values >2 are handled the same as this by qlaunch. |
1 | Unknown. |
2 | Unknown. |
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
SystemUpdateProgress
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
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.
LatestSystemUpdate
Value | Description |
---|---|
1 | Unknown. |
2 | Unknown. |
Other values | Unknown. |
This is "nn::ns::LatestSystemUpdate". This is an u8.
IAsyncValue
This is "nn::ns::detail::IAsyncValue".
Cmd | Name |
---|---|
0 | GetSize |
1 | Get |
2 | Cancel |
3 | [4.0.0+] GetErrorContext |
Cmd3: No input/output, takes a type-0x16 output buffer.
IAsyncResult
This is "nn::ns::detail::IAsyncResult".
Cmd | Name |
---|---|
0 | Get |
1 | Cancel |
2 | [4.0.0+] GetErrorContext |
Cmd2: No input/output, takes a type-0x16 output buffer.
ns:dev
This is "nn::ns::detail::IDevelopInterface".
Cmd | Name |
---|---|
0 | #LaunchProgram |
1 | #TerminateProcess |
2 | #TerminateProgram |
4 | #GetShellEvent |
5 | #GetShellEventInfo |
6 | #TerminateApplication |
7 | #PrepareLaunchProgramFromHost |
8 | #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 |
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 PID 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 u64 titleID, returns an output u64 PID.
Same as LaunchApplicationWithStorageId except the last two params passed to the internal vtable funcptr call are value 0x6, instead of from the command input.
LaunchApplicationWithStorageIdForDevelop
Takes 2 input u8s, an u32 LaunchFlags, and an u64 titleID. Returns an output u64 PID.
Launches an application title which is registered with NS.
CreateApplicationResourceForDevelop
Takes an input u32 (1 = Preomia). Returns an #IApplicationResource.
IsPreomiaForDevelop
Takes an u64 titleID. Returns a bool.