Difference between revisions of "Filesystem services"
(symbolzzz) |
|||
Line 1: | Line 1: | ||
+ | = fsp-ldr = | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || MountCode | ||
+ | |- | ||
+ | | 1 || | ||
+ | |} | ||
+ | |||
= fsp-srv = | = fsp-srv = | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || MountContent | ||
|- | |- | ||
| 1 || [[#Initialize]] | | 1 || [[#Initialize]] | ||
Line 12: | Line 24: | ||
| 8 || [[#MountContent]] | | 8 || [[#MountContent]] | ||
|- | |- | ||
− | | 11 || | + | | 11 || MountBis |
|- | |- | ||
| 12 || [[#OpenBisPartition]] | | 12 || [[#OpenBisPartition]] | ||
Line 38: | Line 50: | ||
| 27 || | | 27 || | ||
|- | |- | ||
− | | 30 || | + | | 30 || OpenGameCardPartition |
|- | |- | ||
| 31 || MountGameCardPartition | | 31 || MountGameCardPartition | ||
Line 56: | Line 68: | ||
| 61 || OpenSaveDataIterator | | 61 || OpenSaveDataIterator | ||
|- | |- | ||
− | | 80 || | + | | 80 || OpenSaveDataThumbnailFile |
|- | |- | ||
| 100 || MountImageDirectory | | 100 || MountImageDirectory | ||
Line 62: | Line 74: | ||
| 110 || [[#MountContentStorage]] | | 110 || [[#MountContentStorage]] | ||
|- | |- | ||
− | | 200 || | + | | 200 || OpenHost |
|- | |- | ||
| 202 || OpenDataStorageByDataId | | 202 || OpenDataStorageByDataId | ||
Line 74: | Line 86: | ||
| 501 || [[#OpenGameCardDetectionEventNotifier]] | | 501 || [[#OpenGameCardDetectionEventNotifier]] | ||
|- | |- | ||
− | | 600 || | + | | 600 || SetCurrentPosixTime |
|- | |- | ||
− | | 601 || | + | | 601 || QuerySaveDataTotalSize |
|- | |- | ||
− | | 602 || | + | | 602 || VerifySaveData |
|- | |- | ||
− | | 603 || | + | | 603 || CorruptSaveDataForDebug |
|- | |- | ||
− | | 604 || | + | | 604 || CreatePaddingFile |
|- | |- | ||
− | | 605 || | + | | 605 || DeleteAllPaddingFiles |
|- | |- | ||
| 606 || | | 606 || | ||
Line 98: | Line 110: | ||
| 800 || | | 800 || | ||
|- | |- | ||
− | | 1000 || | + | | 1000 || SetBisRootForHost |
|- | |- | ||
| 1001 || | | 1001 || | ||
|- | |- | ||
− | | 1002 || | + | | 1002 || SetSaveDataRootPath |
|- | |- | ||
| 1003 || DisableAutoSaveDataCreation | | 1003 || DisableAutoSaveDataCreation | ||
Line 173: | Line 185: | ||
== OpenGameCardDetectionEventNotifier == | == OpenGameCardDetectionEventNotifier == | ||
This command returns a session to a port implementing the [[#IEventNotifier]] interface. | This command returns a session to a port implementing the [[#IEventNotifier]] interface. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= IStorage = | = IStorage = | ||
Line 274: | Line 276: | ||
| 0 || IsSdCardInserted | | 0 || IsSdCardInserted | ||
|- | |- | ||
− | | 1 || | + | | 1 || GetSdCardSpeedMode |
|- | |- | ||
| 2 || GetSdCardCid | | 2 || GetSdCardCid | ||
Line 286: | Line 288: | ||
| 6 || | | 6 || | ||
|- | |- | ||
− | | 101 || | + | | 100 || GetMmcCid |
+ | |- | ||
+ | | 101 || GetMmcSpeedMode | ||
|- | |- | ||
| 110 || EraseMmc | | 110 || EraseMmc | ||
|- | |- | ||
− | | 111 || | + | | 111 || GetMmcPartitionSize |
|- | |- | ||
| 112 || | | 112 || | ||
Line 300: | Line 304: | ||
| 200 || IsGameCardInserted | | 200 || IsGameCardInserted | ||
|- | |- | ||
− | | 201 || | + | | 201 || EraseGameCard |
|- | |- | ||
| 202 || GetGameCardHandle | | 202 || GetGameCardHandle | ||
Line 306: | Line 310: | ||
| 203 || [[#GetGameCardUpdatePartitionInfo]] | | 203 || [[#GetGameCardUpdatePartitionInfo]] | ||
|- | |- | ||
− | | 204 || | + | | 204 || FinalizeGameCardDriver |
|- | |- | ||
| 205 || GetGameCardAttribute | | 205 || GetGameCardAttribute | ||
Line 312: | Line 316: | ||
| 206 || GetGameCardDeviceCertificate | | 206 || GetGameCardDeviceCertificate | ||
|- | |- | ||
− | | 207 || | + | | 207 || GetGameCardAsicInfo |
|- | |- | ||
− | | 208 || | + | | 208 || GetGameCardIdSet |
|- | |- | ||
− | | 209 || | + | | 209 || WriteToGameCard |
|- | |- | ||
− | | 210 || | + | | 210 || SetVerifyWriteEnalbleFlag |
|- | |- | ||
− | | 211 || | + | | 211 || GetGameCardImageHash |
|- | |- | ||
| 212 || | | 212 || | ||
Line 332: | Line 336: | ||
| 216 || | | 216 || | ||
|- | |- | ||
− | | 300 || | + | | 300 || SetSpeedEmulationMode |
|- | |- | ||
− | | 301 || | + | | 301 || GetSpeedEmulationMode |
|} | |} | ||
Revision as of 17:20, 27 June 2017
fsp-ldr
Cmd | Name |
---|---|
0 | MountCode |
1 |
fsp-srv
Cmd | Name |
---|---|
0 | MountContent |
1 | #Initialize |
2 | MountRomFs |
7 | #MountContent7 |
8 | #MountContent |
11 | MountBis |
12 | #OpenBisPartition |
13 | InvalidateBisCache |
17 | OpenHostFileSystemImpl |
18 | MountSdCard |
19 | FormatSdCard |
21 | DeleteSaveData |
22 | CreateSaveData |
23 | CreateSystemSaveData |
24 | RegisterSaveDataAtomicDeletion |
25 | |
26 | FormatSdCardDryRun |
27 | |
30 | OpenGameCardPartition |
31 | MountGameCardPartition |
51 | MountSaveData |
52 | MountSystemSaveData |
53 | Returns an #IFileSystem. |
58 | ReadSaveDataFileSystemExtraData |
59 | |
60 | OpenSaveDataInfoReader |
61 | OpenSaveDataIterator |
80 | OpenSaveDataThumbnailFile |
100 | MountImageDirectory |
110 | #MountContentStorage |
200 | OpenHost |
202 | OpenDataStorageByDataId |
203 | Returns an #IStorage. |
400 | #OpenDeviceOperator |
500 | #OpenSdCardDetectionEventNotifier |
501 | #OpenGameCardDetectionEventNotifier |
600 | SetCurrentPosixTime |
601 | QuerySaveDataTotalSize |
602 | VerifySaveData |
603 | CorruptSaveDataForDebug |
604 | CreatePaddingFile |
605 | DeleteAllPaddingFiles |
606 | |
607 | RegisterExternalKey |
608 | UnregisterExternalKey |
609 | |
620 | |
800 | |
1000 | SetBisRootForHost |
1001 | |
1002 | SetSaveDataRootPath |
1003 | DisableAutoSaveDataCreation |
1004 | SetGlobalAccessLogMode |
1005 | GetGlobalAccessLogMode |
1006 | OutputAccessLogToSdCard |
Initialize
Word | Value |
---|---|
0 | 0x00000004 |
1 | 0x8000000E |
2 | 0x00000001 |
0-1 | Pid |
0 | Always. 0x18000001 |
1 | Always. 0 |
2 | "SCFI" |
3 | 0x00000001 |
4 | Always 0. |
MountContent7
Takes an input u32 (NCA-type) and an u64 title-id. Web-applet loads the u32 from u32_table[inparam]. Only type4 is usable with this?
Returns an #IFileSystem.
Note: web-applet strings refer to both this cmd and the below "MountContent" as "MountContent".
MountContent
Takes a type-0x19 input buffer, an in32, and an input title-id.
The in32 must be 5 if the NCA type is 0 (control).
The input buffer is the output string path from nsam GetContentNcaPath.
Returns an #IFileSystem.
May return errors when attempting to access NCA-paths for an update-title with a gamecard, when the gamecard isn't inserted. May return error 0x7D402 in some cases with update-titles. Non-val2 in32 values with NCA-type1 are unusable, even for normal titles.
OpenBisPartition
Takes a u32 partition ID, returns 0x2EE202 for partitions which do not exist, 0x320002 for partitions which cannot be opened and a valid #IStorage handle otherwise.
Returns an #IStorage that gives raw access to nand sectors containing the BCT.
MountContentStorage
Takes a #ContentStorageId. Invalid values return 0x2EE202.
Returns an #IFileSystem with NCA files. The read data from these files is identical to the data read by Content_Manager_services#ReadEntryRaw.
OpenDeviceOperator
This command returns a session to a port implementing the #IDeviceOperator interface.
OpenSdCardDetectionEventNotifier
This command returns a session to a port implementing the #IEventNotifier interface.
OpenGameCardDetectionEventNotifier
This command returns a session to a port implementing the #IEventNotifier interface.
IStorage
This is the interface for a raw device, usually a block device.
Cmd | Name | Arguments |
---|---|---|
0 | Read | Takes a type-0x46 buffer, an offset and length |
1 | Write? | ? |
2 | ? | |
3 | ? | |
4 | GetStorageSize | None |
IFileSystem
There are two main implementations of this interface:
- RomFS: Filesystem implementation statically linked in the binary. Uses an #IStorage interface as underlying raw device.
- IPC proxy: Used for all non-RomFS filesystems. In this case, actual filesystem implementation is in the FS process.
Cmd | Name |
---|---|
0 | CreateFile |
1 | DeleteFile |
2 | CreateDirectory |
3 | DeleteDirectory? |
4 | DeleteDirectoryRecursively |
5 | RenameFile |
6 | MoveDirectory? |
7 | GetEntryType |
8 | OpenFile |
9 | OpenDirectory |
10 | CommitSaveData |
11 | |
12 |
IDirectory
Cmd | Name |
---|---|
0 | ReadEntries |
1 | GetNumberOfEntries |
IFile
Cmd | Name |
---|---|
0 | Read |
1 | Write |
2 | Flush |
3 | |
4 |
ISaveDataInfoReader
IDeviceOperator
Cmd | Name |
---|---|
0 | IsSdCardInserted |
1 | GetSdCardSpeedMode |
2 | GetSdCardCid |
3 | |
4 | |
5 | |
6 | |
100 | GetMmcCid |
101 | GetMmcSpeedMode |
110 | EraseMmc |
111 | GetMmcPartitionSize |
112 | |
113 | |
114 | |
200 | IsGameCardInserted |
201 | EraseGameCard |
202 | GetGameCardHandle |
203 | #GetGameCardUpdatePartitionInfo |
204 | FinalizeGameCardDriver |
205 | GetGameCardAttribute |
206 | GetGameCardDeviceCertificate |
207 | GetGameCardAsicInfo |
208 | GetGameCardIdSet |
209 | WriteToGameCard |
210 | SetVerifyWriteEnalbleFlag |
211 | GetGameCardImageHash |
212 | |
213 | |
214 | |
215 | |
216 | |
300 | SetSpeedEmulationMode |
301 | GetSpeedEmulationMode |
GetGameCardUpdatePartitionInfo
Returns a titleID and the title-version for it.
- Output u32 with ARMS-gamecard: title-version v131162. This is the title-version for 2.1.0, which is the sysupdate included with this gamecard. Launch-day gamecards return title-version v450.
- Output u64 with ARMS-gamecard: titleID 0100000000000816.
IEventNotifier
Cmd | Name |
---|---|
0 | BindEvent |
StorageId
Value | Name |
---|---|
0 | None |
1 | Host |
2 | GameCard |
3 | NandSystem |
4 | NandUser |
5 | SdCard |
ContentStorageId
Value | Name |
---|---|
0 | NandSystem |
1 | NandUser |
2 | SdCard |