Changes

2,227 bytes added ,  18:03, 11 September 2019
no edit summary
Line 4: Line 4:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Arguments || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || OpenCodeFileSystem || u64 TitleId + X descriptor [[#ContentPath]] || Returns an [[#IFileSystem]].
+
| 0 || [[#OpenCodeFileSystem]]
 
|-
 
|-
| 1 || IsArchivedProgram || u64 ProcessId || Returns a bool (1 if the process id's [[#ContentPath]] ends in ".nca").
+
| 1 || [[#IsArchivedProgram]]
 
|-
 
|-
| 2 || [4.0.0+] SetCurrentProcess || PID descriptor ||
+
| 2 || [4.0.0+] [[#SetCurrentProcess]]
 
|}
 
|}
 +
 +
== OpenCodeFileSystem ==
 +
Takes an u64 TitleId and a [[#ContentPath]]. Returns an [[#IFileSystem]].
 +
 +
== IsArchivedProgram ==
 +
Takes an u64 ProcessId. Returns a bool (1 if the process id's [[#ContentPath]] ends in ".nca").
 +
 +
== SetCurrentProcess ==
 +
Takes a PID descriptor.
    
= fsp-pr =
 
= fsp-pr =
Line 18: Line 27:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || [[#RegisterProgram]] ||
+
| 0 || [[#RegisterProgram]]
 
|-
 
|-
| 1 || [[#UnregisterProgram]] ||
+
| 1 || [[#UnregisterProgram]]
 
|-
 
|-
| 2 || [4.0.0+] SetCurrentProcess ||
+
| 2 || [4.0.0+] [[#SetCurrentProcess]]
 
|-
 
|-
| 256 || [[#SetEnabledProgramVerification]] ||
+
| 256 || [[#SetEnabledProgramVerification]]
 
|}
 
|}
   Line 99: Line 108:  
| 34 || [5.0.0+] GetCacheStorageSize
 
| 34 || [5.0.0+] GetCacheStorageSize
 
|-
 
|-
| 35 || [6.0.0+] CreateSaveDataFileSystemByHashSalt (Unofficial name, takes a total of 0xB0-bytes of input, no output)
+
| 35 || [6.0.0+] [[#OpenSaveDataFileSystemByHashSalt]]
 
|-
 
|-
| 36 || [9.0.0+]  
+
| 36 || [9.0.0+] OpenHostFileSystemWithOption
 
|-
 
|-
 
| 51 || [[#OpenSaveDataFileSystem]]
 
| 51 || [[#OpenSaveDataFileSystem]]
Line 127: Line 136:  
| 66 || [5.0.0+] WriteSaveDataFileSystemExtraDataWithMask
 
| 66 || [5.0.0+] WriteSaveDataFileSystemExtraDataWithMask
 
|-
 
|-
| 67 || [6.0.0+] FindSaveDataWithFilter (Takes a total of 0x50-bytes of input, returns 8-bytes of output, and a type-0x6 output buffer)
+
| 67 || [6.0.0+] [[#FindSaveDataWithFilter]]
 
|-
 
|-
| 68 || [6.0.0+] OpenSaveDataInfoReaderWithFilter (Takes a total of 0x50-bytes of input, returns an #ISaveDataInfoReader)
+
| 68 || [6.0.0+] [[#OpenSaveDataInfoReaderWithFilter]]
 
|-
 
|-
 
| 69 || [8.0.0+] ReadSaveDataFileSystemExtraDataBySaveDataAttribute
 
| 69 || [8.0.0+] ReadSaveDataFileSystemExtraDataBySaveDataAttribute
Line 137: Line 146:  
| 80 || OpenSaveDataMetaFile
 
| 80 || OpenSaveDataMetaFile
 
|-
 
|-
| 81 || [4.0.0+] OpenSaveDataTransferManager (No input, returns an [[#ISaveDataTransferManager]])
+
| 81 || [4.0.0+] [[#OpenSaveDataTransferManager]]
 
|-
 
|-
| 82 || [5.0.0+] OpenSaveDataTransferManagerVersion2 (No input, returns an [[#ISaveDataTransferManagerWithDivision]])
+
| 82 || [5.0.0+] [[#OpenSaveDataTransferManagerVersion2]]
 
|-
 
|-
| 83 || [6.0.0+] OpenSaveDataTransferProhibiterForCloudBackUp (Takes an input u64, returns an [[#ISaveDataTransferProhibiter]])
+
| 83 || [6.0.0+] [[#OpenSaveDataTransferProhibiterForCloudBackUp]]
 
|-
 
|-
| 84 || [6.0.0+] ListApplicationAccessibleSaveDataOwnerId (Takes a total of 0x10-bytes of input, returns 4-bytes of output, and a type-0x6 output buffer)
+
| 84 || [6.0.0+] [[#ListApplicationAccessibleSaveDataOwnerId]]
 
|-
 
|-
| 85 || [9.0.0+] (No input, returns an output [[#IUnknown0]])
+
| 85 || [9.0.0+] [[#OpenSaveDataTransferManagerForSaveDataRepair]]
 
|-
 
|-
 
| 100 || OpenImageDirectoryFileSystem
 
| 100 || OpenImageDirectoryFileSystem
Line 151: Line 160:  
| 110 || [[#OpenContentStorageFileSystem]]
 
| 110 || [[#OpenContentStorageFileSystem]]
 
|-
 
|-
| 120 || [6.0.0+] OpenCloudBackupWorkStorageFileSystem (Takes 4-bytes of input, returns an [[#IFileSystem]])
+
| 120 || [6.0.0+] [[#OpenCloudBackupWorkStorageFileSystem]]
 
|-
 
|-
| 130 || [7.0.0+] [[#OpenCustomStorageFileSystem]] (Takes 4-bytes of input, returns an [[#IFileSystem]])
+
| 130 || [7.0.0+] [[#OpenCustomStorageFileSystem]]
 
|-
 
|-
 
| 200 || OpenDataStorageByCurrentProcess
 
| 200 || OpenDataStorageByCurrentProcess
Line 163: Line 172:  
| 203 || OpenPatchDataStorageByCurrentProcess
 
| 203 || OpenPatchDataStorageByCurrentProcess
 
|-
 
|-
| 204 || [7.0.0+] OpenDataFileSystemWithProgramIndex (Takes an input u8, returns an [[#IFileSystem]])
+
| 204 || [7.0.0+] [[#OpenDataFileSystemWithProgramIndex]]
 
|-
 
|-
| 205 || [7.0.0+] OpenDataStorageWithProgramIndex (Takes an input u8, returns an [[#IStorage]])
+
| 205 || [7.0.0+] [[#OpenDataStorageWithProgramIndex]]
 
|-
 
|-
 
| 400 || [[#OpenDeviceOperator]]
 
| 400 || [[#OpenDeviceOperator]]
Line 177: Line 186:  
| 511 || [5.0.0+] NotifySystemDataUpdateEvent
 
| 511 || [5.0.0+] NotifySystemDataUpdateEvent
 
|-
 
|-
| 520 || [6.0.0+] SimulateDeviceDetectionEvent (Takes a total of 0xC-bytes of input, no output)
+
| 520 || [6.0.0+] [[#SimulateDeviceDetectionEvent]]
 
|-
 
|-
 
| 600 || [1.0.0-3.0.2] SetCurrentPosixTime
 
| 600 || [1.0.0-3.0.2] SetCurrentPosixTime
Line 259: Line 268:  
| 1010 || [5.1.0-6.2.0] SetDataStorageRedirectTarget
 
| 1010 || [5.1.0-6.2.0] SetDataStorageRedirectTarget
 
|-
 
|-
| 1011 || [7.0.0+] GetProgramIndexForAccessLog (No input, returns two 32-bit values "version" and "program_index")
+
| 1011 || [7.0.0+] [[#GetProgramIndexForAccessLog]]
 
|-
 
|-
| 1012 || [9.0.0+]
+
| 1012 || [9.0.0+] GetFsStackUsage
 
|-
 
|-
| 1013 || [9.0.0+]
+
| 1013 || [9.0.0+] UnsetSaveDataRootPath
 
|-
 
|-
 
| 1100 || [4.0.0+] OverrideSaveDataTransferTokenSignVerificationKey
 
| 1100 || [4.0.0+] OverrideSaveDataTransferTokenSignVerificationKey
Line 269: Line 278:  
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset
 
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset
 
|-
 
|-
| 1200 || [6.0.0+] OpenMultiCommitManager (No input, returns an output #IMultiCommitManager)
+
| 1200 || [6.0.0+] [[#OpenMultiCommitManager]]
 
|}
 
|}
   Line 564: Line 573:     
Mounts a [[Gamecard_Partition|gamecard partition]].
 
Mounts a [[Gamecard_Partition|gamecard partition]].
 +
 +
== OpenSaveDataFileSystemByHashSalt ==
 +
Takes a total of 0xB0-bytes of input, no output.
    
== OpenSaveDataFileSystem ==
 
== OpenSaveDataFileSystem ==
Line 592: Line 604:  
== OpenSaveDataInfoReaderBySaveDataSpaceId ==
 
== OpenSaveDataInfoReaderBySaveDataSpaceId ==
 
Takes an input u8 [[#SaveDataSpaceId]], returns an output [[#ISaveDataInfoReader]].
 
Takes an input u8 [[#SaveDataSpaceId]], returns an output [[#ISaveDataInfoReader]].
 +
 +
== FindSaveDataWithFilter ==
 +
Takes a total of 0x50-bytes of input, returns 8-bytes of output and a type-0x6 output buffer.
 +
 +
== OpenSaveDataInfoReaderWithFilter ==
 +
Takes a total of 0x50-bytes of input, returns an [[#ISaveDataInfoReader]].
 +
 +
== OpenSaveDataTransferManager ==
 +
No input, returns an [[#ISaveDataTransferManager]].
 +
 +
== OpenSaveDataTransferManagerVersion2 ==
 +
No input, returns an [[#ISaveDataTransferManagerWithDivision]].
 +
 +
== OpenSaveDataTransferProhibiterForCloudBackUp ==
 +
Takes an input u64, returns an [[#ISaveDataTransferProhibiter]].
 +
 +
== ListApplicationAccessibleSaveDataOwnerId ==
 +
Takes a total of 0x10-bytes of input, returns 4-bytes of output and a type-0x6 output buffer.
 +
 +
== OpenSaveDataTransferManagerForSaveDataRepair ==
 +
No input, returns an output [[#ISaveDataTransferManagerForSaveDataRepair]].
    
== OpenContentStorageFileSystem ==
 
== OpenContentStorageFileSystem ==
Line 597: Line 630:     
Returns an [[#IFileSystem]] with NCA files. The read data from these files is identical to the data read by [[NCM_services#ReadContentIdFile]].
 
Returns an [[#IFileSystem]] with NCA files. The read data from these files is identical to the data read by [[NCM_services#ReadContentIdFile]].
 +
 +
== OpenCloudBackupWorkStorageFileSystem ==
 +
Takes 4-bytes of input, returns an [[#IFileSystem]].
    
== OpenCustomStorageFileSystem ==
 
== OpenCustomStorageFileSystem ==
Line 607: Line 643:     
Returns a [[IPC_Marshalling#Domain_message|domain object ID]] implementing the [[#IStorage]] interface for data archives.
 
Returns a [[IPC_Marshalling#Domain_message|domain object ID]] implementing the [[#IStorage]] interface for data archives.
 +
 +
== OpenDataFileSystemWithProgramIndex ==
 +
Takes an input u8, returns an [[#IFileSystem]].
 +
 +
== OpenDataStorageWithProgramIndex ==
 +
Takes an input u8, returns an [[#IStorage]].
    
== OpenDeviceOperator ==
 
== OpenDeviceOperator ==
Line 616: Line 658:  
== 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.
 +
 +
== SimulateDeviceDetectionEvent ==
 +
Takes a total of 0xC-bytes of input, no output.
    
== VerifySaveDataFileSystem ==
 
== VerifySaveDataFileSystem ==
Line 668: Line 713:     
The input buffer is written to the "$FsAccessLog:/FsAccessLog.txt" file, where "$FsAccessLog" is the SD-card mount-name. It's written to the current end of the file(appended).
 
The input buffer is written to the "$FsAccessLog:/FsAccessLog.txt" file, where "$FsAccessLog" is the SD-card mount-name. It's written to the current end of the file(appended).
 +
 +
== GetProgramIndexForAccessLog ==
 +
No input, returns two 32-bit values "version" and "program_index".
 +
 +
== OpenMultiCommitManager ==
 +
No input, returns an output [[#IMultiCommitManager]].
    
= IStorage =
 
= IStorage =
Line 676: Line 727:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Arguments
+
! Cmd || Name
 
|-
 
|-
| 0 || Read || Takes a type-0x46 buffer, an offset and length
+
| 0 || [[#Read]]
 
|-
 
|-
| 1 || Write || Takes a type-0x45 buffer, an offset and length
+
| 1 || [[#Write]]
 
|-
 
|-
| 2 || Flush || None
+
| 2 || [[#Flush]]
 
|-
 
|-
| 3 || SetSize || Takes a size
+
| 3 || [[#SetSize]]
 
|-
 
|-
| 4 || GetSize || None
+
| 4 || [[#GetSize]]
 
|-
 
|-
| 5 || [4.0.0+] OperateRange ||
+
| 5 || [4.0.0+] OperateRange
 
|}
 
|}
 +
 +
== Read ==
 +
Takes a type-0x46 buffer, an offset and length.
 +
 +
== Write ==
 +
Takes a type-0x45 buffer, an offset and length.
 +
 +
== Flush ==
 +
No input.
 +
 +
== SetSize ==
 +
Takes a size.
 +
 +
== GetSize ==
 +
Returns a size.
    
= IFileSystem =
 
= IFileSystem =
Line 930: Line 996:  
| 219 || [8.0.0+] ChallengeCardExistence
 
| 219 || [8.0.0+] ChallengeCardExistence
 
|-
 
|-
| 220 || [9.0.0+]
+
| 220 || [9.0.0+] GetGameCardCompatibilityType
 
|-
 
|-
 
| 300 || SetSpeedEmulationMode
 
| 300 || SetSpeedEmulationMode
Line 940: Line 1,006:  
| 401 || [5.0.0+] ResumeSdmmcControl
 
| 401 || [5.0.0+] ResumeSdmmcControl
 
|-
 
|-
| 402 || [6.0.0+] GetSdmmcConnectionStatus (Takes a total of 4-bytes of input, returns a total of 8-bytes of output)
+
| 402 || [6.0.0+] [[#GetSdmmcConnectionStatus]]
 
|-
 
|-
| 500 || [6.0.0+] SetDeviceSimulationEvent (Takes a total of 0x14-bytes of input, no output)
+
| 500 || [6.0.0+] [[#SetDeviceSimulationEvent]]
 
|-
 
|-
| 501 || [6.0.0+] ClearDeviceSimulationEvent (Takes a total of 4-bytes of input, no output)
+
| 501 || [6.0.0+] [[#ClearDeviceSimulationEvent]]
 
|}
 
|}
   Line 954: Line 1,020:     
[[NS_Services|NS]] appears to only use this with [[Content_Manager_services#GetTitleIdInfo]] and [[Content_Manager_services#GetUpdateTitleList]] with storageid=nandsys, for checking whether a sysupdate is required.
 
[[NS_Services|NS]] appears to only use this with [[Content_Manager_services#GetTitleIdInfo]] and [[Content_Manager_services#GetUpdateTitleList]] with storageid=nandsys, for checking whether a sysupdate is required.
 +
 +
== 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.
    
= IEventNotifier =
 
= IEventNotifier =
Line 967: Line 1,042:  
= ISaveDataTransferManager =
 
= ISaveDataTransferManager =
 
This is "nn::fssrv::sf::ISaveDataTransferManager".
 
This is "nn::fssrv::sf::ISaveDataTransferManager".
 +
 +
This was added with [[4.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 980: Line 1,057:  
| 64 || [[#OpenSaveDataImporter]]
 
| 64 || [[#OpenSaveDataImporter]]
 
|}
 
|}
  −
This was added with [[4.0.0]].
      
== GetChallenge ==
 
== GetChallenge ==
Line 994: Line 1,069:  
== OpenSaveDataImporter ==
 
== OpenSaveDataImporter ==
 
Takes an input u8 [[#SaveDataSpaceId]] and a 0x10-byte userID, and a type-0x5 input buffer. Returns an output u64 and an [[#ISaveDataImporter]].
 
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]].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#GetChallenge]]
 +
|-
 +
| 16 || [[#SetKeyPackage]]
 +
|-
 +
| 80 || [[#OpenSaveDataExporterAndGetEncryptedKey]]
 +
|-
 +
| 81 || [[#PrepareOpenSaveDataImporter]]
 +
|-
 +
| 90 || [[#OpenSaveDataImporter]]
 +
|-
 +
| 91 || [[#OpenSaveDataImporter2]]
 +
|-
 +
| 100 || [[#OpenSaveDataExporterWithKey]]
 +
|-
 +
| 110 || [[#OpenSaveDataImporterWithKey]]
 +
|}
 +
 +
== SetKeyPackage ==
 +
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 a type-0x1A output buffer to receive a RsaEncryptedKey.
 +
 +
== OpenSaveDataImporter ==
 +
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 a total of 0x20-bytes of input, returns an [[#ISaveDataDivisionExporter]].
 +
 +
== OpenSaveDataImporterWithKey ==
 +
Takes a total of 0x28-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
    
= ISaveDataExporter =
 
= ISaveDataExporter =
 
This is "nn::fssrv::sf::ISaveDataExporter".
 
This is "nn::fssrv::sf::ISaveDataExporter".
 +
 +
This was added with [[4.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,010: Line 1,134:  
| 17 || [[#PullInitialData]]
 
| 17 || [[#PullInitialData]]
 
|}
 
|}
  −
This was added with [[4.0.0]].
      
== GetSaveDataInfo ==
 
== GetSaveDataInfo ==
Line 1,029: Line 1,151:  
= ISaveDataImporter =
 
= ISaveDataImporter =
 
This is "nn::fssrv::sf::ISaveDataImporter".
 
This is "nn::fssrv::sf::ISaveDataImporter".
 +
 +
This was added with [[4.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,042: Line 1,166:  
| 17 || [[#Finalize]]
 
| 17 || [[#Finalize]]
 
|}
 
|}
  −
This was added with [[4.0.0]].
      
== GetSaveDataInfo ==
 
== GetSaveDataInfo ==
Line 1,061: Line 1,183:  
= ISaveDataTransferManagerWithDivision =
 
= ISaveDataTransferManagerWithDivision =
 
This is "nn::fssrv::sf::ISaveDataTransferManagerWithDivision".
 
This is "nn::fssrv::sf::ISaveDataTransferManagerWithDivision".
 +
 +
This was added with [[5.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,090: Line 1,214:  
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
 
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
 
|}
 
|}
  −
This was added with [[5.0.0]].
      
== GetChallenge ==
 
== GetChallenge ==
Line 1,128: Line 1,250:  
= ISaveDataDivisionExporter =
 
= ISaveDataDivisionExporter =
 
This is "nn::fssrv::sf::ISaveDataDivisionExporter".
 
This is "nn::fssrv::sf::ISaveDataDivisionExporter".
 +
 +
This was added with [[5.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,133: Line 1,257:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || SetDivisionCount (Takes an input u32, no output)
+
| 0 || [[#SetDivisionCount]]
 
|-
 
|-
| 1 || [6.0.0+] GetSaveDataInfo (No input/output, takes a type-0x6 output buffer)
+
| 1 || [6.0.0+] [[#GetSaveDataInfo]]
 
|-
 
|-
| 16 || OpenSaveDataDiffChunkIterator (No input, returns an [[#ISaveDataChunkIterator]])
+
| 16 || [[#OpenSaveDataDiffChunkIterator]]
 
|-
 
|-
| 48 || OpenSaveDataChunkExporter (Takes an input u32, returns an [[#ISaveDataChunkExporter]])
+
| 48 || [[#OpenSaveDataChunkExporter]]
 
|-
 
|-
| 64 || [6.0.0-8.1.0] FinalizeFullExport (No input, returns two 0x10-byte output structs)
+
| 64 || [6.0.0-8.1.0] [[#FinalizeFullExport]]
 
|-
 
|-
| 65 || [6.0.0-8.1.0] FinalizeDiffExport (No input, returns an output 0x10-byte struct)
+
| 65 || [6.0.0-8.1.0] [[#FinalizeDiffExport]]
 
|-
 
|-
| 66 || [6.0.0+] CancelExport (No input/output)
+
| 66 || [6.0.0+] [[#CancelExport]]
 
|-
 
|-
| 67 || [6.0.0+] SuspendExport (No input/output, takes a type-0x6 output buffer)
+
| 67 || [6.0.0+] [[#SuspendExport]]
 
|-
 
|-
| 70 || [6.0.0+] GetKeySeed (No input, returns an output 0x10-byte struct)
+
| 70 || [6.0.0+] [[#GetKeySeed]]
 
|-
 
|-
| 71 || [6.0.0+] GetInitialDataMac (No input, returns an output 0x10-byte struct)
+
| 71 || [6.0.0+] [[#GetInitialDataMac]]
 
|-
 
|-
| 72 || [6.0.0+] FinalizeExport (No input/output)
+
| 72 || [6.0.0+] [[#FinalizeExport]]
 
|-
 
|-
| 73 || [9.0.0+]
+
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]]
 
|-
 
|-
| 80 || [6.0.0+] GetImportInitialDataAad (No input, returns an output 0x20-byte struct)
+
| 80 || [6.0.0+] [[#GetImportInitialDataAad]]
 
|-
 
|-
| 81 || [6.0.0+] SetExportInitialDataAad (Takes an input 0x20-byte struct, no output)
+
| 81 || [6.0.0+] [[#SetExportInitialDataAad]]
 
|-
 
|-
| 96 || [6.0.0+] GetReportInfo (No input, returns an output 0x20-byte struct)
+
| 96 || [6.0.0+] [[#GetReportInfo]]
 
|}
 
|}
   −
This was added with [[5.0.0]].
+
== SetDivisionCount ==
 +
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 =
 
= ISaveDataDivisionImporter =
 
This is "nn::fssrv::sf::ISaveDataDivisionImporter".
 
This is "nn::fssrv::sf::ISaveDataDivisionImporter".
 +
 +
This was added with [[5.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,173: Line 1,327:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [6.0.0+] GetSaveDataInfo (No input/output, takes a type-0x6 output buffer)
+
| 0 || [6.0.0+] [[#GetSaveDataInfo]]
 
|-
 
|-
| 16 || OpenSaveDataDiffChunkIterator (No input, returns an [[#ISaveDataChunkIterator]])
+
| 16 || [[#OpenSaveDataDiffChunkIterator]]
 
|-
 
|-
| 32 || InitializeImport (No input, returns an output u64)
+
| 32 || [[#InitializeImport]]
 
|-
 
|-
| 33 || FinalizeImport (No input/output)
+
| 33 || [[#FinalizeImport]]
 
|-
 
|-
| 34 || [6.0.0+] CancelImport (No input/output)
+
| 34 || [6.0.0+] [[#CancelImport]]
 
|-
 
|-
| 35 || [6.0.0+] GetImportContext (No input/output, takes a type-0x6 output buffer)
+
| 35 || [6.0.0+] [[#GetImportContext]]
 
|-
 
|-
| 36 || [6.0.0+] SuspendImport (No input/output)
+
| 36 || [6.0.0+] [[#SuspendImport]]
 
|-
 
|-
| 48 || OpenSaveDataChunkImporter (Takes an input u32, returns an [[#ISaveDataChunkImporter]])
+
| 48 || [[#OpenSaveDataChunkImporter]]
 
|-
 
|-
| 64 || [6.0.0+] GetImportInitialDataAad (No input, returns an output 0x20-byte struct)
+
| 64 || [6.0.0+] [[#GetImportInitialDataAad]]
 
|-
 
|-
| 80 || [6.0.0+] GetReportInfo (No input, returns an output 0x20-byte struct)
+
| 80 || [6.0.0+] [[#GetReportInfo]]
 
|}
 
|}
   −
This was added with [[5.0.0]].
+
== GetSaveDataInfo ==
 +
No input/output, takes a type-0x6 output buffer.
 +
 
 +
== OpenSaveDataDiffChunkIterator ==
 +
No input, returns an [[#ISaveDataChunkIterator]].
 +
 
 +
== InitializeImport ==
 +
No input, returns an output u64.
 +
 
 +
== 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 =
 
= ISaveDataChunkIterator =
 
This is "nn::fssrv::sf::ISaveDataChunkIterator".
 
This is "nn::fssrv::sf::ISaveDataChunkIterator".
 +
 +
This was added with [[5.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,203: Line 1,387:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || Next (No input/output)
+
| 0 || [[#Next]]
 
|-
 
|-
| 1 || IsEnd (No input, returns an output u8)
+
| 1 || [[#IsEnd]]
 
|-
 
|-
| 16 || GetId (No input, returns an output u32)
+
| 16 || [[#GetId]]
 
|}
 
|}
   −
This was added with [[5.0.0]].
+
== Next ==
 +
No input/output.
 +
 
 +
== IsEnd ==
 +
No input, returns an output u8.
 +
 
 +
== GetId ==
 +
No input, returns an output u32.
    
= ISaveDataChunkExporter =
 
= ISaveDataChunkExporter =
 
This is "nn::fssrv::sf::ISaveDataChunkExporter".
 
This is "nn::fssrv::sf::ISaveDataChunkExporter".
 +
 +
This was added with [[5.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,219: Line 1,412:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || Pull (Takes an input u64 and a type-0x6 output buffer, returns an output u64)
+
| 0 || [[#Pull]]
|-
  −
| 16 || [6.0.0+] GetRestRawDataSize (No input, returns an output u64)
   
|-
 
|-
 +
| 16 || [6.0.0+] [[#GetRestRawDataSize]]
 
|}
 
|}
   −
This was added with [[5.0.0]].
+
== Pull ==
 +
Takes an input u64 and a type-0x6 output buffer, returns an output u64.
 +
 
 +
== GetRestRawDataSize ==
 +
No input, returns an output u64.
    
= ISaveDataChunkImporter =
 
= ISaveDataChunkImporter =
 
This is "nn::fssrv::sf::ISaveDataChunkImporter".
 
This is "nn::fssrv::sf::ISaveDataChunkImporter".
 +
 +
This was added with [[5.0.0]].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,234: Line 1,432:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || Push (Takes an input u64 and a type-0x5 input buffer, no output)
+
| 0 || [[#Push]]
 
|}
 
|}
   −
This was added with [[5.0.0]].
+
== Push ==
 +
Takes an input u64 and a type-0x5 input buffer, no output.
    
= ISaveDataTransferProhibiter =
 
= ISaveDataTransferProhibiter =
Line 1,245: Line 1,444:     
= IMultiCommitManager =
 
= IMultiCommitManager =
 +
This was added with [[6.0.0]].
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 1 || Add (Takes an input [[#IFilesystem]], no output)
+
| 1 || [[#Add]]
 
|-
 
|-
| 2 || Commit (No input/output)
+
| 2 || [[#Commit]]
 
|}
 
|}
   −
This was added with [[6.0.0]].
+
== Add ==
 +
Takes an input [[#IFilesystem]], no output.
   −
= IUnknown0 =
+
== Commit ==
This was added with [9.0.0+].
+
No input/output.
 
  −
{| class="wikitable" border="1"
  −
|-
  −
! Cmd || Name || Notes
  −
|-
  −
| 0 || ||
  −
|-
  −
| 16 || ||
  −
|-
  −
| 80 || || Takes a total of 0x10-bytes of input and a type-0x1A output buffer, returns an [[#ISaveDataDivisionExporter]].
  −
|-
  −
| 81 || ||
  −
|-
  −
| 90 || || Takes a total of 0x18-bytes of input and two type-0x5 input buffers, returns an [[#ISaveDataDivisionImporter]].
  −
|-
  −
| 91 || || Takes a total of 0x18-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
  −
|-
  −
| 100 || || Takes a total of 0x20-bytes of input, returns an [[#ISaveDataDivisionExporter]].
  −
|-
  −
| 110 || || Takes a total of 0x28-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
  −
|}
      
= FileSystemType =
 
= FileSystemType =