ScePfsMgr

From Vita Development Wiki
Jump to navigation Jump to search

Module

Known NIDs

Version Name World Privilege NID
1.69 ScePfsMgr Non-secure Kernel 0x3CF10F0
3.60 ScePfsMgr ? Kernel 0x538BA86B

Libraries

Known NIDs

Version Name World Visibility NID
1.69 ScePfsMgrForKernel Non-secure Kernel 0xA067B56F
3.60 ScePfsMgrForKernel ? Kernel 0xA067B56F
3.60 ScePfsFacadeForKernel ? Kernel 0xC26DC7BD

Types

struct pfs_pmi_buffer_list_ctx
{
    buffer_list* blist;
    uint32_t unk_4;
    SceUID ScePfsPmi_mutex_id; // 0x08
    char original_path[0x3F];  // 0xC
    
    char mount_point1[0x22]; // 0x4C - /%s
    
    char mount_point2[0x23];  // 0x6E - %s0:
    
    char unk_91;
    
    uint16_t type;   //0x92
    uint16_t unk_94; //0x94 = 0
    
    char klicensee[0x10]; //0x96
    
    uint16_t unk_A6; // = 0
    uint32_t unk_A8; // = 0
    uint32_t unk_AC; // = 0
    
    SceUID ScePfsFilesDb_mutex_id; // 0xB0
    
    char unk_data1[0xBC]; // 0xB4
    
    pfs_pmi_buffer_list_ctx *bcl; //0x170
    uint32_t unk_174;
    SceUInt64 auth_id;
    
    char unk_data2[0x78]; // 0x180

    vfs_block_dev_info block_dev; // 0x1F8

    uint32_t unk_20C;
    
    //further fields are unknown
} pfs_pmi_buffer_list_ctx;

struct buffer_list
{
    SceUID mutex_id;
    uint32_t unk_4;
    uint32_t unk_8;
    uint32_t unk_C;
    uint32_t unk_10;
    void* bcl; //0x14 - one of versions is pfs_pmi_buffer_list_ctx
}buffer_list;

Data segment layout

