Filesystem services: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
No edit summary  | 
				No edit summary  | 
				||
| 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 |