Difference between revisions of "Filesystem services"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
[[Category:Services]] | [[Category:Services]] | ||
+ | |||
= Filesystem service "fs:USER" = | = Filesystem service "fs:USER" = | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 5: | Line 6: | ||
! Command Header | ! Command Header | ||
! Description | ! Description | ||
+ | ! Required exheader accessinfo bitmask | ||
|- | |- | ||
| 0x000100C6 | | 0x000100C6 | ||
| Dummy1 | | Dummy1 | ||
+ | | None | ||
|- | |- | ||
| 0x040100C4 | | 0x040100C4 | ||
| Control | | Control | ||
+ | | None | ||
|- | |- | ||
| 0x08010002 | | 0x08010002 | ||
| [[FS:Initialize|Initialize]] | | [[FS:Initialize|Initialize]] | ||
+ | | None | ||
|- | |- | ||
| 0x080201C2 | | 0x080201C2 | ||
| [[FS:OpenFile|OpenFile]] | | [[FS:OpenFile|OpenFile]] | ||
+ | | None | ||
|- | |- | ||
| 0x08030204 | | 0x08030204 | ||
| [[FS:OpenFileDirectly|OpenFileDirectly]] | | [[FS:OpenFileDirectly|OpenFileDirectly]] | ||
+ | | None | ||
|- | |- | ||
| 0x08040142 | | 0x08040142 | ||
| [[FS:DeleteFile|DeleteFile]] | | [[FS:DeleteFile|DeleteFile]] | ||
+ | | None | ||
|- | |- | ||
| 0x08050244 | | 0x08050244 | ||
| RenameFile | | RenameFile | ||
+ | | None | ||
|- | |- | ||
| 0x08060142 | | 0x08060142 | ||
| DeleteDirectory | | DeleteDirectory | ||
+ | | None | ||
|- | |- | ||
| 0x08070142 | | 0x08070142 | ||
| DeleteDirectoryRecursively | | DeleteDirectoryRecursively | ||
+ | | None | ||
|- | |- | ||
| 0x08080202 | | 0x08080202 | ||
| CreateFile | | CreateFile | ||
+ | | None | ||
|- | |- | ||
| 0x08090182 | | 0x08090182 | ||
| [[FS:CreateDirectory|CreateDirectory]] | | [[FS:CreateDirectory|CreateDirectory]] | ||
+ | | None | ||
|- | |- | ||
| 0x080A0244 | | 0x080A0244 | ||
| RenameDirectory | | RenameDirectory | ||
+ | | None | ||
|- | |- | ||
| 0x080B0102 | | 0x080B0102 | ||
| [[FS:OpenDirectory|OpenDirectory]] | | [[FS:OpenDirectory|OpenDirectory]] | ||
+ | | None | ||
|- | |- | ||
| 0x080C00C2 | | 0x080C00C2 | ||
| [[FS:OpenArchive|OpenArchive]] | | [[FS:OpenArchive|OpenArchive]] | ||
+ | | None | ||
|- | |- | ||
| 0x080D0144 | | 0x080D0144 | ||
| ControlArchive | | ControlArchive | ||
+ | | None | ||
|- | |- | ||
| 0x080E0080 | | 0x080E0080 | ||
| [[FS:CloseArchive|CloseArchive]] | | [[FS:CloseArchive|CloseArchive]] | ||
+ | | None | ||
|- | |- | ||
| 0x080F0180 | | 0x080F0180 | ||
| FormatThisUserSaveData | | FormatThisUserSaveData | ||
+ | | None | ||
|- | |- | ||
| 0x08100200 | | 0x08100200 | ||
| CreateSystemSaveData | | CreateSystemSaveData | ||
+ | | 0x4, for when the input saveID doesn't match the exheader saveID. | ||
|- | |- | ||
| 0x08110040 | | 0x08110040 | ||
| DeleteSystemSaveData | | DeleteSystemSaveData | ||
+ | | 0x1004, for when the input saveID doesn't match the exheader saveID. | ||
|- | |- | ||
| 0x08120080 | | 0x08120080 | ||
| GetFreeBytes | | GetFreeBytes | ||
+ | | None | ||
|- | |- | ||
| 0x08130000 | | 0x08130000 | ||
| GetCardType | | GetCardType | ||
+ | | 0x1017 | ||
|- | |- | ||
| 0x08140000 | | 0x08140000 | ||
| GetSdmcArchiveResource | | GetSdmcArchiveResource | ||
+ | | None | ||
|- | |- | ||
| 0x08150000 | | 0x08150000 | ||
| GetNandArchiveResource | | GetNandArchiveResource | ||
+ | | None | ||
|- | |- | ||
| 0x08160000 | | 0x08160000 | ||
| GetSdmcFatfsError | | GetSdmcFatfsError | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08170000 | | 0x08170000 | ||
| IsSdmcDetected | | IsSdmcDetected | ||
+ | | None | ||
|- | |- | ||
| 0x08180000 | | 0x08180000 | ||
| IsSdmcWritable | | IsSdmcWritable | ||
+ | | None | ||
|- | |- | ||
| 0x08190042 | | 0x08190042 | ||
| GetSdmcCid | | GetSdmcCid | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x081A0042 | | 0x081A0042 | ||
| GetNandCid | | GetNandCid | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x081B0000 | | 0x081B0000 | ||
| GetSdmcSpeedInfo | | GetSdmcSpeedInfo | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x081C0000 | | 0x081C0000 | ||
| GetNandSpeedInfo | | GetNandSpeedInfo | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x081D0042 | | 0x081D0042 | ||
| GetSdmcLog | | GetSdmcLog | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x081E0042 | | 0x081E0042 | ||
| GetNandLog | | GetNandLog | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x081F0000 | | 0x081F0000 | ||
| ClearSdmcLog | | ClearSdmcLog | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08200000 | | 0x08200000 | ||
| ClearNandLog | | ClearNandLog | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08210000 | | 0x08210000 | ||
| CardSlotIsInserted | | CardSlotIsInserted | ||
+ | | 0x1017 | ||
|- | |- | ||
| 0x08220000 | | 0x08220000 | ||
| CardSlotPowerOn | | CardSlotPowerOn | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08230000 | | 0x08230000 | ||
| CardSlotPowerOff | | CardSlotPowerOff | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08240000 | | 0x08240000 | ||
| CardSlotGetCardIFPowerStatus | | CardSlotGetCardIFPowerStatus | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08250040 | | 0x08250040 | ||
| CardNorDirectCommand | | CardNorDirectCommand | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08260080 | | 0x08260080 | ||
| CardNorDirectCommandWithAddress | | CardNorDirectCommandWithAddress | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08270082 | | 0x08270082 | ||
| CardNorDirectRead | | CardNorDirectRead | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x082800C2 | | 0x082800C2 | ||
| CardNorDirectReadWithAddress | | CardNorDirectReadWithAddress | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08290082 | | 0x08290082 | ||
| CardNorDirectWrite | | CardNorDirectWrite | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x082A00C2 | | 0x082A00C2 | ||
| CardNorDirectWriteWithAddress | | CardNorDirectWriteWithAddress | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x082B00C2 | | 0x082B00C2 | ||
| CardNorDirectRead_4xIO | | CardNorDirectRead_4xIO | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x082C0082 | | 0x082C0082 | ||
| CardNorDirectCpuWriteWithoutVerify | | CardNorDirectCpuWriteWithoutVerify | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x082D0040 | | 0x082D0040 | ||
| CardNorDirectSectorEraseWithoutVerify | | CardNorDirectSectorEraseWithoutVerify | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x082E0040 | | 0x082E0040 | ||
| GetProductInfo | | GetProductInfo | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x082F0040 | | 0x082F0040 | ||
| [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]] | | [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]] | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08300182 | | 0x08300182 | ||
| CreateExtSaveData | | CreateExtSaveData | ||
+ | | 0xC, for when the input extdataID doesn't match the exheader extdataID. | ||
|- | |- | ||
| 0x08310180 | | 0x08310180 | ||
| CreateSharedExtSaveData | | CreateSharedExtSaveData | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08320102 | | 0x08320102 | ||
| [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]] | | [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]] | ||
+ | | 0x100D, for when the input extdataID doesn't match the exheader extdataID. | ||
|- | |- | ||
| 0x08330082 | | 0x08330082 | ||
| EnumerateExtSaveData | | EnumerateExtSaveData | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08340082 | | 0x08340082 | ||
| EnumerateSharedExtSaveData | | EnumerateSharedExtSaveData | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08350080 | | 0x08350080 | ||
| DeleteExtSaveData | | DeleteExtSaveData | ||
+ | | 0x100D, for when the input extdataID doesn't match the exheader extdataID. | ||
|- | |- | ||
| 0x08360080 | | 0x08360080 | ||
| DeleteSharedExtSaveData | | DeleteSharedExtSaveData | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08370040 | | 0x08370040 | ||
| SetCardSpiBaudRate | | SetCardSpiBaudRate | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08380040 | | 0x08380040 | ||
| SetCardSpiBusMode | | SetCardSpiBusMode | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x08390000 | | 0x08390000 | ||
| SendInitializeInfoTo9 | | SendInitializeInfoTo9 | ||
+ | | None | ||
|- | |- | ||
| 0x083A0100 | | 0x083A0100 | ||
| GetSpecialContentIndex | | GetSpecialContentIndex | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x083B00C2 | | 0x083B00C2 | ||
| GetLegacyRomHeader | | GetLegacyRomHeader | ||
+ | | 0x1015 | ||
|- | |- | ||
| 0x083C00C2 | | 0x083C00C2 | ||
| GetLegacyBannerData | | GetLegacyBannerData | ||
+ | | 0x1015 | ||
|- | |- | ||
| 0x083D0100 | | 0x083D0100 | ||
| CheckAuthorityToAccessExtSaveData | | CheckAuthorityToAccessExtSaveData | ||
+ | | 0x44 | ||
|- | |- | ||
| 0x083E00C2 | | 0x083E00C2 | ||
| QueryTotalQuotaSize | | QueryTotalQuotaSize | ||
+ | | None | ||
|- | |- | ||
| 0x083F00C0 | | 0x083F00C0 | ||
| GetExtDataBlockSize | | GetExtDataBlockSize | ||
+ | | None | ||
|- | |- | ||
| 0x08400040 | | 0x08400040 | ||
Line 206: | Line 273: | ||
| 0x08410000 | | 0x08410000 | ||
| DeleteSdmcRoot | | DeleteSdmcRoot | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08420040 | | 0x08420040 | ||
| DeleteAllExtSaveDataOnNand | | DeleteAllExtSaveDataOnNand | ||
+ | | 0x1005 | ||
|- | |- | ||
| 0x08430000 | | 0x08430000 | ||
| [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]] | | [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]] | ||
+ | | None | ||
|- | |- | ||
| 0x08440000 | | 0x08440000 | ||
| CreateSeed | | CreateSeed | ||
+ | | 0x2 | ||
|- | |- | ||
| 0x084500C2 | | 0x084500C2 | ||
| GetFormatInfo | | GetFormatInfo | ||
+ | | ? | ||
|- | |- | ||
| 0x08460102 | | 0x08460102 | ||
| GetLegacyRomHeader2 | | GetLegacyRomHeader2 | ||
+ | | 0x1015 | ||
|- | |- | ||
| 0x08470180 | | 0x08470180 | ||
| FormatCtrCardUserSaveData | | FormatCtrCardUserSaveData | ||
+ | | 0x6 | ||
|- | |- | ||
| 0x08480042 | | 0x08480042 | ||
| GetSdmcCtrRootPath | | GetSdmcCtrRootPath | ||
+ | | 0x100D | ||
|- | |- | ||
| 0x08490040 | | 0x08490040 | ||
| GetArchiveResource | | GetArchiveResource | ||
+ | | ? | ||
|- | |- | ||
| 0x084A0002 | | 0x084A0002 | ||
| ExportIntegrityVerificationSeed | | ExportIntegrityVerificationSeed | ||
+ | | 0x4000 | ||
|- | |- | ||
| 0x084B0002 | | 0x084B0002 | ||
| ImportIntegrityVerificationSeed | | ImportIntegrityVerificationSeed | ||
+ | | 0x4000 | ||
|- | |- | ||
| 0x084C0242 | | 0x084C0242 | ||
| FormatSaveData | | FormatSaveData | ||
+ | | 0x6, in some cases this right isn't needed however. | ||
|- | |- | ||
| 0x084D0102 | | 0x084D0102 | ||
| GetLegacySubBannerData | | GetLegacySubBannerData | ||
+ | | 0x1015 | ||
|- | |- | ||
| 0x084E0342 | | 0x084E0342 | ||
| [[FS:UpdateSha256Context|UpdateSha256Context]] | | [[FS:UpdateSha256Context|UpdateSha256Context]] | ||
+ | | 0x5 | ||
|- | |- | ||
| 0x084F0102 | | 0x084F0102 | ||
| ReadSpecialFile | | ReadSpecialFile | ||
+ | | None | ||
|- | |- | ||
| 0x08500040 | | 0x08500040 | ||
| GetSpecialFileSize | | GetSpecialFileSize | ||
+ | | None | ||
|- | |- | ||
| 0x08520100 | | 0x08520100 | ||
| Unknown (u32 flags, u64 extdataID) | | Unknown (u32 flags, u64 extdataID) | ||
+ | | ? | ||
|- | |- | ||
| 0x08620040 | | 0x08620040 | ||
+ | | ? | ||
| ? | | ? | ||
|- | |- | ||
| 0x08630000 | | 0x08630000 | ||
+ | | ? | ||
| ? | | ? | ||
|} | |} | ||
+ | |||
+ | When access rights are required for a command, at least one of the bits in the process accessinfo specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn't have access rights for the command. | ||
=File service= | =File service= |
Revision as of 18:03, 4 April 2013
Filesystem service "fs:USER"
Command Header | Description | Required exheader accessinfo bitmask |
---|---|---|
0x000100C6 | Dummy1 | None |
0x040100C4 | Control | None |
0x08010002 | Initialize | None |
0x080201C2 | OpenFile | None |
0x08030204 | OpenFileDirectly | None |
0x08040142 | DeleteFile | None |
0x08050244 | RenameFile | None |
0x08060142 | DeleteDirectory | None |
0x08070142 | DeleteDirectoryRecursively | None |
0x08080202 | CreateFile | None |
0x08090182 | CreateDirectory | None |
0x080A0244 | RenameDirectory | None |
0x080B0102 | OpenDirectory | None |
0x080C00C2 | OpenArchive | None |
0x080D0144 | ControlArchive | None |
0x080E0080 | CloseArchive | None |
0x080F0180 | FormatThisUserSaveData | None |
0x08100200 | CreateSystemSaveData | 0x4, for when the input saveID doesn't match the exheader saveID. |
0x08110040 | DeleteSystemSaveData | 0x1004, for when the input saveID doesn't match the exheader saveID. |
0x08120080 | GetFreeBytes | None |
0x08130000 | GetCardType | 0x1017 |
0x08140000 | GetSdmcArchiveResource | None |
0x08150000 | GetNandArchiveResource | None |
0x08160000 | GetSdmcFatfsError | 0x2 |
0x08170000 | IsSdmcDetected | None |
0x08180000 | IsSdmcWritable | None |
0x08190042 | GetSdmcCid | 0x2 |
0x081A0042 | GetNandCid | 0x2 |
0x081B0000 | GetSdmcSpeedInfo | 0x2 |
0x081C0000 | GetNandSpeedInfo | 0x2 |
0x081D0042 | GetSdmcLog | 0x2 |
0x081E0042 | GetNandLog | 0x2 |
0x081F0000 | ClearSdmcLog | 0x2 |
0x08200000 | ClearNandLog | 0x2 |
0x08210000 | CardSlotIsInserted | 0x1017 |
0x08220000 | CardSlotPowerOn | 0x2 |
0x08230000 | CardSlotPowerOff | 0x2 |
0x08240000 | CardSlotGetCardIFPowerStatus | 0x2 |
0x08250040 | CardNorDirectCommand | 0x2 |
0x08260080 | CardNorDirectCommandWithAddress | 0x2 |
0x08270082 | CardNorDirectRead | 0x2 |
0x082800C2 | CardNorDirectReadWithAddress | 0x2 |
0x08290082 | CardNorDirectWrite | 0x2 |
0x082A00C2 | CardNorDirectWriteWithAddress | 0x2 |
0x082B00C2 | CardNorDirectRead_4xIO | 0x2 |
0x082C0082 | CardNorDirectCpuWriteWithoutVerify | 0x2 |
0x082D0040 | CardNorDirectSectorEraseWithoutVerify | 0x2 |
0x082E0040 | GetProductInfo | 0x1005 |
0x082F0040 | GetProgramLaunchInfo | 0x1005 |
0x08300182 | CreateExtSaveData | 0xC, for when the input extdataID doesn't match the exheader extdataID. |
0x08310180 | CreateSharedExtSaveData | 0x1005 |
0x08320102 | ReadExtSaveDataIcon | 0x100D, for when the input extdataID doesn't match the exheader extdataID. |
0x08330082 | EnumerateExtSaveData | 0x1005 |
0x08340082 | EnumerateSharedExtSaveData | 0x1005 |
0x08350080 | DeleteExtSaveData | 0x100D, for when the input extdataID doesn't match the exheader extdataID. |
0x08360080 | DeleteSharedExtSaveData | 0x1005 |
0x08370040 | SetCardSpiBaudRate | 0x2 |
0x08380040 | SetCardSpiBusMode | 0x2 |
0x08390000 | SendInitializeInfoTo9 | None |
0x083A0100 | GetSpecialContentIndex | 0x1005 |
0x083B00C2 | GetLegacyRomHeader | 0x1015 |
0x083C00C2 | GetLegacyBannerData | 0x1015 |
0x083D0100 | CheckAuthorityToAccessExtSaveData | 0x44 |
0x083E00C2 | QueryTotalQuotaSize | None |
0x083F00C0 | GetExtDataBlockSize | None |
0x08400040 | AbnegateAccessRight | |
0x08410000 | DeleteSdmcRoot | 0x1005 |
0x08420040 | DeleteAllExtSaveDataOnNand | 0x1005 |
0x08430000 | InitializeCtrFileSystem | None |
0x08440000 | CreateSeed | 0x2 |
0x084500C2 | GetFormatInfo | ? |
0x08460102 | GetLegacyRomHeader2 | 0x1015 |
0x08470180 | FormatCtrCardUserSaveData | 0x6 |
0x08480042 | GetSdmcCtrRootPath | 0x100D |
0x08490040 | GetArchiveResource | ? |
0x084A0002 | ExportIntegrityVerificationSeed | 0x4000 |
0x084B0002 | ImportIntegrityVerificationSeed | 0x4000 |
0x084C0242 | FormatSaveData | 0x6, in some cases this right isn't needed however. |
0x084D0102 | GetLegacySubBannerData | 0x1015 |
0x084E0342 | UpdateSha256Context | 0x5 |
0x084F0102 | ReadSpecialFile | None |
0x08500040 | GetSpecialFileSize | None |
0x08520100 | Unknown (u32 flags, u64 extdataID) | ? |
0x08620040 | ? | ? |
0x08630000 | ? | ? |
When access rights are required for a command, at least one of the bits in the process accessinfo specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn't have access rights for the command.
File service
Command Header | Description |
---|---|
0x000100C6 | Dummy1 |
0x040100C4 | Control |
0x08010100 | OpenSubFile |
0x080200C2 | Read |
0x08030102 | Write |
0x08040000 | GetSize |
0x08050080 | SetSize |
0x08060000 | GetAttributes |
0x08070040 | SetAttributes |
0x08080000 | Close |
0x08090000 | Flush |
Directory service
Command Header | Description |
---|---|
0x000100C6 | Dummy1 |
0x040100C4 | Control |
0x08010042 | Read |
0x08020000 | Close |
Filesystem service "fs:LDR"
This service is identical to fs:USER, except FS:OpenArchive archive 0x2345678E can only be accessed with fs:LDR.
ProgramRegistry service "fs:REG"
Command Header | Description |
---|---|
0x000100C6 | Dummy1 |
0x040103C0 | Register |
0x04020040 | Unregister |
0x040300C0 | GetProgramInfo |
0x04040100 | LoadProgram |
0x04050080 | UnloadProgram |
0x04060080 | CheckHostLoadId |