Go to the documentation of this file.
11 #include "../kernel/event.h"
12 #include "../services/ncm_types.h"
13 #include "../services/acc.h"
14 #include "../sf/service.h"
18 #define FS_MAX_PATH 0x301
21 #define FS_SAVEDATA_CURRENT_APPLICATIONID 0
57 char name[FS_MAX_PATH];
175 FsContentStorageId_System = 0,
176 FsContentStorageId_User = 1,
177 FsContentStorageId_SdCard = 2,
178 } FsContentStorageId;
181 FsCustomStorageId_System = 0,
182 FsCustomStorageId_SdCard = 1,
187 FsImageDirectoryId_Nand = 0,
188 FsImageDirectoryId_Sd = 1,
223 FsSaveDataFlags_KeepAfterResettingSystemSaveData =
BIT(0),
224 FsSaveDataFlags_KeepAfterRefurbishment =
BIT(1),
225 FsSaveDataFlags_KeepAfterResettingSystemSaveDataWithoutUserSaveData =
BIT(2),
226 FsSaveDataFlags_NeedsSecureDelete =
BIT(3),
231 FsSaveDataMetaType_None = 0,
232 FsSaveDataMetaType_Thumbnail = 1,
233 FsSaveDataMetaType_ExtensionContext = 2,
245 FsGameCardPartition_Update = 0,
246 FsGameCardPartition_Normal = 1,
247 FsGameCardPartition_Secure = 2,
258 u32 reserved[0x38/
sizeof(
u32)];
270 FsBisPartitionId_BootPartition1Root = 0,
272 FsBisPartitionId_BootPartition2Root = 10,
274 FsBisPartitionId_UserDataRoot = 20,
275 FsBisPartitionId_BootConfigAndPackage2Part1 = 21,
276 FsBisPartitionId_BootConfigAndPackage2Part2 = 22,
277 FsBisPartitionId_BootConfigAndPackage2Part3 = 23,
278 FsBisPartitionId_BootConfigAndPackage2Part4 = 24,
279 FsBisPartitionId_BootConfigAndPackage2Part5 = 25,
280 FsBisPartitionId_BootConfigAndPackage2Part6 = 26,
281 FsBisPartitionId_CalibrationBinary = 27,
282 FsBisPartitionId_CalibrationFile = 28,
283 FsBisPartitionId_SafeMode = 29,
284 FsBisPartitionId_User = 30,
285 FsBisPartitionId_System = 31,
286 FsBisPartitionId_SystemProperEncryption = 32,
287 FsBisPartitionId_SystemProperPartition = 33,
288 FsBisPartitionId_SignedSystemPartitionOnSafeMode = 34,
310 FsPriority_Normal = 0,
311 FsPriority_Realtime = 1,
313 FsPriority_Background = 3,
349 Result fsDeleteSaveDataFileSystem(
u64 application_id);
355 Result fsIsExFatSupported(
bool* out);
365 Result fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(
void* buf,
size_t len,
FsSaveDataSpaceId save_data_space_id,
u64 saveID);
366 Result fsReadSaveDataFileSystemExtraData(
void* buf,
size_t len,
u64 saveID);
372 Result fsOpenContentStorageFileSystem(
FsFileSystem* out, FsContentStorageId content_storage_id);
383 Result fsIsSignedSystemPartitionOnSdCardValid(
bool *out);
391 Result fsDisableAutoSaveDataCreation(
void);
393 Result fsSetGlobalAccessLogMode(
u32 mode);
394 Result fsGetGlobalAccessLogMode(
u32* out_mode);
395 Result fsOutputAccessLogToSdCard(
const char *log,
size_t size);
444 Result fsFsRenameDirectory(
FsFileSystem* fs,
const char* cur_path,
const char* new_path);
471 void fsFileClose(
FsFile* f);
476 void fsDirClose(
FsDir* d);
@ FsSaveDataRank_Secondary
Secondary.
Definition: fs.h:218
@ FsSaveDataSpaceId_User
User.
Definition: fs.h:194
int64_t s64
64-bit signed integer.
Definition: types.h:28
u64 created
POSIX timestamp.
Definition: fs.h:126
@ FsSaveDataSpaceId_SafeMode
[3.0.0+] SafeMode
Definition: fs.h:199
This is nn::fssystem::ArchiveMacKey. Used by setsysGetThemeKey and setsysSetThemeKey....
Definition: fs.h:134
@ FsFileSystemQueryId_IsValidSignedSystemPartitionOnSdCard
[8.0.0+]
Definition: fs.h:305
@ FsSaveDataSpaceId_SdSystem
SdSystem.
Definition: fs.h:195
FsGameCardPartition
Definition: fs.h:244
u64 unk_x38
0 for FsSaveDataType_System/FsSaveDataType_Account.
Definition: fs.h:75
@ FsFileSystemType_RegisteredUpdate
[4.0.0+] RegisteredUpdate
Definition: fs.h:299
u64 system_save_data_id
FsSaveDataAttribute::system_save_data_id.
Definition: fs.h:117
Result fsSaveDataInfoReaderRead(FsSaveDataInfoReader *s, FsSaveDataInfo *buf, size_t max_entries, s64 *total_entries)
Read FsSaveDataInfo data into the buf array.
NcmStorageId
StorageId.
Definition: ncm_types.h:12
Result fsOpen_TemporaryStorage(FsFileSystem *out)
Wrapper for fsOpenSaveDataFileSystem, for opening TemporaryStorage.
u64 unk_x30
0 for FsSaveDataType_System/FsSaveDataType_Account.
Definition: fs.h:74
Result fsOpenHostFileSystemWithOption(FsFileSystem *out, const char *path, u32 flags)
[9.0.0+]
@ FsMountHostOptionFlag_None
Host filesystem will be case insensitive.
Definition: fs.h:318
FsDirEntryType
Returned by fsFsGetEntryType.
Definition: fs.h:139
u64 unk_x28
0 for FsSaveDataType_System/FsSaveDataType_Account.
Definition: fs.h:73
Result fsFsCleanDirectoryRecursively(FsFileSystem *fs, const char *path)
[3.0.0+]
@ FsSaveDataType_Bcat
Bcat.
Definition: fs.h:208
u8 save_data_type
FsSaveDataType
Definition: fs.h:114
SaveDataAttribute.
Definition: fs.h:65
@ FsOperationId_ClearSignature
Clears signature for supported file/storage.
Definition: fs.h:263
uint8_t u8
8-bit unsigned integer.
Definition: types.h:19
s8 type
See FsDirEntryType.
Definition: fs.h:59
Result fsOpenSdCardFileSystem(FsFileSystem *out)
Do not call this directly, see fs_dev.h.
@ FsOperationId_InvalidateCache
Invalidates cache for supported file/storage.
Definition: fs.h:264
Kernel-mode event structure.
Definition: event.h:13
@ FsSaveDataSpaceId_System
System.
Definition: fs.h:193
Result fsOpen_SystemSaveData(FsFileSystem *out, FsSaveDataSpaceId save_data_space_id, u64 system_save_data_id, AccountUid uid)
Wrapper for fsOpenSaveDataFileSystemBySystemSaveDataId, for opening SystemSaveData.
u8 save_data_space_id
FsSaveDataSpaceId
Definition: fs.h:105
@ FsFileSystemType_ApplicationPackage
ApplicationPackage.
Definition: fs.h:298
Result fsFileOperateRange(FsFile *f, FsOperationId op_id, s64 off, s64 len, FsRangeInfo *out)
[4.0.0+]
FsSaveDataFlags
SaveDataFlags.
Definition: fs.h:222
@ FsSaveDataSpaceId_SdUser
[4.0.0+] SdUser
Definition: fs.h:197
AccountUid uid
FsSave::userID.
Definition: fs.h:116
@ FsGameCardAttribute_HistoryEraseFlag
Causes NS to throw an error on attempt to load the cartridge.
Definition: fs.h:238
void fsSetPriority(FsPriority prio)
[5.0.0+] Configures the FsPriority of all filesystem commands issued within the current thread.
Account UserId.
Definition: acc.h:25
@ FsMountHostOptionFlag_PseudoCaseSensitive
Host filesystem will be pseudo case sensitive.
Definition: fs.h:319
Result fsOpenFileSystemWithPatch(FsFileSystem *out, u64 id, FsFileSystemType fsType)
[2.0.0+], like OpenFileSystemWithId but without content path.
@ FsSaveDataSpaceId_Temporary
[3.0.0+] Temporary
Definition: fs.h:196
Result fsOpen_CacheStorage(FsFileSystem *out, u64 application_id, u16 save_data_index)
Wrapper for fsOpenSaveDataFileSystem, for opening CacheStorage.
u16 save_data_index
SaveDataIndex.
Definition: fs.h:120
FsOpenMode
For use with fsFsOpenFile.
Definition: fs.h:145
FsFileSystemType
FileSystemType.
Definition: fs.h:292
u64 save_data_id
SaveDataId.
Definition: fs.h:112
u64 available_size
AvailableSize.
Definition: fs.h:102
s64 save_data_size
Size of the save data.
Definition: fs.h:100
Result fsOpenCustomStorageFileSystem(FsFileSystem *out, FsCustomStorageId custom_storage_id)
[7.0.0+]
@ FsDirOpenMode_ReadFiles
Enable reading file entries.
Definition: fs.h:159
Result fsOpen_BcatSaveData(FsFileSystem *out, u64 application_id)
Wrapper for fsOpenSaveDataFileSystem, for opening BcatSaveData.
SaveDataCreationInfo.
Definition: fs.h:99
s64 journal_size
Journal size of the save data.
Definition: fs.h:101
Result fsInitialize(void)
Initialize fsp-srv. Used automatically during app startup.
@ FsSaveDataType_Cache
[3.0.0+] Cache
Definition: fs.h:211
@ FsOpenMode_Write
Open for writing.
Definition: fs.h:147
FsSaveDataSpaceId
SaveDataSpaceId.
Definition: fs.h:192
@ FsCreateOption_BigFile
Creates a ConcatenationFile (dir with archive bit) instead of file.
Definition: fs.h:153
@ FsOperationId_QueryRange
Retrieves information on data for supported file/storage.
Definition: fs.h:265
FsReadOption
For use with fsFileRead.
Definition: fs.h:164
Result fsOpenFileSystemWithId(FsFileSystem *out, u64 id, FsFileSystemType fsType, const char *contentPath)
works on all firmwares, id is ignored on [1.0.0]
u8 is_valid
0x1 when the timestamps are set.
Definition: fs.h:129
@ FsReadOption_None
No option.
Definition: fs.h:165
u32 pad_x24
Padding.
Definition: fs.h:72
uint32_t u32
32-bit unsigned integer.
Definition: types.h:21
SaveDataInfo.
Definition: fs.h:111
u8 unk
0 for FsSaveDataType_System.
Definition: fs.h:106
FsFileSystemQueryId
FileSystemQueryId.
Definition: fs.h:303
Result fsOpen_SystemBcatSaveData(FsFileSystem *out, u64 system_save_data_id)
Wrapper for fsOpenSaveDataFileSystemBySystemSaveDataId, for opening SystemBcatSaveData.
int8_t s8
8-bit signed integer.
Definition: types.h:25
@ FsGameCardAttribute_AutoBootFlag
Causes the cartridge to automatically start on bootup.
Definition: fs.h:237
Result fsOpenReadOnlySaveDataFileSystem(FsFileSystem *out, FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr)
[2.0.0+].
@ FsFileSystemType_ContentMeta
ContentMeta.
Definition: fs.h:296
Result fsOpen_SaveDataReadOnly(FsFileSystem *out, u64 application_id, AccountUid uid)
Wrapper for fsOpenReadOnlySaveDataFileSystem.
u8 save_data_space_id
FsSaveDataSpaceId
Definition: fs.h:113
u64 system_save_data_id
SystemSaveDataId, 0 for FsSaveDataType_Account.
Definition: fs.h:68
uint64_t u64
64-bit unsigned integer.
Definition: types.h:22
Result fsGetRightsIdAndKeyGenerationByPath(const char *path, u8 *out_key_generation, FsRightsId *out_rights_id)
Retrieves the rights id and key generation corresponding to the content path. Only available on [3....
@ FsOpenMode_Read
Open for reading.
Definition: fs.h:146
@ FsGameCardAttribute_DifferentRegionCupToTerraDeviceFlag
[9.0.0+] DifferentRegionCupToTerraDeviceFlag
Definition: fs.h:240
Result fsOpen_DeviceSaveData(FsFileSystem *out, u64 application_id)
Wrapper for fsOpenSaveDataFileSystem, for opening DeviceSaveData.
@ FsSaveDataType_System
System.
Definition: fs.h:206
FsGameCardAttribute
Definition: fs.h:236
@ FsDirEntryType_File
Entry is a file.
Definition: fs.h:141
FsSaveDataRank
SaveDataRank.
Definition: fs.h:216
u8 save_data_type
FsSaveDataType
Definition: fs.h:69
u32 Result
Function error code result type.
Definition: types.h:44
@ FsFileSystemQueryId_SetConcatenationFileAttribute
[4.0.0+]
Definition: fs.h:304
@ FsWriteOption_Flush
Forces a flush after write.
Definition: fs.h:171
@ FsDirEntryType_Dir
Entry is a directory.
Definition: fs.h:140
u64 size
Raw saveimage size.
Definition: fs.h:119
FsOperationId
Definition: fs.h:261
FsDirOpenMode
For use with fsFsOpenDirectory.
Definition: fs.h:157
Result fsOpenFileSystem(FsFileSystem *out, FsFileSystemType fsType, const char *contentPath)
Mount requested filesystem type from content file.
u64 accessed
POSIX timestamp.
Definition: fs.h:128
u64 owner_id
ProgramId of the owner of this save data. 0 for FsSaveDataType_System.
Definition: fs.h:103
FsPriority
FsPriority.
Definition: fs.h:309
u8 save_data_rank
FsSaveDataRank
Definition: fs.h:70
Directory entry.
Definition: fs.h:56
Result fsDeleteSaveDataFileSystemBySaveDataSpaceId(FsSaveDataSpaceId save_data_space_id, u64 saveID)
[2.0.0+]
@ FsDirOpenMode_ReadDirs
Enable reading directory entries.
Definition: fs.h:158
@ FsFileSystemType_ContentManual
ContentManual.
Definition: fs.h:295
FsMountHostOption
For use with fsOpenHostFileSystemWithOption.
Definition: fs.h:317
Result fsStorageOperateRange(FsStorage *s, FsOperationId op_id, s64 off, s64 len, FsRangeInfo *out)
[4.0.0+]
u64 modified
POSIX timestamp.
Definition: fs.h:127
u32 speed_emulation_type
Contains bitflags describing how data is emulated.
Definition: fs.h:257
Result fsDeleteSaveDataFileSystemBySaveDataAttribute(FsSaveDataSpaceId save_data_space_id, const FsSaveDataAttribute *attr)
[4.0.0+]
@ FsFileSystemType_ContentData
ContentData.
Definition: fs.h:297
Result fsFsGetFileTimeStampRaw(FsFileSystem *fs, const char *path, FsTimeStampRaw *out)
[3.0.0+]
FsSaveDataMetaType
SaveDataMetaType.
Definition: fs.h:230
@ FsGameCardPartition_Logo
[4.0.0+]
Definition: fs.h:248
s64 file_size
File size.
Definition: fs.h:61
@ FsWriteOption_None
No option.
Definition: fs.h:170
void fsExit(void)
Exit fsp-srv. Used automatically during app exit.
@ FsSaveDataType_Device
Device.
Definition: fs.h:209
Result fsOpen_SaveData(FsFileSystem *out, u64 application_id, AccountUid uid)
Wrapper for fsOpenSaveDataFileSystem.
Result fsGetProgramIndexForAccessLog(u32 *out_program_index, u32 *out_program_count)
Only available on [7.0.0+].
Result fsOpenDataStorageByDataId(FsStorage *out, u64 dataId, NcmStorageId storageId)
<[3.0.0+]
Result fsFsQueryEntry(FsFileSystem *fs, void *out, size_t out_size, const void *in, size_t in_size, const char *path, FsFileSystemQueryId query_id)
[4.0.0+]
u16 save_data_index
SaveDataIndex.
Definition: fs.h:71
Result fsExtendSaveDataFileSystem(FsSaveDataSpaceId save_data_space_id, u64 saveID, s64 dataSize, s64 journalSize)
[3.0.0+]
@ FsFileSystemType_ContentControl
ContentControl.
Definition: fs.h:294
Result fsFsSetConcatenationFileAttribute(FsFileSystem *fs, const char *path)
Uses fsFsQueryEntry to set the archive bit on the specified absolute directory path.
@ FsOpenMode_Append
Append file.
Definition: fs.h:148
@ FsSaveDataType_Account
Account.
Definition: fs.h:207
@ FsSaveDataType_Temporary
[3.0.0+] Temporary
Definition: fs.h:210
@ FsSaveDataType_SystemBcat
[4.0.0+] SystemBcat
Definition: fs.h:212
@ FsDirOpenMode_NoFileSize
Causes result entries to not contain filesize information (always 0).
Definition: fs.h:160
@ FsGameCardAttribute_RepairToolFlag
[4.0.0+] Indicates that this gamecard is a repair tool.
Definition: fs.h:239
u32 flags
FsSaveDataFlags
Definition: fs.h:104
#define BIT(n)
Creates a bitmask from a bit number.
Definition: types.h:54
Service object structure.
Definition: service.h:13
u64 application_id
ApplicationId for FsSaveDataType_Account.
Definition: fs.h:118
FsImageDirectoryId
ImageDirectoryId.
Definition: fs.h:186
Result fsFsIsValidSignedSystemPartitionOnSdCard(FsFileSystem *fs, bool *out)
Wrapper for fsFsQueryEntry with FsFileSystemQueryId_IsValidSignedSystemPartitionOnSdCard.
@ FsFileSystemType_Logo
Logo.
Definition: fs.h:293
@ FsSaveDataSpaceId_All
Pseudo value for fsOpenSaveDataInfoReader().
Definition: fs.h:201
AccountUid uid
AccountUid for the user-specific savedata to access, otherwise 0 for common savedata.
Definition: fs.h:67
@ FsGameCardAttribute_DifferentRegionCupToGlobalDeviceFlag
[9.0.0+] DifferentRegionCupToGlobalDeviceFlag
Definition: fs.h:241
u8 save_data_rank
FsSaveDataRank
Definition: fs.h:121
Result fsGetRightsIdByPath(const char *path, FsRightsId *out_rights_id)
Retrieves the rights id corresponding to the content path. Only available on [2.0....
Service * fsGetServiceSession(void)
Gets the Service object for the actual fsp-srv service session.
u64 application_id
ApplicationId of the savedata to access when accessing other programs' savedata via SaveData,...
Definition: fs.h:66
@ FsSaveDataRank_Primary
Primary.
Definition: fs.h:217
FsSaveDataType
SaveDataType.
Definition: fs.h:205
@ FsOperationId_Clear
Fill range with zero for supported file/storage.
Definition: fs.h:262
uint16_t u16
16-bit unsigned integer.
Definition: types.h:20
FsBisPartitionId
BisPartitionId.
Definition: fs.h:269
FsWriteOption
For use with fsFileWrite.
Definition: fs.h:169
Result fsOpenDataFileSystemByProgramId(FsFileSystem *out, u64 program_id)
[3.0.0+]
@ FsSaveDataSpaceId_ProperSystem
[3.0.0+] ProperSystem
Definition: fs.h:198
FsCreateOption
For use with fsFsCreateFile.
Definition: fs.h:152
u32 aes_ctr_key_type
Contains bitflags describing how data is AES encrypted.
Definition: fs.h:256