Application Manager Services: Difference between revisions

ElementW (talk | contribs)
m Add am:pipe anchor
 
(30 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[Category:Services]]
__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:GetNumExistingContentInfosSystem|GetNumExistingContentInfosSystem]]
| [[AM:GetNumExistingContentInfos|GetNumExistingContentInfos]]
|-
|-
| 0x002B0142
| 0x002B0142
| [[AM:ListExistingContentInfosSystem|ListExistingContentInfosSystem]]
| [[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:GetNumContentInfos|GetNumContentInfos]]
| [[AM:GetDLCContentInfoCount|GetDLCContentInfoCount]]
|-
|-
| 0x10020104
| 0x10020104
| [[AM:FindContentInfos|FindContentInfos]]
| [[AM:FindDLCContentInfos|FindDLCContentInfos]]
|-
|-
| 0x10030142
| 0x10030142
| [[AM:ListContentInfos|ListContentInfos]]
| [[AM:ListDLCContentInfos|ListDLCContentInfos]]
|-
|-
| 0x10040102
| 0x10040102
| [[AM:DeleteContents|DeleteContents]]
| [[AM:DeleteDLCContents|DeleteDLCContents]]
|-
|-
| 0x10050084
| 0x10050084
| [[AM:GetDataTitleInfos|GetDataTitleInfos]]
| [[AM:GetDLCTitleInfos|GetDLCTitleInfos]]
|-
|-
| 0x10060080
| 0x10060080
| [[AM:GetNumDataTitleTickets|GetNumDataTitleTickets]]
| [[AM:GetDLCOrLicenseNumTickets|GetDLCOrLicenseNumTickets]]
|-
|-
| 0x10070102
| 0x10070102
| [[AM:ListDataTitleTicketInfos|ListDataTitleTicketInfos]]
| [[AM:ListDLCOrLicenseTicketInfos|ListDLCOrLicenseTicketInfos]]
|-
|-
| 0x100801C2
| 0x100801C2
| [[AM:GetItemRights|GetItemRights]]
| [[AM:GetDLCOrLicenseItemRights|GetDLCOrLicenseItemRights]]
|-
|-
| 0x100900C0
| 0x100900C0
| [[AM:IsDataTitleInUse|IsDataTitleInUse]]
| [[AM:IsDLCTitleInUse|IsDLCTitleInUse]]
|-
|-
| 0x100A0000
| 0x100A0000
| [[AM:IsExternalTitleDatabaseInitialized|IsExternalTitleDatabaseInitialized]]
| [[AM:ReloadSDTitleDatabase|ReloadSDTitleDatabase]]
|-
|-
| 0x100B00C0
| 0x100B00C0
| [[AM:GetNumExistingContentInfos|GetNumExistingContentInfos]]
| [[AM:GetNumDLCExistingContentInfos|GetNumDLCExistingContentInfos]]
|-
|-
| 0x100C0142
| 0x100C0142
| [[AM:ListExistingContentInfos|ListExistingContentInfos]]
| [[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" =


= Application Manager "am:pipe" =
{{Anchor|AMNET}}{{Anchor|am:net}}
{| class="wikitable" border="1"
|-
!  Command Header
!  Available since system-version
!  Description
|-
| 0x0001....
|  
| Stubbed. After validating the translate-paramater headers, this just returns error 0xE0C046F8.
|-
| 0x0401....
|
|
|-
| 0x0801....
|
|
|-
| 0x0802....
|
|
|-
| 0x0803....
|
|
|-
| 0x0804....
|
|
|-
| 0x0805....
|
|
|-
| 0x0806....
|
|
|}
 
The above seems to be for whatever "am:pipe" is, this isn't registered as a service. This might be the port created by AM-module with svcCreatePort name=NULL?(The service registration code runs that svcCreatePort code + other things with the last loop iteration, which is where the "am:pipe" service registration would've been)
 
There's no known retail titles which use this.
 
For handling each command that's actually implemented, the AM cmdhandler function calls a vtable funcptr.
 
= 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:GetRightsOnlyTicketData|GetRightsOnlyTicketData]]
| [[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
|}
|}


These are identical to [[Filesystem_services#File_service|FSFile]].
==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]]