Difference between revisions of "Filesystem services"
Jump to navigation
Jump to search
(→Errors) |
|||
Line 551: | Line 551: | ||
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. The exheader accessinfo field is all-zero for most applications. | 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. The exheader accessinfo field is all-zero for most applications. | ||
+ | |||
+ | Each session for fs:USER has separate permissions, initially these are set to all-zero for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via [[FS:Initialize]](loaded from the user process exheader). | ||
=File service= | =File service= |
Revision as of 00:23, 9 April 2014
Filesystem service "fs:USER"
Command Header | Available since system version | 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 | Each archive idcode has separate accessinfo bitmasks, if any. | |
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 | |
0x08510242 | 3.0.0-5 | ? | ? |
0x08520100 | 3.0.0-5 | Unknown (u32 flags, u64 extdataID) | ? |
0x08530142 | 3.0.0-5 | ? | ? |
0x0854.... | 3.0.0-5 | ? | ? |
0x08550102 | 3.0.0-5 | ? | ? |
0x0856.... | 3.0.0-5 | ? | ? |
0x0857.... | 3.0.0-5 | ? | ? |
0x08580000 | 3.0.0-5 | GetMovableSedHashedKeyYRandomData | ? |
0x0859.... | 3.0.0-5 | ? | ? |
0x085A.... | 3.0.0-5 | ? | ? |
0x085B.... | 3.0.0-5 | ? | ? |
0x085C.... | 3.0.0-5 | ? | ? |
0x085D.... | 3.0.0-5 | ? | ? |
0x085E.... | 3.0.0-5 | ? | ? |
0x085F.... | 3.0.0-5 | ? | ? |
0x08600042 | 3.0.0-5 | ? | ? |
0x08610042 | 3.0.0-5 | ? | ? |
0x08620040 | 3.0.0-5 | ? | ? |
0x08630000 | 3.0.0-5 | ? | ? |
0x08640000 | 3.0.0-5 | Stubbed, this returns an error. | None |
0x08650140 | 4.0.0-7 | Unknown, this is used with Anti Savegame Restore. | ? |
0x086600C0 | 4.0.0-7 | Unknown, this is used with Anti Savegame Restore. | ? |
0x086700C4 | 4.0.0-7 | ? | ? |
0x08680000 | 4.0.0-7 | This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by GetProgramLaunchInfo. This then writes the u8 to response-word[2]. This is used with Anti Savegame Restore. | None |
0x08690000 | 4.0.0-7 | Stubbed, this returns an error. | None |
0x086A0082 | 4.0.0-7 | This is a wrapper for FSPXI command 0x00550082. | None |
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. The exheader accessinfo field is all-zero for most applications.
Each session for fs:USER has separate permissions, initially these are set to all-zero for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via FS:Initialize(loaded from the user process exheader).
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 |