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
| 0x000400C0
−
| [[AM:DeleteApplicationTitle|DeleteApplicationTitle]]
+
| [[AM:DeleteUserProgram|DeleteUserProgram]]
|-
|-
| 0x000500C0
| 0x000500C0
−
| [[AM:GetTitleProductCode|GetTitleProductCode]]
+
| [[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]] (Wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x003C0000)
+
| [[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
| 0x00180080
−
| This is a wrapper for [[Application_Manager_Services_PXI|AMPXI]] command 0x00470080. (unknown_u8, unknown_u8)
+
| [[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]]
|-
|-
−
| 0x001E....
+
| 0x001E00C8
−
| DSiWare related.
+
| [[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]]
|}
|}
−
The above commands are for am:sys, am:u, and am:net.
+
= Application Manager services "am:u" and "am:net" =
−
−
== Application Manager services "am:u" and "am:net" ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 74:
Line 150:
|-
|-
| 0x04010080
| 0x04010080
−
| [[AM:InstallFIRM|InstallFIRM]]
+
| [[AM:UpdateFirmwareTo|UpdateFirmwareTo]]
|-
|-
| 0x04020040
| 0x04020040
−
| [[AM:StartInstallCIADB0|StartInstallCIADB0]]
+
| [[AM:BeginImportProgram|BeginImportProgram]]
|-
|-
| 0x04030000
| 0x04030000
−
| [[AM:StartInstallCIADB1|StartInstallCIADB1]]
+
| [[AM:BeginImportProgramTemporarily|BeginImportProgramTemporarily]]
|-
|-
| 0x04040002
| 0x04040002
−
| [[AM:AbortCIAInstall|AbortCIAInstall]]
+
| [[AM:CancelImportProgram|CancelImportProgram]]
|-
|-
| 0x04050002
| 0x04050002
−
| [[AM:CloseCIAFinalizeInstall|CloseCIAFinalizeInstall]]
+
| [[AM:EndImportProgram|EndImportProgram]]
|-
|-
| 0x04060002
| 0x04060002
−
| [[AM:CloseCIA|CloseCIA]]
+
| [[AM:EndImportProgramWithoutCommit|EndImportProgramWithoutCommit]]
|-
|-
| 0x040700C2
| 0x040700C2
−
| [[AM:FinalizeTitlesInstall|FinalizeTitlesInstall]]
+
| [[AM:CommitImportPrograms|CommitImportPrograms]]
|-
|-
| 0x04080042
| 0x04080042
−
| This returns a [[AMNet:ListTitles|titlelist]] entry for a [[CIA]], using the specified file-handle. AM module reads data from the specified CIA file-handle for this. (entryptr*, [[CIA]] filehandle, mediatype)
+
| [[AM:GetProgramInfoFromCia|GetProgramInfoFromCia]]
+
|-
+
| 0x04090004
+
| [[AM:GetSystemMenuDataFromCia|GetSystemMenuDataFromCia]]
+
|-
+
| 0x040A0002
+
| [[AM:GetDependencyListFromCia|GetDependencyListFromCia]]
|-
|-
| 0x040B0002
| 0x040B0002
−
| For this command, AM module reads an u64 from the [[CIA]] using the specified file-handle? (u64* out, [[CIA]] filehandle)
+
| [[AM:GetTransferSizeFromCia|GetTransferSizeFromCia]]
+
|-
+
| 0x040C0002
+
| [[AM:GetCoreVersionFromCia|GetCoreVersionFromCia]]
+
|-
+
| 0x040D0042
+
| [[AM:GetRequiredSizeFromCia|GetRequiredSizeFromCia]]
|-
|-
| 0x040E00C2
| 0x040E00C2
−
| [[AM:InstallTitlesFinish|InstallTitlesFinish]]
+
| [[AM:CommitImportProgramsAndUpdateFirmwareAuto|CommitImportProgramsAndUpdateFirmwareAuto]]
|-
|-
| 0x040F0000
| 0x040F0000
−
| [[AM:InstallNATIVEFIRM|InstallNATIVEFIRM]]
+
| [[AM:UpdateFirmwareAuto|UpdateFirmwareAuto]]
|-
|-
| 0x041000C0
| 0x041000C0
−
| [[AM:DeleteTitle|DeleteTitle]]
+
| [[AM:DeleteProgram|DeleteProgram]]
+
|-
+
| 0x04110044
+
| [[AM:GetTwlProgramListForReboot|GetTwlProgramListForReboot]]
|-
|-
| 0x04120000
| 0x04120000
−
| [[AM:Initialize|Initialize]]
+
| [[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" =
= 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 service "am:pipe" =
+
{{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 126:
Line 289:
|-
|-
| 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 190:
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.
|}
|}
−
These are identical to [[Filesystem_services#File_service|FSFile]].
+
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]]