Line 6: |
Line 6: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || CountAddOnContentByApplicationId | + | | 0 || [1.0.0-6.2.0] CountAddOnContentByApplicationId |
| |- | | |- |
− | | 1 || ListAddOnContentByApplicationId | + | | 1 || [1.0.0-6.2.0] ListAddOnContentByApplicationId |
| |- | | |- |
| | 2 || CountAddOnContent | | | 2 || CountAddOnContent |
Line 14: |
Line 14: |
| | 3 || ListAddOnContent | | | 3 || ListAddOnContent |
| |- | | |- |
− | | 4 || GetAddOnContentBaseIdByApplicationId | + | | 4 || [1.0.0-6.2.0] GetAddOnContentBaseIdByApplicationId |
| |- | | |- |
| | 5 || GetAddOnContentBaseId | | | 5 || GetAddOnContentBaseId |
| |- | | |- |
− | | 6 || PrepareAddOnContentByApplicationId | + | | 6 || [1.0.0-6.2.0] PrepareAddOnContentByApplicationId |
| |- | | |- |
| | 7 || PrepareAddOnContent | | | 7 || PrepareAddOnContent |
| |- | | |- |
| | 8 || [4.0.0+] GetAddOnContentListChangedEvent | | | 8 || [4.0.0+] GetAddOnContentListChangedEvent |
| + | |- |
| + | | 100 || [7.0.0+] [[#IPurchaseEventManager|CreateEcPurchasedEventManager]] |
| + | |} |
| + | |
| + | == IPurchaseEventManager == |
| + | This is "nn::ec::IPurchaseEventManager". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name |
| + | |- |
| + | | 0 || SetDefaultDeliveryTarget |
| + | |- |
| + | | 1 || SetDeliveryTarget |
| + | |- |
| + | | 2 || GetPurchasedEventReadableHandle |
| + | |- |
| + | | 3 || PopPurchasedProductInfo |
| |} | | |} |
| | | |
Line 62: |
Line 80: |
| | 18 || | | | 18 || |
| |- | | |- |
− | | 19 || LaunchApplication | + | | 19 || [[#LaunchApplication]] |
| |- | | |- |
| | 21 || [[#GetApplicationContentPath]] | | | 21 || [[#GetApplicationContentPath]] |
Line 120: |
Line 138: |
| | 54 || EnableApplicationAutoDelete | | | 54 || EnableApplicationAutoDelete |
| |- | | |- |
− | | 55 || GetApplicationDesiredLanguage | + | | 55 || [[#GetApplicationDesiredLanguage]] |
| |- | | |- |
| | 56 || SetApplicationTerminateResult | | | 56 || SetApplicationTerminateResult |
Line 270: |
Line 288: |
| | | |
| == ListApplicationRecord == | | == ListApplicationRecord == |
− | Takes a type-6 output buffer and an u64. | + | 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. | | Returns an array of title-info entries using the specified offset and size. No input titleID is passed to this. |
| + | |
| + | === Application Record Format === |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! 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 == | | == GetApplicationContentPath == |
− | Takes a 0x16-type output buffer, an u8 [[NCA|type]], and an u64 titleID. | + | Takes a 0x16-type output buffer, an u8 [[NCM_services#Title_Types|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. | | 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. |
Line 294: |
Line 350: |
| | | |
| Returns the u64 from [[Content_Manager_services#IContentStorage]] cmd23. | | 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: <code>if(<either string in langentry[i] is non-empty>)bitmask |= 1<<i</code> |
| | | |
| == ConvertLanguageCodeToApplicationLanguage == | | == ConvertLanguageCodeToApplicationLanguage == |
Line 341: |
Line 402: |
| | | |
| = ns:am2, ns:ec, ns:rid, ns:rt, ns:web = | | = ns:am2, ns:ec, ns:rid, ns:rt, ns:web = |
− | These services are all, at the top level, "nn::ns::detail::IServiceGetterInterface". | + | 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. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 347: |
Line 408: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 7992 || [[#IECommerceInterface|GetECommerceInterface]] | + | | 7988 || [6.0.0+] Returns an output [[#IDynamicRightsInterface]]. |
| |- | | |- |
− | | 7993 || [[#IApplicationVersionInterface|GetApplicationVersionInterface]] | + | | 7989 || [5.1.0+] Returns an output [[#IReadOnlyApplicationControlDataInterface]]. |
| + | |- |
| + | | 7991 || [5.0.0+] Returns an output [[#IReadOnlyApplicationRecordInterface]]. |
| + | |- |
| + | | 7992 || [4.0.0+] [[#IECommerceInterface|GetECommerceInterface]] |
| + | |- |
| + | | 7993 || [4.0.0+] [[#IApplicationVersionInterface|GetApplicationVersionInterface]] |
| |- | | |- |
| | 7994 || [[#IFactoryResetInterface|GetFactoryResetInterface]] | | | 7994 || [[#IFactoryResetInterface|GetFactoryResetInterface]] |
Line 409: |
Line 476: |
| | 17 || ListApplicationRecordContentMeta | | | 17 || ListApplicationRecordContentMeta |
| |- | | |- |
− | | 19 || LaunchApplication | + | | 19 || [1.0.0-5.1.0] LaunchApplicationOld |
| |- | | |- |
| | 21 || [[#GetApplicationContentPath]] | | | 21 || [[#GetApplicationContentPath]] |
Line 422: |
Line 489: |
| |- | | |- |
| | 30 || RequestApplicationUpdateInfo | | | 30 || RequestApplicationUpdateInfo |
| + | |- |
| + | | [1.0.0-3.0.2] 31 || |
| |- | | |- |
| | 32 || CancelApplicationDownload | | | 32 || CancelApplicationDownload |
Line 435: |
Line 504: |
| | 38 || CheckApplicationLaunchVersion | | | 38 || CheckApplicationLaunchVersion |
| |- | | |- |
− | | 39 || CheckApplicationLaunchRights | + | | [1.0.0-6.2.0] 39 || CheckApplicationLaunchRights |
| |- | | |- |
| | 40 || GetApplicationLogoData | | | 40 || GetApplicationLogoData |
Line 485: |
Line 554: |
| | 65 || GetRequestServerStopper | | | 65 || GetRequestServerStopper |
| |- | | |- |
− | | 66 || GetBackgroundApplyDeltaStressTaskInfo | + | | 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 |
| + | |- |
| + | | [4.0.0-6.2.0] 83 || CheckApplicationResumeRights |
| |- | | |- |
− | | 67 || CancelApplicationApplyDelta | + | | 84 || [4.0.0+] GetDynamicCommitEvent |
| |- | | |- |
− | | 68 || ResumeApplicationApplyDelta | + | | 85 || [4.0.0+] RequestUpdateApplication2 |
| |- | | |- |
− | | 69 || CalculateApplicationApplyDeltaRequiredSize | + | | 86 || [4.0.0+] EnableApplicationCrashReport |
| |- | | |- |
− | | 70 || ResumeAll | + | | 87 || [4.0.0+] IsApplicationCrashReportEnabled |
| |- | | |- |
− | | 71 || GetStorageSize | + | | 90 || [4.0.0+] BoostSystemMemoryResourceLimit |
| |- | | |- |
− | | 80 || RequestDownloadApplication | + | | 91 || [5.0.0+] DeprecatedLaunchApplication |
| |- | | |- |
− | | 81 || RequestDownloadAddOnContent | + | | 92 || [5.0.0+] GetRunningApplicationProgramId |
| |- | | |- |
− | | 82 || DownloadApplication | + | | 93 || [5.0.0+] GetMainApplicationProgramIndex |
| |- | | |- |
− | | 83 || CheckApplicationResumeRights | + | | 94 || [6.0.0+] LaunchApplication |
| |- | | |- |
− | | 84 || GetDynamicCommitEvent | + | | 95 || [6.0.0+] GetApplicationLaunchInfo |
| |- | | |- |
− | | 85 || RequestUpdateApplication2 | + | | 96 || [6.0.0+] AcquireApplicationLaunchInfo |
| |- | | |- |
− | | 86 || EnableApplicationCrashReport | + | | 97 || [6.0.0+] GetMainApplicationProgramIndexByApplicationLaunchInfo |
| |- | | |- |
− | | 87 || IsApplicationCrashReportEnabled | + | | 98 || [6.0.0+] EnableApplicationAllThreadDumpOnCrash |
| |- | | |- |
− | | 90 || BoostSystemMemoryResourceLimit | + | | 99 || [8.0.0+] |
| |- | | |- |
| | 100 || ResetToFactorySettings | | | 100 || ResetToFactorySettings |
Line 526: |
Line 613: |
| |- | | |- |
| | 210 || DeleteUserSystemSaveData | | | 210 || DeleteUserSystemSaveData |
| + | |- |
| + | | 211 || [6.0.0+] DeleteSaveData |
| |- | | |- |
| | 220 || UnregisterNetworkServiceAccount | | | 220 || UnregisterNetworkServiceAccount |
| + | |- |
| + | | 221 || [6.0.0+] UnregisterNetworkServiceAccountWithUserSaveDataDeletion |
| |- | | |- |
| | 300 || GetApplicationShellEvent | | | 300 || GetApplicationShellEvent |
Line 556: |
Line 647: |
| |- | | |- |
| | 405 || ListApplicationControlCacheEntryInfo | | | 405 || ListApplicationControlCacheEntryInfo |
| + | |- |
| + | | 406 || [6.0.0+] GetApplicationControlProperty |
| + | |- |
| + | | 407 || [8.0.0+] |
| + | |- |
| + | | 408 || [8.0.0+] |
| |- | | |- |
| | 502 || RequestCheckGameCardRegistration | | | 502 || RequestCheckGameCardRegistration |
Line 563: |
Line 660: |
| | 504 || RequestRegisterGameCard | | | 504 || RequestRegisterGameCard |
| |- | | |- |
− | | 505 || GetGameCardMountFailureEvent | + | | 505 || [3.0.0+] GetGameCardMountFailureEvent |
| |- | | |- |
− | | 506 || IsGameCardInserted | + | | 506 || [3.0.0+] IsGameCardInserted |
| |- | | |- |
− | | 507 || EnsureGameCardAccess | + | | 507 || [3.0.0+] EnsureGameCardAccess |
| |- | | |- |
− | | 508 || GetLastGameCardMountFailureResult | + | | 508 || [3.0.0+] GetLastGameCardMountFailureResult |
| |- | | |- |
− | | 509 || ListApplicationIdOnGameCard | + | | 509 || [5.0.0+] ListApplicationIdOnGameCard |
| |- | | |- |
| | 600 || CountApplicationContentMeta | | | 600 || CountApplicationContentMeta |
Line 577: |
Line 674: |
| | 601 || [[#ListApplicationContentMetaStatus]] | | | 601 || [[#ListApplicationContentMetaStatus]] |
| |- | | |- |
− | | 602 || ListAvailableAddOnContent | + | | 602 || [2.0.0-5.1.0] ListAvailableAddOnContent |
| |- | | |- |
| | 603 || GetOwnedApplicationContentMetaStatus | | | 603 || GetOwnedApplicationContentMetaStatus |
Line 585: |
Line 682: |
| | 605 || ListApplicationContentMetaStatusWithRightsCheck | | | 605 || ListApplicationContentMetaStatusWithRightsCheck |
| |- | | |- |
− | | 606 || GetContentMetaStorage | + | | 606 || [3.0.0+] GetContentMetaStorage |
| + | |- |
| + | | 607 || [6.0.0+] ListAvailableAddOnContent |
| |- | | |- |
| | 700 || PushDownloadTaskList | | | 700 || PushDownloadTaskList |
Line 603: |
Line 702: |
| | 801 || ListVersionList | | | 801 || ListVersionList |
| |- | | |- |
− | | 802 || RequestVersionListData | + | | 802 || [3.0.0+] RequestVersionListData |
| |- | | |- |
| | 900 || GetApplicationRecord | | | 900 || GetApplicationRecord |
Line 623: |
Line 722: |
| | 908 || ListApplicationRecordInstalledContentMeta | | | 908 || ListApplicationRecordInstalledContentMeta |
| |- | | |- |
− | | 909 || WithdrawCleanupAddOnContentsWithNoRightsRecommendation | + | | 909 || [3.0.0+] WithdrawCleanupAddOnContentsWithNoRightsRecommendation |
| + | |- |
| + | | 910 || [5.0.0+] HasApplicationRecord |
| + | |- |
| + | | 911 || [5.1.0+] SetPreInstalledApplication |
| + | |- |
| + | | 912 || [5.1.0+] ClearPreInstalledApplicationFlag |
| |- | | |- |
| | 1000 || RequestVerifyApplicationDeprecated | | | 1000 || RequestVerifyApplicationDeprecated |
Line 629: |
Line 734: |
| | 1001 || CorruptApplicationForDebug | | | 1001 || CorruptApplicationForDebug |
| |- | | |- |
− | | 1002 || RequestVerifyAddOnContentsRights | + | | 1002 || [3.0.0+] RequestVerifyAddOnContentsRights |
| |- | | |- |
− | | 1003 || RequestVerifyApplication | + | | 1003 || [5.0.0+] RequestVerifyApplication |
| |- | | |- |
− | | 1004 || CorruptContentForDebug | + | | 1004 || [5.0.0+] CorruptContentForDebug |
| |- | | |- |
| | 1200 || NeedsUpdateVulnerability | | | 1200 || NeedsUpdateVulnerability |
Line 643: |
Line 748: |
| | 1302 || CleanupUnrecordedApplicationEntity | | | 1302 || CleanupUnrecordedApplicationEntity |
| |- | | |- |
− | | 1303 || CleanupAddOnContentsWithNoRights | + | | 1303 || [3.0.0+] CleanupAddOnContentsWithNoRights |
| |- | | |- |
− | | 1304 || DeleteApplicationContentEntity | + | | 1304 || [3.0.0+] DeleteApplicationContentEntity |
| |- | | |- |
− | | 1305 || TryDeleteRunningApplicationEntity | + | | 1308 || [5.0.0+] DeleteApplicationCompletelyForDebug |
| |- | | |- |
− | | 1306 || TryDeleteRunningApplicationCompletely | + | | 1309 || [6.0.0+] CleanupUnavailableAddOnContents |
− | |-
| |
− | | 1307 || TryDeleteRunningApplicationContentEntities
| |
| |- | | |- |
| | 1400 || PrepareShutdown | | | 1400 || PrepareShutdown |
Line 661: |
Line 764: |
| | 1502 || GetLastSdCardFormatUnexpectedResult | | | 1502 || GetLastSdCardFormatUnexpectedResult |
| |- | | |- |
− | | 1504 || InsertSdCard | + | | 1504 || [3.0.0+] InsertSdCard |
| |- | | |- |
− | | 1505 || RemoveSdCard | + | | 1505 || [3.0.0+] RemoveSdCard |
| |- | | |- |
| | 1600 || GetSystemSeedForPseudoDeviceId | | | 1600 || GetSystemSeedForPseudoDeviceId |
| |- | | |- |
− | | 1601 || ResetSystemSeedForPseudoDeviceId | + | | 1601 || [3.0.0+] ResetSystemSeedForPseudoDeviceId |
| |- | | |- |
| | 1700 || ListApplicationDownloadingContentMeta | | | 1700 || ListApplicationDownloadingContentMeta |
| |- | | |- |
− | | 1701 || GetApplicationView | + | | 1701 || [3.0.0+] GetApplicationView |
| + | |- |
| + | | 1702 || [3.0.0+] GetApplicationDownloadTaskStatus |
| |- | | |- |
− | | 1702 || GetApplicationDownloadTaskStatus | + | | 1703 || [4.0.0+] GetApplicationViewDownloadErrorContext |
| |- | | |- |
− | | 1703 || GetApplicationViewDownloadErrorContext | + | | 1704 || [8.0.0+] |
| |- | | |- |
| | 1800 || IsNotificationSetupCompleted | | | 1800 || IsNotificationSetupCompleted |
Line 683: |
Line 788: |
| | 1802 || ListLastNotificationInfo | | | 1802 || ListLastNotificationInfo |
| |- | | |- |
− | | 1803 || ListNotificationTask | + | | 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 |
| |- | | |- |
− | | 1900 || IsActiveAccount | + | | 2004 || [4.0.0+] HasAllContentsToDeliver |
| |- | | |- |
− | | 1901 || RequestDownloadApplicationPrepurchasedRights | + | | 2005 || [4.0.0+] CompareApplicationDeliveryInfo |
| |- | | |- |
− | | 1902 || GetApplicationTicketInfo | + | | 2006 || [4.0.0+] CanDeliverApplication |
| |- | | |- |
− | | 2000 || GetSystemDeliveryInfo | + | | 2007 || [4.0.0+] ListContentMetaKeyToDeliverApplication |
| |- | | |- |
− | | 2001 || SelectLatestSystemDeliveryInfo | + | | 2008 || [4.0.0+] NeedsSystemUpdateToDeliverApplication |
| |- | | |- |
− | | 2002 || VerifyDeliveryProtocolVersion | + | | 2009 || [4.0.0+] EstimateRequiredSize |
| |- | | |- |
− | | 2003 || GetApplicationDeliveryInfo | + | | 2010 || [4.0.0+] RequestReceiveApplication |
| |- | | |- |
− | | 2004 || HasAllContentsToDeliver | + | | 2011 || [4.0.0+] CommitReceiveApplication |
| |- | | |- |
− | | 2005 || CompareApplicationDeliveryInfo | + | | 2012 || [4.0.0+] GetReceiveApplicationProgress |
| |- | | |- |
− | | 2006 || CanDeliverApplication | + | | 2013 || [4.0.0+] RequestSendApplication |
| |- | | |- |
− | | 2007 || ListContentMetaKeyToDeliverApplication | + | | 2014 || [4.0.0+] GetSendApplicationProgress |
| |- | | |- |
− | | 2008 || NeedsSystemUpdateToDeliverApplication | + | | 2015 || [4.0.0+] CompareSystemDeliveryInfo |
| |- | | |- |
− | | 2009 || EstimateRequiredSize | + | | 2016 || [4.0.0+] ListNotCommittedContentMeta |
| |- | | |- |
− | | 2010 || RequestReceiveApplication | + | | 2017 || [4.0.0+] RecoverDownloadTask |
| |- | | |- |
− | | 2011 || CommitReceiveApplication | + | | 2018 || [5.0.0+] GetApplicationDeliveryInfoHash |
| |- | | |- |
− | | 2012 || GetReceiveApplicationProgress | + | | 2050 || [6.0.0+] GetApplicationRightsOnClient |
| |- | | |- |
− | | 2013 || RequestSendApplication | + | | 2100 || [6.0.0+] GetApplicationTerminateResult |
| |- | | |- |
− | | 2014 || GetSendApplicationProgress | + | | 2101 || [6.0.0+] GetRawApplicationTerminateResult |
| |- | | |- |
− | | 2015 || CompareSystemDeliveryInfo | + | | 2150 || [6.0.0+] CreateRightsEnvironment |
| |- | | |- |
− | | 2016 || ListNotCommittedContentMeta | + | | 2151 || [6.0.0+] DestroyRightsEnvironment |
| |- | | |- |
− | | 2017 || CreateDownloadTask | + | | 2152 || [6.0.0+] ActivateRightsEnvironment |
| + | |- |
| + | | 2153 || [6.0.0+] DeactivateRightsEnvironment |
| + | |- |
| + | | 2154 || [6.0.0+] ForceActivateRightsContextForExit |
| + | |- |
| + | | 2155 || [7.0.0+] UpdateRightsEnvironmentStatus |
| + | |- |
| + | | 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 |
| + | |- |
| + | | [6.0.0-6.2.0] 2250 || RequestReportActiveELicence |
| + | |- |
| + | | 2300 || [6.0.0+] ListEventLog |
| + | |- |
| + | | 2350 || [7.0.0+] |
| + | |- |
| + | | 2400 || [8.0.0+] |
| + | |- |
| + | | 2401 || [8.0.0+] |
| + | |- |
| + | | 2402 || [8.0.0+] |
| + | |- |
| + | | 2403 || [8.0.0+] |
| + | |- |
| + | | 2404 || [8.0.0+] |
| + | |- |
| + | | 2500 || [8.0.0+] |
| |- | | |- |
| |} | | |} |
| + | |
| + | [4.0.0+] RequestDownloadAddOnContent now takes an additional 8-bytes of input. |
| | | |
| === IApplicationVersionInterface === | | === IApplicationVersionInterface === |
| + | This is "nn::ns::detail::IApplicationVersionInterface". |
| + | |
| + | This was added with [4.0.0+]. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 789: |
Line 960: |
| |- | | |- |
| | 23 || ResolveApplicationContentPath | | | 23 || ResolveApplicationContentPath |
| + | |- |
| + | | 92 || [5.0.0+] GetRunningApplicationProgramId |
| |- | | |- |
| |} | | |} |
Line 809: |
Line 982: |
| | 705 || RequestDownloadTaskListData | | | 705 || RequestDownloadTaskListData |
| |- | | |- |
− | | 706 || TryCommitCurrentApplicationDownloadTask | + | | 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+]. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name || Notes |
| + | |- |
| + | | 0 || HasApplicationRecord || Same as [[#IApplicationManagerInterface]] cmd 910 |
| + | |} |
| + | |
| + | === IReadOnlyApplicationControlDataInterface === |
| + | This is "nn::ns::detail::IReadOnlyApplicationControlDataInterface". |
| + | |
| + | This was added with [5.1.0+]. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name || Notes |
| |- | | |- |
− | | 707 || EnableAutoCommit | + | | 0 || [[#GetApplicationControlData]] || Same as [[#IApplicationManagerInterface]] cmd 400 |
| |- | | |- |
− | | 708 || DisableAutoCommit | + | | 1 || [[#GetApplicationDesiredLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 55 |
| |- | | |- |
− | | 709 || TriggerDynamicCommitEvent | + | | 2 || ConvertApplicationLanguageToLanguageCode || Same as [[#IApplicationManagerInterface]] cmd 59 |
| + | |- |
| + | | 3 || [[#ConvertLanguageCodeToApplicationLanguage]] || Same as [[#IApplicationManagerInterface]] cmd 60 |
| + | |} |
| + | |
| + | === IDynamicRightsInterface === |
| + | This is "nn::ns::detail::IDynamicRightsInterface". |
| + | |
| + | This was added with [6.0.0+]. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name || Notes |
| + | |- |
| + | | 0 || || |
| + | |- |
| + | | 1 || || |
| + | |- |
| + | | 4 || || |
| + | |- |
| + | | 5 || || |
| + | |- |
| + | | 6 || || |
| + | |- |
| + | | 7 || || |
| + | |- |
| + | | 8 || || |
| + | |- |
| + | | 9 || [7.0.0+] || |
| + | |- |
| + | | 10 || [7.0.0+] || |
| + | |- |
| + | | 11 || [7.0.0+] || |
| + | |- |
| + | | 12 || [8.0.0+] |
| + | |- |
| + | | 13 || [8.0.0+] |
| |- | | |- |
| |} | | |} |
| | | |
| === IECommerceInterface=== | | === IECommerceInterface=== |
| + | This is "nn::ns::detail::IECommerceInterface". |
| + | |
| + | This was added with [4.0.0+]. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Cmd || Name | + | ! 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]]. |
| |- | | |- |
− | | 0 || RequestLinkDevice | + | | 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]]. |
| |} | | |} |
| | | |
Line 850: |
Line 1,101: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 1200 || NeedsUpdateVulnerability | + | | 1200 || [3.0.0+] NeedsUpdateVulnerability |
| |- | | |- |
− | | 1201 || UpdateSafeSystemVersionForDebug | + | | 1201 || [4.0.0+] UpdateSafeSystemVersionForDebug |
| |- | | |- |
− | | 1202 || GetSafeSystemVersion | + | | 1202 || [4.0.0+] GetSafeSystemVersion |
| |- | | |- |
| |} | | |} |
Line 883: |
Line 1,134: |
| | 10 || NotifySystemUpdateForContentDelivery | | | 10 || NotifySystemUpdateForContentDelivery |
| |- | | |- |
− | | 11 || PrepareShutdown | + | | 11 || [3.0.0+] PrepareShutdown |
| |- | | |- |
− | | 16 || DestroySystemUpdateTask | + | | [3.0.0-3.0.2] 12 || |
| |- | | |- |
− | | 17 || RequestSendSystemUpdate | + | | [3.0.0-3.0.2] 13 || |
| |- | | |- |
− | | 18 || GetSendSystemUpdateProgress | + | | [3.0.0-3.0.2] 14 || |
| + | |- |
| + | | [3.0.0-3.0.2] 15 || |
| + | |- |
| + | | 16 || [4.0.0+] DestroySystemUpdateTask |
| + | |- |
| + | | 17 || [4.0.0+] RequestSendSystemUpdate |
| + | |- |
| + | | 18 || [4.0.0+] GetSendSystemUpdateProgress |
| |- | | |- |
| |} | | |} |
Line 898: |
Line 1,157: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || HasDownloaded | + | | 0 || [[#HasDownloaded]] |
| |- | | |- |
| | 1 || RequestCheckLatestUpdate | | | 1 || RequestCheckLatestUpdate |
Line 904: |
Line 1,163: |
| | 2 || RequestDownloadLatestUpdate | | | 2 || RequestDownloadLatestUpdate |
| |- | | |- |
− | | 3 || GetDownloadProgress | + | | 3 || [[#GetDownloadProgress]] |
| |- | | |- |
− | | 4 || ApplyDownloadedUpdate | + | | 4 || [[#ApplyDownloadedUpdate]] |
| |- | | |- |
| | 5 || RequestPrepareCardUpdate | | | 5 || RequestPrepareCardUpdate |
Line 916: |
Line 1,175: |
| | 8 || ApplyCardUpdate | | | 8 || ApplyCardUpdate |
| |- | | |- |
− | | 9 || GetDownloadedEulaDataSize | + | | 9 || [[#GetDownloadedEulaDataSize]] |
| |- | | |- |
− | | 10 || GetDownloadedEulaData | + | | 10 || [[#GetDownloadedEulaData]] |
| |- | | |- |
| | 11 || SetupCardUpdate | | | 11 || SetupCardUpdate |
Line 926: |
Line 1,185: |
| | 13 || GetPreparedCardUpdateEulaData | | | 13 || GetPreparedCardUpdateEulaData |
| |- | | |- |
− | | 14 || SetupCardUpdateViaSystemUpdater | + | | 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 |
| + | |} |
| + | |
| + | === HasDownloaded === |
| + | No input, returns an output u8 bool flag. |
| + | |
| + | Gets whether a network sysupdate was downloaded, with install pending. |
| + | |
| + | Uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output flag is set to: <code>*((u8*)(taskinfo+0) == 0x3</code>. Otherwise, flag=0. |
| + | |
| + | This always returns 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89. |
| + | |
| + | === GetDownloadProgress === |
| + | No input, returns a 0x10-byte output struct. |
| + | |
| + | 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_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. |
| + | * Uses [[NIM_services|nim]] CommitSystemUpdateTask and [[NIM_services|nim]] DestroySystemUpdateTask. |
| + | * Installs FIRM. |
| + | |
| + | === GetDownloadedEulaDataSize === |
| + | Takes a type-0x15 input buffer '''path''', 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_services|nim]] GetDownloadedSystemDataPath, with the output ContentPath being used to mount the EULA title with FS. |
| + | |
| + | Then "<mountname>:/<'''path'''>" is opened, gets the '''filesize''', then runs cleanup. |
| + | |
| + | === GetDownloadedEulaData === |
| + | Takes a type-0x15 input buffer '''path''' 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. |
| + | |
| + | = IAsyncValue = |
| + | This is "nn::ns::detail::IAsyncValue". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name |
| |- | | |- |
− | | 15 || HasReceived | + | | 0 || |
| |- | | |- |
− | | 16 || RequestReceiveSystemUpdate | + | | 1 || |
| |- | | |- |
− | | 17 || GetReceiveProgress | + | | 2 || |
| |- | | |- |
− | | 18 || ApplyReceivedUpdate | + | | 3 || [4.0.0+] |
| + | |} |
| + | |
| + | Cmd3: No input/output, takes a type-0x16 output buffer. |
| + | |
| + | = IAsyncResult = |
| + | This is "nn::ns::detail::IAsyncResult". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 19 || GetReceivedEulaDataSize | + | ! Cmd || Name |
| |- | | |- |
− | | 20 || GetReceivedEulaData | + | | 0 || |
| |- | | |- |
− | | 21 || SetupToReceiveSystemUpdate | + | | 1 || |
| |- | | |- |
| + | | 2 || [4.0.0+] |
| |} | | |} |
| + | |
| + | Cmd2: No input/output, takes a type-0x16 output buffer. |
| | | |
| = ns:dev = | | = ns:dev = |
Line 951: |
Line 1,283: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#LaunchTitle]] | + | | 0 || [[#LaunchProgram]] |
| |- | | |- |
− | | 1 || [[#TerminateTitleByPid]] | + | | 1 || [[#TerminateProcess]] |
| |- | | |- |
− | | 2 || [[#TerminateTitleByTitleId]] | + | | 2 || [[#TerminateProgram]] |
| |- | | |- |
− | | 3 || [[#GetNsDevWaitEvent]] | + | | 4 || [[#GetShellEvent]] |
| |- | | |- |
− | | 4 || [[#GetNsDevEventType]] | + | | 5 || [[#GetShellEventInfo]] |
| |- | | |- |
− | | 5 || [[#TerminateCrashingTitle]] | + | | 6 || [[#TerminateApplication]] |
| |- | | |- |
− | | 6 || [[#InstallTitle]] | + | | 7 || [[#PrepareLaunchProgramFromHost]] |
| |- | | |- |
− | | 7 || SetEventState6 | + | | 8 || [[#LaunchApplicationForDevelop]] |
| |- | | |- |
− | | 8 || SetEventState | + | | 9 || [[#LaunchApplicationWithStorageIdForDevelop]] |
| |- | | |- |
| + | | 10 || [6.0.0+] TerminateApplication2 |
| + | |- |
| + | | 11 || [6.0.0+] GetRunningApplicationProcessIdForDevelop |
| + | |- |
| + | | 12 || [6.0.0+] SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop |
| |} | | |} |
| | | |
− | == LaunchTitle == | + | == LaunchProgram == |
| Wrapper for "pm:shell" [[Process_Manager_services#LaunchProcess|LaunchProcess]]. | | Wrapper for "pm:shell" [[Process_Manager_services#LaunchProcess|LaunchProcess]]. |
| | | |
− | == TerminateTitleByPid == | + | == TerminateProcess == |
| Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByPid|TerminateTitleByPid]]. | | Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByPid|TerminateTitleByPid]]. |
| | | |
− | == TerminateTitleByTitleId == | + | == TerminateProgram == |
| Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByTitleId|TerminateTitleByTitleId]]. | | Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByTitleId|TerminateTitleByTitleId]]. |
| | | |
− | == GetNsDevWaitEvent == | + | == GetShellEvent == |
| Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventWaiter|GetProcessEventWaiter]]. | | Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventWaiter|GetProcessEventWaiter]]. |
| | | |
− | == GetNsDevEventType == | + | == GetShellEventInfo == |
| Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventType|GetProcessEventType]]. | | Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventType|GetProcessEventType]]. |
| | | |
− | == TerminateCrashingTitle == | + | == TerminateApplication == |
| Calls "pm:shell" [[Process_Manager_services#GetCrashingProcessPid|GetCrashingProcessPid]] and sends PID to [[Process_Manager_services#TerminateTitleByPid|TerminateTitleByPid]]. | | Calls "pm:shell" [[Process_Manager_services#GetCrashingProcessPid|GetCrashingProcessPid]] and sends PID to [[Process_Manager_services#TerminateTitleByPid|TerminateTitleByPid]]. |
| | | |
− | == InstallTitle == | + | == PrepareLaunchProgramFromHost == |
| + | Takes a type-0x5 input buffer containing the [[Filesystem_services|ContentPath]], returns an output 0x10-byte struct. |
| + | |
| Calls [[NCM_services#IPathResolverForStorage|IPathResolverForStorage]] Set...NcaPath functions. | | Calls [[NCM_services#IPathResolverForStorage|IPathResolverForStorage]] Set...NcaPath functions. |
| + | |
| + | == LaunchApplicationForDevelop == |
| + | Takes an input u32 [[Process_Manager_services#LaunchFlags|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 [[Process_Manager_services#LaunchFlags|LaunchFlags]], and an u64 titleID. Returns an output u64 PID. |
| + | |
| + | Launches an application title which is registered with NS. |
| | | |
| [[Category:Services]] | | [[Category:Services]] |