SceExfatfs: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
 
SceExfatfs handles FAT12/UVFAT12/FAT16/FAT32/exFAT file system parsing. It also supports TFAT32 or TexFAT which are transaction safe equivalents of FAT32 and exFAT.
SceExfatfs handles FAT12/UVFAT12/FAT16/FAT32/exFAT file system parsing.
 
It also works as a transaction safe if the file system has two FATs (TFAT32, TexFAT).


== Module ==
== Module ==
Line 10: Line 7:
! Version !! World !! Privilege
! Version !! World !! Privilege
|-
|-
| 1.69-3.73 || Non-secure || Kernel
| 1.69-3.740.011 || Non-secure || Kernel
|}
|}


== Libraries ==
== Libraries ==
This section has to be wikified.


=== Known NIDs ===
=== Known NIDs ===
Line 88: Line 87:
#define SCE_EXFATFS_DEVCTL_CREATT_WDIR (2)
#define SCE_EXFATFS_DEVCTL_CREATT_WDIR (2)


typedef struct exfat_ctx //size is 0x430 bytes
typedef struct exfat_ctx { //size is 0x430 bytes
{
   uint32_t unk_0;
   uint32_t unk_0;
   uint32_t unk_4;
   uint32_t unk_4;
Line 110: Line 108:


   char data2[0x4C];
   char data2[0x4C];
} exfat_ctx;
} exfat_ctx;


typedef struct file_entry //size is 0x290 bytes
typedef struct file_entry { //size is 0x290 bytes
{
   uint32_t unk_0;
   uint32_t unk_0;
   uint32_t unk_4;
   uint32_t unk_4;
Line 122: Line 118:
   char data1[0x80];
   char data1[0x80];
}file_entry;
}file_entry;
</source>


</source>


[[Category:Modules]]
[[Category:Modules]]
[[Category:Kernel]]
[[Category:Kernel]]

Revision as of 18:10, 27 January 2023

SceExfatfs handles FAT12/UVFAT12/FAT16/FAT32/exFAT file system parsing. It also supports TFAT32 or TexFAT which are transaction safe equivalents of FAT32 and exFAT.

Module

Version World Privilege
1.69-3.740.011 Non-secure Kernel

Libraries

This section has to be wikified.

Known NIDs

Version Name World Visibility NID

Data segment layout

Address Size Description
0x0000 4 mutex to lock mempool
0x0004 4 SceUID mempool SceExfatfsCommon of size 0x7F000
0x0008 4 unknown
0x000C 0x20 vfs_add_data exfat node
0x002C 4 unknown
0x0030 4 * 8(0x20) Partition drive strings pointers. os0: etc.
0x0050 0x10 unknown
0x0060 4 SceFatfsCPTable memblock base.
0x0064 4 SceFatfsCPTable memblock guid.
0x0068 0x10 array of void* pointers (pools)
0x0078 4 some counter.
0x007C 4 unused in order to next member align.
0x0080 0x430 * 15(0x3ED0) 15 elements of type exfat_ctx
0x3F50 0x200 * 15(0x1E00) Storage MBR
0x5D50 4 pointer
0x5D54 4 unknown
0x5D58 0x290*0x400(0xA4000) 0x400 elements of type file_entry
0xA9D58 0x290*0xC00(0x1EC000) 0xC00 elements of type file_entry. maybe related to ReserveUnusedFd.
0x295D58 0x78 unknown
0x295DD0 4 All file_entry elements number?
0x295DD4 4 Available SceExfatfs_data_0x5D50 elements number
0x295DD8 4 Related to ReserveUnusedFd number of SceExfatfs_data_0x5D50 elements. 0x200 in many case.
0x295DDC 4 Related to ReserveUnusedFd number of SceExfatfs_data_0x5D50 elements. 0x100 in many case.
0x295DE0 4 unknown
0x295DE4 4 SceExfatfsSharedResource fast mutex
0x295DE8 0x40 unknown

Types


#define SCE_EXFATFS_DEVCTL_CREATT_WDIR (2)

typedef struct exfat_ctx { //size is 0x430 bytes
  uint32_t unk_0;
  uint32_t unk_4;
  uint32_t unk_8;
  uint32_t unk_C;

  uint32_t unk_10;
  uint32_t unk_14;
  file_entry* unk_18;
  uint32_t unk_1C;

  uint32_t unk_20;
  uint32_t unk_24;
  uint32_t unk_28;
  uint32_t unk_2C;

  char data1[0x3B0];

  uint32_t fast_mutex_SceExfatfsRoot; //offset 0x3E0

  char data2[0x4C];
} exfat_ctx;

typedef struct file_entry { //size is 0x290 bytes
  uint32_t unk_0;
  uint32_t unk_4;

  char path[0x208]; //in unicode

  char data1[0x80];
}file_entry;