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 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]]