Application Manager Services: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
No edit summary  | 
				m Add am:pipe anchor  | 
				||
| (82 intermediate revisions by 12 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  | | 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:  | | [[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 73: | Line 150: | ||
|-  | |-  | ||
| 0x04010080  | | 0x04010080  | ||
| [[AM:  | | [[AM:UpdateFirmwareTo|UpdateFirmwareTo]]  | ||
|-  | |-  | ||
|   | | 0x04020040  | ||
| [[AM:  | | [[AM:BeginImportProgram|BeginImportProgram]]  | ||
|-  | |-  | ||
| 0x04030000  | | 0x04030000  | ||
| [[AM:  | | [[AM:BeginImportProgramTemporarily|BeginImportProgramTemporarily]]  | ||
|-  | |-  | ||
| 0x04040002  | | 0x04040002  | ||
| [[AM:  | | [[AM:CancelImportProgram|CancelImportProgram]]  | ||
|-  | |||
| 0x04050002  | |||
| [[AM:EndImportProgram|EndImportProgram]]  | |||
|-  | |-  | ||
| 0x04060002  | | 0x04060002  | ||
| [[AM:  | | [[AM:EndImportProgramWithoutCommit|EndImportProgramWithoutCommit]]  | ||
|-  | |||
| 0x040700C2  | |||
| [[AM:CommitImportPrograms|CommitImportPrograms]]  | |||
|-  | |-  | ||
| 0x04080042  | | 0x04080042  | ||
|   | | [[AM:GetProgramInfoFromCia|GetProgramInfoFromCia]]  | ||
|-  | |||
| 0x04090004  | |||
| [[AM:GetSystemMenuDataFromCia|GetSystemMenuDataFromCia]]  | |||
|-  | |||
| 0x040A0002  | |||
| [[AM:GetDependencyListFromCia|GetDependencyListFromCia]]  | |||
|-  | |-  | ||
| 0x040B0002  | | 0x040B0002  | ||
|   | | [[AM:GetTransferSizeFromCia|GetTransferSizeFromCia]]  | ||
|-  | |||
| 0x040C0002  | |||
| [[AM:GetCoreVersionFromCia|GetCoreVersionFromCia]]  | |||
|-  | |||
| 0x040D0042  | |||
| [[AM:GetRequiredSizeFromCia|GetRequiredSizeFromCia]]  | |||
|-  | |-  | ||
| 0x040E00C2  | | 0x040E00C2  | ||
| [[AM:  | | [[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 108: | 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:  | | [[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 185: | 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 11: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.