Filesystem services: Difference between revisions

No edit summary
No edit summary
Line 47: Line 47:


== RegisterProgram ==
== RegisterProgram ==
Takes a [[NCM_services#StorageId|StorageId]], an u64 ProcessId, a [[NCM_services#ProgramId|ProgramId]], a 0x1C type-A buffer for the [[NPDM#FS_Access_Header| FS Access Header]], and a 0x2C type-A buffer for the [[NPDM#FS_Access_Control| FS Access Control]]
Takes an input [[NCM_services#StorageId|StorageId]], an input u64 ProcessId, an input [[NCM_services#ProgramId|ProgramId]], a type-0x5 input buffer containing an [[NPDM#ACID|ACID]] [[NPDM#FsAccessControl|FsAccessControl]], and a type-0x5 input buffer containing an [[NPDM#ACI0|ACI0]] [[NPDM#FsAccessControl|FsAccessControl]].


Final FS permissions are stored as (ACI0_perms & ACID_perms). Will panic(svcBreak) when buffer sizes from ipc-rawdata are invalid.
Final FS permissions are stored as (ACI0_perms & ACID_perms). Will panic(svcBreak) when buffer sizes from ipc-rawdata are invalid.
[20.0.0+] Now takes an additional input [[#FsAccessControlRestrictionMode]].


== UnregisterProgram ==
== UnregisterProgram ==
Takes a pid. Removes registered FS permissions for that PID.
Takes an input u64 ProcessId. No output.
 
Removes registered FS permissions for that PID.


== SetEnabledProgramVerification ==
== SetEnabledProgramVerification ==
Seems to sets a global flag to inputval & 1.
Takes an input bool. No output.


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.
Line 3,174: Line 3,178:
= InitialDataVersion2 =
= InitialDataVersion2 =
This is a 0x8210-byte struct used by [[#ISaveDataTransferManagerWithDivision]].
This is a 0x8210-byte struct used by [[#ISaveDataTransferManagerWithDivision]].
= FsAccessControlRestrictionMode =
This is "nn::fs::FsAccessControlRestrictionMode".
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 ||
|}


[[Category:Services]]
[[Category:Services]]