Revert "[hle] constexpr handler dispatch maps, introduce version gating (#4480)" (#4532)

This reverts commit 218c6705d9.

- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md).
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.

-------------------

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4532
Reviewed-by: lizzie <lizzie@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
This commit is contained in:
PavelBARABANOV
2026-10-15 08:45:15 +02:00
committed by crueter
parent 14da4482a4
commit e255c20db4
588 changed files with 14723 additions and 12534 deletions
@@ -10,6 +10,13 @@ namespace Service::NS {
IAccountProxyInterface::IAccountProxyInterface(Core::System& system_)
: ServiceFramework{system_, "IAccountProxyInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "CreateUserAccount"},
};
// clang-format on
RegisterHandlers(functions);
}
IAccountProxyInterface::~IAccountProxyInterface() = default;
@@ -14,13 +14,6 @@ class IAccountProxyInterface final : public ServiceFramework<IAccountProxyInterf
public:
explicit IAccountProxyInterface(Core::System& system_);
~IAccountProxyInterface() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "CreateUserAccount"}
);
};
} // namespace Service::NS
@@ -25,458 +25,6 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IApplicationManagerInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, D<&IApplicationManagerInterface::ListApplicationRecord>, "ListApplicationRecord"},
FunctionInfo{1, nullptr, "GenerateApplicationRecordCount"},
FunctionInfo{2, D<&IApplicationManagerInterface::GetApplicationRecordUpdateSystemEvent>, "GetApplicationRecordUpdateSystemEvent"},
FunctionInfo{3, nullptr, "GetApplicationViewDeprecated"},
FunctionInfo{4, D<&IApplicationManagerInterface::DeleteApplicationEntity>, "DeleteApplicationEntity"},
FunctionInfo{5, D<&IApplicationManagerInterface::DeleteApplicationCompletely>, "DeleteApplicationCompletely"},
FunctionInfo{6, nullptr, "IsAnyApplicationEntityRedundant"},
FunctionInfo{7, nullptr, "DeleteRedundantApplicationEntity"},
FunctionInfo{8, nullptr, "IsApplicationEntityMovable"},
FunctionInfo{9, nullptr, "MoveApplicationEntity"},
FunctionInfo{11, nullptr, "CalculateApplicationOccupiedSize"},
FunctionInfo{16, &IApplicationManagerInterface::PushApplicationRecord, "PushApplicationRecord"},
FunctionInfo{17, nullptr, "ListApplicationRecordContentMeta"},
FunctionInfo{19, nullptr, "LaunchApplicationOld"},
FunctionInfo{21, nullptr, "GetApplicationContentPath"},
FunctionInfo{22, nullptr, "TerminateApplication"},
FunctionInfo{23, nullptr, "ResolveApplicationContentPath"},
FunctionInfo{26, nullptr, "BeginInstallApplication"},
FunctionInfo{27, nullptr, "DeleteApplicationRecord"},
FunctionInfo{30, nullptr, "RequestApplicationUpdateInfo"},
FunctionInfo{31, nullptr, "RequestUpdateApplication"},
FunctionInfo{32, nullptr, "CancelApplicationDownload"},
FunctionInfo{33, nullptr, "ResumeApplicationDownload"},
FunctionInfo{35, nullptr, "UpdateVersionList"},
FunctionInfo{36, nullptr, "PushLaunchVersion"},
FunctionInfo{37, nullptr, "ListRequiredVersion"},
FunctionInfo{38, D<&IApplicationManagerInterface::CheckApplicationLaunchVersion>, "CheckApplicationLaunchVersion"},
FunctionInfo{39, nullptr, "CheckApplicationLaunchRights"},
FunctionInfo{40, D<&IApplicationManagerInterface::GetApplicationLogoData>, "GetApplicationLogoData"},
FunctionInfo{41, nullptr, "CalculateApplicationDownloadRequiredSize"},
FunctionInfo{42, nullptr, "CleanupSdCard"},
FunctionInfo{43, D<&IApplicationManagerInterface::CheckSdCardMountStatus>, "CheckSdCardMountStatus"},
FunctionInfo{44, D<&IApplicationManagerInterface::GetSdCardMountStatusChangedEvent>, "GetSdCardMountStatusChangedEvent"},
FunctionInfo{45, nullptr, "GetGameCardAttachmentEvent"},
FunctionInfo{46, nullptr, "GetGameCardAttachmentInfo"},
FunctionInfo{47, D<&IApplicationManagerInterface::GetTotalSpaceSize>, "GetTotalSpaceSize"},
FunctionInfo{48, D<&IApplicationManagerInterface::GetFreeSpaceSize>, "GetFreeSpaceSize"},
FunctionInfo{49, nullptr, "GetSdCardRemovedEvent"},
FunctionInfo{52, D<&IApplicationManagerInterface::GetGameCardUpdateDetectionEvent>, "GetGameCardUpdateDetectionEvent"},
FunctionInfo{53, nullptr, "DisableApplicationAutoDelete"},
FunctionInfo{54, nullptr, "EnableApplicationAutoDelete"},
FunctionInfo{55, D<&IApplicationManagerInterface::GetApplicationDesiredLanguage>, "GetApplicationDesiredLanguage"},
FunctionInfo{56, nullptr, "SetApplicationTerminateResult"},
FunctionInfo{57, nullptr, "ClearApplicationTerminateResult"},
FunctionInfo{58, nullptr, "GetLastSdCardMountUnexpectedResult"},
FunctionInfo{59, D<&IApplicationManagerInterface::ConvertApplicationLanguageToLanguageCode>, "ConvertApplicationLanguageToLanguageCode"},
FunctionInfo{60, nullptr, "ConvertLanguageCodeToApplicationLanguage"},
FunctionInfo{61, nullptr, "GetBackgroundDownloadStressTaskInfo"},
FunctionInfo{62, nullptr, "GetGameCardStopper"},
FunctionInfo{63, nullptr, "IsSystemProgramInstalled"},
FunctionInfo{64, nullptr, "StartApplyDeltaTask"},
FunctionInfo{65, nullptr, "GetRequestServerStopper"},
FunctionInfo{66, nullptr, "GetBackgroundApplyDeltaStressTaskInfo"},
FunctionInfo{67, nullptr, "CancelApplicationApplyDelta"},
FunctionInfo{68, nullptr, "ResumeApplicationApplyDelta"},
FunctionInfo{69, nullptr, "CalculateApplicationApplyDeltaRequiredSize"},
FunctionInfo{70, D<&IApplicationManagerInterface::ResumeAll>, "ResumeAll"},
FunctionInfo{71, D<&IApplicationManagerInterface::GetStorageSize>, "GetStorageSize"},
FunctionInfo{80, nullptr, "RequestDownloadApplication"},
FunctionInfo{81, nullptr, "RequestDownloadAddOnContent"},
FunctionInfo{82, nullptr, "DownloadApplication"},
FunctionInfo{83, nullptr, "CheckApplicationResumeRights"},
FunctionInfo{84, nullptr, "GetDynamicCommitEvent"},
FunctionInfo{85, nullptr, "RequestUpdateApplication2"},
FunctionInfo{86, nullptr, "EnableApplicationCrashReport"},
FunctionInfo{87, nullptr, "IsApplicationCrashReportEnabled"},
FunctionInfo{90, nullptr, "BoostSystemMemoryResourceLimit"},
FunctionInfo{91, nullptr, "DeprecatedLaunchApplication"},
FunctionInfo{92, nullptr, "GetRunningApplicationProgramId"},
FunctionInfo{93, nullptr, "GetMainApplicationProgramIndex"},
FunctionInfo{94, nullptr, "LaunchApplication"},
FunctionInfo{95, nullptr, "GetApplicationLaunchInfo"},
FunctionInfo{96, nullptr, "AcquireApplicationLaunchInfo"},
FunctionInfo{97, nullptr, "GetMainApplicationProgramIndexByApplicationLaunchInfo"},
FunctionInfo{98, nullptr, "EnableApplicationAllThreadDumpOnCrash"},
FunctionInfo{99, nullptr, "LaunchDevMenu"},
FunctionInfo{100, nullptr, "ResetToFactorySettings"},
FunctionInfo{101, nullptr, "ResetToFactorySettingsWithoutUserSaveData"},
FunctionInfo{102, nullptr, "ResetToFactorySettingsForRefurbishment"},
FunctionInfo{103, nullptr, "ResetToFactorySettingsWithPlatformRegion"},
FunctionInfo{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
FunctionInfo{105, nullptr, "RequestResetToFactorySettingsSecurely"},
FunctionInfo{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"},
FunctionInfo{200, nullptr, "CalculateUserSaveDataStatistics"},
FunctionInfo{201, nullptr, "DeleteUserSaveDataAll"},
FunctionInfo{210, nullptr, "DeleteUserSystemSaveData"},
FunctionInfo{211, nullptr, "DeleteSaveData"},
FunctionInfo{220, nullptr, "UnregisterNetworkServiceAccount"},
FunctionInfo{221, D<&IApplicationManagerInterface::UnregisterNetworkServiceAccountWithUserSaveDataDeletion>, "UnregisterNetworkServiceAccountWithUserSaveDataDeletion"},
FunctionInfo{300, nullptr, "GetApplicationShellEvent"},
FunctionInfo{301, nullptr, "PopApplicationShellEventInfo"},
FunctionInfo{302, nullptr, "LaunchLibraryApplet"},
FunctionInfo{303, nullptr, "TerminateLibraryApplet"},
FunctionInfo{304, nullptr, "LaunchSystemApplet"},
FunctionInfo{305, nullptr, "TerminateSystemApplet"},
FunctionInfo{306, nullptr, "LaunchOverlayApplet"},
FunctionInfo{307, nullptr, "TerminateOverlayApplet"},
FunctionInfo{400, D<&IApplicationManagerInterface::GetApplicationControlData>, "GetApplicationControlData"},
FunctionInfo{401, nullptr, "InvalidateAllApplicationControlCache"},
FunctionInfo{402, nullptr, "RequestDownloadApplicationControlData"},
FunctionInfo{403, nullptr, "GetMaxApplicationControlCacheCount"},
FunctionInfo{404, nullptr, "InvalidateApplicationControlCache"},
FunctionInfo{405, nullptr, "ListApplicationControlCacheEntryInfo"},
FunctionInfo{406, nullptr, "GetApplicationControlProperty"},
FunctionInfo{407, &IApplicationManagerInterface::ListApplicationTitle, "ListApplicationTitle"},
FunctionInfo{408, &IApplicationManagerInterface::ListApplicationIcon, "ListApplicationIcon"},
FunctionInfo{411, nullptr, "Unknown411", MakeVersionGate({19,0,0})},
FunctionInfo{412, nullptr, "Unknown412", MakeVersionGate({19,0,0})},
FunctionInfo{413, nullptr, "Unknown413", MakeVersionGate({19,0,0})},
FunctionInfo{414, nullptr, "Unknown414", MakeVersionGate({19,0,0})},
FunctionInfo{415, nullptr, "Unknown415", MakeVersionGate({19,0,0})},
FunctionInfo{416, nullptr, "Unknown416", MakeVersionGate({19,0,0})},
FunctionInfo{417, nullptr, "InvalidateAllApplicationControlCacheOfTheStage", MakeVersionGate({19,0,0})},
FunctionInfo{418, nullptr, "InvalidateApplicationControlCacheOfTheStage", MakeVersionGate({19,0,0})},
FunctionInfo{419, D<&IApplicationManagerInterface::RequestDownloadApplicationControlDataInBackground>, "RequestDownloadApplicationControlDataInBackground"},
FunctionInfo{420, nullptr, "CloneApplicationControlDataCacheForDebug"},
FunctionInfo{421, nullptr, "Unknown421", MakeVersionGate({20,0,0})},
FunctionInfo{422, nullptr, "Unknown422", MakeVersionGate({20,0,0})},
FunctionInfo{423, nullptr, "Unknown423", MakeVersionGate({20,0,0})},
FunctionInfo{424, nullptr, "Unknown424", MakeVersionGate({20,0,0})},
FunctionInfo{425, nullptr, "Unknown425", MakeVersionGate({20,0,0})},
FunctionInfo{426, nullptr, "Unknown426", MakeVersionGate({20,0,0})},
FunctionInfo{427, nullptr, "Unknown427", MakeVersionGate({20,0,0})},
FunctionInfo{428, nullptr, "Unknown428", MakeVersionGate({21,0,0})},
FunctionInfo{429, nullptr, "Unknown429", MakeVersionGate({21,0,0})},
FunctionInfo{430, nullptr, "Unknown430", MakeVersionGate({21,0,0})},
FunctionInfo{502, nullptr, "RequestCheckGameCardRegistration"},
FunctionInfo{503, nullptr, "RequestGameCardRegistrationGoldPoint"},
FunctionInfo{504, nullptr, "RequestRegisterGameCard"},
FunctionInfo{505, D<&IApplicationManagerInterface::GetGameCardMountFailureEvent>, "GetGameCardMountFailureEvent"},
FunctionInfo{506, nullptr, "IsGameCardInserted"},
FunctionInfo{507, nullptr, "EnsureGameCardAccess"},
FunctionInfo{508, nullptr, "GetLastGameCardMountFailureResult"},
FunctionInfo{509, nullptr, "ListApplicationIdOnGameCard"},
FunctionInfo{510, nullptr, "GetGameCardPlatformRegion"},
FunctionInfo{511, D<&IApplicationManagerInterface::GetGameCardWakenReadyEvent>, "GetGameCardWakenReadyEvent"},
FunctionInfo{512, D<&IApplicationManagerInterface::IsGameCardApplicationRunning>, "IsGameCardApplicationRunning"},
FunctionInfo{513, nullptr, "Unknown513", MakeVersionGate({20,0,0})},
FunctionInfo{514, nullptr, "Unknown514", MakeVersionGate({20,0,0})},
FunctionInfo{515, nullptr, "Unknown515", MakeVersionGate({20,0,0})},
FunctionInfo{516, nullptr, "Unknown516", MakeVersionGate({21,0,0})},
FunctionInfo{517, nullptr, "Unknown517", MakeVersionGate({21,0,0})},
FunctionInfo{518, nullptr, "Unknown518", MakeVersionGate({21,0,0})},
FunctionInfo{519, nullptr, "Unknown519", MakeVersionGate({21,0,0})},
FunctionInfo{600, nullptr, "CountApplicationContentMeta"},
FunctionInfo{601, nullptr, "ListApplicationContentMetaStatus"},
FunctionInfo{602, nullptr, "ListAvailableAddOnContent"},
FunctionInfo{603, nullptr, "GetOwnedApplicationContentMetaStatus"},
FunctionInfo{604, nullptr, "RegisterContentsExternalKey"},
FunctionInfo{605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"},
FunctionInfo{606, nullptr, "GetContentMetaStorage"},
FunctionInfo{607, nullptr, "ListAvailableAddOnContent"},
FunctionInfo{609, nullptr, "ListAvailabilityAssuredAddOnContent"},
FunctionInfo{610, nullptr, "GetInstalledContentMetaStorage"},
FunctionInfo{611, nullptr, "PrepareAddOnContent"},
FunctionInfo{700, nullptr, "PushDownloadTaskList"},
FunctionInfo{701, nullptr, "ClearTaskStatusList"},
FunctionInfo{702, nullptr, "RequestDownloadTaskList"},
FunctionInfo{703, nullptr, "RequestEnsureDownloadTask"},
FunctionInfo{704, nullptr, "ListDownloadTaskStatus"},
FunctionInfo{705, nullptr, "RequestDownloadTaskListData"},
FunctionInfo{800, nullptr, "RequestVersionList"},
FunctionInfo{801, nullptr, "ListVersionList"},
FunctionInfo{802, nullptr, "RequestVersionListData"},
FunctionInfo{900, nullptr, "GetApplicationRecord"},
FunctionInfo{901, nullptr, "GetApplicationRecordProperty"},
FunctionInfo{902, nullptr, "EnableApplicationAutoUpdate"},
FunctionInfo{903, nullptr, "DisableApplicationAutoUpdate"},
FunctionInfo{904, D<&IApplicationManagerInterface::TouchApplication>, "TouchApplication"},
FunctionInfo{905, nullptr, "RequestApplicationUpdate"},
FunctionInfo{906, D<&IApplicationManagerInterface::IsApplicationUpdateRequested>, "IsApplicationUpdateRequested"},
FunctionInfo{907, nullptr, "WithdrawApplicationUpdateRequest"},
FunctionInfo{908, nullptr, "ListApplicationRecordInstalledContentMeta"},
FunctionInfo{909, nullptr, "WithdrawCleanupAddOnContentsWithNoRightsRecommendation"},
FunctionInfo{910, nullptr, "HasApplicationRecord"},
FunctionInfo{911, nullptr, "SetPreInstalledApplication"},
FunctionInfo{912, nullptr, "ClearPreInstalledApplicationFlag"},
FunctionInfo{913, nullptr, "ListAllApplicationRecord"},
FunctionInfo{914, nullptr, "HideApplicationRecord"},
FunctionInfo{915, nullptr, "ShowApplicationRecord"},
FunctionInfo{916, nullptr, "IsApplicationAutoDeleteDisabled"},
FunctionInfo{916, nullptr, "Unknown916", MakeVersionGate({20,0,0})},
FunctionInfo{917, nullptr, "Unknown917", MakeVersionGate({20,0,0})},
FunctionInfo{918, nullptr, "Unknown918", MakeVersionGate({20,0,0})},
FunctionInfo{919, nullptr, "Unknown919", MakeVersionGate({20,0,0})},
FunctionInfo{920, nullptr, "Unknown920", MakeVersionGate({20,0,0})},
FunctionInfo{921, nullptr, "Unknown921", MakeVersionGate({20,0,0})},
FunctionInfo{922, nullptr, "Unknown922", MakeVersionGate({20,0,0})},
FunctionInfo{923, nullptr, "Unknown923", MakeVersionGate({20,0,0})},
FunctionInfo{928, nullptr, "Unknown928", MakeVersionGate({20,0,0})},
FunctionInfo{929, nullptr, "Unknown929", MakeVersionGate({20,0,0})},
FunctionInfo{930, nullptr, "Unknown930", MakeVersionGate({20,0,0})},
FunctionInfo{931, nullptr, "Unknown931", MakeVersionGate({20,0,0})},
FunctionInfo{933, nullptr, "Unknown933", MakeVersionGate({20,0,0})},
FunctionInfo{934, nullptr, "Unknown934", MakeVersionGate({21,0,0})},
FunctionInfo{935, nullptr, "Unknown935", MakeVersionGate({21,0,0})},
FunctionInfo{936, D<&IApplicationManagerInterface::Unknown936>, "Unknown936", MakeVersionGate({21,0,0})},
FunctionInfo{1000, nullptr, "RequestVerifyApplicationDeprecated"},
FunctionInfo{1001, nullptr, "CorruptApplicationForDebug"},
FunctionInfo{1002, nullptr, "RequestVerifyAddOnContentsRights"},
FunctionInfo{1003, nullptr, "RequestVerifyApplication"},
FunctionInfo{1004, nullptr, "CorruptContentForDebug"},
FunctionInfo{1200, nullptr, "NeedsUpdateVulnerability"},
FunctionInfo{1300, D<&IApplicationManagerInterface::IsAnyApplicationEntityInstalled>, "IsAnyApplicationEntityInstalled"},
FunctionInfo{1301, nullptr, "DeleteApplicationContentEntities"},
FunctionInfo{1302, nullptr, "CleanupUnrecordedApplicationEntity"},
FunctionInfo{1303, nullptr, "CleanupAddOnContentsWithNoRights"},
FunctionInfo{1304, nullptr, "DeleteApplicationContentEntity"},
FunctionInfo{1305, nullptr, "TryDeleteRunningApplicationEntity"},
FunctionInfo{1306, nullptr, "TryDeleteRunningApplicationCompletely"},
FunctionInfo{1307, nullptr, "TryDeleteRunningApplicationContentEntities"},
FunctionInfo{1308, nullptr, "DeleteApplicationCompletelyForDebug"},
FunctionInfo{1309, nullptr, "CleanupUnavailableAddOnContents"},
FunctionInfo{1310, nullptr, "RequestMoveApplicationEntity"},
FunctionInfo{1311, nullptr, "EstimateSizeToMove"},
FunctionInfo{1312, nullptr, "HasMovableEntity"},
FunctionInfo{1313, nullptr, "CleanupOrphanContents"},
FunctionInfo{1314, nullptr, "CheckPreconditionSatisfiedToMove"},
FunctionInfo{1400, nullptr, "PrepareShutdown"},
FunctionInfo{1500, nullptr, "FormatSdCard"},
FunctionInfo{1501, nullptr, "NeedsSystemUpdateToFormatSdCard"},
FunctionInfo{1502, nullptr, "GetLastSdCardFormatUnexpectedResult"},
FunctionInfo{1504, nullptr, "InsertSdCard"},
FunctionInfo{1505, nullptr, "RemoveSdCard"},
FunctionInfo{1506, nullptr, "GetSdCardStartupStatus"},
FunctionInfo{1508, nullptr, "Unknown1508", MakeVersionGate({20,0,0})},
FunctionInfo{1509, nullptr, "Unknown1509", MakeVersionGate({20,0,0})},
FunctionInfo{1510, nullptr, "Unknown1510", MakeVersionGate({20,0,0})},
FunctionInfo{1511, nullptr, "Unknown1511", MakeVersionGate({20,0,0})},
FunctionInfo{1512, nullptr, "Unknown1512", MakeVersionGate({20,0,0})},
FunctionInfo{1600, nullptr, "GetSystemSeedForPseudoDeviceId"},
FunctionInfo{1601, nullptr, "ResetSystemSeedForPseudoDeviceId"},
FunctionInfo{1700, nullptr, "ListApplicationDownloadingContentMeta"},
FunctionInfo{1701, D<&IApplicationManagerInterface::GetApplicationViewDeprecated>, "GetApplicationViewDeprecated"},
FunctionInfo{1702, nullptr, "GetApplicationDownloadTaskStatus"},
FunctionInfo{1703, nullptr, "GetApplicationViewDownloadErrorContext"},
FunctionInfo{1704, D<&IApplicationManagerInterface::GetApplicationViewWithPromotionInfo>, "GetApplicationViewWithPromotionInfo"},
FunctionInfo{1705, nullptr, "IsPatchAutoDeletableApplication"},
FunctionInfo{1706, D<&IApplicationManagerInterface::GetApplicationView>, "GetApplicationView"},
FunctionInfo{1800, nullptr, "IsNotificationSetupCompleted"},
FunctionInfo{1801, nullptr, "GetLastNotificationInfoCount"},
FunctionInfo{1802, nullptr, "ListLastNotificationInfo"},
FunctionInfo{1803, nullptr, "ListNotificationTask"},
FunctionInfo{1900, nullptr, "IsActiveAccount"},
FunctionInfo{1901, nullptr, "RequestDownloadApplicationPrepurchasedRights"},
FunctionInfo{1902, nullptr, "GetApplicationTicketInfo"},
FunctionInfo{1903, nullptr, "RequestDownloadApplicationPrepurchasedRightsForAccount"},
FunctionInfo{2000, nullptr, "GetSystemDeliveryInfo"},
FunctionInfo{2001, nullptr, "SelectLatestSystemDeliveryInfo"},
FunctionInfo{2002, nullptr, "VerifyDeliveryProtocolVersion"},
FunctionInfo{2003, nullptr, "GetApplicationDeliveryInfo"},
FunctionInfo{2004, nullptr, "HasAllContentsToDeliver"},
FunctionInfo{2005, nullptr, "CompareApplicationDeliveryInfo"},
FunctionInfo{2006, nullptr, "CanDeliverApplication"},
FunctionInfo{2007, nullptr, "ListContentMetaKeyToDeliverApplication"},
FunctionInfo{2008, nullptr, "NeedsSystemUpdateToDeliverApplication"},
FunctionInfo{2009, nullptr, "EstimateRequiredSize"},
FunctionInfo{2010, nullptr, "RequestReceiveApplication"},
FunctionInfo{2011, nullptr, "CommitReceiveApplication"},
FunctionInfo{2012, nullptr, "GetReceiveApplicationProgress"},
FunctionInfo{2013, nullptr, "RequestSendApplication"},
FunctionInfo{2014, nullptr, "GetSendApplicationProgress"},
FunctionInfo{2015, nullptr, "CompareSystemDeliveryInfo"},
FunctionInfo{2016, nullptr, "ListNotCommittedContentMeta"},
FunctionInfo{2017, nullptr, "CreateDownloadTask"},
FunctionInfo{2018, nullptr, "GetApplicationDeliveryInfoHash"},
FunctionInfo{2019, nullptr, "Unknown2019", MakeVersionGate({20,0,0})},
FunctionInfo{2050, D<&IApplicationManagerInterface::GetApplicationRightsOnClient>, "GetApplicationRightsOnClient"},
FunctionInfo{2051, nullptr, "InvalidateRightsIdCache"},
FunctionInfo{2052, nullptr, "Unknown2052", MakeVersionGate({20,0,0})},
FunctionInfo{2053, nullptr, "Unknown2053", MakeVersionGate({20,0,0})},
FunctionInfo{2100, D<&IApplicationManagerInterface::GetApplicationTerminateResult>, "GetApplicationTerminateResult"},
FunctionInfo{2101, nullptr, "GetRawApplicationTerminateResult"},
FunctionInfo{2150, nullptr, "CreateRightsEnvironment"},
FunctionInfo{2151, nullptr, "DestroyRightsEnvironment"},
FunctionInfo{2152, nullptr, "ActivateRightsEnvironment"},
FunctionInfo{2153, nullptr, "DeactivateRightsEnvironment"},
FunctionInfo{2154, nullptr, "ForceActivateRightsContextForExit"},
FunctionInfo{2155, nullptr, "UpdateRightsEnvironmentStatus"},
FunctionInfo{2156, nullptr, "CreateRightsEnvironmentForMicroApplication"},
FunctionInfo{2160, nullptr, "AddTargetApplicationToRightsEnvironment"},
FunctionInfo{2161, nullptr, "SetUsersToRightsEnvironment"},
FunctionInfo{2170, nullptr, "GetRightsEnvironmentStatus"},
FunctionInfo{2171, nullptr, "GetRightsEnvironmentStatusChangedEvent"},
FunctionInfo{2180, nullptr, "RequestExtendRightsInRightsEnvironment"},
FunctionInfo{2181, nullptr, "GetResultOfExtendRightsInRightsEnvironment"},
FunctionInfo{2182, nullptr, "SetActiveRightsContextUsingStateToRightsEnvironment"},
FunctionInfo{2183, nullptr, "Unknown2183", MakeVersionGate({20,1,0})},
FunctionInfo{2190, nullptr, "GetRightsEnvironmentHandleForApplication"},
FunctionInfo{2199, nullptr, "GetRightsEnvironmentCountForDebug"},
FunctionInfo{2200, nullptr, "GetGameCardApplicationCopyIdentifier"},
FunctionInfo{2201, nullptr, "GetInstalledApplicationCopyIdentifier"},
FunctionInfo{2250, nullptr, "RequestReportActiveELicence"},
FunctionInfo{2300, nullptr, "ListEventLog"},
FunctionInfo{2350, nullptr, "PerformAutoUpdateByApplicationId"},
FunctionInfo{2351, nullptr, "RequestNoDownloadRightsErrorResolution"},
FunctionInfo{2352, nullptr, "RequestResolveNoDownloadRightsError"},
FunctionInfo{2353, nullptr, "GetApplicationDownloadTaskInfo"},
FunctionInfo{2354, nullptr, "PrioritizeApplicationBackgroundTask"},
FunctionInfo{2355, nullptr, "PreferStorageEfficientUpdate"},
FunctionInfo{2356, nullptr, "RequestStorageEfficientUpdatePreferable"},
FunctionInfo{2357, nullptr, "EnableMultiCoreDownload"},
FunctionInfo{2358, nullptr, "DisableMultiCoreDownload"},
FunctionInfo{2359, nullptr, "IsMultiCoreDownloadEnabled"},
FunctionInfo{2360, nullptr, "GetApplicationDownloadTaskCount", MakeVersionGate({19,0,0})},
FunctionInfo{2361, nullptr, "GetMaxApplicationDownloadTaskCount", MakeVersionGate({19,0,0})},
FunctionInfo{2362, nullptr, "Unknown2362", MakeVersionGate({20,0,0})},
FunctionInfo{2363, nullptr, "Unknown2363", MakeVersionGate({20,0,0})},
FunctionInfo{2364, nullptr, "Unknown2364", MakeVersionGate({20,0,0})},
FunctionInfo{2365, nullptr, "Unknown2365", MakeVersionGate({20,0,0})},
FunctionInfo{2366, nullptr, "Unknown2366", MakeVersionGate({20,0,0})},
FunctionInfo{2367, nullptr, "Unknown2367", MakeVersionGate({20,0,0})},
FunctionInfo{2368, nullptr, "Unknown2368", MakeVersionGate({20,0,0})},
FunctionInfo{2369, nullptr, "Unknown2369", MakeVersionGate({21,0,0})},
FunctionInfo{2400, nullptr, "GetPromotionInfo"},
FunctionInfo{2401, nullptr, "CountPromotionInfo"},
FunctionInfo{2402, nullptr, "ListPromotionInfo"},
FunctionInfo{2403, nullptr, "ImportPromotionJsonForDebug"},
FunctionInfo{2404, nullptr, "ClearPromotionInfoForDebug"},
FunctionInfo{2500, nullptr, "ConfirmAvailableTime"},
FunctionInfo{2510, nullptr, "CreateApplicationResource"},
FunctionInfo{2511, nullptr, "GetApplicationResource"},
FunctionInfo{2513, nullptr, "LaunchMicroApplication"},
FunctionInfo{2514, nullptr, "ClearTaskOfAsyncTaskManager"},
FunctionInfo{2515, nullptr, "CleanupAllPlaceHolderAndFragmentsIfNoTask"},
FunctionInfo{2516, nullptr, "EnsureApplicationCertificate"},
FunctionInfo{2517, nullptr, "CreateApplicationInstance"},
FunctionInfo{2518, nullptr, "UpdateQualificationForDebug"},
FunctionInfo{2519, nullptr, "IsQualificationTransitionSupported"},
FunctionInfo{2520, D<&IApplicationManagerInterface::IsQualificationTransitionSupportedByProcessId>, "IsQualificationTransitionSupportedByProcessId"},
FunctionInfo{2521, nullptr, "GetRightsUserChangedEvent"},
FunctionInfo{2522, nullptr, "IsRomRedirectionAvailable"},
FunctionInfo{2523, nullptr, "GetProgramId", MakeVersionGate({17,0,0})},
FunctionInfo{2524, nullptr, "Unknown2524", MakeVersionGate({19,0,0})},
FunctionInfo{2525, nullptr, "Unknown2525", MakeVersionGate({20,0,0})},
FunctionInfo{2800, nullptr, "GetApplicationIdOfPreomia"},
FunctionInfo{3000, nullptr, "RegisterDeviceLockKey"},
FunctionInfo{3001, nullptr, "UnregisterDeviceLockKey"},
FunctionInfo{3002, nullptr, "VerifyDeviceLockKey"},
FunctionInfo{3003, nullptr, "HideApplicationIcon"},
FunctionInfo{3004, nullptr, "ShowApplicationIcon"},
FunctionInfo{3005, nullptr, "HideApplicationTitle"},
FunctionInfo{3006, nullptr, "ShowApplicationTitle"},
FunctionInfo{3007, nullptr, "EnableGameCard"},
FunctionInfo{3008, nullptr, "DisableGameCard"},
FunctionInfo{3009, nullptr, "EnableLocalContentShare"},
FunctionInfo{3010, nullptr, "DisableLocalContentShare"},
FunctionInfo{3011, nullptr, "IsApplicationIconHidden"},
FunctionInfo{3012, nullptr, "IsApplicationTitleHidden"},
FunctionInfo{3013, nullptr, "IsGameCardEnabled"},
FunctionInfo{3014, nullptr, "IsLocalContentShareEnabled"},
FunctionInfo{3050, nullptr, "ListAssignELicenseTaskResult"},
FunctionInfo{3104, nullptr, "GetApplicationNintendoLogo", MakeVersionGate({18,0,0})},
FunctionInfo{3105, nullptr, "GetApplicationStartupMovie", MakeVersionGate({18,0,0})},
FunctionInfo{4000, nullptr, "Unknown4000", MakeVersionGate({20,0,0})},
FunctionInfo{4004, nullptr, "Unknown4004", MakeVersionGate({20,0,0})},
FunctionInfo{4006, nullptr, "Unknown4006", MakeVersionGate({20,0,0})},
FunctionInfo{4007, nullptr, "Unknown4007", MakeVersionGate({20,0,0})},
FunctionInfo{4008, nullptr, "Unknown4008", MakeVersionGate({20,0,0})},
FunctionInfo{4009, nullptr, "Unknown4009", MakeVersionGate({20,0,0})},
FunctionInfo{4010, nullptr, "Unknown4010", MakeVersionGate({20,0,0})},
FunctionInfo{4011, nullptr, "Unknown4011", MakeVersionGate({20,0,0})},
FunctionInfo{4012, nullptr, "Unknown4012", MakeVersionGate({20,0,0})},
FunctionInfo{4013, nullptr, "Unknown4013", MakeVersionGate({20,0,0})},
FunctionInfo{4015, nullptr, "Unknown4015", MakeVersionGate({20,0,0})},
FunctionInfo{4017, nullptr, "Unknown4017", MakeVersionGate({20,0,0})},
FunctionInfo{4019, nullptr, "Unknown4019", MakeVersionGate({20,0,0})},
FunctionInfo{4020, nullptr, "Unknown4020", MakeVersionGate({20,0,0})},
FunctionInfo{4021, nullptr, "Unknown4021", MakeVersionGate({20,0,0})},
FunctionInfo{4022, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4022", MakeVersionGate({20,0,0})},
FunctionInfo{4023, D<&IApplicationManagerInterface::Unknown4023>, "Unknown4023", MakeVersionGate({20,0,0})},
FunctionInfo{4024, nullptr, "Unknown4024", MakeVersionGate({20,0,0})},
FunctionInfo{4025, nullptr, "Unknown4025", MakeVersionGate({20,0,0})},
FunctionInfo{4026, nullptr, "Unknown4026", MakeVersionGate({20,0,0})},
FunctionInfo{4027, nullptr, "Unknown4027", MakeVersionGate({20,0,0})},
FunctionInfo{4028, nullptr, "Unknown4028", MakeVersionGate({20,0,0})},
FunctionInfo{4029, nullptr, "Unknown4029", MakeVersionGate({20,0,0})},
FunctionInfo{4030, nullptr, "Unknown4030", MakeVersionGate({20,0,0})},
FunctionInfo{4031, nullptr, "Unknown4031", MakeVersionGate({20,0,0})},
FunctionInfo{4032, nullptr, "Unknown4032", MakeVersionGate({20,0,0})},
FunctionInfo{4033, nullptr, "Unknown4033", MakeVersionGate({20,0,0})},
FunctionInfo{4034, nullptr, "Unknown4034", MakeVersionGate({20,0,0})},
FunctionInfo{4035, nullptr, "Unknown4035", MakeVersionGate({20,0,0})},
FunctionInfo{4037, nullptr, "Unknown4037", MakeVersionGate({20,0,0})},
FunctionInfo{4038, nullptr, "Unknown4038", MakeVersionGate({20,0,0})},
FunctionInfo{4039, nullptr, "Unknown4039", MakeVersionGate({20,0,0})},
FunctionInfo{4040, nullptr, "Unknown4040", MakeVersionGate({20,0,0})},
FunctionInfo{4041, nullptr, "Unknown4041", MakeVersionGate({20,0,0})},
FunctionInfo{4042, D<&IApplicationManagerInterface::Unknown4042>, "Unknown4042", MakeVersionGate({20,0,0})},
FunctionInfo{4043, nullptr, "Unknown4043", MakeVersionGate({20,0,0})},
FunctionInfo{4044, nullptr, "Unknown4044", MakeVersionGate({20,0,0})},
FunctionInfo{4045, nullptr, "Unknown4045", MakeVersionGate({20,0,0})},
FunctionInfo{4046, nullptr, "Unknown4046", MakeVersionGate({20,0,0})},
FunctionInfo{4049, nullptr, "Unknown4049", MakeVersionGate({20,0,0})},
FunctionInfo{4050, nullptr, "Unknown4050", MakeVersionGate({20,0,0})},
FunctionInfo{4051, nullptr, "Unknown4051", MakeVersionGate({20,0,0})},
FunctionInfo{4052, nullptr, "Unknown4052", MakeVersionGate({20,0,0})},
FunctionInfo{4053, D<&IApplicationManagerInterface::Unknown4053>, "Unknown4053", MakeVersionGate({20,0,0})},
FunctionInfo{4054, nullptr, "Unknown4054", MakeVersionGate({20,0,0})},
FunctionInfo{4055, nullptr, "Unknown4055", MakeVersionGate({20,0,0})},
FunctionInfo{4056, nullptr, "Unknown4056", MakeVersionGate({20,0,0})},
FunctionInfo{4057, nullptr, "Unknown4057", MakeVersionGate({20,0,0})},
FunctionInfo{4058, nullptr, "Unknown4058", MakeVersionGate({20,0,0})},
FunctionInfo{4059, nullptr, "Unknown4059", MakeVersionGate({20,0,0})},
FunctionInfo{4060, nullptr, "Unknown4060", MakeVersionGate({20,0,0})},
FunctionInfo{4061, nullptr, "Unknown4061", MakeVersionGate({20,0,0})},
FunctionInfo{4062, nullptr, "Unknown4062", MakeVersionGate({20,0,0})},
FunctionInfo{4063, nullptr, "Unknown4063", MakeVersionGate({20,0,0})},
FunctionInfo{4064, nullptr, "Unknown4064", MakeVersionGate({20,0,0})},
FunctionInfo{4065, nullptr, "Unknown4065", MakeVersionGate({20,0,0})},
FunctionInfo{4066, nullptr, "Unknown4066", MakeVersionGate({20,0,0})},
FunctionInfo{4067, nullptr, "Unknown4067", MakeVersionGate({20,0,0})},
FunctionInfo{4068, nullptr, "Unknown4068", MakeVersionGate({20,0,0})},
FunctionInfo{4069, nullptr, "Unknown4069", MakeVersionGate({20,0,0})},
FunctionInfo{4070, nullptr, "Unknown4070", MakeVersionGate({20,0,0})},
FunctionInfo{4071, nullptr, "Unknown4071", MakeVersionGate({20,0,0})},
FunctionInfo{4072, nullptr, "Unknown4072", MakeVersionGate({20,0,0})},
FunctionInfo{4073, nullptr, "Unknown4073", MakeVersionGate({20,0,0})},
FunctionInfo{4074, nullptr, "Unknown4074", MakeVersionGate({20,0,0})},
FunctionInfo{4075, nullptr, "Unknown4075", MakeVersionGate({20,0,0})},
FunctionInfo{4076, nullptr, "Unknown4076", MakeVersionGate({20,0,0})},
FunctionInfo{4077, nullptr, "Unknown4077", MakeVersionGate({20,0,0})},
FunctionInfo{4078, nullptr, "Unknown4078", MakeVersionGate({20,0,0})},
FunctionInfo{4079, nullptr, "Unknown4079", MakeVersionGate({20,0,0})},
FunctionInfo{4080, nullptr, "Unknown4080", MakeVersionGate({20,0,0})},
FunctionInfo{4081, nullptr, "Unknown4081", MakeVersionGate({20,0,0})},
FunctionInfo{4083, nullptr, "Unknown4083", MakeVersionGate({20,0,0})},
FunctionInfo{4084, nullptr, "Unknown4084", MakeVersionGate({20,0,0})},
FunctionInfo{4085, nullptr, "Unknown4085", MakeVersionGate({20,0,0})},
FunctionInfo{4086, nullptr, "Unknown4086", MakeVersionGate({20,0,0})},
FunctionInfo{4087, nullptr, "Unknown4087", MakeVersionGate({20,0,0})},
FunctionInfo{4088, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4088", MakeVersionGate({20,0,0})},
FunctionInfo{4089, nullptr, "Unknown4089", MakeVersionGate({20,0,0})},
FunctionInfo{4090, nullptr, "Unknown4090", MakeVersionGate({20,0,0})},
FunctionInfo{4091, nullptr, "Unknown4091", MakeVersionGate({20,0,0})},
FunctionInfo{4092, nullptr, "Unknown4092", MakeVersionGate({20,0,0})},
FunctionInfo{4093, nullptr, "Unknown4093", MakeVersionGate({20,0,0})},
FunctionInfo{4094, nullptr, "Unknown4094", MakeVersionGate({20,0,0})},
FunctionInfo{4095, nullptr, "Unknown4095", MakeVersionGate({20,0,0})},
FunctionInfo{4096, nullptr, "Unknown4096", MakeVersionGate({20,0,0})},
FunctionInfo{4097, nullptr, "Unknown4097", MakeVersionGate({20,0,0})},
FunctionInfo{4099, nullptr, "Unknown4099", MakeVersionGate({21,0,0})},
FunctionInfo{4105, D<&IApplicationManagerInterface::Unknown4105>, "Unknown4105", MakeVersionGate({23,0,0})},
FunctionInfo{5000, nullptr, "Unknown5000", MakeVersionGate({18,0,0})},
FunctionInfo{5001, nullptr, "Unknown5001", MakeVersionGate({18,0,0})},
FunctionInfo{9999, nullptr, "GetApplicationCertificate", MakeVersionGate({10,0,0}, {10,2,0})}
);
return HandlerTableGenerateWithFind(key, functions);
}
IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_)
: ServiceFramework{system_, "IApplicationManagerInterface"},
service_context{system, "IApplicationManagerInterface"},
@@ -484,6 +32,458 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
gamecard_update_detection_event{service_context},
gamecard_mount_status_event{service_context}, gamecard_mount_failure_event{service_context},
gamecard_waken_ready_event{service_context}, unknown_event{service_context} {
// clang-format off
static const FunctionInfo functions[] = {
{0, D<&IApplicationManagerInterface::ListApplicationRecord>, "ListApplicationRecord"},
{1, nullptr, "GenerateApplicationRecordCount"},
{2, D<&IApplicationManagerInterface::GetApplicationRecordUpdateSystemEvent>, "GetApplicationRecordUpdateSystemEvent"},
{3, nullptr, "GetApplicationViewDeprecated"},
{4, D<&IApplicationManagerInterface::DeleteApplicationEntity>, "DeleteApplicationEntity"},
{5, D<&IApplicationManagerInterface::DeleteApplicationCompletely>, "DeleteApplicationCompletely"},
{6, nullptr, "IsAnyApplicationEntityRedundant"},
{7, nullptr, "DeleteRedundantApplicationEntity"},
{8, nullptr, "IsApplicationEntityMovable"},
{9, nullptr, "MoveApplicationEntity"},
{11, nullptr, "CalculateApplicationOccupiedSize"},
{16, &IApplicationManagerInterface::PushApplicationRecord, "PushApplicationRecord"},
{17, nullptr, "ListApplicationRecordContentMeta"},
{19, nullptr, "LaunchApplicationOld"},
{21, nullptr, "GetApplicationContentPath"},
{22, nullptr, "TerminateApplication"},
{23, nullptr, "ResolveApplicationContentPath"},
{26, nullptr, "BeginInstallApplication"},
{27, nullptr, "DeleteApplicationRecord"},
{30, nullptr, "RequestApplicationUpdateInfo"},
{31, nullptr, "RequestUpdateApplication"},
{32, nullptr, "CancelApplicationDownload"},
{33, nullptr, "ResumeApplicationDownload"},
{35, nullptr, "UpdateVersionList"},
{36, nullptr, "PushLaunchVersion"},
{37, nullptr, "ListRequiredVersion"},
{38, D<&IApplicationManagerInterface::CheckApplicationLaunchVersion>, "CheckApplicationLaunchVersion"},
{39, nullptr, "CheckApplicationLaunchRights"},
{40, D<&IApplicationManagerInterface::GetApplicationLogoData>, "GetApplicationLogoData"},
{41, nullptr, "CalculateApplicationDownloadRequiredSize"},
{42, nullptr, "CleanupSdCard"},
{43, D<&IApplicationManagerInterface::CheckSdCardMountStatus>, "CheckSdCardMountStatus"},
{44, D<&IApplicationManagerInterface::GetSdCardMountStatusChangedEvent>, "GetSdCardMountStatusChangedEvent"},
{45, nullptr, "GetGameCardAttachmentEvent"},
{46, nullptr, "GetGameCardAttachmentInfo"},
{47, D<&IApplicationManagerInterface::GetTotalSpaceSize>, "GetTotalSpaceSize"},
{48, D<&IApplicationManagerInterface::GetFreeSpaceSize>, "GetFreeSpaceSize"},
{49, nullptr, "GetSdCardRemovedEvent"},
{52, D<&IApplicationManagerInterface::GetGameCardUpdateDetectionEvent>, "GetGameCardUpdateDetectionEvent"},
{53, nullptr, "DisableApplicationAutoDelete"},
{54, nullptr, "EnableApplicationAutoDelete"},
{55, D<&IApplicationManagerInterface::GetApplicationDesiredLanguage>, "GetApplicationDesiredLanguage"},
{56, nullptr, "SetApplicationTerminateResult"},
{57, nullptr, "ClearApplicationTerminateResult"},
{58, nullptr, "GetLastSdCardMountUnexpectedResult"},
{59, D<&IApplicationManagerInterface::ConvertApplicationLanguageToLanguageCode>, "ConvertApplicationLanguageToLanguageCode"},
{60, nullptr, "ConvertLanguageCodeToApplicationLanguage"},
{61, nullptr, "GetBackgroundDownloadStressTaskInfo"},
{62, nullptr, "GetGameCardStopper"},
{63, nullptr, "IsSystemProgramInstalled"},
{64, nullptr, "StartApplyDeltaTask"},
{65, nullptr, "GetRequestServerStopper"},
{66, nullptr, "GetBackgroundApplyDeltaStressTaskInfo"},
{67, nullptr, "CancelApplicationApplyDelta"},
{68, nullptr, "ResumeApplicationApplyDelta"},
{69, nullptr, "CalculateApplicationApplyDeltaRequiredSize"},
{70, D<&IApplicationManagerInterface::ResumeAll>, "ResumeAll"},
{71, D<&IApplicationManagerInterface::GetStorageSize>, "GetStorageSize"},
{80, nullptr, "RequestDownloadApplication"},
{81, nullptr, "RequestDownloadAddOnContent"},
{82, nullptr, "DownloadApplication"},
{83, nullptr, "CheckApplicationResumeRights"},
{84, nullptr, "GetDynamicCommitEvent"},
{85, nullptr, "RequestUpdateApplication2"},
{86, nullptr, "EnableApplicationCrashReport"},
{87, nullptr, "IsApplicationCrashReportEnabled"},
{90, nullptr, "BoostSystemMemoryResourceLimit"},
{91, nullptr, "DeprecatedLaunchApplication"},
{92, nullptr, "GetRunningApplicationProgramId"},
{93, nullptr, "GetMainApplicationProgramIndex"},
{94, nullptr, "LaunchApplication"},
{95, nullptr, "GetApplicationLaunchInfo"},
{96, nullptr, "AcquireApplicationLaunchInfo"},
{97, nullptr, "GetMainApplicationProgramIndexByApplicationLaunchInfo"},
{98, nullptr, "EnableApplicationAllThreadDumpOnCrash"},
{99, nullptr, "LaunchDevMenu"},
{100, nullptr, "ResetToFactorySettings"},
{101, nullptr, "ResetToFactorySettingsWithoutUserSaveData"},
{102, nullptr, "ResetToFactorySettingsForRefurbishment"},
{103, nullptr, "ResetToFactorySettingsWithPlatformRegion"},
{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
{105, nullptr, "RequestResetToFactorySettingsSecurely"},
{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"},
{200, nullptr, "CalculateUserSaveDataStatistics"},
{201, nullptr, "DeleteUserSaveDataAll"},
{210, nullptr, "DeleteUserSystemSaveData"},
{211, nullptr, "DeleteSaveData"},
{220, nullptr, "UnregisterNetworkServiceAccount"},
{221, D<&IApplicationManagerInterface::UnregisterNetworkServiceAccountWithUserSaveDataDeletion>, "UnregisterNetworkServiceAccountWithUserSaveDataDeletion"},
{300, nullptr, "GetApplicationShellEvent"},
{301, nullptr, "PopApplicationShellEventInfo"},
{302, nullptr, "LaunchLibraryApplet"},
{303, nullptr, "TerminateLibraryApplet"},
{304, nullptr, "LaunchSystemApplet"},
{305, nullptr, "TerminateSystemApplet"},
{306, nullptr, "LaunchOverlayApplet"},
{307, nullptr, "TerminateOverlayApplet"},
{400, D<&IApplicationManagerInterface::GetApplicationControlData>, "GetApplicationControlData"},
{401, nullptr, "InvalidateAllApplicationControlCache"},
{402, nullptr, "RequestDownloadApplicationControlData"},
{403, nullptr, "GetMaxApplicationControlCacheCount"},
{404, nullptr, "InvalidateApplicationControlCache"},
{405, nullptr, "ListApplicationControlCacheEntryInfo"},
{406, nullptr, "GetApplicationControlProperty"},
{407, &IApplicationManagerInterface::ListApplicationTitle, "ListApplicationTitle"},
{408, &IApplicationManagerInterface::ListApplicationIcon, "ListApplicationIcon"},
{411, nullptr, "Unknown411"}, //19.0.0+
{412, nullptr, "Unknown412"}, //19.0.0+
{413, nullptr, "Unknown413"}, //19.0.0+
{414, nullptr, "Unknown414"}, //19.0.0+
{415, nullptr, "Unknown415"}, //19.0.0+
{416, nullptr, "Unknown416"}, //19.0.0+
{417, nullptr, "InvalidateAllApplicationControlCacheOfTheStage"}, //19.0.0+
{418, nullptr, "InvalidateApplicationControlCacheOfTheStage"}, //19.0.0+
{419, D<&IApplicationManagerInterface::RequestDownloadApplicationControlDataInBackground>, "RequestDownloadApplicationControlDataInBackground"},
{420, nullptr, "CloneApplicationControlDataCacheForDebug"},
{421, nullptr, "Unknown421"}, //20.0.0+
{422, nullptr, "Unknown422"}, //20.0.0+
{423, nullptr, "Unknown423"}, //20.0.0+
{424, nullptr, "Unknown424"}, //20.0.0+
{425, nullptr, "Unknown425"}, //20.0.0+
{426, nullptr, "Unknown426"}, //20.0.0+
{427, nullptr, "Unknown427"}, //20.0.0+
{428, nullptr, "Unknown428"}, //21.0.0+
{429, nullptr, "Unknown429"}, //21.0.0+
{430, nullptr, "Unknown430"}, //21.0.0+
{502, nullptr, "RequestCheckGameCardRegistration"},
{503, nullptr, "RequestGameCardRegistrationGoldPoint"},
{504, nullptr, "RequestRegisterGameCard"},
{505, D<&IApplicationManagerInterface::GetGameCardMountFailureEvent>, "GetGameCardMountFailureEvent"},
{506, nullptr, "IsGameCardInserted"},
{507, nullptr, "EnsureGameCardAccess"},
{508, nullptr, "GetLastGameCardMountFailureResult"},
{509, nullptr, "ListApplicationIdOnGameCard"},
{510, nullptr, "GetGameCardPlatformRegion"},
{511, D<&IApplicationManagerInterface::GetGameCardWakenReadyEvent>, "GetGameCardWakenReadyEvent"},
{512, D<&IApplicationManagerInterface::IsGameCardApplicationRunning>, "IsGameCardApplicationRunning"},
{513, nullptr, "Unknown513"}, //20.0.0+
{514, nullptr, "Unknown514"}, //20.0.0+
{515, nullptr, "Unknown515"}, //20.0.0+
{516, nullptr, "Unknown516"}, //21.0.0+
{517, nullptr, "Unknown517"}, //21.0.0+
{518, nullptr, "Unknown518"}, //21.0.0+
{519, nullptr, "Unknown519"}, //21.0.0+
{600, nullptr, "CountApplicationContentMeta"},
{601, nullptr, "ListApplicationContentMetaStatus"},
{602, nullptr, "ListAvailableAddOnContent"},
{603, nullptr, "GetOwnedApplicationContentMetaStatus"},
{604, nullptr, "RegisterContentsExternalKey"},
{605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"},
{606, nullptr, "GetContentMetaStorage"},
{607, nullptr, "ListAvailableAddOnContent"},
{609, nullptr, "ListAvailabilityAssuredAddOnContent"},
{610, nullptr, "GetInstalledContentMetaStorage"},
{611, nullptr, "PrepareAddOnContent"},
{700, nullptr, "PushDownloadTaskList"},
{701, nullptr, "ClearTaskStatusList"},
{702, nullptr, "RequestDownloadTaskList"},
{703, nullptr, "RequestEnsureDownloadTask"},
{704, nullptr, "ListDownloadTaskStatus"},
{705, nullptr, "RequestDownloadTaskListData"},
{800, nullptr, "RequestVersionList"},
{801, nullptr, "ListVersionList"},
{802, nullptr, "RequestVersionListData"},
{900, nullptr, "GetApplicationRecord"},
{901, nullptr, "GetApplicationRecordProperty"},
{902, nullptr, "EnableApplicationAutoUpdate"},
{903, nullptr, "DisableApplicationAutoUpdate"},
{904, D<&IApplicationManagerInterface::TouchApplication>, "TouchApplication"},
{905, nullptr, "RequestApplicationUpdate"},
{906, D<&IApplicationManagerInterface::IsApplicationUpdateRequested>, "IsApplicationUpdateRequested"},
{907, nullptr, "WithdrawApplicationUpdateRequest"},
{908, nullptr, "ListApplicationRecordInstalledContentMeta"},
{909, nullptr, "WithdrawCleanupAddOnContentsWithNoRightsRecommendation"},
{910, nullptr, "HasApplicationRecord"},
{911, nullptr, "SetPreInstalledApplication"},
{912, nullptr, "ClearPreInstalledApplicationFlag"},
{913, nullptr, "ListAllApplicationRecord"},
{914, nullptr, "HideApplicationRecord"},
{915, nullptr, "ShowApplicationRecord"},
{916, nullptr, "IsApplicationAutoDeleteDisabled"},
{916, nullptr, "Unknown916"}, //20.0.0+
{917, nullptr, "Unknown917"}, //20.0.0+
{918, nullptr, "Unknown918"}, //20.0.0+
{919, nullptr, "Unknown919"}, //20.0.0+
{920, nullptr, "Unknown920"}, //20.0.0+
{921, nullptr, "Unknown921"}, //20.0.0+
{922, nullptr, "Unknown922"}, //20.0.0+
{923, nullptr, "Unknown923"}, //20.0.0+
{928, nullptr, "Unknown928"}, //20.0.0+
{929, nullptr, "Unknown929"}, //20.0.0+
{930, nullptr, "Unknown930"}, //20.0.0+
{931, nullptr, "Unknown931"}, //20.0.0+
{933, nullptr, "Unknown933"}, //20.0.0+
{934, nullptr, "Unknown934"}, //21.0.0+
{935, nullptr, "Unknown935"}, //21.0.0+
{936, D<&IApplicationManagerInterface::Unknown936>, "Unknown936"}, //21.0.0+
{1000, nullptr, "RequestVerifyApplicationDeprecated"},
{1001, nullptr, "CorruptApplicationForDebug"},
{1002, nullptr, "RequestVerifyAddOnContentsRights"},
{1003, nullptr, "RequestVerifyApplication"},
{1004, nullptr, "CorruptContentForDebug"},
{1200, nullptr, "NeedsUpdateVulnerability"},
{1300, D<&IApplicationManagerInterface::IsAnyApplicationEntityInstalled>, "IsAnyApplicationEntityInstalled"},
{1301, nullptr, "DeleteApplicationContentEntities"},
{1302, nullptr, "CleanupUnrecordedApplicationEntity"},
{1303, nullptr, "CleanupAddOnContentsWithNoRights"},
{1304, nullptr, "DeleteApplicationContentEntity"},
{1305, nullptr, "TryDeleteRunningApplicationEntity"},
{1306, nullptr, "TryDeleteRunningApplicationCompletely"},
{1307, nullptr, "TryDeleteRunningApplicationContentEntities"},
{1308, nullptr, "DeleteApplicationCompletelyForDebug"},
{1309, nullptr, "CleanupUnavailableAddOnContents"},
{1310, nullptr, "RequestMoveApplicationEntity"},
{1311, nullptr, "EstimateSizeToMove"},
{1312, nullptr, "HasMovableEntity"},
{1313, nullptr, "CleanupOrphanContents"},
{1314, nullptr, "CheckPreconditionSatisfiedToMove"},
{1400, nullptr, "PrepareShutdown"},
{1500, nullptr, "FormatSdCard"},
{1501, nullptr, "NeedsSystemUpdateToFormatSdCard"},
{1502, nullptr, "GetLastSdCardFormatUnexpectedResult"},
{1504, nullptr, "InsertSdCard"},
{1505, nullptr, "RemoveSdCard"},
{1506, nullptr, "GetSdCardStartupStatus"},
{1508, nullptr, "Unknown1508"}, //20.0.0+
{1509, nullptr, "Unknown1509"}, //20.0.0+
{1510, nullptr, "Unknown1510"}, //20.0.0+
{1511, nullptr, "Unknown1511"}, //20.0.0+
{1512, nullptr, "Unknown1512"}, //20.0.0+
{1600, nullptr, "GetSystemSeedForPseudoDeviceId"},
{1601, nullptr, "ResetSystemSeedForPseudoDeviceId"},
{1700, nullptr, "ListApplicationDownloadingContentMeta"},
{1701, D<&IApplicationManagerInterface::GetApplicationViewDeprecated>, "GetApplicationViewDeprecated"},
{1702, nullptr, "GetApplicationDownloadTaskStatus"},
{1703, nullptr, "GetApplicationViewDownloadErrorContext"},
{1704, D<&IApplicationManagerInterface::GetApplicationViewWithPromotionInfo>, "GetApplicationViewWithPromotionInfo"},
{1705, nullptr, "IsPatchAutoDeletableApplication"},
{1706, D<&IApplicationManagerInterface::GetApplicationView>, "GetApplicationView"},
{1800, nullptr, "IsNotificationSetupCompleted"},
{1801, nullptr, "GetLastNotificationInfoCount"},
{1802, nullptr, "ListLastNotificationInfo"},
{1803, nullptr, "ListNotificationTask"},
{1900, nullptr, "IsActiveAccount"},
{1901, nullptr, "RequestDownloadApplicationPrepurchasedRights"},
{1902, nullptr, "GetApplicationTicketInfo"},
{1903, nullptr, "RequestDownloadApplicationPrepurchasedRightsForAccount"},
{2000, nullptr, "GetSystemDeliveryInfo"},
{2001, nullptr, "SelectLatestSystemDeliveryInfo"},
{2002, nullptr, "VerifyDeliveryProtocolVersion"},
{2003, nullptr, "GetApplicationDeliveryInfo"},
{2004, nullptr, "HasAllContentsToDeliver"},
{2005, nullptr, "CompareApplicationDeliveryInfo"},
{2006, nullptr, "CanDeliverApplication"},
{2007, nullptr, "ListContentMetaKeyToDeliverApplication"},
{2008, nullptr, "NeedsSystemUpdateToDeliverApplication"},
{2009, nullptr, "EstimateRequiredSize"},
{2010, nullptr, "RequestReceiveApplication"},
{2011, nullptr, "CommitReceiveApplication"},
{2012, nullptr, "GetReceiveApplicationProgress"},
{2013, nullptr, "RequestSendApplication"},
{2014, nullptr, "GetSendApplicationProgress"},
{2015, nullptr, "CompareSystemDeliveryInfo"},
{2016, nullptr, "ListNotCommittedContentMeta"},
{2017, nullptr, "CreateDownloadTask"},
{2018, nullptr, "GetApplicationDeliveryInfoHash"},
{2019, nullptr, "Unknown2019"}, //20.0.0+
{2050, D<&IApplicationManagerInterface::GetApplicationRightsOnClient>, "GetApplicationRightsOnClient"},
{2051, nullptr, "InvalidateRightsIdCache"},
{2052, nullptr, "Unknown2052"}, //20.0.0+
{2053, nullptr, "Unknown2053"}, //20.0.0+
{2100, D<&IApplicationManagerInterface::GetApplicationTerminateResult>, "GetApplicationTerminateResult"},
{2101, nullptr, "GetRawApplicationTerminateResult"},
{2150, nullptr, "CreateRightsEnvironment"},
{2151, nullptr, "DestroyRightsEnvironment"},
{2152, nullptr, "ActivateRightsEnvironment"},
{2153, nullptr, "DeactivateRightsEnvironment"},
{2154, nullptr, "ForceActivateRightsContextForExit"},
{2155, nullptr, "UpdateRightsEnvironmentStatus"},
{2156, nullptr, "CreateRightsEnvironmentForMicroApplication"},
{2160, nullptr, "AddTargetApplicationToRightsEnvironment"},
{2161, nullptr, "SetUsersToRightsEnvironment"},
{2170, nullptr, "GetRightsEnvironmentStatus"},
{2171, nullptr, "GetRightsEnvironmentStatusChangedEvent"},
{2180, nullptr, "RequestExtendRightsInRightsEnvironment"},
{2181, nullptr, "GetResultOfExtendRightsInRightsEnvironment"},
{2182, nullptr, "SetActiveRightsContextUsingStateToRightsEnvironment"},
{2183, nullptr, "Unknown2183"}, //20.1.0+
{2190, nullptr, "GetRightsEnvironmentHandleForApplication"},
{2199, nullptr, "GetRightsEnvironmentCountForDebug"},
{2200, nullptr, "GetGameCardApplicationCopyIdentifier"},
{2201, nullptr, "GetInstalledApplicationCopyIdentifier"},
{2250, nullptr, "RequestReportActiveELicence"},
{2300, nullptr, "ListEventLog"},
{2350, nullptr, "PerformAutoUpdateByApplicationId"},
{2351, nullptr, "RequestNoDownloadRightsErrorResolution"},
{2352, nullptr, "RequestResolveNoDownloadRightsError"},
{2353, nullptr, "GetApplicationDownloadTaskInfo"},
{2354, nullptr, "PrioritizeApplicationBackgroundTask"},
{2355, nullptr, "PreferStorageEfficientUpdate"},
{2356, nullptr, "RequestStorageEfficientUpdatePreferable"},
{2357, nullptr, "EnableMultiCoreDownload"},
{2358, nullptr, "DisableMultiCoreDownload"},
{2359, nullptr, "IsMultiCoreDownloadEnabled"},
{2360, nullptr, "GetApplicationDownloadTaskCount"}, //19.0.0+
{2361, nullptr, "GetMaxApplicationDownloadTaskCount"}, //19.0.0+
{2362, nullptr, "Unknown2362"}, //20.0.0+
{2363, nullptr, "Unknown2363"}, //20.0.0+
{2364, nullptr, "Unknown2364"}, //20.0.0+
{2365, nullptr, "Unknown2365"}, //20.0.0+
{2366, nullptr, "Unknown2366"}, //20.0.0+
{2367, nullptr, "Unknown2367"}, //20.0.0+
{2368, nullptr, "Unknown2368"}, //20.0.0+
{2369, nullptr, "Unknown2369"}, //21.0.0+
{2400, nullptr, "GetPromotionInfo"},
{2401, nullptr, "CountPromotionInfo"},
{2402, nullptr, "ListPromotionInfo"},
{2403, nullptr, "ImportPromotionJsonForDebug"},
{2404, nullptr, "ClearPromotionInfoForDebug"},
{2500, nullptr, "ConfirmAvailableTime"},
{2510, nullptr, "CreateApplicationResource"},
{2511, nullptr, "GetApplicationResource"},
{2513, nullptr, "LaunchMicroApplication"},
{2514, nullptr, "ClearTaskOfAsyncTaskManager"},
{2515, nullptr, "CleanupAllPlaceHolderAndFragmentsIfNoTask"},
{2516, nullptr, "EnsureApplicationCertificate"},
{2517, nullptr, "CreateApplicationInstance"},
{2518, nullptr, "UpdateQualificationForDebug"},
{2519, nullptr, "IsQualificationTransitionSupported"},
{2520, D<&IApplicationManagerInterface::IsQualificationTransitionSupportedByProcessId>, "IsQualificationTransitionSupportedByProcessId"},
{2521, nullptr, "GetRightsUserChangedEvent"},
{2522, nullptr, "IsRomRedirectionAvailable"},
{2523, nullptr, "GetProgramId"}, //17.0.0+
{2524, nullptr, "Unknown2524"}, //19.0.0+
{2525, nullptr, "Unknown2525"}, //20.0.0+
{2800, nullptr, "GetApplicationIdOfPreomia"},
{3000, nullptr, "RegisterDeviceLockKey"},
{3001, nullptr, "UnregisterDeviceLockKey"},
{3002, nullptr, "VerifyDeviceLockKey"},
{3003, nullptr, "HideApplicationIcon"},
{3004, nullptr, "ShowApplicationIcon"},
{3005, nullptr, "HideApplicationTitle"},
{3006, nullptr, "ShowApplicationTitle"},
{3007, nullptr, "EnableGameCard"},
{3008, nullptr, "DisableGameCard"},
{3009, nullptr, "EnableLocalContentShare"},
{3010, nullptr, "DisableLocalContentShare"},
{3011, nullptr, "IsApplicationIconHidden"},
{3012, nullptr, "IsApplicationTitleHidden"},
{3013, nullptr, "IsGameCardEnabled"},
{3014, nullptr, "IsLocalContentShareEnabled"},
{3050, nullptr, "ListAssignELicenseTaskResult"},
{3104, nullptr, "GetApplicationNintendoLogo"}, //18.0.0+
{3105, nullptr, "GetApplicationStartupMovie"}, //18.0.0+
{4000, nullptr, "Unknown4000"}, //20.0.0+
{4004, nullptr, "Unknown4004"}, //20.0.0+
{4006, nullptr, "Unknown4006"}, //20.0.0+
{4007, nullptr, "Unknown4007"}, //20.0.0+
{4008, nullptr, "Unknown4008"}, //20.0.0+
{4009, nullptr, "Unknown4009"}, //20.0.0+
{4010, nullptr, "Unknown4010"}, //20.0.0+
{4011, nullptr, "Unknown4011"}, //20.0.0+
{4012, nullptr, "Unknown4012"}, //20.0.0+
{4013, nullptr, "Unknown4013"}, //20.0.0+
{4015, nullptr, "Unknown4015"}, //20.0.0+
{4017, nullptr, "Unknown4017"}, //20.0.0+
{4019, nullptr, "Unknown4019"}, //20.0.0+
{4020, nullptr, "Unknown4020"}, //20.0.0+
{4021, nullptr, "Unknown4021"}, //20.0.0+
{4022, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4022"}, //20.0.0+
{4023, D<&IApplicationManagerInterface::Unknown4023>, "Unknown4023"}, //20.0.0+
{4024, nullptr, "Unknown4024"}, //20.0.0+
{4025, nullptr, "Unknown4025"}, //20.0.0+
{4026, nullptr, "Unknown4026"}, //20.0.0+
{4027, nullptr, "Unknown4027"}, //20.0.0+
{4028, nullptr, "Unknown4028"}, //20.0.0+
{4029, nullptr, "Unknown4029"}, //20.0.0+
{4030, nullptr, "Unknown4030"}, //20.0.0+
{4031, nullptr, "Unknown4031"}, //20.0.0+
{4032, nullptr, "Unknown4032"}, //20.0.0+
{4033, nullptr, "Unknown4033"}, //20.0.0+
{4034, nullptr, "Unknown4034"}, //20.0.0+
{4035, nullptr, "Unknown4035"}, //20.0.0+
{4037, nullptr, "Unknown4037"}, //20.0.0+
{4038, nullptr, "Unknown4038"}, //20.0.0+
{4039, nullptr, "Unknown4039"}, //20.0.0+
{4040, nullptr, "Unknown4040"}, //20.0.0+
{4041, nullptr, "Unknown4041"}, //20.0.0+
{4042, D<&IApplicationManagerInterface::Unknown4042>, "Unknown4042"}, //20.0.0+
{4043, nullptr, "Unknown4043"}, //20.0.0+
{4044, nullptr, "Unknown4044"}, //20.0.0+
{4045, nullptr, "Unknown4045"}, //20.0.0+
{4046, nullptr, "Unknown4046"}, //20.0.0+
{4049, nullptr, "Unknown4049"}, //20.0.0+
{4050, nullptr, "Unknown4050"}, //20.0.0+
{4051, nullptr, "Unknown4051"}, //20.0.0+
{4052, nullptr, "Unknown4052"}, //20.0.0+
{4053, D<&IApplicationManagerInterface::Unknown4053>, "Unknown4053"}, //20.0.0+
{4054, nullptr, "Unknown4054"}, //20.0.0+
{4055, nullptr, "Unknown4055"}, //20.0.0+
{4056, nullptr, "Unknown4056"}, //20.0.0+
{4057, nullptr, "Unknown4057"}, //20.0.0+
{4058, nullptr, "Unknown4058"}, //20.0.0+
{4059, nullptr, "Unknown4059"}, //20.0.0+
{4060, nullptr, "Unknown4060"}, //20.0.0+
{4061, nullptr, "Unknown4061"}, //20.0.0+
{4062, nullptr, "Unknown4062"}, //20.0.0+
{4063, nullptr, "Unknown4063"}, //20.0.0+
{4064, nullptr, "Unknown4064"}, //20.0.0+
{4065, nullptr, "Unknown4065"}, //20.0.0+
{4066, nullptr, "Unknown4066"}, //20.0.0+
{4067, nullptr, "Unknown4067"}, //20.0.0+
{4068, nullptr, "Unknown4068"}, //20.0.0+
{4069, nullptr, "Unknown4069"}, //20.0.0+
{4070, nullptr, "Unknown4070"}, //20.0.0+
{4071, nullptr, "Unknown4071"}, //20.0.0+
{4072, nullptr, "Unknown4072"}, //20.0.0+
{4073, nullptr, "Unknown4073"}, //20.0.0+
{4074, nullptr, "Unknown4074"}, //20.0.0+
{4075, nullptr, "Unknown4075"}, //20.0.0+
{4076, nullptr, "Unknown4076"}, //20.0.0+
{4077, nullptr, "Unknown4077"}, //20.0.0+
{4078, nullptr, "Unknown4078"}, //20.0.0+
{4079, nullptr, "Unknown4079"}, //20.0.0+
{4080, nullptr, "Unknown4080"}, //20.0.0+
{4081, nullptr, "Unknown4081"}, //20.0.0+
{4083, nullptr, "Unknown4083"}, //20.0.0+
{4084, nullptr, "Unknown4084"}, //20.0.0+
{4085, nullptr, "Unknown4085"}, //20.0.0+
{4086, nullptr, "Unknown4086"}, //20.0.0+
{4087, nullptr, "Unknown4087"}, //20.0.0+
{4088, D<&IApplicationManagerInterface::Unknown4022>, "Unknown4088"}, //20.0.0+
{4089, nullptr, "Unknown4089"}, //20.0.0+
{4090, nullptr, "Unknown4090"}, //20.0.0+
{4091, nullptr, "Unknown4091"}, //20.0.0+
{4092, nullptr, "Unknown4092"}, //20.0.0+
{4093, nullptr, "Unknown4093"}, //20.0.0+
{4094, nullptr, "Unknown4094"}, //20.0.0+
{4095, nullptr, "Unknown4095"}, //20.0.0+
{4096, nullptr, "Unknown4096"}, //20.0.0+
{4097, nullptr, "Unknown4097"}, //20.0.0+
{4099, nullptr, "Unknown4099"}, //21.0.0+
{4105, D<&IApplicationManagerInterface::Unknown4105>, "Unknown4105"}, //23.0.0+
{5000, nullptr, "Unknown5000"}, //18.0.0+
{5001, nullptr, "Unknown5001"}, //18.0.0+
{9999, nullptr, "GetApplicationCertificate"}, //10.0.0-10.2.0
};
// clang-format on
RegisterHandlers(functions);
}
IApplicationManagerInterface::~IApplicationManagerInterface() = default;
@@ -85,7 +85,6 @@ public:
void PushApplicationRecord(HLERequestContext& ctx);
void ListApplicationTitle(HLERequestContext& ctx);
void ListApplicationIcon(HLERequestContext& ctx);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
private:
KernelHelpers::ServiceContext service_context;
@@ -10,6 +10,25 @@ namespace Service::NS {
IApplicationVersionInterface::IApplicationVersionInterface(Core::System& system_)
: ServiceFramework{system_, "IApplicationVersionInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "GetLaunchRequiredVersion"},
{1, nullptr, "UpgradeLaunchRequiredVersion"},
{35, nullptr, "UpdateVersionList"},
{36, nullptr, "PushLaunchVersion"},
{37, nullptr, "ListRequiredVersion"},
{800, nullptr, "RequestVersionList"},
{801, nullptr, "ListVersionList"},
{802, nullptr, "RequestVersionListData"},
{900, nullptr, "ImportAutoUpdatePolicyJsonForDebug"},
{901, nullptr, "ListDefaultAutoUpdatePolicy"},
{902, nullptr, "ListAutoUpdatePolicyForSpecificApplication"},
{1000, nullptr, "PerformAutoUpdate"},
{1001, nullptr, "ListAutoUpdateSchedule"},
};
// clang-format on
RegisterHandlers(functions);
}
IApplicationVersionInterface::~IApplicationVersionInterface() = default;
@@ -14,25 +14,6 @@ class IApplicationVersionInterface final : public ServiceFramework<IApplicationV
public:
explicit IApplicationVersionInterface(Core::System& system_);
~IApplicationVersionInterface() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "GetLaunchRequiredVersion"},
FunctionInfo{1, nullptr, "UpgradeLaunchRequiredVersion"},
FunctionInfo{35, nullptr, "UpdateVersionList"},
FunctionInfo{36, nullptr, "PushLaunchVersion"},
FunctionInfo{37, nullptr, "ListRequiredVersion"},
FunctionInfo{800, nullptr, "RequestVersionList"},
FunctionInfo{801, nullptr, "ListVersionList"},
FunctionInfo{802, nullptr, "RequestVersionListData"},
FunctionInfo{900, nullptr, "ImportAutoUpdatePolicyJsonForDebug"},
FunctionInfo{901, nullptr, "ListDefaultAutoUpdatePolicy"},
FunctionInfo{902, nullptr, "ListAutoUpdatePolicyForSpecificApplication"},
FunctionInfo{1000, nullptr, "PerformAutoUpdate"},
FunctionInfo{1001, nullptr, "ListAutoUpdateSchedule"}
);
};
} // namespace Service::NS
+9 -9
View File
@@ -8,17 +8,17 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IAsyncResult::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "Get"},
FunctionInfo{1, D<&IAsyncResult::Cancel>, "Cancel"},
FunctionInfo{2, nullptr, "GetErrorContext", MakeVersionGate({4,0,0})}
);
return HandlerTableGenerateWithFind(key, functions);
}
IAsyncResult::IAsyncResult(Core::System& system_, Service::Event* event_)
: ServiceFramework{system_, "nn::ns::detail::IAsyncResult"}, event{event_} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "Get"},
{1, D<&IAsyncResult::Cancel>, "Cancel"},
{2, nullptr, "GetErrorContext"}, // 4.0.0+
};
// clang-format on
RegisterHandlers(functions);
}
IAsyncResult::~IAsyncResult() = default;
-1
View File
@@ -13,7 +13,6 @@ public:
private:
Result Cancel();
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
Service::Event* event{};
};
@@ -15,6 +15,22 @@ namespace Service::NS {
IContentManagementInterface::IContentManagementInterface(Core::System& system_)
: ServiceFramework{system_, "IContentManagementInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{11, D<&IContentManagementInterface::CalculateApplicationOccupiedSize>, "CalculateApplicationOccupiedSize"},
{43, D<&IContentManagementInterface::CheckSdCardMountStatus>, "CheckSdCardMountStatus"},
{47, D<&IContentManagementInterface::GetTotalSpaceSize>, "GetTotalSpaceSize"},
{48, D<&IContentManagementInterface::GetFreeSpaceSize>, "GetFreeSpaceSize"},
{71, D<&IContentManagementInterface::GetUnknown71>, "Unknown71"},
{600, nullptr, "CountApplicationContentMeta"},
{601, nullptr, "ListApplicationContentMetaStatus"},
{605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"},
{607, nullptr, "IsAnyApplicationRunning"},
{608, nullptr, "Unknown608"}, //21.0.0+
};
// clang-format on
RegisterHandlers(functions);
}
IContentManagementInterface::~IContentManagementInterface() = default;
@@ -24,22 +24,6 @@ public:
Result GetTotalSpaceSize(Out<s64> out_total_space_size, FileSys::StorageId storage_id);
Result GetFreeSpaceSize(Out<s64> out_free_space_size, FileSys::StorageId storage_id);
Result GetUnknown71(Out<u64> out_value_a, Out<u64> out_value_b, u8 flag);
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{11, D<&IContentManagementInterface::CalculateApplicationOccupiedSize>, "CalculateApplicationOccupiedSize"},
FunctionInfo{43, D<&IContentManagementInterface::CheckSdCardMountStatus>, "CheckSdCardMountStatus"},
FunctionInfo{47, D<&IContentManagementInterface::GetTotalSpaceSize>, "GetTotalSpaceSize"},
FunctionInfo{48, D<&IContentManagementInterface::GetFreeSpaceSize>, "GetFreeSpaceSize"},
FunctionInfo{71, D<&IContentManagementInterface::GetUnknown71>, "Unknown71"},
FunctionInfo{600, nullptr, "CountApplicationContentMeta"},
FunctionInfo{601, nullptr, "ListApplicationContentMetaStatus"},
FunctionInfo{605, nullptr, "ListApplicationContentMetaStatusWithRightsCheck"},
FunctionInfo{607, nullptr, "IsAnyApplicationRunning"},
FunctionInfo{608, nullptr, "Unknown608", MakeVersionGate({21,0,0})}
);
};
} // namespace Service::NS
@@ -9,6 +9,31 @@
namespace Service::NS {
IDevelopInterface::IDevelopInterface(Core::System& system_) : ServiceFramework{system_, "ns:dev"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "LaunchProgram"},
{1, nullptr, "TerminateProcess"},
{2, nullptr, "TerminateProgram"},
{4, nullptr, "GetShellEvent"},
{5, nullptr, "GetShellEventInfo"},
{6, nullptr, "TerminateApplication"},
{7, nullptr, "PrepareLaunchProgramFromHost"},
{8, nullptr, "LaunchApplicationFromHost"},
{9, nullptr, "LaunchApplicationWithStorageIdForDevelop"},
{10, nullptr, "IsSystemMemoryResourceLimitBoosted"},
{11, nullptr, "GetRunningApplicationProcessIdForDevelop"},
{12, nullptr, "SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop"},
{13, nullptr, "CreateApplicationResourceForDevelop"},
{14, nullptr, "IsPreomiaForDevelop"},
{15, nullptr, "GetApplicationProgramIdFromHost"},
{16, nullptr, "RefreshCachedDebugValues"},
{17, nullptr, "PrepareLaunchApplicationFromHost"},
{18, nullptr, "GetLaunchEvent"},
{19, nullptr, "GetLaunchResult"},
};
// clang-format on
RegisterHandlers(functions);
}
IDevelopInterface::~IDevelopInterface() = default;
@@ -14,31 +14,6 @@ class IDevelopInterface final : public ServiceFramework<IDevelopInterface> {
public:
explicit IDevelopInterface(Core::System& system_);
~IDevelopInterface() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "LaunchProgram"},
FunctionInfo{1, nullptr, "TerminateProcess"},
FunctionInfo{2, nullptr, "TerminateProgram"},
FunctionInfo{4, nullptr, "GetShellEvent"},
FunctionInfo{5, nullptr, "GetShellEventInfo"},
FunctionInfo{6, nullptr, "TerminateApplication"},
FunctionInfo{7, nullptr, "PrepareLaunchProgramFromHost"},
FunctionInfo{8, nullptr, "LaunchApplicationFromHost"},
FunctionInfo{9, nullptr, "LaunchApplicationWithStorageIdForDevelop"},
FunctionInfo{10, nullptr, "IsSystemMemoryResourceLimitBoosted"},
FunctionInfo{11, nullptr, "GetRunningApplicationProcessIdForDevelop"},
FunctionInfo{12, nullptr, "SetCurrentApplicationRightsEnvironmentCanBeActiveForDevelop"},
FunctionInfo{13, nullptr, "CreateApplicationResourceForDevelop"},
FunctionInfo{14, nullptr, "IsPreomiaForDevelop"},
FunctionInfo{15, nullptr, "GetApplicationProgramIdFromHost"},
FunctionInfo{16, nullptr, "RefreshCachedDebugValues"},
FunctionInfo{17, nullptr, "PrepareLaunchApplicationFromHost"},
FunctionInfo{18, nullptr, "GetLaunchEvent"},
FunctionInfo{19, nullptr, "GetLaunchResult"}
);
};
} // namespace Service::NS
@@ -12,6 +12,15 @@ namespace Service::NS {
IDocumentInterface::IDocumentInterface(Core::System& system_)
: ServiceFramework{system_, "IDocumentInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{21, nullptr, "GetApplicationContentPath"},
{23, D<&IDocumentInterface::ResolveApplicationContentPath>, "ResolveApplicationContentPath"},
{92, D<&IDocumentInterface::GetRunningApplicationProgramId>, "GetRunningApplicationProgramId"},
};
// clang-format on
RegisterHandlers(functions);
}
IDocumentInterface::~IDocumentInterface() = default;
@@ -20,15 +20,6 @@ public:
private:
Result ResolveApplicationContentPath(ContentPath content_path);
Result GetRunningApplicationProgramId(Out<u64> out_program_id, u64 caller_program_id);
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{21, nullptr, "GetApplicationContentPath"},
FunctionInfo{23, D<&IDocumentInterface::ResolveApplicationContentPath>, "ResolveApplicationContentPath"},
FunctionInfo{92, D<&IDocumentInterface::GetRunningApplicationProgramId>, "GetRunningApplicationProgramId"}
);
};
} // namespace Service::NS
@@ -11,6 +11,21 @@ namespace Service::NS {
IDownloadTaskInterface::IDownloadTaskInterface(Core::System& system_)
: ServiceFramework{system_, "IDownloadTaskInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{701, nullptr, "ClearTaskStatusList"},
{702, nullptr, "RequestDownloadTaskList"},
{703, nullptr, "RequestEnsureDownloadTask"},
{704, nullptr, "ListDownloadTaskStatus"},
{705, nullptr, "RequestDownloadTaskListData"},
{706, nullptr, "TryCommitCurrentApplicationDownloadTask"},
{707, D<&IDownloadTaskInterface::EnableAutoCommit>, "EnableAutoCommit"},
{708, D<&IDownloadTaskInterface::DisableAutoCommit>, "DisableAutoCommit"},
{709, nullptr, "TriggerDynamicCommitEvent"},
};
// clang-format on
RegisterHandlers(functions);
}
IDownloadTaskInterface::~IDownloadTaskInterface() = default;
@@ -18,21 +18,6 @@ public:
private:
Result EnableAutoCommit();
Result DisableAutoCommit();
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{701, nullptr, "ClearTaskStatusList"},
FunctionInfo{702, nullptr, "RequestDownloadTaskList"},
FunctionInfo{703, nullptr, "RequestEnsureDownloadTask"},
FunctionInfo{704, nullptr, "ListDownloadTaskStatus"},
FunctionInfo{705, nullptr, "RequestDownloadTaskListData"},
FunctionInfo{706, nullptr, "TryCommitCurrentApplicationDownloadTask"},
FunctionInfo{707, D<&IDownloadTaskInterface::EnableAutoCommit>, "EnableAutoCommit"},
FunctionInfo{708, D<&IDownloadTaskInterface::DisableAutoCommit>, "DisableAutoCommit"},
FunctionInfo{709, nullptr, "TriggerDynamicCommitEvent"}
);
};
} // namespace Service::NS
@@ -9,43 +9,43 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IDynamicRightsInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "RequestApplicationRightsOnServer"},
FunctionInfo{1, nullptr, "RequestAssignRights"},
FunctionInfo{4, nullptr, "DeprecatedRequestAssignRightsToResume"},
FunctionInfo{5, D<&IDynamicRightsInterface::VerifyActivatedRightsOwners>, "VerifyActivatedRightsOwners"},
FunctionInfo{6, nullptr, "DeprecatedGetApplicationRightsStatus"},
FunctionInfo{7, nullptr, "RequestPrefetchForDynamicRights"},
FunctionInfo{8, nullptr, "GetDynamicRightsState"},
FunctionInfo{9, nullptr, "RequestApplicationRightsOnServerToResume"},
FunctionInfo{10, nullptr, "RequestAssignRightsToResume"},
FunctionInfo{11, nullptr, "GetActivatedRightsUsers"},
FunctionInfo{12, nullptr, "GetApplicationRightsStatus"},
FunctionInfo{13, D<&IDynamicRightsInterface::GetRunningApplicationStatus>, "GetRunningApplicationStatus"},
FunctionInfo{14, nullptr, "SelectApplicationLicense"},
FunctionInfo{15, nullptr, "RequestContentsAuthorizationToken"},
FunctionInfo{16, nullptr, "QualifyUser"},
FunctionInfo{17, nullptr, "QualifyUserWithProcessId"},
FunctionInfo{18, D<&IDynamicRightsInterface::NotifyApplicationRightsCheckStart>, "NotifyApplicationRightsCheckStart"},
FunctionInfo{19, nullptr, "UpdateUserList"},
FunctionInfo{20, nullptr, "IsRightsLostUser"},
FunctionInfo{21, nullptr, "SetRequiredAddOnContentsOnContentsAvailabilityTransition"},
FunctionInfo{22, nullptr, "GetLimitedApplicationLicense"},
FunctionInfo{23, nullptr, "GetLimitedApplicationLicenseUpgradableEvent"},
FunctionInfo{24, nullptr, "NotifyLimitedApplicationLicenseUpgradableEventForDebug"},
FunctionInfo{25, nullptr, "RequestProceedDynamicRightsState"},
FunctionInfo{26, D<&IDynamicRightsInterface::HasAccountRestrictedRightsInRunningApplications>, "HasAccountRestrictedRightsInRunningApplications"},
FunctionInfo{27, nullptr, "Unknown27", MakeVersionGate({20,0,0})},
FunctionInfo{28, nullptr, "Unknown28", MakeVersionGate({20,0,0})},
FunctionInfo{29, nullptr, "Unknown29", MakeVersionGate({21,0,0})},
FunctionInfo{30, nullptr, "Unknown30", MakeVersionGate({21,0,0})}
);
return HandlerTableGenerateWithFind(key, functions);
}
IDynamicRightsInterface::IDynamicRightsInterface(Core::System& system_)
: ServiceFramework{system_, "DynamicRightsInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "RequestApplicationRightsOnServer"},
{1, nullptr, "RequestAssignRights"},
{4, nullptr, "DeprecatedRequestAssignRightsToResume"},
{5, D<&IDynamicRightsInterface::VerifyActivatedRightsOwners>, "VerifyActivatedRightsOwners"},
{6, nullptr, "DeprecatedGetApplicationRightsStatus"},
{7, nullptr, "RequestPrefetchForDynamicRights"},
{8, nullptr, "GetDynamicRightsState"},
{9, nullptr, "RequestApplicationRightsOnServerToResume"},
{10, nullptr, "RequestAssignRightsToResume"},
{11, nullptr, "GetActivatedRightsUsers"},
{12, nullptr, "GetApplicationRightsStatus"},
{13, D<&IDynamicRightsInterface::GetRunningApplicationStatus>, "GetRunningApplicationStatus"},
{14, nullptr, "SelectApplicationLicense"},
{15, nullptr, "RequestContentsAuthorizationToken"},
{16, nullptr, "QualifyUser"},
{17, nullptr, "QualifyUserWithProcessId"},
{18, D<&IDynamicRightsInterface::NotifyApplicationRightsCheckStart>, "NotifyApplicationRightsCheckStart"},
{19, nullptr, "UpdateUserList"},
{20, nullptr, "IsRightsLostUser"},
{21, nullptr, "SetRequiredAddOnContentsOnContentsAvailabilityTransition"},
{22, nullptr, "GetLimitedApplicationLicense"},
{23, nullptr, "GetLimitedApplicationLicenseUpgradableEvent"},
{24, nullptr, "NotifyLimitedApplicationLicenseUpgradableEventForDebug"},
{25, nullptr, "RequestProceedDynamicRightsState"},
{26, D<&IDynamicRightsInterface::HasAccountRestrictedRightsInRunningApplications>, "HasAccountRestrictedRightsInRunningApplications"},
{27, nullptr, "Unknown27"}, //20.0.0+
{28, nullptr, "Unknown28"}, //20.0.0+
{29, nullptr, "Unknown29"}, //21.0.0+
{30, nullptr, "Unknown30"}, //21.0.0+
};
// clang-format on
RegisterHandlers(functions);
}
IDynamicRightsInterface::~IDynamicRightsInterface() = default;
@@ -21,8 +21,6 @@ private:
Result GetRunningApplicationStatus(Out<u32> out_status, u64 rights_handle);
Result VerifyActivatedRightsOwners(u64 rights_handle);
Result HasAccountRestrictedRightsInRunningApplications(Out<bool> out_is_restricted);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
};
} // namespace Service::NS
@@ -10,6 +10,19 @@ namespace Service::NS {
IECommerceInterface::IECommerceInterface(Core::System& system_)
: ServiceFramework{system_, "IECommerceInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "RequestLinkDevice"},
{1, nullptr, "RequestCleanupAllPreInstalledApplications"},
{2, nullptr, "RequestCleanupPreInstalledApplication"},
{3, nullptr, "RequestSyncRights"},
{4, nullptr, "RequestUnlinkDevice"},
{5, nullptr, "RequestRevokeAllELicense"},
{6, nullptr, "RequestSyncRightsBasedOnAssignedELicenses"},
};
// clang-format on
RegisterHandlers(functions);
}
IECommerceInterface::~IECommerceInterface() = default;
@@ -14,19 +14,6 @@ class IECommerceInterface final : public ServiceFramework<IECommerceInterface> {
public:
explicit IECommerceInterface(Core::System& system_);
~IECommerceInterface() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "RequestLinkDevice"},
FunctionInfo{1, nullptr, "RequestCleanupAllPreInstalledApplications"},
FunctionInfo{2, nullptr, "RequestCleanupPreInstalledApplication"},
FunctionInfo{3, nullptr, "RequestSyncRights"},
FunctionInfo{4, nullptr, "RequestUnlinkDevice"},
FunctionInfo{5, nullptr, "RequestRevokeAllELicense"},
FunctionInfo{6, nullptr, "RequestSyncRightsBasedOnAssignedELicenses"}
);
};
} // namespace Service::NS
@@ -8,21 +8,21 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IFactoryResetInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{100, nullptr, "ResetToFactorySettings"},
FunctionInfo{101, nullptr, "ResetToFactorySettingsWithoutUserSaveData"},
FunctionInfo{102, nullptr, "ResetToFactorySettingsForRefurbishment"},
FunctionInfo{103, nullptr, "ResetToFactorySettingsWithPlatformRegion"},
FunctionInfo{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
FunctionInfo{105, nullptr, "RequestResetToFactorySettingsSecurely"},
FunctionInfo{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"}
);
return HandlerTableGenerateWithFind(key, functions);
}
IFactoryResetInterface::IFactoryResetInterface(Core::System& system_)
: ServiceFramework{system_, "IFactoryResetInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{100, nullptr, "ResetToFactorySettings"},
{101, nullptr, "ResetToFactorySettingsWithoutUserSaveData"},
{102, nullptr, "ResetToFactorySettingsForRefurbishment"},
{103, nullptr, "ResetToFactorySettingsWithPlatformRegion"},
{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
{105, nullptr, "RequestResetToFactorySettingsSecurely"},
{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"},
};
// clang-format on
RegisterHandlers(functions);
}
IFactoryResetInterface::~IFactoryResetInterface() = default;
@@ -14,7 +14,6 @@ class IFactoryResetInterface final : public ServiceFramework<IFactoryResetInterf
public:
explicit IFactoryResetInterface(Core::System& system_);
~IFactoryResetInterface() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
};
} // namespace Service::NS
+31 -32
View File
@@ -19,25 +19,25 @@ namespace Service::NS {
class INotifyService final : public ServiceFramework<INotifyService> {
public:
explicit INotifyService(Core::System& system_) : ServiceFramework{system_, "pdm:ntfy"} {}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "NotifyAppletEvent" },
FunctionInfo{2, nullptr, "NotifyOperationModeChangeEvent" },
FunctionInfo{3, nullptr, "NotifyPowerStateChangeEvent" },
FunctionInfo{4, nullptr, "NotifyClearAllEvent" },
FunctionInfo{5, nullptr, "NotifyEventForDebug" },
FunctionInfo{6, nullptr, "SuspendUserAccountEventService" },
FunctionInfo{7, nullptr, "ResumeUserAccountEventService" },
FunctionInfo{8, nullptr, "NotifyLibraryAppletEvent" },
FunctionInfo{9, nullptr, "Cmd9" },
FunctionInfo{20, nullptr, "Cmd20" },
FunctionInfo{30, nullptr, "Cmd30" },
FunctionInfo{100, nullptr, "Cmd100" },
FunctionInfo{101, nullptr, "Cmd101" }
);
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
explicit INotifyService(Core::System& system_) : ServiceFramework{system_, "pdm:ntfy"} {
// clang-format off
static const FunctionInfo functions[] = {
{ 0, nullptr, "NotifyAppletEvent" },
{ 2, nullptr, "NotifyOperationModeChangeEvent" },
{ 3, nullptr, "NotifyPowerStateChangeEvent" },
{ 4, nullptr, "NotifyClearAllEvent" },
{ 5, nullptr, "NotifyEventForDebug" },
{ 6, nullptr, "SuspendUserAccountEventService" },
{ 7, nullptr, "ResumeUserAccountEventService" },
{ 8, nullptr, "NotifyLibraryAppletEvent" },
{ 9, nullptr, "Cmd9" },
{ 20, nullptr, "Cmd20" },
{ 30, nullptr, "Cmd30" },
{ 100, nullptr, "Cmd100" },
{ 101, nullptr, "Cmd101" },
};
// clang-format on
RegisterHandlers(functions);
}
};
@@ -45,10 +45,18 @@ class IVulnerabilityManagerInterface final
: public ServiceFramework<IVulnerabilityManagerInterface> {
public:
explicit IVulnerabilityManagerInterface(Core::System& system_)
: ServiceFramework{system_, "ns:vm"} {}
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
: ServiceFramework{system_, "ns:vm"} {
// clang-format off
static const FunctionInfo functions[] = {
{1200, D<&IVulnerabilityManagerInterface::NeedsUpdateVulnerability>, "NeedsUpdateVulnerability"},
{1201, nullptr, "UpdateSafeSystemVersionForDebug"},
{1202, nullptr, "GetSafeSystemVersion"},
{3100, D<&IVulnerabilityManagerInterface::GetSafeSystemVersionCheckInfo>, "GetSafeSystemVersionCheckInfo"},
{3101, nullptr, "RequestUpdateSafeSystemVersionCheckInfo"},
{3102, D<&IVulnerabilityManagerInterface::ResetSafeSystemVersionCheckInfo>, "ResetSafeSystemVersionCheckInfo"},
};
// clang-format on
RegisterHandlers(functions);
}
~IVulnerabilityManagerInterface() override = default;
@@ -68,15 +76,6 @@ public:
LOG_WARNING(Service_NS, "(STUBBED)");
R_SUCCEED();
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{1200, D<&IVulnerabilityManagerInterface::NeedsUpdateVulnerability>, "NeedsUpdateVulnerability"},
FunctionInfo{1201, nullptr, "UpdateSafeSystemVersionForDebug"},
FunctionInfo{1202, nullptr, "GetSafeSystemVersion"},
FunctionInfo{3100, D<&IVulnerabilityManagerInterface::GetSafeSystemVersionCheckInfo>, "GetSafeSystemVersionCheckInfo"},
FunctionInfo{3101, nullptr, "RequestUpdateSafeSystemVersionCheckInfo"},
FunctionInfo{3102, D<&IVulnerabilityManagerInterface::ResetSafeSystemVersionCheckInfo>, "ResetSafeSystemVersionCheckInfo"}
);
};
void LoopProcess(Core::System& system) {
+3
View File
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+3
View File
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,28 +27,6 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IPlatformServiceManager::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, D<&IPlatformServiceManager::RequestLoad>, "RequestLoad"},
FunctionInfo{1, D<&IPlatformServiceManager::GetLoadState>, "GetLoadState"},
FunctionInfo{2, D<&IPlatformServiceManager::GetSize>, "GetSize"},
FunctionInfo{3, D<&IPlatformServiceManager::GetSharedMemoryAddressOffset>, "GetSharedMemoryAddressOffset"},
FunctionInfo{4, D<&IPlatformServiceManager::GetSharedMemoryNativeHandle>, "GetSharedMemoryNativeHandle"},
FunctionInfo{5, D<&IPlatformServiceManager::GetSharedFontInOrderOfPriority>, "GetSharedFontInOrderOfPriority"},
FunctionInfo{6, D<&IPlatformServiceManager::GetSharedFontInOrderOfPriority>, "GetSharedFontInOrderOfPriorityForSystem"},
FunctionInfo{100, nullptr, "RequestApplicationFunctionAuthorization"},
FunctionInfo{101, nullptr, "RequestApplicationFunctionAuthorizationByProcessId"},
FunctionInfo{102, nullptr, "RequestApplicationFunctionAuthorizationByApplicationId"},
FunctionInfo{103, nullptr, "RefreshApplicationFunctionBlackListDebugRecord"},
FunctionInfo{104, nullptr, "RequestApplicationFunctionAuthorizationByProgramId"},
FunctionInfo{105, nullptr, "GetFunctionBlackListSystemVersionToAuthorize"},
FunctionInfo{106, nullptr, "GetFunctionBlackListVersion"},
FunctionInfo{1000, nullptr, "LoadNgWordDataForPlatformRegionChina"},
FunctionInfo{1001, nullptr, "GetNgWordDataSizeForPlatformRegionChina"}
);
return HandlerTableGenerateWithFind(key, functions);
}
struct FontRegion {
u32 offset;
u32 size;
@@ -111,6 +89,28 @@ struct IPlatformServiceManager::Impl {
IPlatformServiceManager::IPlatformServiceManager(Core::System& system_, const char* service_name_)
: ServiceFramework{system_, service_name_}, impl{std::make_unique<Impl>()} {
// clang-format off
static const FunctionInfo functions[] = {
{0, D<&IPlatformServiceManager::RequestLoad>, "RequestLoad"},
{1, D<&IPlatformServiceManager::GetLoadState>, "GetLoadState"},
{2, D<&IPlatformServiceManager::GetSize>, "GetSize"},
{3, D<&IPlatformServiceManager::GetSharedMemoryAddressOffset>, "GetSharedMemoryAddressOffset"},
{4, D<&IPlatformServiceManager::GetSharedMemoryNativeHandle>, "GetSharedMemoryNativeHandle"},
{5, D<&IPlatformServiceManager::GetSharedFontInOrderOfPriority>, "GetSharedFontInOrderOfPriority"},
{6, D<&IPlatformServiceManager::GetSharedFontInOrderOfPriority>, "GetSharedFontInOrderOfPriorityForSystem"},
{100, nullptr, "RequestApplicationFunctionAuthorization"},
{101, nullptr, "RequestApplicationFunctionAuthorizationByProcessId"},
{102, nullptr, "RequestApplicationFunctionAuthorizationByApplicationId"},
{103, nullptr, "RefreshApplicationFunctionBlackListDebugRecord"},
{104, nullptr, "RequestApplicationFunctionAuthorizationByProgramId"},
{105, nullptr, "GetFunctionBlackListSystemVersionToAuthorize"},
{106, nullptr, "GetFunctionBlackListVersion"},
{1000, nullptr, "LoadNgWordDataForPlatformRegionChina"},
{1001, nullptr, "GetNgWordDataSizeForPlatformRegionChina"},
};
// clang-format on
RegisterHandlers(functions);
auto& fsc = system.GetFileSystemController();
// Attempt to load shared font data from disk
@@ -68,12 +68,11 @@ private:
Result GetSharedMemoryNativeHandle(
OutCopyHandle<Kernel::KSharedMemory> out_shared_memory_native_handle);
Result GetSharedFontInOrderOfPriority(OutArray<u32, BufferAttr_HipcMapAlias> out_font_codes,
OutArray<u32, BufferAttr_HipcMapAlias> out_font_offsets,
OutArray<u32, BufferAttr_HipcMapAlias> out_font_sizes,
Out<bool> out_fonts_are_loaded, Out<u32> out_font_count,
Set::LanguageCode language_code);
OutArray<u32, BufferAttr_HipcMapAlias> out_font_offsets,
OutArray<u32, BufferAttr_HipcMapAlias> out_font_sizes,
Out<bool> out_fonts_are_loaded, Out<u32> out_font_count,
Set::LanguageCode language_code);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
struct Impl;
std::unique_ptr<Impl> impl;
};
+32 -32
View File
@@ -14,40 +14,40 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IQueryService::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "QueryAppletEvent"},
FunctionInfo{1, nullptr, "QueryPlayStatistics"},
FunctionInfo{2, nullptr, "QueryPlayStatisticsByUserAccountId"},
FunctionInfo{3, nullptr, "QueryPlayStatisticsByNetworkServiceAccountId"},
FunctionInfo{4, nullptr, "QueryPlayStatisticsByApplicationId"},
FunctionInfo{5, D<&IQueryService::QueryPlayStatisticsByApplicationIdAndUserAccountId>, "QueryPlayStatisticsByApplicationIdAndUserAccountId"},
FunctionInfo{6, nullptr, "QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId"},
FunctionInfo{7, nullptr, "QueryLastPlayTimeV0"},
FunctionInfo{8, nullptr, "QueryPlayEvent"},
FunctionInfo{9, nullptr, "GetAvailablePlayEventRange"},
FunctionInfo{10, nullptr, "QueryAccountEvent"},
FunctionInfo{11, nullptr, "QueryAccountPlayEvent"},
FunctionInfo{12, nullptr, "GetAvailableAccountPlayEventRange"},
FunctionInfo{13, nullptr, "QueryApplicationPlayStatisticsForSystemV0"},
FunctionInfo{14, nullptr, "QueryRecentlyPlayedApplication"},
FunctionInfo{15, nullptr, "GetRecentlyPlayedApplicationUpdateEvent"},
FunctionInfo{16, nullptr, "QueryApplicationPlayStatisticsByUserAccountIdForSystemV0"},
FunctionInfo{17, D<&IQueryService::QueryLastPlayTime>, "QueryLastPlayTime"},
FunctionInfo{18, D<&IQueryService::QueryApplicationPlayStatisticsForSystem>, "QueryApplicationPlayStatisticsForSystem"},
FunctionInfo{19, D<&IQueryService::QueryApplicationPlayStatisticsByUserAccountIdForSystem>, "QueryApplicationPlayStatisticsByUserAccountIdForSystem"},
FunctionInfo{30, nullptr, "Cmd30" },
FunctionInfo{31, nullptr, "Cmd31" },
FunctionInfo{100, nullptr, "Cmd100" },
FunctionInfo{110, nullptr, "Cmd110" },
FunctionInfo{118, nullptr, "Cmd118" },
FunctionInfo{119, nullptr, "Cmd119" }
);
return HandlerTableGenerateWithFind(key, functions);
}
IQueryService::IQueryService(Core::System& system_) : ServiceFramework{system_, "pdm:qry"},
play_time_manager{std::make_unique<PlayTime::PlayTimeManager>()} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "QueryAppletEvent"},
{1, nullptr, "QueryPlayStatistics"},
{2, nullptr, "QueryPlayStatisticsByUserAccountId"},
{3, nullptr, "QueryPlayStatisticsByNetworkServiceAccountId"},
{4, nullptr, "QueryPlayStatisticsByApplicationId"},
{5, D<&IQueryService::QueryPlayStatisticsByApplicationIdAndUserAccountId>, "QueryPlayStatisticsByApplicationIdAndUserAccountId"},
{6, nullptr, "QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId"},
{7, nullptr, "QueryLastPlayTimeV0"},
{8, nullptr, "QueryPlayEvent"},
{9, nullptr, "GetAvailablePlayEventRange"},
{10, nullptr, "QueryAccountEvent"},
{11, nullptr, "QueryAccountPlayEvent"},
{12, nullptr, "GetAvailableAccountPlayEventRange"},
{13, nullptr, "QueryApplicationPlayStatisticsForSystemV0"},
{14, nullptr, "QueryRecentlyPlayedApplication"},
{15, nullptr, "GetRecentlyPlayedApplicationUpdateEvent"},
{16, nullptr, "QueryApplicationPlayStatisticsByUserAccountIdForSystemV0"},
{17, D<&IQueryService::QueryLastPlayTime>, "QueryLastPlayTime"},
{18, D<&IQueryService::QueryApplicationPlayStatisticsForSystem>, "QueryApplicationPlayStatisticsForSystem"},
{19, D<&IQueryService::QueryApplicationPlayStatisticsByUserAccountIdForSystem>, "QueryApplicationPlayStatisticsByUserAccountIdForSystem"},
{ 30, nullptr, "Cmd30" },
{ 31, nullptr, "Cmd31" },
{ 100, nullptr, "Cmd100" },
{ 110, nullptr, "Cmd110" },
{ 118, nullptr, "Cmd118" },
{ 119, nullptr, "Cmd119" },
};
// clang-format on
RegisterHandlers(functions);
}
IQueryService::~IQueryService() = default;
-1
View File
@@ -62,7 +62,6 @@ private:
OutArray<ApplicationPlayStatistics, BufferAttr_HipcMapAlias> out_stats,
InArray<u64, BufferAttr_HipcMapAlias> application_ids);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
std::unique_ptr<PlayTime::PlayTimeManager> play_time_manager;
};
@@ -73,21 +73,6 @@ void SanitizeJPEGImageSize(std::vector<u8>& image) {
} // namespace
std::optional<ServiceFrameworkBase::FunctionInfoBase> IReadOnlyApplicationControlDataInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData>, "GetApplicationControlData"},
FunctionInfo{1, D<&IReadOnlyApplicationControlDataInterface::GetApplicationDesiredLanguage>, "GetApplicationDesiredLanguage"},
FunctionInfo{2, D<&IReadOnlyApplicationControlDataInterface::ConvertApplicationLanguageToLanguageCode>, "ConvertApplicationLanguageToLanguageCode"},
FunctionInfo{3, nullptr, "ConvertLanguageCodeToApplicationLanguage"},
FunctionInfo{4, nullptr, "SelectApplicationDesiredLanguage"},
FunctionInfo{5, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData2>, "GetApplicationControlData"},
FunctionInfo{10, &IReadOnlyApplicationControlDataInterface::ListApplicationIcon, "ListApplicationIcon"},
FunctionInfo{13, &IReadOnlyApplicationControlDataInterface::ListApplicationTitle, "ListApplicationTitle"},
FunctionInfo{19, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData"},
FunctionInfo{23, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData", MakeVersionGate({23,0,0})}
);
return HandlerTableGenerateWithFind(key, functions);
}
// IAsyncValue implementation for ListApplicationTitle
// https://switchbrew.org/wiki/NS_services#ListApplicationTitle
@@ -99,6 +84,13 @@ public:
, data_offset{offset}
, data_size{size}
{
static const FunctionInfo functions[] = {
{0, D<&IAsyncValue::GetSize>, "GetSize"},
{1, D<&IAsyncValue::Get>, "Get"},
{2, D<&IAsyncValue::Cancel>, "Cancel"},
{3, D<&IAsyncValue::GetErrorContext>, "GetErrorContext"},
};
RegisterHandlers(functions);
completion_event = service_context.CreateEvent("IAsyncValue:Completion");
completion_event->GetReadableEvent().Signal(system.Kernel());
}
@@ -130,16 +122,6 @@ private:
LOG_DEBUG(Service_NS, "called");
R_SUCCEED();
}
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, D<&IAsyncValue::GetSize>, "GetSize"},
FunctionInfo{1, D<&IAsyncValue::Get>, "Get"},
FunctionInfo{2, D<&IAsyncValue::Cancel>, "Cancel"},
FunctionInfo{3, D<&IAsyncValue::GetErrorContext>, "GetErrorContext"}
);
KernelHelpers::ServiceContext service_context;
Kernel::KEvent* completion_event{};
s32 data_offset;
@@ -149,6 +131,22 @@ private:
IReadOnlyApplicationControlDataInterface::IReadOnlyApplicationControlDataInterface(
Core::System& system_)
: ServiceFramework{system_, "IReadOnlyApplicationControlDataInterface"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData>, "GetApplicationControlData"},
{1, D<&IReadOnlyApplicationControlDataInterface::GetApplicationDesiredLanguage>, "GetApplicationDesiredLanguage"},
{2, D<&IReadOnlyApplicationControlDataInterface::ConvertApplicationLanguageToLanguageCode>, "ConvertApplicationLanguageToLanguageCode"},
{3, nullptr, "ConvertLanguageCodeToApplicationLanguage"},
{4, nullptr, "SelectApplicationDesiredLanguage"},
{5, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData2>, "GetApplicationControlData"},
{10, &IReadOnlyApplicationControlDataInterface::ListApplicationIcon, "ListApplicationIcon"},
{13, &IReadOnlyApplicationControlDataInterface::ListApplicationTitle, "ListApplicationTitle"},
{19, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData"},
{23, D<&IReadOnlyApplicationControlDataInterface::GetApplicationControlData3>, "GetApplicationControlData"}, //23.0.0+
};
// clang-format on
RegisterHandlers(functions);
}
IReadOnlyApplicationControlDataInterface::~IReadOnlyApplicationControlDataInterface() = default;
@@ -45,8 +45,6 @@ public:
u8 flag1,
u8 flag2,
u64 application_id);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
};
} // namespace Service::NS
@@ -11,18 +11,17 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IReadOnlyApplicationRecordInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, D<&IReadOnlyApplicationRecordInterface::HasApplicationRecord>, "HasApplicationRecord"},
FunctionInfo{1, nullptr, "NotifyApplicationFailure"},
FunctionInfo{2, D<&IReadOnlyApplicationRecordInterface::IsDataCorruptedResult>, "IsDataCorruptedResult"},
FunctionInfo{3, D<&IReadOnlyApplicationRecordInterface::ListApplicationRecord>, "ListApplicationRecord"}
);
return HandlerTableGenerateWithFind(key, functions);
}
IReadOnlyApplicationRecordInterface::IReadOnlyApplicationRecordInterface(Core::System& system_)
: ServiceFramework{system_, "IReadOnlyApplicationRecordInterface"} {
static const FunctionInfo functions[] = {
{0, D<&IReadOnlyApplicationRecordInterface::HasApplicationRecord>, "HasApplicationRecord"},
{1, nullptr, "NotifyApplicationFailure"},
{2, D<&IReadOnlyApplicationRecordInterface::IsDataCorruptedResult>, "IsDataCorruptedResult"},
{3, D<&IReadOnlyApplicationRecordInterface::ListApplicationRecord>, "ListApplicationRecord"},
};
// clang-format on
RegisterHandlers(functions);
}
IReadOnlyApplicationRecordInterface::~IReadOnlyApplicationRecordInterface() = default;
@@ -24,8 +24,6 @@ private:
Result ListApplicationRecord(
OutArray<ApplicationRecord, BufferAttr_HipcMapAlias> out_records, Out<s32> out_count,
s32 entry_offset);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
};
} // namespace Service::NS
@@ -20,25 +20,25 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> IServiceGetterInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{7988, D<&IServiceGetterInterface::GetDynamicRightsInterface>, "GetDynamicRightsInterface"},
FunctionInfo{7989, D<&IServiceGetterInterface::GetReadOnlyApplicationControlDataInterface>, "GetReadOnlyApplicationControlDataInterface"},
FunctionInfo{7991, D<&IServiceGetterInterface::GetReadOnlyApplicationRecordInterface>, "GetReadOnlyApplicationRecordInterface"},
FunctionInfo{7992, D<&IServiceGetterInterface::GetECommerceInterface>, "GetECommerceInterface"},
FunctionInfo{7993, D<&IServiceGetterInterface::GetApplicationVersionInterface>, "GetApplicationVersionInterface"},
FunctionInfo{7994, D<&IServiceGetterInterface::GetFactoryResetInterface>, "GetFactoryResetInterface"},
FunctionInfo{7995, D<&IServiceGetterInterface::GetAccountProxyInterface>, "GetAccountProxyInterface"},
FunctionInfo{7996, D<&IServiceGetterInterface::GetApplicationManagerInterface>, "GetApplicationManagerInterface"},
FunctionInfo{7997, D<&IServiceGetterInterface::GetDownloadTaskInterface>, "GetDownloadTaskInterface"},
FunctionInfo{7998, D<&IServiceGetterInterface::GetContentManagementInterface>, "GetContentManagementInterface"},
FunctionInfo{7999, D<&IServiceGetterInterface::GetDocumentInterface>, "GetDocumentInterface"}
);
return HandlerTableGenerateWithFind(key, functions);
}
IServiceGetterInterface::IServiceGetterInterface(Core::System& system_, const char* name)
: ServiceFramework{system_, name} {
// clang-format off
static const FunctionInfo functions[] = {
{7988, D<&IServiceGetterInterface::GetDynamicRightsInterface>, "GetDynamicRightsInterface"},
{7989, D<&IServiceGetterInterface::GetReadOnlyApplicationControlDataInterface>, "GetReadOnlyApplicationControlDataInterface"},
{7991, D<&IServiceGetterInterface::GetReadOnlyApplicationRecordInterface>, "GetReadOnlyApplicationRecordInterface"},
{7992, D<&IServiceGetterInterface::GetECommerceInterface>, "GetECommerceInterface"},
{7993, D<&IServiceGetterInterface::GetApplicationVersionInterface>, "GetApplicationVersionInterface"},
{7994, D<&IServiceGetterInterface::GetFactoryResetInterface>, "GetFactoryResetInterface"},
{7995, D<&IServiceGetterInterface::GetAccountProxyInterface>, "GetAccountProxyInterface"},
{7996, D<&IServiceGetterInterface::GetApplicationManagerInterface>, "GetApplicationManagerInterface"},
{7997, D<&IServiceGetterInterface::GetDownloadTaskInterface>, "GetDownloadTaskInterface"},
{7998, D<&IServiceGetterInterface::GetContentManagementInterface>, "GetContentManagementInterface"},
{7999, D<&IServiceGetterInterface::GetDocumentInterface>, "GetDocumentInterface"},
};
// clang-format on
RegisterHandlers(functions);
}
IServiceGetterInterface::~IServiceGetterInterface() = default;
@@ -45,8 +45,6 @@ public:
Result GetContentManagementInterface(
Out<SharedPointer<IContentManagementInterface>> out_interface);
Result GetDocumentInterface(Out<SharedPointer<IDocumentInterface>> out_interface);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
};
} // namespace Service::NS
@@ -11,6 +11,35 @@ namespace Service::NS {
ISystemUpdateControl::ISystemUpdateControl(Core::System& system_)
: ServiceFramework{system_, "ISystemUpdateControl"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "HasDownloaded"},
{1, nullptr, "RequestCheckLatestUpdate"},
{2, nullptr, "RequestDownloadLatestUpdate"},
{3, nullptr, "GetDownloadProgress"},
{4, nullptr, "ApplyDownloadedUpdate"},
{5, nullptr, "RequestPrepareCardUpdate"},
{6, nullptr, "GetPrepareCardUpdateProgress"},
{7, nullptr, "HasPreparedCardUpdate"},
{8, nullptr, "ApplyCardUpdate"},
{9, nullptr, "GetDownloadedEulaDataSize"},
{10, nullptr, "GetDownloadedEulaData"},
{11, nullptr, "SetupCardUpdate"},
{12, nullptr, "GetPreparedCardUpdateEulaDataSize"},
{13, nullptr, "GetPreparedCardUpdateEulaData"},
{14, nullptr, "SetupCardUpdateViaSystemUpdater"},
{15, nullptr, "HasReceived"},
{16, nullptr, "RequestReceiveSystemUpdate"},
{17, nullptr, "GetReceiveProgress"},
{18, nullptr, "ApplyReceivedUpdate"},
{19, nullptr, "GetReceivedEulaDataSize"},
{20, nullptr, "GetReceivedEulaData"},
{21, nullptr, "SetupToReceiveSystemUpdate"},
{22, nullptr, "RequestCheckLatestUpdateIncludesRebootlessUpdate"},
};
// clang-format on
RegisterHandlers(functions);
}
ISystemUpdateControl::~ISystemUpdateControl() = default;
@@ -14,35 +14,6 @@ class ISystemUpdateControl final : public ServiceFramework<ISystemUpdateControl>
public:
explicit ISystemUpdateControl(Core::System& system_);
~ISystemUpdateControl() override;
std::optional<FunctionInfoBase> FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "HasDownloaded"},
FunctionInfo{1, nullptr, "RequestCheckLatestUpdate"},
FunctionInfo{2, nullptr, "RequestDownloadLatestUpdate"},
FunctionInfo{3, nullptr, "GetDownloadProgress"},
FunctionInfo{4, nullptr, "ApplyDownloadedUpdate"},
FunctionInfo{5, nullptr, "RequestPrepareCardUpdate"},
FunctionInfo{6, nullptr, "GetPrepareCardUpdateProgress"},
FunctionInfo{7, nullptr, "HasPreparedCardUpdate"},
FunctionInfo{8, nullptr, "ApplyCardUpdate"},
FunctionInfo{9, nullptr, "GetDownloadedEulaDataSize"},
FunctionInfo{10, nullptr, "GetDownloadedEulaData"},
FunctionInfo{11, nullptr, "SetupCardUpdate"},
FunctionInfo{12, nullptr, "GetPreparedCardUpdateEulaDataSize"},
FunctionInfo{13, nullptr, "GetPreparedCardUpdateEulaData"},
FunctionInfo{14, nullptr, "SetupCardUpdateViaSystemUpdater"},
FunctionInfo{15, nullptr, "HasReceived"},
FunctionInfo{16, nullptr, "RequestReceiveSystemUpdate"},
FunctionInfo{17, nullptr, "GetReceiveProgress"},
FunctionInfo{18, nullptr, "ApplyReceivedUpdate"},
FunctionInfo{19, nullptr, "GetReceivedEulaDataSize"},
FunctionInfo{20, nullptr, "GetReceivedEulaData"},
FunctionInfo{21, nullptr, "SetupToReceiveSystemUpdate"},
FunctionInfo{22, nullptr, "RequestCheckLatestUpdateIncludesRebootlessUpdate"}
);
};
} // namespace Service::NS
@@ -10,32 +10,32 @@
namespace Service::NS {
std::optional<ServiceFrameworkBase::FunctionInfoBase> ISystemUpdateInterface::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, D<&ISystemUpdateInterface::GetBackgroundNetworkUpdateState>, "GetBackgroundNetworkUpdateState"},
FunctionInfo{1, D<&ISystemUpdateInterface::OpenSystemUpdateControl>, "OpenSystemUpdateControl"},
FunctionInfo{2, nullptr, "NotifyExFatDriverRequired"},
FunctionInfo{3, nullptr, "ClearExFatDriverStatusForDebug"},
FunctionInfo{4, nullptr, "RequestBackgroundNetworkUpdate"},
FunctionInfo{5, nullptr, "NotifyBackgroundNetworkUpdate"},
FunctionInfo{6, nullptr, "NotifyExFatDriverDownloadedForDebug"},
FunctionInfo{9, D<&ISystemUpdateInterface::GetSystemUpdateNotificationEventForContentDelivery>, "GetSystemUpdateNotificationEventForContentDelivery"},
FunctionInfo{10, nullptr, "NotifySystemUpdateForContentDelivery"},
FunctionInfo{11, nullptr, "PrepareShutdown"},
FunctionInfo{12, nullptr, "Unknown12"},
FunctionInfo{13, nullptr, "Unknown13"},
FunctionInfo{14, nullptr, "Unknown14"},
FunctionInfo{15, nullptr, "Unknown15"},
FunctionInfo{16, nullptr, "DestroySystemUpdateTask"},
FunctionInfo{17, nullptr, "RequestSendSystemUpdate"},
FunctionInfo{18, nullptr, "GetSendSystemUpdateProgress"}
);
return HandlerTableGenerateWithFind(key, functions);
}
ISystemUpdateInterface::ISystemUpdateInterface(Core::System& system_)
: ServiceFramework{system_, "ns:su"}, service_context{system_, "ns:su"},
update_notification_event{service_context} {
// clang-format off
static const FunctionInfo functions[] = {
{0, D<&ISystemUpdateInterface::GetBackgroundNetworkUpdateState>, "GetBackgroundNetworkUpdateState"},
{1, D<&ISystemUpdateInterface::OpenSystemUpdateControl>, "OpenSystemUpdateControl"},
{2, nullptr, "NotifyExFatDriverRequired"},
{3, nullptr, "ClearExFatDriverStatusForDebug"},
{4, nullptr, "RequestBackgroundNetworkUpdate"},
{5, nullptr, "NotifyBackgroundNetworkUpdate"},
{6, nullptr, "NotifyExFatDriverDownloadedForDebug"},
{9, D<&ISystemUpdateInterface::GetSystemUpdateNotificationEventForContentDelivery>, "GetSystemUpdateNotificationEventForContentDelivery"},
{10, nullptr, "NotifySystemUpdateForContentDelivery"},
{11, nullptr, "PrepareShutdown"},
{12, nullptr, "Unknown12"},
{13, nullptr, "Unknown13"},
{14, nullptr, "Unknown14"},
{15, nullptr, "Unknown15"},
{16, nullptr, "DestroySystemUpdateTask"},
{17, nullptr, "RequestSendSystemUpdate"},
{18, nullptr, "GetSendSystemUpdateProgress"},
};
// clang-format on
RegisterHandlers(functions);
}
ISystemUpdateInterface::~ISystemUpdateInterface() = default;
@@ -33,7 +33,7 @@ private:
Result GetSystemUpdateNotificationEventForContentDelivery(
OutCopyHandle<Kernel::KReadableEvent> out_event);
std::optional<FunctionInfoBase> FindRequest(u32 key) override;
private:
KernelHelpers::ServiceContext service_context;
Event update_notification_event;
};