Application Manager Services: Difference between revisions
| m Add am:pipe anchor | |||
| (30 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
| __TOC__ | |||
| {{Anchor|AM}} | |||
| = Application Manager services "am:sys", "am:u", "am:net" = | = Application Manager services "am:sys", "am:u", "am:net" = | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 131: | Line 131: | ||
| |- | |- | ||
| | 0x002A00C0 | | 0x002A00C0 | ||
| | [[AM: | | [[AM:GetNumExistingContentInfos|GetNumExistingContentInfos]] | ||
| |- | |- | ||
| | 0x002B0142 | | 0x002B0142 | ||
| | [[AM: | | [[AM:ListExistingContentInfos|ListExistingContentInfos]] | ||
| |- | |- | ||
| | 0x002C0084 | | 0x002C0084 | ||
| Line 225: | Line 225: | ||
| |} | |} | ||
| {{Anchor|AMAPP}}{{Anchor|am:app}} | |||
| = Application Manager service "am:app" = | = Application Manager service "am:app" = | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 232: | Line 233: | ||
| |- | |- | ||
| | 0x100100C0 | | 0x100100C0 | ||
| | [[AM: | | [[AM:GetDLCContentInfoCount|GetDLCContentInfoCount]] | ||
| |- | |- | ||
| | 0x10020104 | | 0x10020104 | ||
| | [[AM: | | [[AM:FindDLCContentInfos|FindDLCContentInfos]] | ||
| |- | |- | ||
| | 0x10030142 | | 0x10030142 | ||
| | [[AM: | | [[AM:ListDLCContentInfos|ListDLCContentInfos]] | ||
| |- | |- | ||
| | 0x10040102 | | 0x10040102 | ||
| | [[AM: | | [[AM:DeleteDLCContents|DeleteDLCContents]] | ||
| |- | |- | ||
| | 0x10050084 | | 0x10050084 | ||
| | [[AM: | | [[AM:GetDLCTitleInfos|GetDLCTitleInfos]] | ||
| |- | |- | ||
| | 0x10060080 | | 0x10060080 | ||
| | [[AM: | | [[AM:GetDLCOrLicenseNumTickets|GetDLCOrLicenseNumTickets]] | ||
| |- | |- | ||
| | 0x10070102 | | 0x10070102 | ||
| | [[AM: | | [[AM:ListDLCOrLicenseTicketInfos|ListDLCOrLicenseTicketInfos]] | ||
| |- | |- | ||
| | 0x100801C2 | | 0x100801C2 | ||
| | [[AM: | | [[AM:GetDLCOrLicenseItemRights|GetDLCOrLicenseItemRights]] | ||
| |- | |- | ||
| | 0x100900C0 | | 0x100900C0 | ||
| | [[AM: | | [[AM:IsDLCTitleInUse|IsDLCTitleInUse]] | ||
| |- | |- | ||
| | 0x100A0000 | | 0x100A0000 | ||
| | [[AM: | | [[AM:ReloadSDTitleDatabase|ReloadSDTitleDatabase]] | ||
| |- | |- | ||
| | 0x100B00C0 | | 0x100B00C0 | ||
| | [[AM: | | [[AM:GetNumDLCExistingContentInfos|GetNumDLCExistingContentInfos]] | ||
| |- | |- | ||
| | 0x100C0142 | | 0x100C0142 | ||
| | [[AM: | | [[AM:ListDLCExistingContentInfos|ListDLCExistingContentInfos]] | ||
| |- | |- | ||
| | 0x100D0084 | | 0x100D0084 | ||
| Line 271: | Line 272: | ||
| |} | |} | ||
| The only commands accessible with this service are listed under this section. | |||
| {{Anchor|AMSYS}}{{Anchor|am:sys}} | |||
| = Application Manager service "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" = | = Application Manager service "am:u" = | ||
| {{Anchor|AMNET}}{{Anchor|am:net}} | |||
| {|  | |||
| |   | |||
| = Application Manager network service "am:net" = | = Application Manager network service "am:net" = | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 424: | Line 385: | ||
| |- | |- | ||
| | 0x08210142 | | 0x08210142 | ||
| | [[AMNet: | | [[AMNet:ExportLicenseTicket|ExportLicenseTicket]] | ||
| |- | |- | ||
| | 0x08220000 | | 0x08220000 | ||
| Line 446: | Line 407: | ||
| | 0x082800C0 | | 0x082800C0 | ||
| | [[AMNet:BeginImportTitleForOverWrite|BeginImportTitleForOverWrite]] | | [[AMNet:BeginImportTitleForOverWrite|BeginImportTitleForOverWrite]] | ||
| |- | |||
| | 0x08290184 | |||
| | [[AMNet:ExportTicketWrapped|ExportTicketWrapped]] | |||
| |} | |} | ||
| Line 452: | 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= | =Errors= | ||
| See [[Application_Manager_Services_PXI|this]]. | See [[Application_Manager_Services_PXI|this]]. | ||
| [[Category:Services]] | |||