NS services: Difference between revisions
(47 intermediate revisions by 6 users not shown) | |||
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 | 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 [[ | 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 | ||
|- | |- | ||
| | | 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 || | | 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 | |||
|- | |- | ||
| | | 84 || [4.0.0+] GetDynamicCommitEvent | ||
|- | |- | ||
| | | 85 || [4.0.0+] RequestUpdateApplication2 | ||
|- | |- | ||
| | | 86 || [4.0.0+] EnableApplicationCrashReport | ||
|- | |- | ||
| | | 87 || [4.0.0+] IsApplicationCrashReportEnabled | ||
|- | |- | ||
| | | 90 || [4.0.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+] | ||
|- | |- | ||
| 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 | ||
|- | |- | ||
| | | 1308 || [5.0.0+] DeleteApplicationCompletelyForDebug | ||
|- | |- | ||
| | | 1309 || [6.0.0+] CleanupUnavailableAddOnContents | ||
|- | |- | ||
| 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 | |||
|- | |- | ||
| | | 1703 || [4.0.0+] 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 | |||
|- | |- | ||
| | | 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 | ||
|- | |- | ||
| | | 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 | |||
|- | |||
| 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 | |||
|- | |- | ||
| | | 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 | |||
|} | |||
=== 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 || | | 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 | ||
|- | |- | ||
| | | [3.0.0-3.0.2] 12 || | ||
|- | |- | ||
| | | [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 | |||
|- | |- | ||
| | | 0 || | ||
|- | |- | ||
| | | 1 || | ||
|- | |- | ||
| | | 2 || | ||
|- | |- | ||
| | | 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" | |||
|- | |- | ||
| | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || | ||
|- | |- | ||
| | | 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 || [[# | | 0 || [[#LaunchProgram]] | ||
|- | |- | ||
| 1 || [[# | | 1 || [[#TerminateProcess]] | ||
|- | |- | ||
| 2 || [[# | | 2 || [[#TerminateProgram]] | ||
|- | |- | ||
| | | 4 || [[#GetShellEvent]] | ||
|- | |- | ||
| | | 5 || [[#GetShellEventInfo]] | ||
|- | |- | ||
| | | 6 || [[#TerminateApplication]] | ||
|- | |- | ||
| | | 7 || [[#PrepareLaunchProgramFromHost]] | ||
|- | |- | ||
| | | 8 || [[#LaunchApplicationForDevelop]] | ||
|- | |- | ||
| | | 9 || [[#LaunchApplicationWithStorageIdForDevelop]] | ||
|- | |- | ||
| 10 || [6.0.0+] TerminateApplication2 | |||
|- | |||
| 11 || [6.0.0+] GetRunningApplicationProcessIdForDevelop | |||
|- | |||
| 12 || [6.0.0+] SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop | |||
|} | |} | ||
== | == LaunchProgram == | ||
Wrapper for "pm:shell" [[Process_Manager_services#LaunchProcess|LaunchProcess]]. | Wrapper for "pm:shell" [[Process_Manager_services#LaunchProcess|LaunchProcess]]. | ||
== | == TerminateProcess == | ||
Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByPid|TerminateTitleByPid]]. | Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByPid|TerminateTitleByPid]]. | ||
== | == TerminateProgram == | ||
Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByTitleId|TerminateTitleByTitleId]]. | Wrapper for "pm:shell" [[Process_Manager_services#TerminateTitleByTitleId|TerminateTitleByTitleId]]. | ||
== | == GetShellEvent == | ||
Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventWaiter|GetProcessEventWaiter]]. | Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventWaiter|GetProcessEventWaiter]]. | ||
== | == GetShellEventInfo == | ||
Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventType|GetProcessEventType]]. | Wrapper for "pm:shell" [[Process_Manager_services#GetProcessEventType|GetProcessEventType]]. | ||
== | == 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]]. | ||
== | == 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]] |