Address Size Description
0x0000 0x20 vfs_add_data PFS_REDIRECT_INF node (Redirect Pseudo Drive.)
0x0020 0x20 vfs_add_data PFS_GDSD_INF node (Gamedata/Savedata Pseudo Drive.)
0x0040 0x20 vfs_add_data PFS_AC_INF node (AC Pseudo Drive.)
0x0060 0x20 unknown
0x0080 0x4 mutex SceUID ScePfsFiBufferList
0x0084 0x4 memblock SceUID ScePfsFiBufferList
0x0088 0x4 char* ScePfsFiBufferList
0x008C 0x4 some offset or size
0x0090 0x4 some offset or size
0x0094 0x4 void*
0x0098 0x4 mutex SceUID ScePfsVdBufferList
0x009C 0x4 memblock SceUID ScePfsVdBufferList
0x00A0 0x4 char* ScePfsVdBufferList
0x00A4 0x4 some offset or size
0x00A8 0x4 some offset or size
0x00AC 0x4 void*
0x00B0 0x4 mutex SceUID ScePfsLruPoolBufferList
0x00B4 0x4 memblock SceUID ScePfsLruPoolBufferList
0x00B8 0x4 char* ScePfsLruPoolBufferList
0x00BC 0x4 some offset or size
0x00C0 0x4 some offset or size
0x00C4 0x4 void*
0x00C8 0x4 mutex SceUID ScePfsLruTblHdrBufferList
0x00CC 0x4 memblock SceUID ScePfsLruTblHdrBufferList
0x00D0 0x4 char* ScePfsLruTblHdrBufferList
0x00D4 0x4 some offset or size
0x00D8 0x4 some offset or size
0x00DC 0x4 void*
0x00E0 0x30 unknown
0x0110 0x4 mutex SceUID ScePfsThePmi
0x0114 0x4 unknown
0x0118 0x4 pfs_pmi_buffer_list_ctx* root
0x011C 0x4 unknown
0x0120 0x4 buffer_list* with mutex SceUID ScePfsPmiBufferList
0x0124 0x4 memblock SceUID ScePfsPmiBufferList
0x0128 0x4 char* ScePfsPmiBufferList
0x012C 0x4 some offset or size
0x0130 0x4 some offset or size
0x0134 0x4 void*
0x0138 0x4 unknown
0x013C 0x4 unknown
0x0140 0x4 0
0x0144 0x4 thread SceUID ScePfsCryptEngineThread
0x0148 0x4 mutex SceUID ScePfsCryptEngineTodoMtx
0x014C 0x4 cond SceUID ScePfsCryptEngineTodoCnd
0x0150 0x4 mutex SceUID ScePfsCryptEngineDoneMtx
0x0154 0x4 cond SceUID ScePfsCryptEngineDoneCnd
0x0158 0x4 pointer to 0x158
0x015C 0x4 pointer to 0x158
0x0160 0x4 pointer to 0x160
0x0164 0x4 pointer to 0x160
0x0168 0x9D8 unknown
0x0B40 0xC0 data chunk of size 0xC0
0x0C00 180 unknown
0x0D80 0x4 mutex SceUID ScePfsCryptBufMutexVC
0x0D84 0x4 mutex SceUID ScePfsCryptBufMutexRM
0x0D88 0x4 mutex SceUID ScePfsCryptBufMutexEMMC
0x0D8C 0x4 memblock SceUID ScePfsCryptBufVC - size 0x40000
0x0D90 0x4 memblock SceUID ScePfsCryptBufVCForShared
0x0D94 0x4 memblock base of ScePfsCryptBufVC
0x0D98 0x4 memblock base of ScePfsCryptBufVCForShared
0x0D9C 0x4 0x000000FF
0x0DA0 0x4 memblock SceUID ScePfsCryptBufRM - size 0x40000
0x0DA4 0x4 memblock SceUID ScePfsCryptBufRMForShared
0x0DA8 0x4 memblock base of ScePfsCryptBufRM
0x0DAC 0x4 memblock base of ScePfsCryptBufRMForShared
0x0DB0 0x4 0x000000FF
0x0DB4 0x4 memblock SceUID ScePfsCryptBufEMM - size 0x40000
0x0DB8 0x4 memblock SceUID ScePfsCryptBufEMMCForShared
0x0DBC 0x4 memblock base of ScePfsCryptBufEMM
0x0DC0 0x4 memblock base of ScePfsCryptBufEMMCForShared
0x0DC4 0x4 0x000000FF
0x0DC8 0x4 cond SceUID ScePfsCryptBufCondVarVC
0x0DCC 0x4 cond SceUID ScePfsCryptBufCondVarRM
0x0DD0 0x4 cond SceUID ScePfsCryptBufCondVarEMMC

ScePfsMgrForKernel

mount

Version NID
3.60 0xA772209C
int mount(char original_path, char mount_point, SceUInt64 authid, void *klicensee, unsigned int type);

mount

Version NID
3.60 0x2D48AEA2
int mount(char *original_path, char *mount_point, void *klicensee, unsigned int type);

unmount

Version NID
3.60 0x680BC384
int unmount(char mount_point);

ScePfsFacadeForKernel

t_scePfsFacadeReadForDriver

Version NID
3.60 0xBD5B21F6

This is a thread callback used by SceIofilemgr

This function is not implemented and throws 0x8014231C error

int t_scePfsFacadeReadForDriver(sceIoReadForDriver_args *args);

t_scePfsFacadeWriteForDriver

Version NID
3.60 0xCB622FFE

This is a thread callback used by SceIofilemgr

int t_scePfsFacadeWriteForDriver(sceIoWriteForDriver_args *args);

t_scePfsFacadePreadForDriver

Version NID
3.60 0x4238D2D2

This is a thread callback used by SceIofilemgr

int t_scePfsFacadePreadForDriver(sceIoPreadForDriver_args *args);

t_scePfsFacadePwriteForDriver

Version NID
3.60 0x58E643C5

This is a thread callback used by SceIofilemgr

int t_scePfsFacadePwriteForDriver(sceIoPwriteForDriver_args *args);