Application Manager Services: Difference between revisions

ElementW (talk | contribs)
m Add am:pipe anchor
 
(108 intermediate revisions by 15 users not shown)
Line 1: Line 1:
= Application Manager network service "am:net" =
__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
| [[AMNet:TitleIDListGetTotal|TitleIDListGetTotal]]
| [[AM:GetNumPrograms|GetNumPrograms]]
|-
|-
| 0x00020082
| 0x00020082
| [[AMNet:GetTitleIDList|GetTitleIDList]]
| [[AM:GetProgramList|GetProgramList]]
|-
|-
| 0x00030084
| 0x00030084
| [[AMNet:ListTitles|ListTitles]]
| [[AM:GetProgramInfos|GetProgramInfos]]
|-
| 0x000400C0
| [[AM:DeleteUserProgram|DeleteUserProgram]]
|-
| 0x000500C0
| [[AM:GetProductCode|GetProductCode]]
|-
| 0x000600C0
| [[AM:GetStorageId|GetStorageId]]
|-
| 0x00070080
| [[AM:DeleteTicket|DeleteTicket]]
|-
|-
| 0x00080000
| 0x00080000
| [[AMNet:TitleIDListGetTotal3|TitleIDListGetTotal3]]
| [[AM:GetNumTickets|GetNumTickets]]
|-
|-
| 0x00090082
| 0x00090082
| [[AMNet:GetTitleIDList3|GetTitleIDList3]]
| [[AM:GetTicketList|GetTicketList]]
|-
|-
| 0x000A0000
| 0x000A0000
| [[AMNet:GetDeviceID|GetDeviceID]]
| [[AM:GetDeviceId|GetDeviceId]]
|-
| 0x000B0040
| [[AM:GetNumImportTitleContexts|GetNumImportTitleContexts]]
|-
| 0x000C0082
| [[AM:GetImportTitleContextList|GetImportTitleContextList]]
|-
|-
| 0x000D0084
| 0x000D0084
| [[AMNet:ListTitles2|ListTitles2]]
| [[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
| [[AMNet:FinishInstallToMedia|FinishInstallToMedia]]
| [[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
| [[AMNet:TitleIDListGetTotal2|TitleIDListGetTotal2]]
| [[AM:GetNumImportTitleContextsFiltered|GetNumImportTitleContextsFiltered]]
|-
|-
| 0x002400C2
| 0x002400C2
| [[AMNet:GetTitleIDList2|GetTitleIDList2]]
| [[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
| 0x04120000
| Retrieves a handle?
| [[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:OpenTicket|OpenTicket]]
| [[AMNet:BeginImportTicket|BeginImportTicket]]
|-
|-
| 0x08020002
| 0x08020002
| [[AMNet:TicketAbortInstall|TicketAbortInstall]]
| [[AMNet:CancelImportTicket|CancelImportTicket]]
|-
|-
| 0x08030002
| 0x08030002
| [[AMNet:TicketFinalizeInstall|TicketFinalizeInstall]]
| [[AMNet:EndImportTicket|EndImportTicket]]
|-
|-
| 0x08040100
| 0x08040100
| [[AMNet:InstallTitleBegin|InstallTitleBegin]]
| [[AMNet:BeginImportTitle|BeginImportTitle]]
|-
|-
| 0x08050000
| 0x08050000
| [[AMNet:InstallTitleAbort|InstallTitleAbort]]
| [[AMNet:StopImportTitle|StopImportTitle]]
|-
|-
| 0x080600C0
| 0x080600C0
| [[AMNet:InstallTitleResume|InstallTitleResume]]
| [[AMNet:ResumeImportTitle|ResumeImportTitle]]
|-
|-
| 0x08070000
| 0x08070000
| [[AMNet:InstallTitleAbortTMD|InstallTitleAbortTMD]]
| [[AMNet:CancelImportTitle|CancelImportTitle]]
|-
|-
| 0x08080000
| 0x08080000
| [[AMNet:InstallTitleFinish|InstallTitleFinish]]
| [[AMNet:EndImportTitle|EndImportTitle]]
|-
| 0x080900C2
| [[AMNet:CommitImportTitles|CommitImportTitles]]
|-
|-
| 0x080A0000
| 0x080A0000
| [[AMNet:OpenTMD|OpenTMD]]
| [[AMNet:BeginImportTmd|BeginImportTmd]]
|-
|-
| 0x080B0002
| 0x080B0002
| [[AMNet:TMDAbortInstall|TMDAbortInstall]]
| [[AMNet:CancelImportTmd|CancelImportTmd]]
|-
|-
| 0x080C0042
| 0x080C0042
| [[AMNet:TMDFinalizeInstall|TMDFinalizeInstall]]
| [[AMNet:EndImportTmd|EndImportTmd]]
|-
| 0x080D0042
| [[AMNet:CreateImportContentContexts|CreateImportContentContexts]]
|-
|-
| 0x080E0040
| 0x080E0040
| [[AMNet:OpenContentEncrypted|OpenContentEncrypted]]
| [[AMNet:BeginImportContent|BeginImportContent]]
|-
|-
| 0x080F0002
| 0x080F0002
| [[AMNet:ContentAbortInstall|ContentAbortInstall]]
| [[AMNet:StopImportContent|StopImportContent]]
|-
|-
| 0x08100040
| 0x08100040
| [[AMNet:OpenContentDisc|OpenContentDisc]]
| [[AMNet:ResumeImportContent|ResumeImportContent]]
|-
| 0x08110002
| [[AMNet:CancelImportContent|CancelImportContent]]
|-
|-
| 0x08120002
| 0x08120002
| [[AMNet:ContentFinalizeInstall|ContentFinalizeInstall]]
| [[AMNet:EndImportContent|EndImportContent]]
|-
|-
| 0x08130000
| 0x08130000
| [[AMNet:GetTotalContents|GetTotalContents]]
| [[AMNet:GetNumCurrentImportContentContexts|GetNumCurrentImportContentContexts]]
|-
|-
| 0x08140042
| 0x08140042
| [[AMNet:GetContentIndexes|GetContentIndexes]]
| [[AMNet:GetCurrentImportContentContextList|GetCurrentImportContentContextList]]
|-
|-
| 0x08150044
| 0x08150044
| [[AMNet:GetContentsInfo|GetContentsInfo]]
| [[AMNet:GetCurrentImportContentContexts|GetCurrentImportContentContexts]]
|-
| 0x08160146
| [[AMNet:Sign|Sign]]
|-
| 0x08170146
| [[AMNet:Verify|Verify]]
|-
| 0x08180042
| [[AMNet:GetDeviceCert|GetDeviceCert]]
|-
|-
| 0x08190108
| 0x08190108
| Tickets installation related?
| [[AMNet:ImportCertificates|ImportCertificates]]
|-
| 0x081A0042
| [[AMNet:ImportCertificate|ImportCertificate]]
|-
|-
| 0x081B00C2
| 0x081B00C2
| [[AMNet:InstallTitlesFinish|InstallTitlesFinish]]
| [[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 103: 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
|}
|}


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