Application Manager Services: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
m Add am:pipe anchor |
||
(94 intermediate revisions by 13 users not shown) | |||
Line 1: | Line 1: | ||
__TOC__ | |||
{{Anchor|AM}} | |||
= Application Manager services = | = Application Manager services "am:sys", "am:u", "am:net" = | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 8: | 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 | | 0x00080000 | ||
| [[ | | [[AM:GetNumTickets|GetNumTickets]] | ||
|- | |- | ||
| 0x00090082 | | 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 | | 0x00140040 | ||
| [[ | | [[AM:DoCleanup|DoCleanup]] | ||
|- | |||
| 0x00150040 | |||
| [[AM:DeleteAllImportContexts|DeleteAllImportContexts]] | |||
|- | |||
| 0x00160000 | |||
| [[AM:DeleteAllTemporaryPrograms|DeleteAllTemporaryPrograms]] | |||
|- | |||
| 0x00170044 | |||
| [[AM:ImportTwlBackupLegacy|ImportTwlBackupLegacy]] | |||
|- | |||
| 0x00180080 | |||
| [[AM:InitializeTitleDatabase|InitializeTitleDatabase]] | |||
|- | |- | ||
| 0x00190040 | | 0x00190040 | ||
| [[AM: | | [[AM:QueryAvailableTitleDatabase|QueryAvailableTitleDatabase]] | ||
|- | |- | ||
| 0x001A00C0 | | 0x001A00C0 | ||
| [[AM: | | [[AM:CalcTwlBackupSize|CalcTwlBackupSize]] | ||
|- | |- | ||
| 0x001B0144 | | 0x001B0144 | ||
| [[AM: | | [[AM:ExportTwlBackup|ExportTwlBackup]] | ||
|- | |- | ||
| 0x001C0084 | | 0x001C0084 | ||
| [[AM: | | [[AM:ImportTwlBackup|ImportTwlBackup]] | ||
|- | |- | ||
| 0x001D0000 | | 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" = | |||
= Application Manager | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 67: | Line 150: | ||
|- | |- | ||
| 0x04010080 | | 0x04010080 | ||
| [[AM: | | [[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 | | 0x040F0000 | ||
| [[AM: | | [[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" = | |||
= Application Manager | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 81: | Line 232: | ||
! Description | ! Description | ||
|- | |- | ||
| | | 0x100100C0 | ||
| [[AM: | | [[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: | | [[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 | | 0x08040100 | ||
| [[AMNet: | | [[AMNet:BeginImportTitle|BeginImportTitle]] | ||
|- | |- | ||
| 0x08050000 | | 0x08050000 | ||
| [[AMNet: | | [[AMNet:StopImportTitle|StopImportTitle]] | ||
|- | |- | ||
| 0x080600C0 | | 0x080600C0 | ||
| [[AMNet: | | [[AMNet:ResumeImportTitle|ResumeImportTitle]] | ||
|- | |- | ||
| 0x08070000 | | 0x08070000 | ||
| [[AMNet: | | [[AMNet:CancelImportTitle|CancelImportTitle]] | ||
|- | |- | ||
| 0x08080000 | | 0x08080000 | ||
| [[AMNet: | | [[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: | | [[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 155: | 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 | | 0x08050080 | ||
| | |||
| [[AMFile:SetSize|SetSize]] | | [[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 12:34, 18 September 2024
Application Manager services "am:sys", "am:u", "am:net"
Application Manager services "am:u" and "am:net"
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"
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"
This service only has access to the 0x00XX* commands listed above, and the "am:app" commands.
Application Manager service "am:u"
Application Manager network service "am:net"
File service
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
TicketInfo
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x8 | Ticket ID |
0x10 | 0x2 | Version |
0x12 | 0x2 | Padding |
0x14 | 0x4 | Size |
TitleInfo
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x8 | Size |
0x10 | 0x2 | Version |
0x12 | 0x2 | Padding |
0x14 | 0x4 | Type |
ContentInfo
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
Offset | Length | Description |
---|---|---|
0x0 | 0x8 | Title ID |
0x8 | 0x2 | Version |
0xA | 0x2 | State |
0xC | 0x4 | Type |
0x10 | 0x8 | Size |
ImportTitleContextState
Value | Description |
---|---|
0 | None |
1 | Waiting for import |
2 | Resumable |
3 | Waiting for commit |
4 | Already exists |
5 | Deleting |
6 | Needs cleanup |
ImportContentContext
Offset | Length | Description |
---|---|---|
0x0 | 0x4 | Content ID |
0x4 | 0x2 | Index |
0x6 | 0x2 | Type |
0x8 | 0x8 | Size |
0x10 | 0x8 | Current Install Offset |
TwlBackupInfo
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 this.