Difference between revisions of "Application Manager Services"
Jump to navigation
Jump to search
m (Add am:pipe anchor) |
|||
(118 intermediate revisions by 15 users not shown) | |||
Line 1: | Line 1: | ||
− | = Application Manager | + | __TOC__ |
+ | {{Anchor|AM}} | ||
+ | = Application Manager services "am:sys", "am:u", "am:net" = | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 6: | Line 8: | ||
|- | |- | ||
| 0x00010040 | | 0x00010040 | ||
− | | [[ | + | | [[AM:GetNumPrograms|GetNumPrograms]] |
|- | |- | ||
| 0x00020082 | | 0x00020082 | ||
− | | [[ | + | | [[AM:GetProgramList|GetProgramList]] |
|- | |- | ||
| 0x00030084 | | 0x00030084 | ||
− | | [[ | + | | [[AM:GetProgramInfos|GetProgramInfos]] |
+ | |- | ||
+ | | 0x000400C0 | ||
+ | | [[AM:DeleteUserProgram|DeleteUserProgram]] | ||
+ | |- | ||
+ | | 0x000500C0 | ||
+ | | [[AM:GetProductCode|GetProductCode]] | ||
+ | |- | ||
+ | | 0x000600C0 | ||
+ | | [[AM:GetStorageId|GetStorageId]] | ||
+ | |- | ||
+ | | 0x00070080 | ||
+ | | [[AM:DeleteTicket|DeleteTicket]] | ||
+ | |- | ||
+ | | 0x00080000 | ||
+ | | [[AM:GetNumTickets|GetNumTickets]] | ||
+ | |- | ||
+ | | 0x00090082 | ||
+ | | [[AM:GetTicketList|GetTicketList]] | ||
|- | |- | ||
| 0x000A0000 | | 0x000A0000 | ||
− | | [[ | + | | [[AM:GetDeviceId|GetDeviceId]] |
+ | |- | ||
+ | | 0x000B0040 | ||
+ | | [[AM:GetNumImportTitleContexts|GetNumImportTitleContexts]] | ||
+ | |- | ||
+ | | 0x000C0082 | ||
+ | | [[AM:GetImportTitleContextList|GetImportTitleContextList]] | ||
|- | |- | ||
| 0x000D0084 | | 0x000D0084 | ||
− | | [[ | + | | [[AM:GetImportTitleContexts|GetImportTitleContexts]] |
+ | |- | ||
+ | | 0x000E00C0 | ||
+ | | [[AM:DeleteImportTitleContext|DeleteImportTitleContext]] | ||
+ | |- | ||
+ | | 0x000F00C0 | ||
+ | | [[AM:GetNumImportContentContexts|GetNumImportContentContexts]] | ||
+ | |- | ||
+ | | 0x00100102 | ||
+ | | [[AM:GetImportContentContextList|GetImportContentContextList]] | ||
+ | |- | ||
+ | | 0x00110104 | ||
+ | | [[AM:GetImportContentContexts|GetImportContentContexts]] | ||
+ | |- | ||
+ | | 0x00120102 | ||
+ | | [[AM:DeleteImportContentContexts|DeleteImportContentContexts]] | ||
+ | |- | ||
+ | | 0x00130040 | ||
+ | | [[AM:NeedsCleanup|NeedsCleanup]] | ||
+ | |- | ||
+ | | 0x00140040 | ||
+ | | [[AM:DoCleanup|DoCleanup]] | ||
+ | |- | ||
+ | | 0x00150040 | ||
+ | | [[AM:DeleteAllImportContexts|DeleteAllImportContexts]] | ||
+ | |- | ||
+ | | 0x00160000 | ||
+ | | [[AM:DeleteAllTemporaryPrograms|DeleteAllTemporaryPrograms]] | ||
+ | |- | ||
+ | | 0x00170044 | ||
+ | | [[AM:ImportTwlBackupLegacy|ImportTwlBackupLegacy]] | ||
+ | |- | ||
+ | | 0x00180080 | ||
+ | | [[AM:InitializeTitleDatabase|InitializeTitleDatabase]] | ||
+ | |- | ||
+ | | 0x00190040 | ||
+ | | [[AM:QueryAvailableTitleDatabase|QueryAvailableTitleDatabase]] | ||
+ | |- | ||
+ | | 0x001A00C0 | ||
+ | | [[AM:CalcTwlBackupSize|CalcTwlBackupSize]] | ||
+ | |- | ||
+ | | 0x001B0144 | ||
+ | | [[AM:ExportTwlBackup|ExportTwlBackup]] | ||
+ | |- | ||
+ | | 0x001C0084 | ||
+ | | [[AM:ImportTwlBackup|ImportTwlBackup]] | ||
+ | |- | ||
+ | | 0x001D0000 | ||
+ | | [[AM:DeleteAllTwlUserPrograms|DeleteAllTwlUserPrograms]] | ||
+ | |- | ||
+ | | 0x001E00C8 | ||
+ | | [[AM:ReadTwlBackupInfo|ReadTwlBackupInfo]] | ||
+ | |- | ||
+ | | 0x001F0040 | ||
+ | | [[AM:DeleteAllExpiredUserPrograms|DeleteAllExpiredUserPrograms]] | ||
+ | |- | ||
+ | | 0x00200000 | ||
+ | | [[AM:GetTwlArchiveResourceInfo|GetTwlArchiveResourceInfo]] | ||
+ | |- | ||
+ | | 0x00210042 | ||
+ | | [[AM:GetPersonalizedTicketInfoList|GetPersonalizedTicketInfoList]] | ||
+ | |- | ||
+ | | 0x00220080 | ||
+ | | [[AM:DeleteAllImportContextsFiltered|DeleteAllImportContextsFiltered]] | ||
|- | |- | ||
| 0x00230080 | | 0x00230080 | ||
− | | [[ | + | | [[AM:GetNumImportTitleContextsFiltered|GetNumImportTitleContextsFiltered]] |
|- | |- | ||
| 0x002400C2 | | 0x002400C2 | ||
− | | [[ | + | | [[AM:GetImportTitleContextListFiltered|GetImportTitleContextListFiltered]] |
+ | |- | ||
+ | | 0x002500C0 | ||
+ | | [[AM:CheckContentRights|CheckContentRights]] | ||
+ | |- | ||
+ | | 0x00260044 | ||
+ | | [[AM:GetTicketLimitInfos|GetTicketLimitInfos]] | ||
+ | |- | ||
+ | | 0x00270044 | ||
+ | | [[AM:GetDemoLaunchInfos|GetDemoLaunchInfos]] | ||
+ | |- | ||
+ | | 0x00280108 | ||
+ | | [[AM:ReadTwlBackupInfoEx|ReadTwlBackupInfoEx]] | ||
+ | |- | ||
+ | | 0x00290082 | ||
+ | | [[AM:DeleteUserProgramsAtomically|DeleteUserProgramsAtomically]] | ||
+ | |- | ||
+ | | 0x002A00C0 | ||
+ | | [[AM:GetNumExistingContentInfos|GetNumExistingContentInfos]] | ||
+ | |- | ||
+ | | 0x002B0142 | ||
+ | | [[AM:ListExistingContentInfos|ListExistingContentInfos]] | ||
+ | |- | ||
+ | | 0x002C0084 | ||
+ | | [[AM:GetProgramInfosIgnorePlatform|GetProgramInfosIgnorePlatform]] | ||
+ | |- | ||
+ | | 0x002D00C0 | ||
+ | | [[AM:CheckContentRightsIgnorePlatform|CheckContentRightsIgnorePlatform]] | ||
+ | |} | ||
+ | |||
+ | = Application Manager services "am:u" and "am:net" = | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Command Header | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x04010080 | ||
+ | | [[AM:UpdateFirmwareTo|UpdateFirmwareTo]] | ||
+ | |- | ||
+ | | 0x04020040 | ||
+ | | [[AM:BeginImportProgram|BeginImportProgram]] | ||
+ | |- | ||
+ | | 0x04030000 | ||
+ | | [[AM:BeginImportProgramTemporarily|BeginImportProgramTemporarily]] | ||
+ | |- | ||
+ | | 0x04040002 | ||
+ | | [[AM:CancelImportProgram|CancelImportProgram]] | ||
+ | |- | ||
+ | | 0x04050002 | ||
+ | | [[AM:EndImportProgram|EndImportProgram]] | ||
+ | |- | ||
+ | | 0x04060002 | ||
+ | | [[AM:EndImportProgramWithoutCommit|EndImportProgramWithoutCommit]] | ||
+ | |- | ||
+ | | 0x040700C2 | ||
+ | | [[AM:CommitImportPrograms|CommitImportPrograms]] | ||
+ | |- | ||
+ | | 0x04080042 | ||
+ | | [[AM:GetProgramInfoFromCia|GetProgramInfoFromCia]] | ||
+ | |- | ||
+ | | 0x04090004 | ||
+ | | [[AM:GetSystemMenuDataFromCia|GetSystemMenuDataFromCia]] | ||
+ | |- | ||
+ | | 0x040A0002 | ||
+ | | [[AM:GetDependencyListFromCia|GetDependencyListFromCia]] | ||
+ | |- | ||
+ | | 0x040B0002 | ||
+ | | [[AM:GetTransferSizeFromCia|GetTransferSizeFromCia]] | ||
+ | |- | ||
+ | | 0x040C0002 | ||
+ | | [[AM:GetCoreVersionFromCia|GetCoreVersionFromCia]] | ||
+ | |- | ||
+ | | 0x040D0042 | ||
+ | | [[AM:GetRequiredSizeFromCia|GetRequiredSizeFromCia]] | ||
+ | |- | ||
+ | | 0x040E00C2 | ||
+ | | [[AM:CommitImportProgramsAndUpdateFirmwareAuto|CommitImportProgramsAndUpdateFirmwareAuto]] | ||
+ | |- | ||
+ | | 0x040F0000 | ||
+ | | [[AM:UpdateFirmwareAuto|UpdateFirmwareAuto]] | ||
+ | |- | ||
+ | | 0x041000C0 | ||
+ | | [[AM:DeleteProgram|DeleteProgram]] | ||
+ | |- | ||
+ | | 0x04110044 | ||
+ | | [[AM:GetTwlProgramListForReboot|GetTwlProgramListForReboot]] | ||
+ | |- | ||
+ | | 0x04120000 | ||
+ | | [[AM:GetSystemUpdaterMutex|GetSystemUpdaterMutex]] | ||
+ | |- | ||
+ | | 0x04130002 | ||
+ | | [[AM:GetMetaSizeFromCia|GetMetaSizeFromCia]] | ||
+ | |- | ||
+ | | 0x04140044 | ||
+ | | [[AM:GetMetaDataFromCia|GetMetaDataFromCia]] | ||
+ | |- | ||
+ | | 0x04150080 | ||
+ | | [[AM:CheckDemoLaunchRights|CheckDemoLaunchRights]] | ||
+ | |- | ||
+ | | 0x041600C0 | ||
+ | | [[AM:GetInternalTitleLocationInfo|GetInternalTitleLocationInfo]] | ||
+ | |- | ||
+ | | 0x041700C0 | ||
+ | | [[AM:PerpetuateAgbSaveData|PerpetuateAgbSaveData]] | ||
+ | |- | ||
+ | | 0x04180040 | ||
+ | | [[AM:BeginImportProgramForOverWrite|BeginImportProgramForOverWrite]] | ||
+ | |- | ||
+ | | 0x04190000 | ||
+ | | [[AM:BeginImportSystemProgram|BeginImportSystemProgram]] | ||
+ | |} | ||
+ | |||
+ | {{Anchor|AMAPP}}{{Anchor|am:app}} | ||
+ | = Application Manager service "am:app" = | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Command Header | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x100100C0 | ||
+ | | [[AM:GetDLCContentInfoCount|GetDLCContentInfoCount]] | ||
+ | |- | ||
+ | | 0x10020104 | ||
+ | | [[AM:FindDLCContentInfos|FindDLCContentInfos]] | ||
+ | |- | ||
+ | | 0x10030142 | ||
+ | | [[AM:ListDLCContentInfos|ListDLCContentInfos]] | ||
+ | |- | ||
+ | | 0x10040102 | ||
+ | | [[AM:DeleteDLCContents|DeleteDLCContents]] | ||
+ | |- | ||
+ | | 0x10050084 | ||
+ | | [[AM:GetDLCTitleInfos|GetDLCTitleInfos]] | ||
+ | |- | ||
+ | | 0x10060080 | ||
+ | | [[AM:GetDLCOrLicenseNumTickets|GetDLCOrLicenseNumTickets]] | ||
+ | |- | ||
+ | | 0x10070102 | ||
+ | | [[AM:ListDLCOrLicenseTicketInfos|ListDLCOrLicenseTicketInfos]] | ||
+ | |- | ||
+ | | 0x100801C2 | ||
+ | | [[AM:GetDLCOrLicenseItemRights|GetDLCOrLicenseItemRights]] | ||
+ | |- | ||
+ | | 0x100900C0 | ||
+ | | [[AM:IsDLCTitleInUse|IsDLCTitleInUse]] | ||
+ | |- | ||
+ | | 0x100A0000 | ||
+ | | [[AM:ReloadSDTitleDatabase|ReloadSDTitleDatabase]] | ||
+ | |- | ||
+ | | 0x100B00C0 | ||
+ | | [[AM:GetNumDLCExistingContentInfos|GetNumDLCExistingContentInfos]] | ||
+ | |- | ||
+ | | 0x100C0142 | ||
+ | | [[AM:ListDLCExistingContentInfos|ListDLCExistingContentInfos]] | ||
+ | |- | ||
+ | | 0x100D0084 | ||
+ | | [[AM:GetPatchTitleInfos|GetPatchTitleInfos]] | ||
+ | |} | ||
+ | |||
+ | The only commands accessible with this service are listed under this section. | ||
+ | |||
+ | {{Anchor|AMSYS}}{{Anchor|am:sys}} | ||
+ | = Application Manager service "am:sys" = | ||
+ | This service only has access to the 0x00XX* commands listed above, and the "am:app" commands. | ||
+ | |||
+ | {{Anchor|AMU}}{{Anchor|am:u}} | ||
+ | = Application Manager service "am:u" = | ||
+ | |||
+ | {{Anchor|AMNET}}{{Anchor|am:net}} | ||
+ | = Application Manager network service "am:net" = | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Command Header | ||
+ | ! Description | ||
|- | |- | ||
| 0x08010000 | | 0x08010000 | ||
− | | [[AMNet: | + | | [[AMNet:BeginImportTicket|BeginImportTicket]] |
|- | |- | ||
| 0x08020002 | | 0x08020002 | ||
− | | [[AMNet: | + | | [[AMNet:CancelImportTicket|CancelImportTicket]] |
|- | |- | ||
| 0x08030002 | | 0x08030002 | ||
− | | [[AMNet: | + | | [[AMNet:EndImportTicket|EndImportTicket]] |
+ | |- | ||
+ | | 0x08040100 | ||
+ | | [[AMNet:BeginImportTitle|BeginImportTitle]] | ||
+ | |- | ||
+ | | 0x08050000 | ||
+ | | [[AMNet:StopImportTitle|StopImportTitle]] | ||
+ | |- | ||
+ | | 0x080600C0 | ||
+ | | [[AMNet:ResumeImportTitle|ResumeImportTitle]] | ||
+ | |- | ||
+ | | 0x08070000 | ||
+ | | [[AMNet:CancelImportTitle|CancelImportTitle]] | ||
+ | |- | ||
+ | | 0x08080000 | ||
+ | | [[AMNet:EndImportTitle|EndImportTitle]] | ||
+ | |- | ||
+ | | 0x080900C2 | ||
+ | | [[AMNet:CommitImportTitles|CommitImportTitles]] | ||
|- | |- | ||
| 0x080A0000 | | 0x080A0000 | ||
− | | [[AMNet: | + | | [[AMNet:BeginImportTmd|BeginImportTmd]] |
|- | |- | ||
| 0x080B0002 | | 0x080B0002 | ||
− | | [[AMNet: | + | | [[AMNet:CancelImportTmd|CancelImportTmd]] |
|- | |- | ||
| 0x080C0042 | | 0x080C0042 | ||
− | | [[AMNet: | + | | [[AMNet:EndImportTmd|EndImportTmd]] |
+ | |- | ||
+ | | 0x080D0042 | ||
+ | | [[AMNet:CreateImportContentContexts|CreateImportContentContexts]] | ||
|- | |- | ||
| 0x080E0040 | | 0x080E0040 | ||
− | | [[AMNet: | + | | [[AMNet:BeginImportContent|BeginImportContent]] |
|- | |- | ||
| 0x080F0002 | | 0x080F0002 | ||
− | | [[AMNet: | + | | [[AMNet:StopImportContent|StopImportContent]] |
|- | |- | ||
| 0x08100040 | | 0x08100040 | ||
− | | [[AMNet: | + | | [[AMNet:ResumeImportContent|ResumeImportContent]] |
+ | |- | ||
+ | | 0x08110002 | ||
+ | | [[AMNet:CancelImportContent|CancelImportContent]] | ||
|- | |- | ||
| 0x08120002 | | 0x08120002 | ||
− | | [[AMNet: | + | | [[AMNet:EndImportContent|EndImportContent]] |
|- | |- | ||
| 0x08130000 | | 0x08130000 | ||
− | | [[AMNet: | + | | [[AMNet:GetNumCurrentImportContentContexts|GetNumCurrentImportContentContexts]] |
|- | |- | ||
| 0x08140042 | | 0x08140042 | ||
− | | [[AMNet: | + | | [[AMNet:GetCurrentImportContentContextList|GetCurrentImportContentContextList]] |
|- | |- | ||
| 0x08150044 | | 0x08150044 | ||
− | | [[AMNet: | + | | [[AMNet:GetCurrentImportContentContexts|GetCurrentImportContentContexts]] |
+ | |- | ||
+ | | 0x08160146 | ||
+ | | [[AMNet:Sign|Sign]] | ||
+ | |- | ||
+ | | 0x08170146 | ||
+ | | [[AMNet:Verify|Verify]] | ||
+ | |- | ||
+ | | 0x08180042 | ||
+ | | [[AMNet:GetDeviceCert|GetDeviceCert]] | ||
|- | |- | ||
| 0x08190108 | | 0x08190108 | ||
− | | | + | | [[AMNet:ImportCertificates|ImportCertificates]] |
+ | |- | ||
+ | | 0x081A0042 | ||
+ | | [[AMNet:ImportCertificate|ImportCertificate]] | ||
|- | |- | ||
| 0x081B00C2 | | 0x081B00C2 | ||
− | | | + | | [[AMNet:CommitImportTitlesAndUpdateFirmwareAuto|CommitImportTitlesAndUpdateFirmwareAuto]] |
+ | |- | ||
+ | | 0x081C0100 | ||
+ | | [[AMNet:DeleteTicketId|DeleteTicketId]] | ||
+ | |- | ||
+ | | 0x081D0080 | ||
+ | | [[AMNet:GetNumTicketIds|GetNumTicketIds]] | ||
+ | |- | ||
+ | | 0x081E0102 | ||
+ | | [[AMNet:GetTicketIdList|GetTicketIdList]] | ||
+ | |- | ||
+ | | 0x081F0080 | ||
+ | | [[AMNet:GetNumTicketsOfProgram|GetNumTicketsOfProgram]] | ||
+ | |- | ||
+ | | 0x08200102 | ||
+ | | [[AMNet:ListTicketInfos|ListTicketInfos]] | ||
+ | |- | ||
+ | | 0x08210142 | ||
+ | | [[AMNet:ExportLicenseTicket|ExportLicenseTicket]] | ||
+ | |- | ||
+ | | 0x08220000 | ||
+ | | [[AMNet:GetNumCurrentContentInfos|GetNumCurrentContentInfos]] | ||
+ | |- | ||
+ | | 0x08230044 | ||
+ | | [[AMNet:FindCurrentContentInfos|FindCurrentContentInfos]] | ||
+ | |- | ||
+ | | 0x08240082 | ||
+ | | [[AMNet:ListCurrentContentInfos|ListCurrentContentInfos]] | ||
+ | |- | ||
+ | | 0x08250102 | ||
+ | | [[AMNet:CalculateContextRequiredSize|CalculateContextRequiredSize]] | ||
+ | |- | ||
+ | | 0x08260042 | ||
+ | | [[AMNet:UpdateImportContentContexts|UpdateImportContentContexts]] | ||
+ | |- | ||
+ | | 0x08270000 | ||
+ | | [[AMNet:DeleteAllDemoLaunchInfos|DeleteAllDemoLaunchInfos]] | ||
+ | |- | ||
+ | | 0x082800C0 | ||
+ | | [[AMNet:BeginImportTitleForOverWrite|BeginImportTitleForOverWrite]] | ||
+ | |- | ||
+ | | 0x08290184 | ||
+ | | [[AMNet:ExportTicketWrapped|ExportTicketWrapped]] | ||
|} | |} | ||
Line 76: | Line 416: | ||
|- | |- | ||
! Command Header | ! Command Header | ||
+ | ! Available since system-version | ||
! Description | ! Description | ||
|- | |- | ||
+ | | 0x0001.... | ||
+ | | | ||
+ | | Stubbed. After validating the translate-paramater headers, this just returns error 0xE0C046F8. | ||
+ | |- | ||
+ | | 0x040100C4 | ||
+ | | | ||
+ | | [[AMFile:Control|Control]] | ||
+ | |- | ||
+ | | 0x08010100 | ||
+ | | | ||
+ | | [[AMFile:OpenSubFile|OpenSubFile]] | ||
|- | |- | ||
| 0x080200C2 | | 0x080200C2 | ||
+ | | | ||
| [[AMFile:Read|Read]] | | [[AMFile:Read|Read]] | ||
|- | |- | ||
| 0x08030102 | | 0x08030102 | ||
+ | | | ||
| [[AMFile:Write|Write]] | | [[AMFile:Write|Write]] | ||
|- | |- | ||
| 0x08040000 | | 0x08040000 | ||
+ | | | ||
| [[AMFile:GetSize|GetSize]] | | [[AMFile:GetSize|GetSize]] | ||
+ | |- | ||
+ | | 0x08050080 | ||
+ | | | ||
+ | | [[AMFile:SetSize|SetSize]] | ||
+ | |- | ||
+ | | 0x08060000 | ||
+ | | | ||
+ | | [[AMFile:GetAttributes|GetAttributes]] | ||
+ | |- | ||
+ | | 0x08070000 | ||
+ | | | ||
+ | | [[AMFile:SetAttributes|SetAttributes]] | ||
|- | |- | ||
| 0x08080000 | | 0x08080000 | ||
+ | | | ||
| [[AMFile:Close|Close]] | | [[AMFile:Close|Close]] | ||
+ | |- | ||
+ | | 0x08090000 | ||
+ | | | ||
+ | | [[AMFile:Flush|Flush]] | ||
+ | |- | ||
+ | | 0x080A0000 | ||
+ | | | ||
+ | | This just returns 0. | ||
+ | |- | ||
+ | | 0x080B0000 | ||
+ | | | ||
+ | | This just returns 0. | ||
+ | |- | ||
+ | | 0x080C0000 | ||
+ | | | ||
+ | | This just returns 0. | ||
|} | |} | ||
− | + | This is similar to [[Filesystem_services#File_service|FSFile]]. | |
+ | |||
+ | For handling each command that's actually implemented, the AM cmdhandler function calls a vtable funcptr. | ||
+ | |||
+ | {{Anchor|am:pipe}} | ||
+ | The private port for this seems to be referred to as "am:pipe", even though the "am:pipe" string isn't actually used. | ||
+ | |||
+ | =Types= | ||
+ | ==TicketInfo== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Length | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x8 | ||
+ | | Title ID | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x8 | ||
+ | | Ticket ID | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | 0x2 | ||
+ | | Version | ||
+ | |- | ||
+ | | 0x12 | ||
+ | | 0x2 | ||
+ | | Padding | ||
+ | |- | ||
+ | | 0x14 | ||
+ | | 0x4 | ||
+ | | Size | ||
+ | |} | ||
+ | |||
+ | ==TitleInfo== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Length | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x8 | ||
+ | | Title ID | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x8 | ||
+ | | Size | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | 0x2 | ||
+ | | Version | ||
+ | |- | ||
+ | | 0x12 | ||
+ | | 0x2 | ||
+ | | Padding | ||
+ | |- | ||
+ | | 0x14 | ||
+ | | 0x4 | ||
+ | | Type | ||
+ | |} | ||
+ | |||
+ | ==ContentInfo== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Length | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x2 | ||
+ | | Index | ||
+ | |- | ||
+ | | 0x2 | ||
+ | | 0x2 | ||
+ | | [[Title_metadata#Content_Type_flags|Content Type Flags]] from [[Title_metadata|TMD]] | ||
+ | |- | ||
+ | | 0x4 | ||
+ | | 0x4 | ||
+ | | Content ID | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x8 | ||
+ | | Size | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | 0x1 | ||
+ | | Bit 0: Downloaded, Bit 1: Owned | ||
+ | |- | ||
+ | | 0x11 | ||
+ | | 0x7 | ||
+ | | Padding | ||
+ | |} | ||
+ | |||
+ | ==ImportTitleContext== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Length | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x8 | ||
+ | | Title ID | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x2 | ||
+ | | Version | ||
+ | |- | ||
+ | | 0xA | ||
+ | | 0x2 | ||
+ | | State | ||
+ | |- | ||
+ | | 0xC | ||
+ | | 0x4 | ||
+ | | Type | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | 0x8 | ||
+ | | Size | ||
+ | |} | ||
+ | |||
+ | ===ImportTitleContextState=== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 | ||
+ | | None | ||
+ | |- | ||
+ | | 1 | ||
+ | | Waiting for import | ||
+ | |- | ||
+ | | 2 | ||
+ | | Resumable | ||
+ | |- | ||
+ | | 3 | ||
+ | | Waiting for commit | ||
+ | |- | ||
+ | | 4 | ||
+ | | Already exists | ||
+ | |- | ||
+ | | 5 | ||
+ | | Deleting | ||
+ | |- | ||
+ | | 6 | ||
+ | | Needs cleanup | ||
+ | |} | ||
+ | |||
+ | ==ImportContentContext== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Length | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x4 | ||
+ | | Content ID | ||
+ | |- | ||
+ | | 0x4 | ||
+ | | 0x2 | ||
+ | | Index | ||
+ | |- | ||
+ | | 0x6 | ||
+ | | 0x2 | ||
+ | | Type | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x8 | ||
+ | | Size | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | 0x8 | ||
+ | | Current Install Offset | ||
+ | |} | ||
+ | |||
+ | ==TwlBackupInfo== | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Length | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x8 | ||
+ | | Title ID | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x2 | ||
+ | | Group ID | ||
+ | |- | ||
+ | | 0xA | ||
+ | | 0x2 | ||
+ | | Title Version | ||
+ | |- | ||
+ | | 0xC | ||
+ | | 0x4 | ||
+ | | public.sav size | ||
+ | |- | ||
+ | | 0x10 | ||
+ | | 0x4 | ||
+ | | private.sav size | ||
+ | |- | ||
+ | | 0x14 | ||
+ | | 0x4 | ||
+ | | Unused, padding. | ||
+ | |- | ||
+ | | 0x18 | ||
+ | | 0x8 | ||
+ | | u64, required space in bytes for installation (aligned to 0x4000, used to show amount of blocks in system settings) | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | =Errors= | ||
+ | See [[Application_Manager_Services_PXI|this]]. | ||
+ | |||
+ | [[Category:Services]] |
Latest revision as of 11:34, 18 September 2024
Application Manager services "am:sys", "am:u", "am:net"[edit]
Application Manager services "am:u" and "am:net"[edit]
Command Header | Description |
---|---|
0x04010080 | UpdateFirmwareTo |
0x04020040 | BeginImportProgram |
0x04030000 | BeginImportProgramTemporarily |
0x04040002 | CancelImportProgram |
0x04050002 | EndImportProgram |
0x04060002 | EndImportProgramWithoutCommit |
0x040700C2 | CommitImportPrograms |
0x04080042 | GetProgramInfoFromCia |
0x04090004 | GetSystemMenuDataFromCia |
0x040A0002 | GetDependencyListFromCia |
0x040B0002 | GetTransferSizeFromCia |
0x040C0002 | GetCoreVersionFromCia |
0x040D0042 | GetRequiredSizeFromCia |
0x040E00C2 | CommitImportProgramsAndUpdateFirmwareAuto |
0x040F0000 | UpdateFirmwareAuto |
0x041000C0 | DeleteProgram |
0x04110044 | GetTwlProgramListForReboot |
0x04120000 | GetSystemUpdaterMutex |
0x04130002 | GetMetaSizeFromCia |
0x04140044 | GetMetaDataFromCia |
0x04150080 | CheckDemoLaunchRights |
0x041600C0 | GetInternalTitleLocationInfo |
0x041700C0 | PerpetuateAgbSaveData |
0x04180040 | BeginImportProgramForOverWrite |
0x04190000 | BeginImportSystemProgram |
Application Manager service "am:app"[edit]
Command Header | Description |
---|---|
0x100100C0 | GetDLCContentInfoCount |
0x10020104 | FindDLCContentInfos |
0x10030142 | ListDLCContentInfos |
0x10040102 | DeleteDLCContents |
0x10050084 | GetDLCTitleInfos |
0x10060080 | GetDLCOrLicenseNumTickets |
0x10070102 | ListDLCOrLicenseTicketInfos |
0x100801C2 | GetDLCOrLicenseItemRights |
0x100900C0 | IsDLCTitleInUse |
0x100A0000 | ReloadSDTitleDatabase |
0x100B00C0 | GetNumDLCExistingContentInfos |
0x100C0142 | ListDLCExistingContentInfos |
0x100D0084 | GetPatchTitleInfos |
The only commands accessible with this service are listed under this section.
Application Manager service "am:sys"[edit]
This service only has access to the 0x00XX* commands listed above, and the "am:app" commands.
Application Manager service "am:u"[edit]
Application Manager network service "am:net"[edit]
File service[edit]
Command Header | Available since system-version | Description |
---|---|---|
0x0001.... | Stubbed. After validating the translate-paramater headers, this just returns error 0xE0C046F8. | |
0x040100C4 | Control | |
0x08010100 | OpenSubFile | |
0x080200C2 | Read | |
0x08030102 | Write | |
0x08040000 | GetSize | |
0x08050080 | SetSize | |
0x08060000 | GetAttributes | |
0x08070000 | SetAttributes | |
0x08080000 | Close | |
0x08090000 | Flush | |
0x080A0000 | This just returns 0. | |
0x080B0000 | This just returns 0. | |
0x080C0000 | This just returns 0. |
This is similar to FSFile.
For handling each command that's actually implemented, the AM cmdhandler function calls a vtable funcptr.
The private port for this seems to be referred to as "am:pipe", even though the "am:pipe" string isn't actually used.
Types[edit]
TicketInfo[edit]
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x8 | Ticket ID |
0x10 | 0x2 | Version |
0x12 | 0x2 | Padding |
0x14 | 0x4 | Size |
TitleInfo[edit]
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x8 | Size |
0x10 | 0x2 | Version |
0x12 | 0x2 | Padding |
0x14 | 0x4 | Type |
ContentInfo[edit]
Offset | Length | Description |
---|---|---|
0x0 | 0x2 | Index |
0x2 | 0x2 | Content Type Flags from TMD |
0x4 | 0x4 | Content ID |
0x8 | 0x8 | Size |
0x10 | 0x1 | Bit 0: Downloaded, Bit 1: Owned |
0x11 | 0x7 | Padding |
ImportTitleContext[edit]
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x2 | Version |
0xA | 0x2 | State |
0xC | 0x4 | Type |
0x10 | 0x8 | Size |
ImportTitleContextState[edit]
Value | Description |
---|---|
0 | None |
1 | Waiting for import |
2 | Resumable |
3 | Waiting for commit |
4 | Already exists |
5 | Deleting |
6 | Needs cleanup |
ImportContentContext[edit]
Offset | Length | Description |
---|---|---|
0x0 | 0x4 | Content ID |
0x4 | 0x2 | Index |
0x6 | 0x2 | Type |
0x8 | 0x8 | Size |
0x10 | 0x8 | Current Install Offset |
TwlBackupInfo[edit]
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x2 | Group ID |
0xA | 0x2 | Title Version |
0xC | 0x4 | public.sav size |
0x10 | 0x4 | private.sav size |
0x14 | 0x4 | Unused, padding. |
0x18 | 0x8 | u64, required space in bytes for installation (aligned to 0x4000, used to show amount of blocks in system settings) |
Errors[edit]
See this.