Filesystem services: Difference between revisions
No edit summary |
|||
(45 intermediate revisions by 5 users not shown) | |||
Line 14: | Line 14: | ||
== OpenCodeFileSystem == | == OpenCodeFileSystem == | ||
Takes an [[NCM_services#ProgramId|ProgramId]] | Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]]. | ||
[10.0.0+] This now takes an additional type-0x1A output buffer. | |||
[16.0.0+] This now takes an additional input [[#ContentAttributes]]. | |||
[17.0.0+] This now takes a type-0x6 output buffer instead of a type-0x1A output buffer. | |||
== IsArchivedProgram == | == IsArchivedProgram == | ||
Takes an u64 ProcessId. Returns a bool (1 if the process id's [[# | Takes an input u64 ProcessId. Returns a bool (1 if the process id's [[#FspPath]] ends in ".nca"). | ||
== SetCurrentProcess == | == SetCurrentProcess == | ||
Takes | Takes an input u64 ProcessId. No output. | ||
= fsp-pr = | = fsp-pr = | ||
Line 35: | Line 41: | ||
| 2 || [4.0.0+] [[#SetCurrentProcess]] | | 2 || [4.0.0+] [[#SetCurrentProcess]] | ||
|- | |- | ||
| 256 || [[#SetEnabledProgramVerification]] | | 256 || [1.0.0-9.2.0] [[#SetEnabledProgramVerification]] | ||
|} | |} | ||
Line 50: | Line 56: | ||
When the flag is zero, it will set ret=0 instead of ret={error} when verifying the fixed-key [[NPDM]] ACID signature fails. This also skips verifying the [[NCA_Format|NCA Header]] signature using the ACID key. Note that if verifying the fixed-key ACID signature is successful, and verifying the ACID-key NCA header signature fails, it will throw an error and abort. | When the flag is zero, it will set ret=0 instead of ret={error} when verifying the fixed-key [[NPDM]] ACID signature fails. This also skips verifying the [[NCA_Format|NCA Header]] signature using the ACID key. Note that if verifying the fixed-key ACID signature is successful, and verifying the ACID-key NCA header signature fails, it will throw an error and abort. | ||
[10.0.0+] This was moved to [[Loader_services|Loader]]. | |||
= fsp-srv = | = fsp-srv = | ||
Line 66: | Line 74: | ||
| 7 || [2.0.0+] [[#OpenFileSystemWithPatch]] | | 7 || [2.0.0+] [[#OpenFileSystemWithPatch]] | ||
|- | |- | ||
| 8 || [ | | 8 || [16.0.0+] [[#OpenFileSystemWithIdObsolete]] ([2.0.0-15.0.1] OpenFileSystemWithId) | ||
|- | |- | ||
| 9 || [3.0.0+] OpenDataFileSystemByProgramId | | 9 || [3.0.0+] OpenDataFileSystemByProgramId | ||
|- | |||
| 10 || [16.0.0+] [[#OpenFileSystemWithId]] | |||
|- | |- | ||
| 11 || [[#OpenBisFileSystem]] | | 11 || [[#OpenBisFileSystem]] | ||
Line 111: | Line 121: | ||
|- | |- | ||
| 36 || [9.0.0+] OpenHostFileSystemWithOption | | 36 || [9.0.0+] OpenHostFileSystemWithOption | ||
|- | |||
| 37 || [14.0.0+] CreateSaveDataFileSystemWithCreationInfo2 | |||
|- | |- | ||
| 51 || [[#OpenSaveDataFileSystem]] | | 51 || [[#OpenSaveDataFileSystem]] | ||
Line 116: | Line 128: | ||
| 52 || [[#OpenSaveDataFileSystemBySystemSaveDataId]] | | 52 || [[#OpenSaveDataFileSystemBySystemSaveDataId]] | ||
|- | |- | ||
| 53 || [2.0.0+] OpenReadOnlySaveDataFileSystem | | 53 || [2.0.0+] [[#OpenReadOnlySaveDataFileSystem]] | ||
|- | |- | ||
| 57 || [3.0.0+] [[#ReadSaveDataFileSystemExtraDataBySaveDataSpaceId]] | | 57 || [3.0.0+] [[#ReadSaveDataFileSystemExtraDataBySaveDataSpaceId]] | ||
Line 142: | Line 154: | ||
| 69 || [8.0.0+] ReadSaveDataFileSystemExtraDataBySaveDataAttribute | | 69 || [8.0.0+] ReadSaveDataFileSystemExtraDataBySaveDataAttribute | ||
|- | |- | ||
| 70 || [8.0.0+] | | 70 || [8.0.0+] WriteSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute | ||
|- | |||
| 71 || [10.0.0+] ReadSaveDataFileSystemExtraDataWithMaskBySaveDataAttribute | |||
|- | |- | ||
| 80 || OpenSaveDataMetaFile | | 80 || OpenSaveDataMetaFile | ||
Line 155: | Line 169: | ||
|- | |- | ||
| 85 || [9.0.0+] [[#OpenSaveDataTransferManagerForSaveDataRepair]] | | 85 || [9.0.0+] [[#OpenSaveDataTransferManagerForSaveDataRepair]] | ||
|- | |||
| 86 || [10.0.0+] [[#OpenSaveDataMover]] | |||
|- | |||
| 87 || [11.0.0+] [[#OpenSaveDataTransferManagerForRepair]] | |||
|- | |- | ||
| 100 || OpenImageDirectoryFileSystem | | 100 || OpenImageDirectoryFileSystem | ||
|- | |||
| 101 || [11.0.0+] OpenBaseFileSystem | |||
|- | |||
| 102 || [12.0.0+] FormatBaseFileSystem | |||
|- | |- | ||
| 110 || [[#OpenContentStorageFileSystem]] | | 110 || [[#OpenContentStorageFileSystem]] | ||
|- | |- | ||
| 120 || [6.0.0 | | 120 || [6.0.0-9.2.0] [[#OpenCloudBackupWorkStorageFileSystem]] | ||
|- | |- | ||
| 130 || [7.0.0+] [[#OpenCustomStorageFileSystem]] | | 130 || [7.0.0+] [[#OpenCustomStorageFileSystem]] | ||
Line 175: | Line 197: | ||
|- | |- | ||
| 205 || [7.0.0+] [[#OpenDataStorageWithProgramIndex]] | | 205 || [7.0.0+] [[#OpenDataStorageWithProgramIndex]] | ||
|- | |||
| 206 || [13.0.0+] OpenDataStorageByPath | |||
|- | |||
| 207 || [15.0.0+] OpenDataFileSystemByDataId | |||
|- | |- | ||
| 400 || [[#OpenDeviceOperator]] | | 400 || [[#OpenDeviceOperator]] | ||
Line 206: | Line 232: | ||
| 608 || [2.0.0+] UnregisterAllExternalKey | | 608 || [2.0.0+] UnregisterAllExternalKey | ||
|- | |- | ||
| 609 || [2.0.0 | | 609 || [2.0.0-15.0.1] GetRightsIdByPath | ||
|- | |- | ||
| 610 || [3.0.0+] GetRightsIdAndKeyGenerationByPath | | 610 || [3.0.0+] GetRightsIdAndKeyGenerationByPath | ||
Line 223: | Line 249: | ||
|- | |- | ||
| 617 || [7.0.0+] UnregisterExternalKey | | 617 || [7.0.0+] UnregisterExternalKey | ||
|- | |||
| 618 || [17.0.0+] GetProgramId | |||
|- | |- | ||
| 620 || [2.0.0+] [[#SetSdCardEncryptionSeed]] | | 620 || [2.0.0+] [[#SetSdCardEncryptionSeed]] | ||
Line 246: | Line 274: | ||
| 810 || [7.0.0+] RegisterProgramIndexMapInfo | | 810 || [7.0.0+] RegisterProgramIndexMapInfo | ||
|- | |- | ||
| 1000 || SetBisRootForHost | | 1000 || [1.0.0-9.2.0] SetBisRootForHost | ||
|- | |- | ||
| 1001 || [[#SetSaveDataSize]] | | 1001 || [[#SetSaveDataSize]] | ||
Line 274: | Line 302: | ||
| 1013 || [9.0.0+] UnsetSaveDataRootPath | | 1013 || [9.0.0+] UnsetSaveDataRootPath | ||
|- | |- | ||
| 1100 || [4.0.0+] | | 1014 || [10.0.0-10.2.0] OutputMultiProgramTagAccessLog | ||
|- | |||
| 1016 || [11.0.0+] FlushAccessLogOnSdCard | |||
|- | |||
| 1017 || [11.0.0+] OutputApplicationInfoAccessLog | |||
|- | |||
| 1018 || [13.0.0+] SetDebugOption | |||
|- | |||
| 1019 || [13.0.0+] UnsetDebugOption | |||
|- | |||
| 1020 || [18.0.0+] OpenMemoryStressor | |||
|- | |||
| 1100 || [4.0.0-17.0.1] OverrideSaveDataTransferTokenSignVerificationKey | |||
|- | |||
| 1101 || [18.0.0+] OverrideSaveDataTransferKeyForTest | |||
|- | |- | ||
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset | | 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset | ||
|- | |- | ||
| 1200 || [6.0.0+] [[#OpenMultiCommitManager]] | | 1200 || [6.0.0+] [[#OpenMultiCommitManager]] | ||
|- | |||
| 1300 || [10.0.0+] [[#OpenBisWiper]] | |||
|- | |||
| 1400 || [15.0.0+] NotifyErrorContextServiceReady | |||
|} | |} | ||
Line 295: | Line 341: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! AccessibilityType || | ! AccessibilityType || Name || Mask || Permission || Used by | ||
|- | |- | ||
| 0x0 || | | 0x0 || CanMountLogo || 0x8000000000000801 || R- || [[#OpenFileSystem]], [[#OpenFileSystemWithPatch]], [[#OpenFileSystemWithId]] | ||
|- | |- | ||
| 0x1 || | | 0x1 || CanMountContentMeta || 0x8000000000000801 || R- || [[#OpenFileSystem]], [[#OpenFileSystemWithPatch]], [[#OpenFileSystemWithId]] | ||
|- | |- | ||
| 0x2 || | | 0x2 || CanMountContentControl || 0x8000000000000801 || R- || [[#OpenFileSystem]], [[#OpenFileSystemWithPatch]], [[#OpenFileSystemWithId]] | ||
|- | |- | ||
| 0x3 || | | 0x3 || CanMountContentManual || 0x8000000000000801 || R- || [[#OpenFileSystem]], [[#OpenFileSystemWithPatch]], [[#OpenFileSystemWithId]] | ||
|- | |- | ||
| 0x4 || | | 0x4 || CanMountContentData || 0x8000000000000801 || R- || [[#OpenFileSystem]], [[#OpenFileSystemWithPatch]], [[#OpenFileSystemWithId]] | ||
|- | |- | ||
| 0x5 || | | 0x5 || CanMountApplicationPackage || 0x8000000000000801 || R- || [[#OpenFileSystem]], [[#OpenFileSystemWithPatch]], [[#OpenFileSystemWithId]] | ||
|- | |- | ||
| 0x6 || | | 0x6 || CanMountSaveDataStorage || 0x8000000000000000 || RW || | ||
|- | |- | ||
| 0x7 || | | 0x7 || CanMountContentStorage || 0x8000000000000800 || RW || [[#OpenContentStorageFileSystem]] | ||
|- | |- | ||
| 0x8 || | | 0x8 || CanMountImageAndVideoStorage ||0x8000000000001000 || RW || [[#OpenImageDirectoryFileSystem]] | ||
|- | |- | ||
| 0x9 || | | 0x9 || CanMountCustomStorage0 || 0x8000000000000000 || RW || OpenCustomStorageFileSystem | ||
|- | |- | ||
| 0xA || | | 0xA || CanMountBisCalibrationFile || 0x8000000000000084 || RW || [[#OpenBisFileSystem]] | ||
|- | |- | ||
| 0xB || | | 0xB || CanMountBisSafeMode || 0x8000000000000080 || RW || [[#OpenBisFileSystem]] | ||
|- | |- | ||
| 0xC || | | 0xC || CanMountBisUser || 0x8000000000008080 || RW || [[#OpenBisFileSystem]] | ||
|- | |- | ||
| 0xD || | | 0xD || CanMountBisSystem || 0x8000000000008080 || RW || [[#OpenBisFileSystem]] | ||
|- | |- | ||
| 0xE || | | 0xE || CanMountBisSystemProperEncryption || 0x8000000000000080 || RW || [[#OpenBisFileSystem]] | ||
|- | |- | ||
| 0xF || | | 0xF || CanMountBisSystemProperPartition || 0x8000000000000080 || RW || [[#OpenBisFileSystem]] | ||
|- | |- | ||
| 0x10 || | | 0x10 || CanMountSdCard || 0xC000000000200000 || RW || [[#OpenSdCardFileSystem]] | ||
|- | |- | ||
| 0x11 || | | 0x11 || CanMountGameCard || 0x8000000000000010 || R- || [[#OpenGameCardFileSystem]] | ||
|- | |- | ||
| 0x12 || | | 0x12 || CanMountDeviceSaveData || 0x8000000000040020 || RW || [[#OpenSaveDataFileSystem]] | ||
|- | |- | ||
| 0x13 || | | 0x13 || CanMountSystemSaveData || 0x8000000000000028 || RW || [[#OpenSaveDataFileSystemBySystemSaveDataId]] | ||
|- | |- | ||
| 0x14 || | | 0x14 || CanMountOthersSaveData || 0x8000000000000020 || RW || [[#OpenSaveDataFileSystem]] | ||
|- | |- | ||
| 0x15 || | | 0x15 || CanMountOthersSystemSaveData || 0x8000000000000020 || RW || [[#OpenSaveDataFileSystemBySystemSaveDataId]] | ||
|- | |- | ||
| 0x16 || | | 0x16 || CanOpenBisPartitionBootPartition1Root || 0x8000000000010082 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x17 || | | 0x17 || CanOpenBisPartitionBootPartition2Root || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x18 || | | 0x18 || CanOpenBisPartitionUserDataRoot || 0x8000000000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x19 || | | 0x19 || CanOpenBisPartitionBootConfigAndPackage2Part1 || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x1A || | | 0x1A || CanOpenBisPartitionBootConfigAndPackage2Part2 || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x1B || | | 0x1B || CanOpenBisPartitionBootConfigAndPackage2Part3 || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x1C || | | 0x1C || CanOpenBisPartitionBootConfigAndPackage2Part4 || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x1D || | | 0x1D || CanOpenBisPartitionBootConfigAndPackage2Part5 || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x1E || | | 0x1E || CanOpenBisPartitionBootConfigAndPackage2Part6 || 0x8000000000010080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x1F || | | 0x1F || CanOpenBisPartitionCalibrationBinary || 0x8000000000000084 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x20 || | | 0x20 || CanOpenBisPartitionCalibrationFile || 0x8000000000000084 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x21 || | | 0x21 || CanOpenBisPartitionSafeMode || 0x8000000000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x22 || | | 0x22 || CanOpenBisPartitionUser || 0x8000000000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x23 || | | 0x23 || CanOpenBisPartitionSystem || 0x8000000000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x24 || | | 0x24 || CanOpenBisPartitionSystemProperEncryption || 0x8000000000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x25 || | | 0x25 || CanOpenBisPartitionSystemProperPartition || 0x8000000000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| 0x26 || | | 0x26 || CanOpenBisPartitionDeviceTreeBlob || 0x8000002000000080 || RW || [[#OpenBisStorage]] | ||
|- | |- | ||
| [3.0.0+] 0x27 || | | [3.0.0+] 0x27 || CanOpenSdCardStorage || 0xC000000000200000 || RW || | ||
|- | |- | ||
| [3.0.0+] 0x28 || | | [3.0.0+] 0x28 || CanOpenGameCardStorage || 0x8000000000000100 || RW || [[#OpenGameCardStorage]], [[#EraseGameCard]] (bit1), [[#WriteToGameCard]] (bit1), [[#GetGameCardErrorInfo]] (bit1), [[#EraseAndWriteParamDirectly]] (bit1), [[#ReadParamDirectly]] (bit1), [[#ForceEraseGameCard]] (bit1) | ||
|- | |- | ||
| [4.0.0+] 0x29 || | | [4.0.0+] 0x29 || CanMountSystemDataPrivate || 0x8000000000100008 || R- || [[#OpenFileSystem]], [[#OpenDataStorageByDataId]] | ||
|- | |- | ||
| [5.0.0+] 0x2A || | | [5.0.0+] 0x2A || CanMountHost || 0xC000000000400000 || RW || [[#OpenHostFileSystem]] | ||
|- | |- | ||
| [6.0.0+] 0x2B || | | [6.0.0+] 0x2B || CanMountRegisteredUpdatePartition || 0x8000000000010000 || R- || [[#OpenRegisteredUpdatePartition]] | ||
|- | |- | ||
| [7.0.0+] 0x2C || | | [7.0.0+] 0x2C || CanOpenSaveDataInternalStorage || 0x8000000000000000 || RW || [[#OpenSaveDataInternalStorageFileSystem]] | ||
|- | |- | ||
| [7.0.0+] 0x2D || | | [7.0.0+] 0x2D || CanMountTemporaryDirectory || 0xC000000000000000 || RW || | ||
|- | |||
| [11.0.0+] 0x2E || CanMountAllBaseFilesystem || 0x8000000000000000 || RW || OpenBaseFileSystem | |||
|- | |||
| [15.0.0+] 0x2F || CanNotMount || 0x0000000000000000 || -- || OpenCustomStorageFileSystem | |||
|} | |} | ||
Line 393: | Line 443: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! OperationType || | ! OperationType || Name || Mask || Used by | ||
|- | |||
| 0x0 || CanInvalidateBisCache || 0x8000000000000080 || [[#InvalidateBisCache]] | |||
|- | |- | ||
| | | 0x1 || CanEraseMmc || 0x8000000000000080 || EraseMmc | ||
|- | |- | ||
| | | 0x2 || CanGetGameCardDeviceCertificate || 0x8000000000000010 || GetGameCardDeviceCertificate | ||
|- | |- | ||
| | | 0x3 || CanGetGameCardIdSet || 0x8000000000000010 || GetGameCardIdSet | ||
|- | |- | ||
| | | 0x4 || CanFinalizeGameCardDriver || 0x8000000000000200 || FinalizeGameCardDriver | ||
|- | |- | ||
| | | 0x5 || CanGetGameCardAsicInfo || 0x8000000000000200 || GetGameCardAsicInfo | ||
|- | |- | ||
| | | 0x6 || CanGetGameCardAsicCertificate || 0x8000000000000200 || GetGameCardAsicCertificate | ||
|- | |- | ||
| | | 0x7 || CanCreateSaveData || 0x8000000000002020 || [[#CreateSaveDataFileSystem]] | ||
|- | |- | ||
| | | 0x8 || CanDeleteSaveData || 0x8000000000000060 || [[#DeleteSaveDataFileSystem]], RegisterSaveDataFileSystemAtomicDeletion | ||
|- | |- | ||
| | | 0x9 || CanCreateSystemSaveData || 0x8000000000000028 || CreateSaveDataFileSystemBySystemSaveDataId | ||
|- | |- | ||
| | | 0xA || CanCreateOthersSystemSaveData || 0x8000000000000020 || CreateSaveDataFileSystemBySystemSaveDataId | ||
|- | |- | ||
| | | 0xB || CanDeleteSystemSaveData || 0x8000000000004028 || [[#DeleteSaveDataFileSystem]], RegisterSaveDataFileSystemAtomicDeletion | ||
|- | |- | ||
| | | 0xC || CanOpenSaveDataInfoReader || 0x8000000000000060 || [[#OpenSaveDataInfoReaderBySaveDataSpaceId]], [[#OpenSaveDataInfoReader]] | ||
|- | |- | ||
| | | 0xD || CanOpenSaveDataInfoReaderForSystem || 0x8000000000004020 || [[#OpenSaveDataInfoReaderBySaveDataSpaceId]], [[#OpenSaveDataInfoReader]] | ||
|- | |- | ||
| | | 0xE || CanOpenSaveDataInfoReaderForInternal || 0x8000000000000040 || [[#OpenSaveDataInfoReaderWithFilter]] | ||
|- | |- | ||
| | | 0xF || CanOpenSaveDataMetaFile || 0x8000000000020000 || OpenSaveDataMetaFile | ||
|- | |- | ||
| | | 0x10 || CanSetCurrentPosixTime || 0x8000000000000400 || SetCurrentPosixTime, SetCurrentPosixTimeWithTimeDifference | ||
|- | |- | ||
| | | 0x11 || CanReadSaveDataFileSystemExtraData || 0x8000000000004060 || [[#ReadSaveDataFileSystemExtraData]] | ||
|- | |- | ||
| | | 0x12 || CanSetGlobalAccessLogMode || 0x8000000000080000 || [[#SetGlobalAccessLogMode]] | ||
|- | |- | ||
| | | 0x13 || CanSetSpeedEmulationMode || 0x8000000000080000 || SetSpeedEmulationMode | ||
|- | |- | ||
| | | 0x14 || CanDebug || 0xC000000000000000 || | ||
|- | |- | ||
| | | 0x15 || CanFillBis || 0xC000000000800000 || CreatePaddingFile, DeleteAllPaddingFiles | ||
|- | |- | ||
| | | [2.0.0+] 0x16 || CanCorruptSaveData || 0xC000000001000000 || CorruptSaveDataFileSystem, CorruptSaveDataFileSystemBySaveDataSpaceId | ||
|- | |- | ||
| [2.0.0+] | | [2.0.0+] 0x17 || CanCorruptSystemSaveData || 0x8000000001000060 || CorruptSaveDataFileSystem, CorruptSaveDataFileSystemBySaveDataSpaceId | ||
|- | |- | ||
| [2.0.0+] | | [2.0.0+] 0x18 || CanVerifySaveData || 0x8000000000000060 || [[#VerifySaveDataFileSystem]], VerifySaveDataFileSystemBySaveDataSpaceId | ||
|- | |- | ||
| [2.0.0+] | | [2.0.0+] 0x19 || CanDebugSaveData || 0xC000000002000000 || [[#CreateSaveDataFileSystem]], [[#OpenSaveDataFileSystem]], [[#SetSaveDataRootPath]] | ||
|- | |- | ||
| [2.0.0+] | | [2.0.0+] 0x1A || CanFormatSdCard || 0x8000000004000000 || FormatSdCardFileSystem | ||
|- | |- | ||
| [ | | [3.0.0+] 0x1B || CanGetRightsId || 0x8000000008000000 || GetRightsId, GetRightsIdAndKeyGenerationByPath, GetRightsIdByPath | ||
|- | |- | ||
| [3.0.0+] | | [3.0.0+] 0x1C || CanRegisterExternalKey || 0x8000000010000000 || RegisterExternalKey, UnregisterAllExternalKey | ||
|- | |- | ||
| [ | | [4.0.0+] 0x1D || CanSetEncryptionSeed || 0x8000000000000800 || [[#SetSdCardEncryptionSeed]] | ||
|- | |- | ||
| [4.0.0+] | | [4.0.0+] 0x1E || CanWriteSaveDataFileSystemExtraDataTimeStamp || 0x8000000000000020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask | ||
|- | |- | ||
| [4.0.0+] | | [4.0.0+] 0x1F || CanWriteSaveDataFileSystemExtraDataFlags || 0x8000000000004020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask | ||
|- | |- | ||
| [4.0.0+] | | [4.0.0+] 0x20 || CanWriteSaveDataFileSystemExtraDataCommitId || 0x8000000000000020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask | ||
|- | |- | ||
| [ | | [5.0.0+] 0x21 || CanWriteSaveDataFileSystemExtraDataAll || 0x8000000000000000 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x22 || CanExtendSaveData || 0x8000000000002020 || ExtendSaveDataFileSystem | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x23 || CanExtendSystemSaveData || 0x8000000000000028 || ExtendSaveDataFileSystem | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x24 || CanExtendOthersSystemSaveData || 0x8000000000000020 || ExtendSaveDataFileSystem | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x25 || CanRegisterUpdatePartition || 0x8000000020000000 || RegisterUpdatePartition | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x26 || CanOpenSaveDataTransferManager || 0x8000000040000000 || [[#OpenSaveDataTransferManager]] | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x27 || CanOpenSaveDataTransferManagerVersion2 || 0x8000000200000000 || [[#OpenSaveDataTransferManagerVersion2]] | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x28 || CanOpenSaveDataTransferManagerForSaveDataRepair || 0x8000000200000000 || OpenSaveDataTransferManagerForSaveDataRepair | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x29 || CanOpenSaveDataTransferManagerForSaveDataRepairTool || 0x8000000000000000 || OpenSaveDataTransferManagerForSaveDataRepair | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x2A || CanOpenOpenSaveDataTransferProhibiter || 0x8000000200002000 || [[#OpenSaveDataTransferProhibiter]] | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x2B || CanOpenSaveDataMover || 0x8000001000000000 || [[#OpenSaveDataMover]] | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x2C || CanOpenBisWiper || 0x8000000000000800 || [[#OpenBisWiper]] | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x2D || CanListAccessibleSaveDataOwnerId || 0x8000000240002000 || [[#ListAccessibleSaveDataOwnerId]] | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x2E || CanControlMmcPatrol || 0x8000000000000000 || SuspendMmcPatrol, ResumeMmcPatrol | ||
|- | |- | ||
| [5.0.0+] | | [5.0.0+] 0x2F || CanOverrideSaveDataTransferTokenSignVerificationKey || 0x8000000000000000 || OverrideSaveDataTransferTokenSignVerificationKey | ||
|- | |- | ||
| [5. | | [5.1.0+] 0x30 || CanOpenSdCardDetectionEventNotifier || 0x8000000080200000 || [[#OpenSdCardDetectionEventNotifier]] | ||
|- | |- | ||
| [ | | [6.0.0+] 0x31 || CanOpenGameCardDetectionEventNotifier || 0x8000000080000110 || [[#OpenGameCardDetectionEventNotifier]] | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x32 || CanOpenSystemDataUpdateEventNotifier || 0x8000000000100008 || OpenSystemDataUpdateEventNotifier | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x33 || CanNotifySystemDataUpdateEvent || 0x8000000000010000 || NotifySystemDataUpdateEvent | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x34 || CanOpenAccessFailureDetectionEventNotifier || 0x8000000100000000 || [[#OpenAccessFailureDetectionEventNotifier]] | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x35 || CanGetAccessFailureDetectionEvent || 0x8000000100000000 || GetAccessFailureDetectionEvent | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x36 || CanIsAccessFailureDetected || 0x8000000100000000 || IsAccessFailureDetected | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x37 || CanResolveAccessFailure || 0x8000000100000000 || ResolveAccessFailure | ||
|- | |- | ||
| [6.0.0+] | | [6.0.0+] 0x38 || CanAbandonAccessFailure || 0x8000000100000000 || AbandonAccessFailure | ||
|- | |- | ||
| [ | | [8.0.0+] 0x39 || CanQuerySaveDataInternalStorageTotalSize || 0x8000000040000000 || QuerySaveDataInternalStorageTotalSize | ||
|- | |- | ||
| [ | | [9.0.0+] 0x3A || CanGetSaveDataCommitId || 0x8000000200000020 || [[#GetSaveDataCommitId]] | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x3B || CanSetSdCardAccessibility || 0x8000000000200000 || SetSdCardAccessibility | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x3C || CanSimulateDevice || 0x4000000000000000 || SimulateDeviceDetectionEvent, SetSimulationEvent, ClearSimulationEvent | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x3D || CanCreateSaveDataWithHashSalt || 0x8000000000000000 || [[#CreateSaveDataFileSystem]], [[#CreateSaveDataFileSystemWithHashSalt]] | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x3E || CanRegisterProgramIndexMapInfo || 0x8000000400000000 || RegisterProgramIndexMapInfo | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x3F || CanChallengeCardExistence || 0x8000000000000010 || ChallengeCardExistence | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x40 || CanCreateOwnSaveData || 0x8000000800000000 || [[#CreateSaveDataFileSystem]], CreateSaveDataFileSystemWithHashSalt | ||
|- | |- | ||
| [9.0.0+] | | [9.0.0+] 0x41 || CanDeleteOwnSaveData || 0x8000000800000000 || [[#DeleteSaveDataFileSystem]] | ||
|} | |- | ||
| [10.0.0+] 0x42 || CanReadOwnSaveDataFileSystemExtraData || 0x8000000800000000 || [[#ReadSaveDataFileSystemExtraData]] | |||
|- | |||
| [10.0.0+] 0x43 || CanExtendOwnSaveData || 0x8000000800000000 || ExtendSaveDataFileSystem | |||
|- | |||
| [10.2.0+] 0x44 || CanOpenOwnSaveDataTransferProhibiter || 0x8000000800000000 || [[#OpenSaveDataTransferProhibiter]] | |||
|- | |||
| [11.0.0+] 0x45 || CanFindOwnSaveDataWithFilter || 0x8000000800000000 || [[#FindSaveDataWithFilter]] | |||
|- | |||
| [13.0.0+] 0x46 || CanOpenSaveDataTransferManagerForRepair || 0x8000000000000020 || [[#OpenSaveDataTransferManagerForRepair]] | |||
|- | |||
| [13.0.0+] 0x47 || CanSetDebugConfiguration || 0x8000000000000000 || SetDebugOption, UnsetDebugOption | |||
|- | |||
| [15.0.0+] 0x48 || CanOpenDataStorageByPath || 0x8000000000000000 || OpenDataStorageByPath | |||
|- | |||
| [17.0.0+] 0x49 || CanNotifyErrorContextServiceReady || 0x8000004000000000 || NotifyErrorContextServiceReady | |||
|- | |||
| [17.0.0+] 0x4A || CanGetProgramId || 0x8000000008000000 || GetProgramId | |||
|} | |||
== OpenFileSystem == | == OpenFileSystem == | ||
Takes a type-0x19 input [[# | Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[#FileSystemProxyType]]. Returns an [[#IFileSystem]]. | ||
[2.0.0+] This function was removed. | [2.0.0+] This function was removed. | ||
== SetCurrentProcess == | == SetCurrentProcess == | ||
Takes | Takes an input u64 ProcessId. No output. | ||
== OpenFileSystemWithPatch == | == OpenFileSystemWithPatch == | ||
Takes an input [[#FileSystemProxyType]] and an | Takes an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]]. | ||
Web-applet loads the [[#FileSystemProxyType]] (which must be '''Manual''') from u32_table[inparam]. | Web-applet loads the [[#FileSystemProxyType]] (which must be '''Manual''') from u32_table[inparam]. | ||
Line 541: | Line 611: | ||
Note: web-applet strings refer to both this cmd and [[#OpenFileSystemWithId]] as "MountContent", but official nn_sf_sync symbols use "OpenXX" names. | Note: web-applet strings refer to both this cmd and [[#OpenFileSystemWithId]] as "MountContent", but official nn_sf_sync symbols use "OpenXX" names. | ||
== | == OpenFileSystemWithIdObsolete == | ||
Takes a type-0x19 input buffer, an [[#FileSystemProxyType]] and an | Takes a type-0x19 input buffer containing a [[#FspPath]], an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]]. | ||
The [[#IFileSystem]] must be '''Meta''' if the NCA type is 0. | The [[#IFileSystem]] must be '''Meta''' if the NCA type is 0. | ||
Line 555: | Line 625: | ||
When [[#FileSystemProxyType]] is '''Meta''', it uses in64=0xffffffffffffffff internally, otherwise it checks if in64 is set to 0xffffffffffffffff then throws an error if so. When the in64 used internally is not 0xffffffffffffffff, it's compared with the NCA [[NCM_services#ProgramId|ProgramId]], then an error is thrown on mismatch. | When [[#FileSystemProxyType]] is '''Meta''', it uses in64=0xffffffffffffffff internally, otherwise it checks if in64 is set to 0xffffffffffffffff then throws an error if so. When the in64 used internally is not 0xffffffffffffffff, it's compared with the NCA [[NCM_services#ProgramId|ProgramId]], then an error is thrown on mismatch. | ||
== OpenFileSystemWithId == | |||
Takes a type-0x19 input buffer containing a [[#FspPath]], an input [[#ContentAttributes]], an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]]. | |||
== OpenBisFileSystem == | == OpenBisFileSystem == | ||
Takes a type-0x19 input buffer | Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[#BisPartitionId]]. Returns an [[#IFileSystem]]. | ||
Official user-process code sets instr[0] = 0 normally. | |||
Only partitionIDs for FAT partitions are usable with this, otherwise error 0x2EE202 is returned. Seems to be about the same as [[#OpenBisStorage]] except this mounts the partition filesystem instead of allowing direct access to the partition sectors. | Only partitionIDs for FAT partitions are usable with this, otherwise error 0x2EE202 is returned. Seems to be about the same as [[#OpenBisStorage]] except this mounts the partition filesystem instead of allowing direct access to the partition sectors. | ||
Line 571: | Line 646: | ||
== CreateSaveDataFileSystem == | == CreateSaveDataFileSystem == | ||
Takes a 0x40-byte [[#SaveDataAttribute]], a 0x40-byte [[#SaveDataCreationInfo]], and a 0x10-byte input struct. | Takes a 0x40-byte [[#SaveDataAttribute]], a 0x40-byte [[#SaveDataCreationInfo]], and a 0x10-byte input struct which governs creation of a saveMeta file. | ||
Only the first 0x5-bytes in the 0x10-byte struct are initialized: all-zero when automatically creating savedata during savecommon mount by official user-processes. In the dedicated save-creation code in official user-processes: +0 u32 = 0x40060, +4 u8 = 1. | Only the first 0x5-bytes in the 0x10-byte struct are initialized: all-zero when automatically creating savedata during savecommon mount by official user-processes. In the dedicated save-creation code in official user-processes: +0 u32 = 0x40060 meta file size, +4 u8 = 1 meta index which dictates meta file name. | ||
Creates | Creates non-system savedata. | ||
== CreateSaveDataFileSystemBySystemSaveDataId == | == CreateSaveDataFileSystemBySystemSaveDataId == | ||
Line 608: | Line 683: | ||
Mounts savedata in the SYSTEM [[Flash_Filesystem|NAND]] partition. | Mounts savedata in the SYSTEM [[Flash_Filesystem|NAND]] partition. | ||
== OpenReadOnlySaveDataFileSystem == | |||
Takes an input u8 [[#SaveDataSpaceId]] and a 0x40-byte [[#SaveDataAttribute]], and returns an [[#IFileSystem]]. | |||
Mounts SaveData as ReadOnly. | |||
== ReadSaveDataFileSystemExtraDataBySaveDataSpaceId == | == ReadSaveDataFileSystemExtraDataBySaveDataSpaceId == | ||
Line 641: | Line 721: | ||
== OpenSaveDataTransferManagerForSaveDataRepair == | == OpenSaveDataTransferManagerForSaveDataRepair == | ||
No input, returns an output [[#ISaveDataTransferManagerForSaveDataRepair]]. | No input, returns an output [[#ISaveDataTransferManagerForSaveDataRepair]]. | ||
== OpenSaveDataMover == | |||
Takes 2 input [[#SaveDataSpaceId]], an input u64 size and a TransferMemory handle. Returns an output [[#ISaveDataMover]]. | |||
== OpenSaveDataTransferManagerForRepair == | |||
No input, returns an output [[#ISaveDataTransferManagerForRepair]]. | |||
== OpenContentStorageFileSystem == | == OpenContentStorageFileSystem == | ||
Line 689: | Line 775: | ||
Takes in the 0x10 byte SD card encryption seed, and loads it into FS-module state. | Takes in the 0x10 byte SD card encryption seed, and loads it into FS-module state. | ||
[[NS_Services|NS]]-module reads the 0x10 bytes from SdCard:/Nintendo/Contents/private, and compares them to the first 0x10 bytes of the ns_appman:/private (in [[Flash_Filesystem#System_Savegames|system savedata]] 0x8000000000000043). If they match, NS calls this command using bytes 0x10-0x20 from ns_appman:/private. The rest of this file (0x1F0 bytes total) is | [[NS_Services|NS]]-module reads the 0x10 bytes from SdCard:/Nintendo/Contents/private, and compares them to the first 0x10 bytes of the ns_appman:/private (in [[Flash_Filesystem#System_Savegames|system savedata]] 0x8000000000000043). If they match, NS calls this command using bytes 0x10-0x20 from ns_appman:/private. The rest of this file (0x1F0 bytes total) is all-zero except for the byte at offset 0x20. This byte is set to 1 by NS if the SD card has been mounted successfully and is subsequently passed to SetSdCardAccessibility. | ||
== OpenAccessFailureDetectionEventNotifier == | == OpenAccessFailureDetectionEventNotifier == | ||
Line 735: | Line 821: | ||
== OpenMultiCommitManager == | == OpenMultiCommitManager == | ||
No input, returns an output [[#IMultiCommitManager]]. | No input, returns an output [[#IMultiCommitManager]]. | ||
== OpenBisWiper == | |||
Takes an input u64 size and a TransferMemory handle. Returns an output [[#IWiper]]. | |||
= IStorage = | = IStorage = | ||
Line 824: | Line 913: | ||
|- | |- | ||
| 15 || [4.0.0+] QueryEntry | | 15 || [4.0.0+] QueryEntry | ||
|- | |||
| 16 || [15.0.0+] GetFileSystemAttribute | |||
|} | |} | ||
Line 926: | Line 1,017: | ||
|- | |- | ||
| 5 || [4.0.0+] OperateRange | | 5 || [4.0.0+] OperateRange | ||
|- | |||
| 6 || [12.0.0+] OperateRangeWithBuffer | |||
|} | |} | ||
Line 950: | Line 1,043: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || IsSdCardInserted | | 0 || [[#IsSdCardInserted]] | ||
|- | |||
| 1 || [[#GetSdCardSpeedMode]] | |||
|- | |||
| 2 || [2.0.0+] [[#GetSdCardCid]] | |||
|- | |- | ||
| | | 3 || [2.0.0+] [[#GetSdCardUserAreaSize]] | ||
|- | |- | ||
| | | 4 || [2.0.0+] [[#GetSdCardProtectedAreaSize]] | ||
|- | |- | ||
| | | 5 || [2.0.0+] [[#GetAndClearSdCardErrorInfo]] | ||
|- | |- | ||
| | | 6 || [17.0.0+] GetSdCardHostControllerStatus | ||
|- | |- | ||
| | | 100 || [[#GetMmcCid]] | ||
|- | |- | ||
| | | 101 || [[#GetMmcSpeedMode]] | ||
|- | |- | ||
| | | 110 || [[#EraseMmc]] | ||
|- | |- | ||
| | | 111 || [[#GetMmcPartitionSize]] | ||
|- | |- | ||
| | | 112 || [2.0.0+] [[#GetMmcPatrolCount]] | ||
|- | |- | ||
| | | 113 || [2.0.0+] [[#GetAndClearMmcErrorInfo]] | ||
|- | |- | ||
| | | 114 || [2.0.0+] [[#GetMmcExtendedCsd]] | ||
|- | |- | ||
| | | 115 || [4.0.0+] [[#SuspendMmcPatrol]] | ||
|- | |- | ||
| | | 116 || [4.0.0+] [[#ResumeMmcPatrol]] | ||
|- | |- | ||
| | | 117 || [17.0.0+] EraseMmcWithRange | ||
|- | |- | ||
| 200 || [[#IsGameCardInserted]] | | 200 || [[#IsGameCardInserted]] | ||
|- | |- | ||
| 201 || EraseGameCard | | 201 || [[#EraseGameCard]] | ||
|- | |- | ||
| 202 || [[#GetGameCardHandle]] | | 202 || [[#GetGameCardHandle]] | ||
Line 988: | Line 1,085: | ||
| 203 || [[#GetGameCardUpdatePartitionInfo]] | | 203 || [[#GetGameCardUpdatePartitionInfo]] | ||
|- | |- | ||
| 204 || FinalizeGameCardDriver | | 204 || [[#FinalizeGameCardDriver]] | ||
|- | |- | ||
| 205 || GetGameCardAttribute | | 205 || [[#GetGameCardAttribute]] | ||
|- | |- | ||
| 206 || [[#GetGameCardDeviceCertificate]] | | 206 || [[#GetGameCardDeviceCertificate]] | ||
|- | |- | ||
| 207 || GetGameCardAsicInfo | | 207 || [[#GetGameCardAsicInfo]] | ||
|- | |- | ||
| 208 || GetGameCardIdSet | | 208 || [[#GetGameCardIdSet]] | ||
|- | |- | ||
| 209 || WriteToGameCardDirectly | | 209 || [[#WriteToGameCardDirectly]] | ||
|- | |- | ||
| 210 || SetVerifyWriteEnalbleFlag | | 210 || [[#SetVerifyWriteEnalbleFlag]] | ||
|- | |- | ||
| 211 || GetGameCardImageHash | | 211 || [[#GetGameCardImageHash]] | ||
|- | |- | ||
| 212 || [2.0.0+] GetGameCardDeviceIdForProdCard | | 212 || [2.0.0+] [[#GetGameCardDeviceIdForProdCard]] | ||
|- | |- | ||
| 213 || [2.0.0+] EraseAndWriteParamDirectly | | 213 || [2.0.0+] [[#EraseAndWriteParamDirectly]] | ||
|- | |- | ||
| 214 || [2.0.0+] ReadParamDirectly | | 214 || [2.0.0+] [[#ReadParamDirectly]] | ||
|- | |- | ||
| 215 || [2.0.0+] ForceEraseGameCard | | 215 || [2.0.0+] [[#ForceEraseGameCard]] | ||
|- | |- | ||
| 216 || [2.0.0+] GetGameCardErrorInfo | | 216 || [2.0.0+] [[#GetGameCardErrorInfo]] | ||
|- | |- | ||
| 217 || [2.1.0+] GetGameCardErrorReportInfo | | 217 || [2.1.0+] [[#GetGameCardErrorReportInfo]] | ||
|- | |- | ||
| 218 || [3.0.0+] GetGameCardDeviceId | | 218 || [3.0.0+] [[#GetGameCardDeviceId]] | ||
|- | |- | ||
| 219 || [8.0.0+] [[#ChallengeCardExistence]] | | 219 || [8.0.0+] [[#ChallengeCardExistence]] | ||
Line 1,022: | Line 1,119: | ||
| 220 || [9.0.0+] [[#GetGameCardCompatibilityType]] | | 220 || [9.0.0+] [[#GetGameCardCompatibilityType]] | ||
|- | |- | ||
| | | 221 || [17.0.0+] GetGameCardAsicCertificate | ||
|- | |- | ||
| | | 222 || [18.0.0+] GetGameCardCardHeader | ||
|- | |- | ||
| | | 300 || [[#SetSpeedEmulationMode]] | ||
|- | |- | ||
| 401 || [5.0.0+] ResumeSdmmcControl | | 301 || [[#GetSpeedEmulationMode]] | ||
|- | |||
| 302 || [18.0.0+] SetApplicationStorageSpeed | |||
|- | |||
| 400 || [5.0.0+] [[#SuspendSdmmcControl]] | |||
|- | |||
| 401 || [5.0.0+] [[#ResumeSdmmcControl]] | |||
|- | |- | ||
| 402 || [6.0.0+] [[#GetSdmmcConnectionStatus]] | | 402 || [6.0.0+] [[#GetSdmmcConnectionStatus]] | ||
Line 1,037: | Line 1,140: | ||
|} | |} | ||
== | == IsSdCardInserted == | ||
No input | No input. Returns an output bool. | ||
== | == GetSdCardSpeedMode == | ||
No input | No input. Returns an output [[#SdCardSpeedMode]]. | ||
== | == GetSdCardCid == | ||
Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. | |||
== GetSdCardUserAreaSize == | |||
No input. Returns an output s64 '''SdCardUserAreaSize'''. | |||
== GetSdCardProtectedAreaSize == | |||
No input. Returns an output s64 '''SdCardProtectedAreaSize'''. | |||
== | == GetAndClearSdCardErrorInfo == | ||
Takes a type-0x6 output buffer | Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''. | ||
== | == GetMmcCid == | ||
Takes a type-0x6 output buffer | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. | ||
[ | == GetMmcSpeedMode == | ||
No input. Returns an output [[#MmcSpeedMode]]. | |||
== EraseMmc == | |||
Takes an input [[#MmcPartition]]. No output. | |||
== GetMmcPartitionSize == | |||
Takes an input [[#MmcPartition]]. Returns an output s64 '''MmcPartitionSize'''. | |||
== | == GetMmcPatrolCount == | ||
No input. Returns an output u32 '''MmcPatrolCount'''. | |||
== | == GetAndClearMmcErrorInfo == | ||
Takes a | Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''. | ||
== | == GetMmcExtendedCsd == | ||
Takes a | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. | ||
== | == SuspendMmcPatrol == | ||
No input/output. | |||
= | == ResumeMmcPatrol == | ||
No input/output. | |||
== IsGameCardInserted == | |||
No input. Returns an output bool. | |||
== | == EraseGameCard == | ||
Takes an input [[#GameCardSize]] and an input u64 '''NormalAreaSize'''. No output. | |||
= | == GetGameCardHandle == | ||
No input. Returns an output [[#GameCardHandle]]. | |||
== GetGameCardUpdatePartitionInfo == | |||
Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardUpdatePartitionInfo]]. | |||
== FinalizeGameCardDriver == | |||
No input/output. | |||
== GetGameCardAttribute == | |||
Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardAttribute]]. | |||
== GetGameCardDeviceCertificate == | |||
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output. | |||
== GetGameCardAsicInfo == | |||
Takes a type-0x5 input buffer '''FwBuffer''', a type-0x6 output buffer containing [[#RmaInformation]] and two input s64s '''FwBufferSize''' and '''RmaInformationSize'''. No output. | |||
== GetGameCardIdSet == | |||
Takes a type-0x6 output buffer containing a [[#GameCardIdSet]] and an input s64 '''BufferSize'''. No output. | |||
== | == WriteToGameCardDirectly == | ||
Takes a type-0x6 output buffer and two input s64s '''Offset''' and '''BufferSize'''. No output. | |||
== | == SetVerifyWriteEnalbleFlag == | ||
No | Takes an input bool. No output. | ||
== | == GetGameCardImageHash == | ||
Takes an input | Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output. | ||
== | == GetGameCardDeviceIdForProdCard == | ||
Takes | Takes a type-0x5 input buffer '''CardHeaderForDev''', a type-0x6 output buffer and two input s64s '''CardHeaderForDevSize''' and '''BufferSize'''. No output. | ||
= | == EraseAndWriteParamDirectly == | ||
Takes a type-0x5 input buffer and an input s64 '''BufferSize'''. No output. | |||
== ReadParamDirectly == | |||
Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. | |||
== ForceEraseGameCard == | |||
No input/output. | |||
== | == GetGameCardErrorInfo == | ||
No input | No input. Returns an output [[#GameCardErrorInfo]]. | ||
== | == GetGameCardErrorReportInfo == | ||
No input. Returns an output [[#GameCardErrorReportInfo]]. | |||
== | == GetGameCardDeviceId == | ||
Takes a type- | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. | ||
== | == ChallengeCardExistence == | ||
Takes a | Takes a type-0x6 output buffer, two type-0x5 input buffers and an input [[#GameCardHandle]]. No output. | ||
[9.0.0+] The [[Account_services|account]] system module uses this as part of a new challenge-response mechanism for [[Network#aauth|application authentication]]. | |||
== | == GetGameCardCompatibilityType == | ||
Takes | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardCompatibilityType]]. | ||
== | == SetSpeedEmulationMode == | ||
Takes a total of | Takes an input [[#SpeedEmulationMode]]. No output. | ||
== GetSpeedEmulationMode == | |||
No input. Returns an output [[#SpeedEmulationMode]]. | |||
== SuspendSdmmcControl == | |||
No input/output. | |||
== ResumeSdmmcControl == | |||
No input/output. | |||
== GetSdmmcConnectionStatus == | |||
Takes a total of 4-bytes of input. Returns a total of 8-bytes of output. | |||
== SetDeviceSimulationEvent == | |||
Takes a total of 0x14-bytes of input. No output. | |||
= | == ClearDeviceSimulationEvent == | ||
Takes a total of 4-bytes of input. No output. | |||
This | = IEventNotifier = | ||
This is "nn::fssrv::sf::IEventNotifier". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,170: | Line 1,278: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[# | | 0 || [[#GetEventHandle]] | ||
|} | |} | ||
== | == GetEventHandle == | ||
No input | No input, returns an output Event handle. With official sw the EventClearMode is user-specified. | ||
= ISaveDataTransferManager = | |||
This is "nn::fssrv::sf::ISaveDataTransferManager". | |||
= | |||
This is "nn::fssrv::sf:: | |||
This was added with [[4.0.0]]. | This was added with [[4.0.0]]. | ||
Line 1,202: | Line 1,293: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[# | | 0 || [[#GetChallenge]] | ||
|- | |- | ||
| | | 16 || [[#SetToken]] | ||
|- | |- | ||
| | | 32 || [[#OpenSaveDataExporter]] | ||
|- | |- | ||
| | | 64 || [[#OpenSaveDataImporter]] | ||
|} | |} | ||
== | == GetChallenge == | ||
No input/output, takes a type- | No input/output, takes a type-0x6 output buffer. | ||
== SetToken == | |||
No input/output, takes a type-0x5 input buffer. | |||
== | == OpenSaveDataExporter == | ||
Takes an input u8 [[#SaveDataSpaceId]] and u64, returns an [[#ISaveDataExporter]]. | |||
== | == OpenSaveDataImporter == | ||
Takes an input u8 [[#SaveDataSpaceId]] and a 0x10-byte userID, and a type-0x5 input buffer. Returns an output u64 and an [[#ISaveDataImporter]]. | |||
= | = ISaveDataTransferManagerForSaveDataRepair = | ||
This is "nn::fssrv::sf::ISaveDataTransferManagerForSaveDataRepair". | |||
This was added with [[9.0.0]]. | |||
This was added with [[ | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,236: | Line 1,325: | ||
| 0 || [[#GetChallenge]] | | 0 || [[#GetChallenge]] | ||
|- | |- | ||
| 16 || [[# | | 16 || [[#SetKeyPackage]] | ||
|- | |- | ||
| | | 80 || [[#OpenSaveDataExporterAndGetEncryptedKey]] | ||
|- | |- | ||
| | | 81 || [[#PrepareOpenSaveDataImporter]] | ||
|- | |- | ||
| | | 90 || [[#OpenSaveDataImporter]] | ||
|- | |- | ||
| | | 91 || [[#OpenSaveDataImporter2]] | ||
|- | |- | ||
| | | 100 || [[#OpenSaveDataExporterWithKey]] | ||
|- | |- | ||
| | | 110 || [[#OpenSaveDataImporterWithKey]] | ||
|} | |||
|} | |||
== | == SetKeyPackage == | ||
No input/output, takes a type- | No input/output, takes a type-0x5 input buffer. | ||
== | == OpenSaveDataExporterAndGetEncryptedKey == | ||
Takes a total of 0x10-bytes of input and a type-0x1A output buffer to receive a RsaEncryptedKey. Returns an [[#ISaveDataDivisionExporter]]. | |||
== | == PrepareOpenSaveDataImporter == | ||
Takes | Takes a type-0x1A output buffer to receive a RsaEncryptedKey. | ||
== | == OpenSaveDataImporter == | ||
Takes | Takes a total of 0x18-bytes of input and two type-0x5 input buffers, returns an [[#ISaveDataDivisionImporter]]. | ||
== | == OpenSaveDataImporter2 == | ||
Takes a total of 0x18-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | |||
== | == OpenSaveDataExporterWithKey == | ||
Takes | Takes a total of 0x20-bytes of input, returns an [[#ISaveDataDivisionExporter]]. | ||
== | == OpenSaveDataImporterWithKey == | ||
Takes | Takes a total of 0x28-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | ||
[17.0.0+] Now only takes 0x18-bytes of input and an additional type-0x5 input buffer. | |||
= ISaveDataMover = | |||
This is "nn::fssrv::sf::ISaveDataMover". | |||
This was added with [[10.0.0]]. | |||
== | {| class="wikitable" border="1" | ||
|- | |||
! Cmd || Name | |||
|- | |||
| 8 || [[#Register]] | |||
|- | |||
| 16 || [[#Process]] | |||
|- | |||
| 18 || [[#Cancel]] | |||
|} | |||
== | == Register == | ||
Takes an input | Takes an input u64, no output. | ||
== | == Process == | ||
Takes an input u64, returns an output u64. | |||
== | == Cancel == | ||
No input/output. | |||
= | = ISaveDataTransferManagerForRepair = | ||
This is "nn::fssrv::sf:: | This is "nn::fssrv::sf::ISaveDataTransferManagerForRepair". | ||
This was added with [[ | This was added with [[11.0.0]]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,301: | Line 1,397: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| | | 80 || [[#OpenSaveDataExporter]] | ||
|- | |- | ||
| | | 90 || [[#OpenSaveDataImporter]] | ||
|} | |||
== OpenSaveDataExporter == | |||
Takes a total of 0x10-bytes of input, returns an [[#ISaveDataDivisionExporter]]. | |||
== OpenSaveDataImporter == | |||
Takes 1-byte of input, a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | |||
= ISaveDataExporter = | |||
This is "nn::fssrv::sf::ISaveDataExporter". | |||
This was added with [[4.0.0]]. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || [[#GetSaveDataInfo]] | ||
|- | |- | ||
| | | 1 || [[#GetRestSize]] | ||
|- | |- | ||
| | | 16 || [[#Pull]] | ||
|- | |- | ||
| | | 17 || [[#PullInitialData]] | ||
|- | |} | ||
== GetSaveDataInfo == | |||
No input/output, takes a type-0x1A [[#SaveDataInfo]] output buffer. | |||
|- | |||
The actual name for this is the SaveDataExporter constructor. This is used automatically after [[#OpenSaveDataExporter]] by official sw. | |||
== GetRestSize == | |||
No input, returns an output u64. | |||
== Pull == | |||
Takes a type-0x6 output buffer, returns an output u64. | |||
== PullInitialData == | |||
No input/output, takes a type-0x6 output buffer. | |||
= ISaveDataImporter = | |||
This is "nn::fssrv::sf::ISaveDataImporter". | |||
This was added with [[4.0.0]]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |- | ||
| | | 0 || [[#GetSaveDataInfo]] | ||
|- | |- | ||
| | | 1 || [[#GetRestSize]] | ||
|- | |- | ||
| | | 16 || [[#Push]] | ||
|- | |- | ||
| | | 17 || [[#Finalize]] | ||
|} | |} | ||
== | == GetSaveDataInfo == | ||
No input/output, takes a type-0x1A [[#GetSaveDataInfo]] output buffer. | |||
The actual name for this is the SaveDataImporter constructor. This is used automatically after [[#OpenSaveDataImporter]] by official sw. | |||
== | == GetRestSize == | ||
No input, returns | No input, returns an output u64. | ||
== | == Push == | ||
No input, | No input/output, takes a type-0x5 input buffer. | ||
== | == Finalize == | ||
No input/output. | No input/output. | ||
= | = ISaveDataTransferManagerWithDivision = | ||
This is "nn::fssrv::sf::ISaveDataTransferManagerWithDivision". | |||
This was added with [[5.0.0]]. | |||
== | {| class="wikitable" border="1" | ||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#GetChallenge]] | |||
|- | |||
| 8 || [18.0.0+] SetMode | |||
|- | |||
| 9 || [18.0.0+] SetAttribute | |||
|- | |- | ||
| 16 || [[#SetKeySeedPackage]] | |||
|- | |- | ||
| | | 32 || [[#OpenSaveDataExporter]] | ||
|- | |- | ||
| | | 33 || [[#OpenSaveDataExporterForDiffExport]] | ||
|- | |- | ||
| | | 34 || [6.0.0+] [[#OpenSaveDataExporterByContext]] | ||
|- | |- | ||
| | | 63 || [17.0.0+] OpenSaveDataImporter | ||
|- | |- | ||
| | | 64 || [6.0.0-17.0.1] [[#OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter) | ||
|- | |- | ||
| | | 65 || [5.0.0-17.0.1] [[#OpenSaveDataImporterForDiffImport]] | ||
|- | |- | ||
| | | 66 || [6.0.0-17.0.1] [[#OpenSaveDataImporterForDuplicateDiffImport]] | ||
|- | |- | ||
| | | 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter]] | ||
|- | |- | ||
| | | 68 || [6.0.0+] [[#OpenSaveDataImporterByContext]] | ||
|- | |- | ||
| | | 69 || [6.0.0+] [[#CancelSuspendingImport]] | ||
|} | |- | ||
| 70 || [10.0.0+] CancelSuspendingImportByAttribute | |||
|- | |||
| 80 || [11.0.0+] SwapSecondary | |||
|} | |||
== | == GetChallenge == | ||
No input/output, takes a type-0x6 output buffer. | No input/output, takes a type-0x6 output buffer containing the '''Challenge'''. | ||
== | == SetKeySeedPackage == | ||
No input, | No input/output, takes a type-0x5 input buffer containing the '''KeySeedPackage'''. | ||
== | == OpenSaveDataExporter == | ||
Takes an input u8 [[#SaveDataSpaceId]] and u64. Returns an [[#ISaveDataDivisionExporter]]. | |||
== | == OpenSaveDataExporterForDiffExport == | ||
Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionExporter]]. | |||
== | == OpenSaveDataExporterByContext == | ||
No input/output. | No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionExporter]]. | ||
== | == OpenSaveDataImporterDeprecated == | ||
Takes an input u8 [[#SaveDataSpaceId]], a 0x10-byte userID, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]]. | |||
== | == OpenSaveDataImporterForDiffImport == | ||
Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]], returns an [[#ISaveDataDivisionImporter]]. | |||
== OpenSaveDataImporterForDuplicateDiffImport == | |||
Takes an input u8 and an u64, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | |||
== | == OpenSaveDataImporter == | ||
Takes an input | Takes an input u8, an u8(bool), a 0x10-byte struct, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | ||
== | == OpenSaveDataImporterByContext == | ||
No input, returns an | No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | ||
== | == CancelSuspendingImport == | ||
Takes an input u64 and a 0x10-byte struct, no output. | |||
= | = ISaveDataDivisionExporter = | ||
This is "nn::fssrv::sf:: | This is "nn::fssrv::sf::ISaveDataDivisionExporter". | ||
This was added with [[5.0.0]]. | This was added with [[5.0.0]]. | ||
Line 1,431: | Line 1,556: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[# | | 0 || [[#SetDivisionCount]] | ||
|- | |||
| 1 || [6.0.0+] [[#ReadSaveDataExtraData]] | |||
|- | |- | ||
| | | 16 || [[#OpenSaveDataDiffChunkIterator]] | ||
|- | |- | ||
| | | 48 || [[#OpenSaveDataChunkExporter]] | ||
| | |- | ||
| 64 || [6.0.0-8.1.0] [[#FinalizeFullExport]] | |||
|- | |||
| 65 || [6.0.0-8.1.0] [[#FinalizeDiffExport]] | |||
|- | |||
| 66 || [6.0.0+] [[#CancelExport]] | |||
|- | |- | ||
| 67 || [6.0.0+] [[#SuspendExport]] | |||
|- | |- | ||
| | | 70 || [6.0.0-17.0.1] [[#GetKeySeed]] | ||
|- | |- | ||
| | | 71 || [6.0.0+] [[#GetInitialDataMac]] | ||
| | |- | ||
| 72 || [6.0.0+] [[#FinalizeExport]] | |||
|- | |||
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]] | |||
|- | |||
| 74 || [18.0.0+] [[#GetKeySeed]] | |||
|- | |||
| 80 || [6.0.0+] [[#GetImportInitialDataAad]] | |||
|- | |- | ||
| 81 || [6.0.0+] [[#SetExportInitialDataAad]] | |||
|- | |- | ||
| | | 96 || [6.0.0+] [[#GetReportInfo]] | ||
|} | |} | ||
== | == SetDivisionCount == | ||
Takes an input | Takes an input u32, no output. | ||
= | == OpenSaveDataChunkExporter == | ||
Takes an input u32, returns an [[#ISaveDataChunkExporter]]. | |||
== FinalizeFullExport == | |||
No input, returns two 0x10-byte output structs. | |||
== FinalizeDiffExport == | |||
No input, returns an output 0x10-byte struct. | |||
== CancelExport == | |||
No input/output. | |||
== SuspendExport == | |||
No input/output, takes a type-0x6 output buffer. | |||
== GetKeySeed == | |||
No input, returns an output 0x10-byte struct. | |||
== GetInitialDataMac == | |||
No input, returns an output 0x10-byte struct. | |||
== FinalizeExport == | |||
No input/output. | |||
== SetExportInitialDataAad == | |||
Takes an input 0x20-byte struct, no output. | |||
= | = ISaveDataDivisionImporter = | ||
This was added with [[ | This is "nn::fssrv::sf::ISaveDataDivisionImporter". | ||
This was added with [[5.0.0]]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,494: | Line 1,628: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || [6.0.0+] [[#ReadSaveDataExtraData]] | ||
|- | |- | ||
| | | 16 || [[#OpenSaveDataDiffChunkIterator]] | ||
|- | |- | ||
| 32 || [[#InitializeImport]] | |||
|- | |- | ||
| | | 33 || [[#FinalizeImport]] | ||
|- | |- | ||
| | | 34 || [6.0.0+] [[#CancelImport]] | ||
|- | |- | ||
| | | 35 || [6.0.0+] [[#GetImportContext]] | ||
|- | |- | ||
| | | 36 || [6.0.0+] [[#SuspendImport]] | ||
|- | |- | ||
| | | 37 || [11.0.0+] FinalizeImportWithoutSwap | ||
|- | |- | ||
| | | 48 || [[#OpenSaveDataChunkImporter]] | ||
|- | |- | ||
| | | 64 || [6.0.0+] [[#GetImportInitialDataAad]] | ||
|- | |- | ||
| | | 80 || [6.0.0+] [[#GetReportInfo]] | ||
|} | |||
|} | |||
= | == ReadSaveDataExtraData == | ||
No input/output, takes a type-0x6 output buffer. | |||
== OpenSaveDataDiffChunkIterator == | |||
No input, returns an [[#ISaveDataChunkIterator]]. | |||
= | == InitializeImport == | ||
No input, returns an output u64. | |||
{| class="wikitable" border="1" | == FinalizeImport == | ||
No input/output. | |||
== CancelImport == | |||
No input/output. | |||
== GetImportContext == | |||
No input/output, takes a type-0x6 output buffer. | |||
== SuspendImport == | |||
No input/output. | |||
== OpenSaveDataChunkImporter == | |||
Takes an input u32, returns an [[#ISaveDataChunkImporter]]. | |||
== GetImportInitialDataAad == | |||
No input, returns an output 0x20-byte struct. | |||
== GetReportInfo == | |||
No input, returns an output 0x20-byte struct. | |||
= ISaveDataChunkIterator = | |||
This is "nn::fssrv::sf::ISaveDataChunkIterator". | |||
This was added with [[5.0.0]]. | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
| | ! Cmd || Name | ||
|- | |- | ||
| | | 0 || [[#Next]] | ||
|- | |- | ||
| | | 1 || [[#IsEnd]] | ||
|- | |||
| 16 || [[#GetId]] | |||
|} | |} | ||
= | == Next == | ||
This is "nn:: | No input/output. | ||
== IsEnd == | |||
No input, returns an output u8. | |||
== GetId == | |||
No input, returns an output u32. | |||
= ISaveDataChunkExporter = | |||
This is "nn::fssrv::sf::ISaveDataChunkExporter". | |||
This was added with [[5.0.0]]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#Pull]] | ||
|- | |- | ||
| | | 16 || [6.0.0+] [[#GetRestRawDataSize]] | ||
|} | |||
== Pull == | |||
Takes an input u64 and a type-0x6 output buffer, returns an output u64. | |||
| | |||
== GetRestRawDataSize == | |||
No input, returns an output u64. | |||
= ISaveDataChunkImporter = | |||
This is "nn::fssrv::sf::ISaveDataChunkImporter". | |||
This was added with [[5.0.0]]. | |||
This | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#Push]] | ||
| | |} | ||
== Push == | |||
Takes an input u64 and a type-0x5 input buffer, no output. | |||
= ISaveDataTransferProhibiter = | |||
This is "nn::fssrv::sf::ISaveDataTransferProhibiter". | |||
This was added with [6.0.0+]. | |||
This doesn't seem to handle any commands (?). | |||
= IMultiCommitManager = | |||
This is "nn::fssrv::sf::IMultiCommitManager". | |||
This was added with [6.0.0+]. | |||
This | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |- | ||
| | | 1 || [[#Add]] | ||
|- | |- | ||
| | | 2 || [[#Commit]] | ||
|} | |} | ||
= | == Add == | ||
This is "nn:: | Takes an input [[#IFilesystem]], no output. | ||
== Commit == | |||
No input/output. | |||
= IWiper = | |||
This is "nn::fssrv::sf::IWiper". | |||
This was added with [[10.0.0]]. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |||
| 0 || [[#Startup|Startup]] | |||
|- | |- | ||
| | | 16 || [[#Process_2|Process]] | ||
|} | |} | ||
= | == Startup == | ||
This is "nn:: | No input. Returns an u64. | ||
== Process == | |||
No input. Returns an u64. | |||
= IStorageDeviceManager = | |||
This is "nn::fssrv::storage::sf::IStorageDeviceManager". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |||
| N/A || IsInserted | |||
|- | |||
| N/A || IsHandleValid | |||
|- | |||
| N/A || OpenDetectionEvent | |||
|- | |- | ||
| | | N/A || OpenOperator | ||
|- | |- | ||
| | | N/A || OpenDevice | ||
|- | |- | ||
| | | N/A || OpenStorage | ||
|- | |- | ||
| | | N/A || Invalidate | ||
|} | |} | ||
= | = IStorageDeviceOperator = | ||
This is "nn:: | This is "nn::fssrv::storage::sf::IStorageDeviceOperator". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |||
| N/A || Operate | |||
|- | |||
| N/A || OperateIn | |||
|- | |- | ||
| | | N/A || OperateOut | ||
|- | |- | ||
| | | N/A || OperateOut2 | ||
|- | |- | ||
| | | N/A || OperateInOut | ||
|- | |||
| N/A || OperateIn2Out | |||
|} | |} | ||
= | = IStorageDevice = | ||
This is "nn:: | This is "nn::fssrv::storage::sf::IStorageDevice". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Cmd || Name | ||
|- | |||
| N/A || GetHandle | |||
|- | |||
| N/A || IsHandleValid | |||
|- | |||
| N/A || OpenOperator | |||
|- | |||
| N/A || Read | |||
|- | |- | ||
| | | N/A || Write | ||
|- | |- | ||
| | | N/A || Flush | ||
|- | |- | ||
| N/A || SetSize | |||
|- | |- | ||
| | | N/A || GetSize | ||
|- | |- | ||
| | | N/A || OperateRange | ||
|} | |} | ||
= | = FileSystemProxyType = | ||
This is "nn::fs:: | This is "nn::fs::FileSystemProxyType". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,692: | Line 1,863: | ||
! Value || Name | ! Value || Name | ||
|- | |- | ||
| 0 || | | 0 || Code | ||
|- | |||
| 1 || Rom | |||
|- | |- | ||
| | | 2 || Logo | ||
|} | |- | ||
| 3 || Control | |||
|- | |||
| 4 || Manual | |||
|- | |||
| 5 || Meta | |||
|- | |||
| 6 || Data | |||
|- | |||
| 7 || Package | |||
|- | |||
| 8 || [4.0.0+] RegisteredUpdate | |||
|} | |||
= | = ContentType = | ||
This is "nn::fs:: | This is "nn::fs::ContentType". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Value || Name | ! Value || Name | ||
|- | |- | ||
| 0 || Realtime | | 0 || Meta | ||
|- | |- | ||
| 1 || Normal | | 1 || Control | ||
|- | |- | ||
| 2 || Low | | 2 || Manual | ||
|} | |- | ||
| 3 || Logo | |||
= PriorityRaw = | |- | ||
This is "nn::fs::PriorityRaw". | | 4 || Data | ||
|} | |||
{| class="wikitable" border="1" | |||
|- | = ContentAttributes = | ||
! Value || Name | This is "nn::fs::ContentAttributes". | ||
|- | |||
| 0 || Realtime | {| class="wikitable" border="1" | ||
|- | |- | ||
| 1 || Normal | ! Value || Name | ||
|- | |- | ||
| 2 || Low | | 0 || None | ||
|- | |- | ||
| 3 || Background | | 15 || All | ||
|} | |||
= ContentStorageId = | |||
This is "nn::fs::ContentStorageId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || System | |||
|- | |||
| 1 || User | |||
|- | |||
| 2 || SdCard | |||
|- | |||
| 3 || [16.0.0+] System0 | |||
|} | |||
= SaveDataSpaceId = | |||
This is "nn::fs::SaveDataSpaceId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || System | |||
|- | |||
| 1 || User | |||
|- | |||
| 2 || SdSystem | |||
|- | |||
| 3 || [3.0.0+] Temporary | |||
|- | |||
| 4 || [4.0.0+] SdUser | |||
|- | |||
| 100 || [3.0.0+] ProperSystem | |||
|- | |||
| 101 || [3.0.0+] SafeMode | |||
|} | |||
Determines the storage where the savedata is stored. | |||
= SaveDataType = | |||
This is "nn::fs::SaveDataType". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || System | |||
|- | |||
| 1 || Account | |||
|- | |||
| 2 || Bcat | |||
|- | |||
| 3 || Device | |||
|- | |||
| 4 || [3.0.0+] Temporary | |||
|- | |||
| 5 || [3.0.0+] Cache | |||
|- | |||
| 6 || [4.0.0+] SystemBcat | |||
|} | |||
= SaveDataRank = | |||
This is "nn::fs::SaveDataRank". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Primary | |||
|- | |||
| 1 || Secondary | |||
|} | |||
= SaveDataEnumerateOption = | |||
This is "nn::fs::SaveDataEnumerateOption". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 1 || AllRank | |||
|} | |||
= SaveDataFlags = | |||
This is "nn::fs::SaveDataFlags". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 1 || KeepAfterResettingSystemSaveData | |||
|- | |||
| 2 || KeepAfterRefurbishment | |||
|- | |||
| 4 || KeepAfterResettingSystemSaveDataWithoutUserSaveData | |||
|- | |||
| 8 || NeedsSecureDelete | |||
|} | |||
= SaveDataMetaType = | |||
This is "nn::fs::SaveDataMetaType". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || None | |||
|- | |||
| 1 || Thumbnail | |||
|- | |||
| 2 || ExtensionContext | |||
|} | |||
= ImageDirectoryId = | |||
This is "nn::fs::ImageDirectoryId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Nand | |||
|- | |||
| 1 || SdCard | |||
|} | |||
= CloudBackupWorkStorageId = | |||
This is "nn::fs::CloudBackupWorkStorageId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Nand | |||
|- | |||
| 1 || SdCard | |||
|} | |||
= CustomStorageId = | |||
This is "nn::fs::CustomStorageId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || System | |||
|- | |||
| 1 || SdCard | |||
|} | |||
= Priority = | |||
This is "nn::fs::Priority". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Realtime | |||
|- | |||
| 1 || Normal | |||
|- | |||
| 2 || Low | |||
|} | |||
= PriorityRaw = | |||
This is "nn::fs::PriorityRaw". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Realtime | |||
|- | |||
| 1 || Normal | |||
|- | |||
| 2 || Low | |||
|- | |||
| 3 || Background | |||
|} | |||
= AbortSpecifier = | |||
This is "nn::fs::AbortSpecifier". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Default | |||
|- | |||
| 1 || Abort | |||
|- | |||
| 2 || ReturnResult | |||
|} | |||
= OperationId = | |||
This is "nn::fs::OperationId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Clear | |||
|- | |||
| 1 || ClearSignature | |||
|- | |||
| 2 || InvalidateCache | |||
|- | |||
| 3 || QueryRange | |||
|} | |||
= MountHostOption = | |||
This is "nn::fs::MountHostOption". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 1 || PseudoCaseSensitive | |||
|} | |||
= BisPartitionId = | |||
This is "nn::fs::BisPartitionId". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || BootPartition1Root | |||
|- | |||
| 10 || BootPartition2Root | |||
|- | |||
| 20 || UserDataRoot | |||
|- | |||
| 21 || BootConfigAndPackage2Part1 | |||
|- | |||
| 22 || BootConfigAndPackage2Part2 | |||
|- | |||
| 23 || BootConfigAndPackage2Part3 | |||
|- | |||
| 24 || BootConfigAndPackage2Part4 | |||
|- | |||
| 25 || BootConfigAndPackage2Part5 | |||
|- | |||
| 26 || BootConfigAndPackage2Part6 | |||
|- | |||
| 27 || CalibrationBinary | |||
|- | |||
| 28 || CalibrationFile | |||
|- | |||
| 29 || SafeMode | |||
|- | |||
| 30 || User | |||
|- | |||
| 31 || System | |||
|- | |||
| 32 || SystemProperEncryption | |||
|- | |||
| 33 || SystemProperPartition | |||
|- | |||
| 34 || SignedSystemPartitionOnSafeMode | |||
|- | |||
| 35 || [16.0.0+] DeviceTreeBlob | |||
|- | |||
| 36 || [16.0.0+] System0 | |||
|} | |||
= SdCardSpeedMode = | |||
This is "nn::fs::SdCardSpeedMode". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Identification | |||
|- | |||
| 1 || DefaultSpeed | |||
|- | |||
| 2 || HighSpeed | |||
|- | |||
| 3 || Sdr12 | |||
|- | |||
| 4 || Sdr25 | |||
|- | |||
| 5 || Sdr50 | |||
|- | |||
| 6 || Sdr104 | |||
|- | |||
| 7 || Ddr50 | |||
|- | |||
| 8 || Unknown | |||
|} | |||
= MmcSpeedMode = | |||
This is "nn::fs::MmcSpeedMode". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Identification | |||
|- | |||
| 1 || LegacySpeed | |||
|- | |||
| 2 || HighSpeed | |||
|- | |||
| 3 || Hs200 | |||
|- | |||
| 4 || Hs400 | |||
|- | |||
| 5 || Unknown | |||
|} | |||
= MmcPartition = | |||
This is "nn::fs::MmcPartition". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || UserData | |||
|- | |||
| 1 || BootPartition1 | |||
|- | |||
| 2 || BootPartition2 | |||
|} | |||
= MemoryReportInfo = | |||
This is "nn::fs::MemoryReportInfo". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| PooledBufferFreeSizePeak | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| PooledBufferRetriedCount | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| PooledBufferReduceAllocationCount | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| BufferManagerFreeSizePeak | |||
|- | |||
| 0x20 | |||
| 0x8 | |||
| BufferManagerRetriedCount | |||
|- | |||
| 0x28 | |||
| 0x8 | |||
| ExpHeapFreeSizePeak | |||
|- | |||
| 0x30 | |||
| 0x8 | |||
| BufferPoolFreeSizePeak | |||
|- | |||
| 0x38 | |||
| 0x8 | |||
| PatrolReadAllocateBufferSuccessCount | |||
|- | |||
| 0x40 | |||
| 0x8 | |||
| PatrolReadAllocateBufferFailureCount | |||
|- | |||
| 0x48 | |||
| 0x8 | |||
| BufferManagerTotalAllocatableSizePeak | |||
|- | |||
| 0x50 | |||
| 0x8 | |||
| BufferPoolAllocateSizeMax | |||
|- | |||
| 0x58 | |||
| 0x8 | |||
| PooledBufferFailedIdealAllocationCountOnAsyncAccess | |||
|- | |||
| 0x60 | |||
| 0x20 | |||
| Reserved | |||
|} | |||
= StorageErrorInfo = | |||
This is "nn::fs::StorageErrorInfo". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| NumActivationFailures | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| NumActivationErrorCorrections | |||
|- | |||
| 0x8 | |||
| 0x4 | |||
| NumReadWriteFailures | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| NumReadWriteErrorCorrections | |||
|} | |||
= GameCardErrorInfo = | |||
This is "nn::fs::GameCardErrorInfo". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x2 | |||
| GameCardCrcErrorCount | |||
|- | |||
| 0x2 | |||
| 0x2 | |||
| Reserved | |||
|- | |||
| 0x4 | |||
| 0x2 | |||
| AsicCrcErrorCount | |||
|- | |||
| 0x6 | |||
| 0x2 | |||
| Reserved | |||
|- | |||
| 0x8 | |||
| 0x2 | |||
| RefreshCount | |||
|- | |||
| 0xA | |||
| 0x2 | |||
| Reserved | |||
|- | |||
| 0xC | |||
| 0x2 | |||
| ReadRetryCount | |||
|- | |||
| 0xE | |||
| 0x2 | |||
| TimeoutRetryErrorCount | |||
|} | |||
= GameCardErrorReportInfo = | |||
This is "nn::fs::GameCardErrorReportInfo". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x10 | |||
| [[#GameCardErrorInfo|ErrorInfo]] | |||
|- | |||
| 0x10 | |||
| 0x2 | |||
| AsicReinitializeFailureDetail | |||
|- | |||
| 0x12 | |||
| 0x2 | |||
| InsertionCount | |||
|- | |||
| 0x14 | |||
| 0x2 | |||
| RemovalCount | |||
|- | |||
| 0x16 | |||
| 0x2 | |||
| AsicReinitializeCount | |||
|- | |||
| 0x18 | |||
| 0x4 | |||
| AsicInitializeCount | |||
|- | |||
| 0x1C | |||
| 0x2 | |||
| AsicReinitializeFailureCount | |||
|- | |||
| 0x1E | |||
| 0x2 | |||
| AwakenFailureCount | |||
|- | |||
| 0x20 | |||
| 0x2 | |||
| Reserved | |||
|- | |||
| 0x22 | |||
| 0x2 | |||
| RefreshCount | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| LastReadErrorPageAddress | |||
|- | |||
| 0x28 | |||
| 0x4 | |||
| LastReadErrorPageCount | |||
|- | |||
| 0x2C | |||
| 0x4 | |||
| AwakenCount | |||
|- | |||
| 0x30 | |||
| 0x4 | |||
| ReadCountFromInsert | |||
|- | |||
| 0x34 | |||
| 0x4 | |||
| ReadCountFromAwaken | |||
|- | |||
| 0x38 | |||
| 0x8 | |||
| Reserved | |||
|} | |||
= GameCardHandle = | |||
This is "nn::fs::GameCardHandle". This is an u32. | |||
= GameCardPartition = | |||
This is "nn::fs::GameCardPartition". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || Update | |||
|- | |||
| 1 || Normal | |||
|- | |||
| 2 || Secure | |||
|- | |||
| 3 || [4.0.0+] Logo | |||
|} | |||
= GameCardPartitionRaw = | |||
This is "nn::fs::GameCardPartitionRaw". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 0 || NormalReadOnly | |||
|- | |||
| 1 || SecureReadOnly | |||
|- | |||
| 2 || RootWriteOnly | |||
|} | |||
= GameCardAttribute = | |||
This is "nn::fs::GameCardAttribute". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 1 || AutoBootFlag | |||
|- | |||
| 2 || HistoryEraseFlag | |||
|- | |||
| 4 || [4.0.0+] RepairToolFlag | |||
|- | |||
| 8 || [9.0.0+] DifferentRegionCupToTerraDeviceFlag | |||
|- | |||
| 16 || [9.0.0+] DifferentRegionCupToGlobalDeviceFlag | |||
|} | |||
= GameCardSize = | |||
This is "nn::fs::GameCardSize". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 1 || Size1GB | |||
|- | |||
| 2 || Size2GB | |||
|- | |||
| 4 || Size4GB | |||
|- | |||
| 8 || Size8GB | |||
|- | |||
| 16 || Size16GB | |||
|- | |||
| 32 || Size32GB | |||
|} | |||
= GameCardClockRate = | |||
This is "nn::fs::GameCardClockRate". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Name | |||
|- | |||
| 25 || ClockRate25MHz | |||
|- | |||
| 50 || ClockRate50MHz | |||
|} | |} | ||
= | = GameCardCompatibilityType = | ||
This is "nn::fs:: | This is "nn::fs::GameCardCompatibilityType". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,734: | Line 2,532: | ||
! Value || Name | ! Value || Name | ||
|- | |- | ||
| 0 || | | 0 || Global | ||
|- | |- | ||
| 1 || | | 1 || China | ||
|} | |} | ||
= | = GameCardUpdatePartitionInfo = | ||
This is "nn::fs:: | This is "nn::fs::GameCardUpdatePartitionInfo". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| | | 0x4 | ||
| Version | |||
|- | |- | ||
| 0x4 | |||
| 0x4 | |||
| Reserved | |||
|- | |- | ||
| | | 0x8 | ||
| 0x8 | |||
| Id | |||
|} | |} | ||
= | = GameCardIdSet = | ||
This is "nn:: | This is "nn::gc::GameCardIdSet". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| 0x4 | |||
| [[#CardId1|Id1]] | |||
|- | |- | ||
| | | 0x4 | ||
| 0x4 | |||
| [[#CardId2|Id2]] | |||
|- | |- | ||
| | | 0x8 | ||
| 0x4 | |||
| [[#CardId3|Id3]] | |||
|} | |} | ||
= | = CardId1 = | ||
This is "nn:: | This is "nn::gc::detail::CardId1". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| 0x1 | |||
| [[#MakerCodeForCardId1|MakerCode]] | |||
|- | |- | ||
| | | 0x1 | ||
| 0x1 | |||
| [[#MemoryCapacity|MemoryCapacity]] | |||
| | |||
|- | |- | ||
| | | 0x2 | ||
| | | 0x1 | ||
| | | Reserved | ||
|- | |- | ||
| | | 0x3 | ||
| 0x1 | |||
| MemoryType | |||
|} | |} | ||
= | = CardId2 = | ||
This is "nn:: | This is "nn::gc::detail::CardId2". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| 0x1 | |||
| CardSecurityNumber | |||
|- | |- | ||
| | | 0x1 | ||
| 0x1 | |||
| CardType | |||
|- | |- | ||
| | | 0x2 | ||
| 0x2 | |||
| Reserved | |||
|} | |} | ||
= | = CardId3 = | ||
This is "nn:: | This is "nn::gc::detail::CardId3". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| 0x4 | |||
| Reserved | |||
|} | |} | ||
= | = MakerCodeForCardId1 = | ||
This is "nn:: | This is "nn::gc::detail::MakerCodeForCardId1". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,880: | Line 2,650: | ||
! Value || Name | ! Value || Name | ||
|- | |- | ||
| | | 0x36 || Unknown | ||
|- | |- | ||
| | | 0xC2 || MegaChips | ||
|- | |- | ||
| | | 0xAE || Lapis | ||
|} | |} | ||
= | = MemoryCapacity = | ||
This is "nn:: | This is "nn::gc::detail::MemoryCapacity". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 1,898: | Line 2,664: | ||
! Value || Name | ! Value || Name | ||
|- | |- | ||
| | | 0xFA || 1GB | ||
|- | |- | ||
| | | 0xF8 || 2GB | ||
|- | |- | ||
| | | 0xF0 || 4GB | ||
|- | |- | ||
| | | 0xE0 || 8GB | ||
|- | |- | ||
| | | 0xE1 || 16GB | ||
|- | |- | ||
| | | 0xE2 || 32GB | ||
|} | |} | ||
= | = RmaInformation = | ||
This is "nn:: | This is "nn::gc::RmaInformation". This is a 0x200-byte struct. | ||
= SimulatingDeviceType = | = SimulatingDeviceType = | ||
Line 1,995: | Line 2,752: | ||
|} | |} | ||
= | = FspPath = | ||
This is "nn::fssrv::sf::FspPath". This is a 0x301-byte string. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" |