Difference between revisions of "Application Manager Services"

From 3dbrew
Jump to navigation Jump to search
m (Add am:pipe anchor)
 
(93 intermediate revisions by 13 users not shown)
Line 1: Line 1:
[[Category:Services]]
+
__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
| [[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
 
| 0x00190040
| [[AM:ReloadDBS|ReloadDBS]]
+
| [[AM:QueryAvailableTitleDatabase|QueryAvailableTitleDatabase]]
 
|-
 
|-
 
| 0x001A00C0
 
| 0x001A00C0
| [[AM:GetDSiWareExportSize|GetDSiWareExportSize]]
+
| [[AM:CalcTwlBackupSize|CalcTwlBackupSize]]
 
|-
 
|-
 
| 0x001B0144
 
| 0x001B0144
| [[AM:ExportDSiWare|ExportDSiWare]]
+
| [[AM:ExportTwlBackup|ExportTwlBackup]]
 
|-
 
|-
 
| 0x001C0084
 
| 0x001C0084
| [[AM:ImportDSiWare|ImportDSiWare]]
+
| [[AM:ImportTwlBackup|ImportTwlBackup]]
 
|-
 
|-
 
| 0x001D0000
 
| 0x001D0000
| Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00510000.
+
| [[AM:DeleteAllTwlUserPrograms|DeleteAllTwlUserPrograms]]
 +
|-
 +
| 0x001E00C8
 +
| [[AM:ReadTwlBackupInfo|ReadTwlBackupInfo]]
 +
|-
 +
| 0x001F0040
 +
| [[AM:DeleteAllExpiredUserPrograms|DeleteAllExpiredUserPrograms]]
 +
|-
 +
| 0x00200000
 +
| [[AM:GetTwlArchiveResourceInfo|GetTwlArchiveResourceInfo]]
 +
|-
 +
| 0x00210042
 +
| [[AM:GetPersonalizedTicketInfoList|GetPersonalizedTicketInfoList]]
 
|-
 
|-
| 0x001E....
+
| 0x00220080
| DSiWare related.
+
| [[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]]
 
|}
 
|}
  
The above commands are for am:sys, am:u, and am:net.
+
= Application Manager services "am:u" and "am:net" =
 
 
= Application Manager service "am:sys" =
 
 
 
= Application Manager service "am:u" =
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 67: Line 150:
 
|-
 
|-
 
| 0x04010080
 
| 0x04010080
| [[AM:InstallFIRM|InstallFIRM]]
+
| [[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:InstallNATIVEFIRM|InstallNATIVEFIRM]]
+
| [[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]]
 
|}
 
|}
  
= Application Manager service "am:pipe" =
+
{{Anchor|AMAPP}}{{Anchor|am:app}}
 
+
= Application Manager service "am:app" =
= Application Manager network service "am:net" =
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 81: Line 232:
 
!  Description
 
!  Description
 
|-
 
|-
| 0x04010080
+
| 0x100100C0
| [[AM:InstallFIRM|InstallFIRM]]
+
| [[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]]
 
|-
 
|-
| 0x040F0000
+
| 0x100D0084
| [[AM:InstallNATIVEFIRM|InstallNATIVEFIRM]]
+
| [[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"
 
|-
 
|-
| 0x04120000
+
!  Command Header
| Retrieves a handle?
+
!  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|OpenContentCreate]]
+
| [[AMNet:BeginImportContent|BeginImportContent]]
 
|-
 
|-
 
| 0x080F0002
 
| 0x080F0002
| [[AMNet:ContentAbortInstall|ContentAbortInstall]]
+
| [[AMNet:StopImportContent|StopImportContent]]
 
|-
 
|-
 
| 0x08100040
 
| 0x08100040
| [[AMNet:OpenContentDisc|OpenContentResume]]
+
| [[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
| Used for installing .ctx?(Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x003D0108)
+
| [[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 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
 
|}
 
|}
  
These are identical to [[Filesystem_services#File_service|FSFile]].
+
==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"[edit]

Command Header Description
0x00010040 GetNumPrograms
0x00020082 GetProgramList
0x00030084 GetProgramInfos
0x000400C0 DeleteUserProgram
0x000500C0 GetProductCode
0x000600C0 GetStorageId
0x00070080 DeleteTicket
0x00080000 GetNumTickets
0x00090082 GetTicketList
0x000A0000 GetDeviceId
0x000B0040 GetNumImportTitleContexts
0x000C0082 GetImportTitleContextList
0x000D0084 GetImportTitleContexts
0x000E00C0 DeleteImportTitleContext
0x000F00C0 GetNumImportContentContexts
0x00100102 GetImportContentContextList
0x00110104 GetImportContentContexts
0x00120102 DeleteImportContentContexts
0x00130040 NeedsCleanup
0x00140040 DoCleanup
0x00150040 DeleteAllImportContexts
0x00160000 DeleteAllTemporaryPrograms
0x00170044 ImportTwlBackupLegacy
0x00180080 InitializeTitleDatabase
0x00190040 QueryAvailableTitleDatabase
0x001A00C0 CalcTwlBackupSize
0x001B0144 ExportTwlBackup
0x001C0084 ImportTwlBackup
0x001D0000 DeleteAllTwlUserPrograms
0x001E00C8 ReadTwlBackupInfo
0x001F0040 DeleteAllExpiredUserPrograms
0x00200000 GetTwlArchiveResourceInfo
0x00210042 GetPersonalizedTicketInfoList
0x00220080 DeleteAllImportContextsFiltered
0x00230080 GetNumImportTitleContextsFiltered
0x002400C2 GetImportTitleContextListFiltered
0x002500C0 CheckContentRights
0x00260044 GetTicketLimitInfos
0x00270044 GetDemoLaunchInfos
0x00280108 ReadTwlBackupInfoEx
0x00290082 DeleteUserProgramsAtomically
0x002A00C0 GetNumExistingContentInfos
0x002B0142 ListExistingContentInfos
0x002C0084 GetProgramInfosIgnorePlatform
0x002D00C0 CheckContentRightsIgnorePlatform

Application Manager services "am:u" and "am:net"[edit]

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"[edit]

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"[edit]

This service only has access to the 0x00XX* commands listed above, and the "am:app" commands.

Application Manager service "am:u"[edit]

Application Manager network service "am:net"[edit]

Command Header Description
0x08010000 BeginImportTicket
0x08020002 CancelImportTicket
0x08030002 EndImportTicket
0x08040100 BeginImportTitle
0x08050000 StopImportTitle
0x080600C0 ResumeImportTitle
0x08070000 CancelImportTitle
0x08080000 EndImportTitle
0x080900C2 CommitImportTitles
0x080A0000 BeginImportTmd
0x080B0002 CancelImportTmd
0x080C0042 EndImportTmd
0x080D0042 CreateImportContentContexts
0x080E0040 BeginImportContent
0x080F0002 StopImportContent
0x08100040 ResumeImportContent
0x08110002 CancelImportContent
0x08120002 EndImportContent
0x08130000 GetNumCurrentImportContentContexts
0x08140042 GetCurrentImportContentContextList
0x08150044 GetCurrentImportContentContexts
0x08160146 Sign
0x08170146 Verify
0x08180042 GetDeviceCert
0x08190108 ImportCertificates
0x081A0042 ImportCertificate
0x081B00C2 CommitImportTitlesAndUpdateFirmwareAuto
0x081C0100 DeleteTicketId
0x081D0080 GetNumTicketIds
0x081E0102 GetTicketIdList
0x081F0080 GetNumTicketsOfProgram
0x08200102 ListTicketInfos
0x08210142 ExportLicenseTicket
0x08220000 GetNumCurrentContentInfos
0x08230044 FindCurrentContentInfos
0x08240082 ListCurrentContentInfos
0x08250102 CalculateContextRequiredSize
0x08260042 UpdateImportContentContexts
0x08270000 DeleteAllDemoLaunchInfos
0x082800C0 BeginImportTitleForOverWrite
0x08290184 ExportTicketWrapped

File service[edit]

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[edit]

TicketInfo[edit]

Offset Length Description
0x0 0x8 Title ID
0x8 0x8 Ticket ID
0x10 0x2 Version
0x12 0x2 Padding
0x14 0x4 Size

TitleInfo[edit]

Offset Length Description
0x0 0x8 Title ID
0x8 0x8 Size
0x10 0x2 Version
0x12 0x2 Padding
0x14 0x4 Type

ContentInfo[edit]

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[edit]

Offset Length Description
0x0 0x8 Title ID
0x8 0x2 Version
0xA 0x2 State
0xC 0x4 Type
0x10 0x8 Size

ImportTitleContextState[edit]

Value Description
0 None
1 Waiting for import
2 Resumable
3 Waiting for commit
4 Already exists
5 Deleting
6 Needs cleanup

ImportContentContext[edit]

Offset Length Description
0x0 0x4 Content ID
0x4 0x2 Index
0x6 0x2 Type
0x8 0x8 Size
0x10 0x8 Current Install Offset

TwlBackupInfo[edit]

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[edit]

See this.