SceIofilemgr is the primary interface for file IO. Read File Management for more information on file IO.
Module
This module exists in only in non-secure world. The SELF can be found in os0:kd/iofilemgr.skprx
.
Known NIDs
Version |
Name |
World |
Privilege |
NID
|
1.69 |
SceIofilemgr |
Non-secure |
Kernel |
0x3E244C17
|
Libraries
This module is accessible by usermode.
Known NIDs
Mount Points
This table is stored in data segment of SceIofilemgr as array of mount_point_info elements
Unix Mount |
Dev Major |
Dev Minor |
Filesystem |
Vita Mount |
Block Device |
VSH Mount Id
|
/tty |
0x4000020 |
0x6003 |
dummy_ttyp_dev_fs |
tty |
dummy_ttyp_dev_fs |
0x0
|
/dev |
0x10 |
0x3 |
sdstor_dev_fs |
sdstor0: |
sd |
0x1
|
/md |
0x10 |
0x2003 |
md_dev_fs |
md0: |
md |
0x2
|
/sd/exfat |
0x2030001 |
0x30002 |
exfat |
sd0: |
sdstor0:ext-pp-act-a, sdstor0:ext-lp-act-entire |
0x100
|
/os/exfat |
0x1000001 |
0x1002 |
exfat |
os0: |
sdstor0:int-lp-act-os |
0x200
|
/vs/exfat |
0x1000001 |
0x1002 |
exfat |
vs0: |
sdstor0:int-lp-ign-vsh |
0x300
|
/vd/exfat |
0x1000001 |
0x10002 |
exfat |
vd0: |
sdstor0:int-lp-ign-vshdata |
0x400
|
/tm/exfat |
0x1000001 |
0x10002 |
exfat |
tm0: |
sdstor0:int-lp-ign-vtrm |
0x500
|
/ur/exfat |
0x1000001 |
0x50002 |
exfat |
ur0: |
sdstor0:int-lp-ign-user |
0x600
|
/ud/exfat |
0x1000001 |
0x10002 |
exfat |
ud0: |
sdstor0:int-lp-ign-updater |
0x700
|
/ux/exfat |
0x2020001 |
0x30002 |
exfat |
ux0: |
sdstor0:xmc-lp-ign-userext / sdstor0:int-lp-ign-userext |
0x800
|
/gro/exfat |
0x2010001 |
0x21002 |
exfat |
gro0: |
sdstor0:gcd-lp-ign-gamero |
0x900
|
/grw/exfat |
0x2010001 |
0x20002 |
exfat |
grw0: |
sdstor0:gcd-lp-ign-gamerw |
0xA00
|
/sa/exfat |
0x1000001 |
0x1002 |
exfat |
sa0: |
sdstor0:int-lp-ign-sysdata |
0xB00
|
/pd/exfat |
0x1000001 |
0x1002 |
exfat |
pd0: |
sdstor0:int-lp-ign-pidata |
0xC00
|
/imc/exfat |
0x2020001 |
0x30002 |
exfat |
imc0: |
sdstor0:int-lp-ign-userext |
0xD00
|
/xmc/exfat |
0x2020001 |
0x30002 |
exfat |
xmc0: |
sdstor0:xmc-lp-ign-userext |
0xE00
|
/uma/exfat |
0x2030001 |
0x2 |
exfat |
uma0: |
sdstor0:uma-pp-act-a, sdstor0:uma-lp-act-entire |
0xF00
|
/lma/exfat |
0x1 |
0x5 |
exfat |
lma0: |
/ |
0x10000
|
/lmb/exfat |
0x1 |
0x5 |
exfat |
lmb0: |
/ |
0x20000
|
/mfa/exfat |
0x1 |
0x5 |
exfat |
mfa0: |
/ |
0x50000
|
/mfb/exfat |
0x1 |
0x5 |
exfat |
mfb0: |
/ |
0x60000
|
VFS Nodes
VFS Operations
- implemented operation is marked as
implemented
- not implemented is marked as
- return 0 placeholder is marked as
0
- return error is marked with corresponding error name
Function |
sdstor_dev_fs |
exfat |
dummy_ttyp_dev_fs |
PFS_REDIRECT_INF |
PFS_GDSD_INF |
PFS_AC_INF
|
1 |
implemented |
implemented |
implemented |
implemented |
implemented |
implemented
|
2 |
SCE_ERROR_ERRNO_EBUSY |
implemented |
0 |
implemented |
implemented |
implemented
|
3 |
implemented |
implemented |
implemented |
implemented |
implemented |
implemented
|
4 |
|
implemented |
|
|
|
|
5 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
7 |
|
implemented |
|
0 |
implemented |
implemented
|
8 |
|
|
|
|
|
|
9 |
0 |
0 |
0 |
0 |
0 |
0
|
10 |
|
0 |
0 |
0 |
0 |
0
|
11 |
|
|
|
|
|
|
12 |
implemented |
implemented |
|
implemented |
implemented |
implemented
|
13 |
implemented |
implemented |
|
implemented |
implemented |
implemented
|
VFS Node Operations
- implemented operation is marked as
implemented
- not implemented is marked as
- return 0 placeholder is marked as
0
- return error is marked with corresponding error name
Function |
sdstor_dev_fs |
exfat |
dummy_ttyp_dev_fs |
PFS_REDIRECT_INF |
PFS_GDSD_INF |
PFS_AC_INF
|
1 |
implemented |
implemented |
0 |
implemented |
implemented |
implemented
|
2 |
|
implemented |
|
implemented |
implemented |
implemented
|
3 |
implemented |
implemented |
0 |
implemented |
implemented |
implemented
|
4 |
implemented |
implemented |
implemented |
implemented |
implemented |
implemented
|
5 |
implemented |
implemented |
0 |
implemented |
implemented |
implemented
|
6 |
implemented |
implemented |
implemented |
implemented |
implemented |
implemented
|
7 |
implemented |
implemented |
0 |
implemented |
implemented |
implemented
|
8 |
|
SCE_ERROR_ERRNO_EUNSUP |
0 |
implemented |
implemented |
implemented
|
9 |
implemented |
implemented |
|
implemented |
implemented |
implemented
|
10 |
|
implemented |
|
implemented |
implemented |
implemented
|
11 |
|
implemented |
|
implemented |
implemented |
implemented
|
12 |
|
implemented |
|
implemented |
implemented |
implemented
|
13 |
|
implemented |
|
implemented |
implemented |
implemented
|
14 |
|
implemented |
|
implemented |
implemented |
implemented
|
15 |
|
implemented |
|
implemented |
implemented |
implemented
|
16 |
|
implemented |
|
implemented |
implemented |
implemented
|
17 |
|
implemented |
|
implemented |
implemented |
implemented
|
18 |
|
|
|
|
|
|
19 |
implemented |
implemented |
|
implemented |
implemented |
implemented
|
20 |
implemented |
implemented |
|
implemented |
implemented |
implemented
|
21 |
0 |
implemented |
0 |
implemented |
implemented |
implemented
|
22 |
|
implemented |
|
|
|
|
23 |
|
implemented |
|
|
|
|
24 |
0 |
implemented |
|
implemented |
implemented |
implemented
|
25 |
|
implemented |
|
implemented |
implemented |
implemented
|
26 |
|
implemented |
|
implemented |
implemented |
implemented
|
27 |
|
implemented |
|
implemented |
implemented |
implemented
|
28 |
|
implemented |
|
implemented |
implemented |
implemented
|
29 |
|
|
|
|
|
|
Types
typedef struct vfs_block_dev_info //size is 0x14
{
char* vitaMount;
char* filesystem; // Some name, I guess it is filesystem
char* blockDevicePrimary;
char* blockDeviceSecondary; // can be 0
uint32_t vshMountId; //must be same as in mount_point_info
}vfs_block_dev_info;
typedef struct vfs_mount_point_info_base
{
char* unixMount;
uint32_t unk_4; //zero
uint32_t devMajor;
uint32_t devMinor;
char* filesystem;
uint32_t unk_14; //zero
vfs_block_dev_info* blockDev1;
uint32_t unk_1C; //zero
} vfs_mount_point_info_base;
typedef struct vfs_mount_point_info //size is 0x38
{
uint32_t vshMountId;
vfs_mount_point_info_base base;
vfs_block_dev_info* blockDev2; //same as blockDev1
uint32_t unk_28; //zero - except for (ux0:, gro0:, grw0:) - maybe related to device specific data?
uint32_t unk_2C; //zero
uint32_t unk_30; //zero
uint32_t unk_34; //zero
}vfs_mount_point_info;
//probably vfsops
struct node_ops1 // size is 0x34 (13 pointers)
{
int (*func1)(void* ctx);
int (*func2)(void* ctx); // ?
int (*func3)(void* ctx);
int (*func4)(void* ctx);
int (*func5)(void* ctx); // not implemented by all
int (*func6)(void* ctx); // not implemented by all
int (*func7)(void* ctx);
int (*func8)(void* ctx); // not implemented by all
int (*func9)(void* ctx); // called by sceVfsAddVfs
int (*func10)(void* ctx); // called by sceVfsDeleteVfs
int (*func11)(void* ctx); // not implemented by all
int (*func12)(void* ctx); // sceIoDevctlForDriver
int (*func13)(void* ctx); // ?
};
struct vfs_node_func1_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func1_args;
struct vfs_node_func2_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
}vfs_node_func2_args;
struct vfs_node_func3_args
{
vfs_node* node;
uint32_t arg1;
}vfs_node_func3_args;
struct vfs_node_func4_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func4_args;
struct vfs_node_func5_args
{
}vfs_node_func5_args;
struct vfs_node_func6_args
{
}vfs_node_func6_args;
struct vfs_node_func7_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
}vfs_node_func7_args;
struct vfs_node_func8_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
uint32_t arg_4;
uint32_t arg_8;
}vfs_node_func8_args;
struct vfs_node_func9_args
{
vfs_node* node0;
vfs_node* node1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func9_args;
struct vfs_node_func10_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func10_args;
struct vfs_node_func11_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func11_args;
struct vfs_node_func12_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func12_args;
struct vfs_node_func13_args
{
vfs_node* node;
uint32_t arg1;
}vfs_node_func13_args;
struct vfs_node_func14_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func14_args;
struct vfs_node_func15_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func15_args;
struct vfs_node_func16_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func16_args;
struct vfs_node_func17_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
uint32_t arg_4;
}vfs_node_func17_args;
struct vfs_node_func19_args
{
}vfs_node_func19_args;
struct vfs_node_func20_args
{
}vfs_node_func20_args;
struct vfs_node_func21_args
{
vfs_node* node;
}vfs_node_func21_args;
struct vfs_node_func22_args
{
vfs_node* node;
uint32_t arg1;
}vfs_node_func22_args;
struct vfs_node_func23_args
{
vfs_node* node;
uint32_t arg1;
}vfs_node_func23_args;
struct vfs_node_func24_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func24_args;
struct vfs_node_func25_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func25_args;
struct vfs_node_func26_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func26_args;
struct vfs_node_func27_args
{
uint32_t arg0;
vfs_node* node;
uint32_t arg2;
uint32_t arg3;
uint32_t unk_10; // zero
uint32_t unk_14; // zero
}vfs_node_func27_args;
struct vfs_node_func28_args
{
vfs_node* node;
uint32_t arg1;
uint32_t unk_8; // zero
uint32_t unk_C; // zero
}vfs_node_func28_args;
struct vfs_node_func29_args
{
uint32_t unk_0;
uint32_t unk_4;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
uint32_t arg_4;
uint32_t arg_8;
uint32_t arg_C;
}vfs_node_func29_args;
//probably vnodeops
struct node_ops2 // size is 0x74 (29 pointers)
{
int (*func1)(void* ctx); // sceIoOpenForDriver
int (*func2)(void* ctx); // sceIoOpenForDriver (another one ?)
int (*func3)(void* ctx); // ?
int (*func4)(void* ctx); // ?
int (*func5)(void* ctx); // sceIoReadForDriver
int (*func6)(void* ctx); // sceIoWriteForDriver
int (*func7)(void* ctx); // sceIoLseekForDriver or sceIoLseek32?
int (*func8)(void* ctx); // sceIoIoctlForDriver
int (*func9)(void* ctx); // ?
int (*func10)(void* ctx); // sceIoMkdirForDriver
int (*func11)(void* ctx); // sceIoRmdirForDriver
int (*func12)(void* ctx); // sceIoDopenForDriver
int (*func13)(void* ctx); // sceIoDcloseForDriver
int (*func14)(void* ctx); // sceIoDreadForDriver
int (*func15)(void* ctx); // sceIoGetstatForDriver or sceIoGetstatByFdForDriver
int (*func16)(void* ctx); // sceIoChstatForDriver or sceIoChstatByFdForDriver
int (*func17)(void* ctx); // sceIoRenameForDriver
int (*func18)(void* ctx); // not implemented by all
int (*func19)(void* ctx); // sceIoPreadForDriver
int (*func20)(void* ctx); // sceIoPwriteForDriver
int (*func21)(void* ctx); // ?
int (*func22)(void* ctx); // not referenced
int (*func23)(void* ctx); // not referenced
int (*func24)(void* ctx); // sceIoSyncForDriver or sceIoSyncByFdForDriver
int (*func25)(void* ctx); // sceIoGetstatByFdForDriver
int (*func26)(void* ctx); // sceIoChstatByFdForDriver
int (*func27)(void* ctx); // ?
int (*func28)(void* ctx); // ?
int (*func29)(void* ctx); // not implemented by all
};
struct vfs_add_data
{
node_ops1* funcs1;
const char *name; //max size is 0x20
int flags; //0x0E
int unk_C; //0x01 / 0x00 (root, leaf ?)
int unk_10; //0x10
node_ops2* funcs2;
int unk_18; //0x00
vfs_add_data* next_element; //ptr to next element, confirmed
};
struct vfs_node
{
uint8_t data1[0x40];
node_ops2 *ops;
uint32_t unk_44;
uint32_t unk_48;
uint32_t unk_4C;
uint32_t unk_50;
uint32_t unk_54;
uint32_t unk_58;
uint32_t unk_5C;
uint32_t unk_60;
uint32_t unk_64;
uint32_t unk_68;
SceUID uid;
uint8_t data2[0x60];
uint32_t unk_D0;
}vfs_node;
struct vfs_node_info //size is 0x38
{
char* name[0x20];
vfs_node* node; //can be zero
uint32_t unk_24; // probably size of vfs_node
uint32_t unk_28; // probably flags
vfs_node_info* unk_2C; //can be zero
vfs_node_info* unk_30; //can be zero
vfs_node_info* unk_34; //can be zero
}vfs_node_info;
Data segment layout
Address |
Size |
Description
|
0x0000 |
0x01A8 |
unknown
|
0x01A8 |
0x1500 |
array of 96 elements of vfs_node_info
|
0x16A8 |
0x4 |
SceVfsRfsLock fast mutex
|
0x16AC |
0x1A4 |
unknown
|
0x1850 |
0x4 |
SceIofileDaemonLock fast mutex
|
0x1854 |
0x40 |
unknown
|
0x1894 |
0x4 |
SceIofile fast mutex
|
0x1898 |
0x80 |
unknown
|
0x1918 |
0x4 |
SceIofileFlock fast mutex
|
0x191C |
0x74 |
unknown
|
0x1990 |
0x4 |
SceVfsMntlistLock fast mutex
|
0x1994 |
0x6C |
unknown
|
0x1A00 |
0x4 |
SceVfsNcacheLock fast mutex
|
0x1A04 |
0x48 |
unknown
|
0x1A4C |
0x4 |
SceVfsLock fast mutex
|
0x1A50 |
0x40 |
unknown
|
0x1A90 |
0x700 |
array of 32 elements of vfs_mount_point_info
|
0x2190 |
0x10 |
unknown
|
0x21A0 |
0x40 |
unknown
|
0x21E0 |
0x3C |
unknown
|
0x221C |
0x20 |
vfs_add_data dummy_ttyp_dev_fs node
|
SceIofilemgrForDriver
sceVfsUnmount
Version
|
NID
|
1.69
|
0x9C7E7B76
|
3.60
|
0x9C7E7B76
|
struct vfs_unmount_data
{
const char *mountpoint;
int flags;
};
int sceVfsUnmount(struct vfs_unmount_data *data);
sceVfsDeleteVfs
Version
|
NID
|
1.69
|
0x9CBFA725
|
3.60
|
0x9CBFA725
|
int sceVfsDeleteVfs(const char *name, void **deleted_node);
sceVfsAddVfs
Version
|
NID
|
1.69
|
0x673D2FCD
|
3.60
|
0x673D2FCD
|
int sceVfsAddVfs(struct vfs_add_data *data);
sceVfsMount
Version
|
NID
|
1.69
|
0xB62DE9A6
|
3.60
|
0xB62DE9A6
|
int sceVfsMount(struct vfs_mount_point_info_base* data);
sceVfsGetNewNode
Version
|
NID
|
1.69
|
0xD60B5C63
|
3.60
|
0xD60B5C63
|
int sceVfsGetNewNode(void *ctx, node_ops2 *ops, int unused, vfs_node **node);
sceIoDreadForDriver
Version
|
NID
|
1.69
|
0x20CF5FC7
|
3.60
|
0x20CF5FC7
|
Call interface is same as sceIoDread
sceIoWriteForDriver
Version
|
NID
|
1.69
|
0x21EE91F0
|
3.60
|
0x21EE91F0
|
Call interface is same as sceIoWrite
sceIoDopenForDriver
Version
|
NID
|
1.69
|
0x463B25CC
|
3.60
|
0x463B25CC
|
Call interface is same as sceIoDopen
sceIoLseekForDriver
Version
|
NID
|
1.69
|
0x62090481
|
3.60
|
0x62090481
|
Call interface is same as sceIoLseek
sceIoOpenForDriver
Version
|
NID
|
1.69
|
0x75192972
|
3.60
|
0x75192972
|
Call interface is same as sceIoOpen
sceIoChstatForDriver
Version
|
NID
|
1.69
|
0x7D42B8DC
|
3.60
|
0x7D42B8DC
|
Call interface is same as sceIoChstat
sceIoGetstatForDriver
Version
|
NID
|
1.69
|
0x75C96D25
|
3.60
|
0x75C96D25
|
Call interface is same as sceIoGetstat
sceIoMkdirForDriver
Version
|
NID
|
1.69
|
0x7F710B25
|
3.60
|
0x7F710B25
|
Call interface is same as sceIoMkdir
sceIoReadForDriver
Version
|
NID
|
1.69
|
0xE17EFC03
|
3.60
|
0xE17EFC03
|
Call interface is same as sceIoRead
sceIoCloseForDriver
Version
|
NID
|
1.69
|
0xF99DD8A3
|
3.60
|
0xF99DD8A3
|
Call interface is same as sceIoClose
sceIoRenameForDriver
Version
|
NID
|
1.69
|
0xDC0C4997
|
3.60
|
0xDC0C4997
|
Call interface is same as sceIoRename
sceIoRemoveForDriver
Version
|
NID
|
1.69
|
0x0D7BB3E1
|
3.60
|
0x0D7BB3E1
|
Call interface is same as sceIoRemove
sceIoCancelForDriver
Version
|
NID
|
3.60
|
0x6D59658D
|
Derived from sceIoCancel
sceIoChstatAsyncForDriver
Version
|
NID
|
3.60
|
0x7EC442BF
|
Derived from _sceIoChstatAsync
sceIoChstatByFdAsyncForDriver
Version
|
NID
|
3.60
|
0xEC974400
|
Derived from sceIoChstatByFdAsync
sceIoChstatByFdForDriver
Version
|
NID
|
3.60
|
0xDF57A75F
|
Derived from _sceIoChstatByFd
sceIoCloseAsyncForDriver
Version
|
NID
|
3.60
|
0x11C57CC6
|
Derived from sceIoCloseAsync
sceIoDevctlAsyncForDriver
Version
|
NID
|
3.60
|
0xA9302946
|
Derived from _sceIoDevctlAsync
sceIoDevctlForDriver
Version
|
NID
|
3.60
|
0x16882FC4
|
Derived from _sceIoDevctl
sceIoDcloseForDriver
Version
|
NID
|
3.60
|
0x19C81DD6
|
Derived from sceIoDclose
sceIoFlockForDriver
Version
|
NID
|
3.60
|
0x16336A0D
|
Derived from sceIoFlockForSystem
sceIoGetstatByFdAsyncForDriver
Version
|
NID
|
3.60
|
0x0FEE1238
|
Derived from sceIoGetstatByFdAsync
sceIoGetstatByFdForDriver
Version
|
NID
|
3.60
|
0x462F059B
|
Derived from _sceIoGetstatByFd
sceIoGetstatAsyncForDriver
Version
|
NID
|
3.60
|
0x94A5304A
|
Derived from _sceIoGetstatAsync
sceIoIoctlAsyncForDriver
Version
|
NID
|
3.60
|
0xB761E91B
|
Derived from _sceIoIoctlAsync
sceIoIoctlForDriver
Version
|
NID
|
3.60
|
0x161CD33F
|
Derived from _sceIoIoctl
sceIoLseekAsyncForDriver
Version
|
NID
|
3.60
|
0x541BAABD
|
Derived from _sceIoLseekAsync
sceIoMkdirAsyncForDriver
Version
|
NID
|
3.60
|
0x27003443
|
Derived from _sceIoMkdirAsync
sceIoOpenAsyncForDriver
Version
|
NID
|
3.60
|
0x451001DE
|
Derived from _sceIoOpenAsync
sceIoPreadAsyncForDriver
Version
|
NID
|
3.60
|
0x64A46A2C
|
Derived from _sceIoPreadAsync
sceIoPreadForDriver
Version
|
NID
|
3.60
|
0x2A17515D
|
Derived from _sceIoPread
sceIoPwriteAsyncForDriver
Version
|
NID
|
3.60
|
0x202CDDE3
|
Derived from _sceIoPwriteAsync
sceIoPwriteForDriver
Version
|
NID
|
3.60
|
0x5F1512C8
|
Derived from _sceIoPwrite
sceIoReadAsyncForDriver
Version
|
NID
|
3.60
|
0x69047C81
|
Derived from sceIoReadAsync
sceIoRemoveAsyncForDriver
Version
|
NID
|
3.60
|
0xF9D6507D
|
Derived from _sceIoRemoveAsync
sceIoRenameAsyncForDriver
Version
|
NID
|
3.60
|
0xAACBC47A
|
Derived from _sceIoRenameAsync
sceIoRmdirAsyncForDriver
Version
|
NID
|
3.60
|
0xF5B0B36C
|
Derived from _sceIoRmdirAsync
sceIoRmdirForDriver
Version
|
NID
|
3.60
|
0x1CC9C634
|
Derived from _sceIoRmdir
sceIoSyncByFdAsyncForDriver
Version
|
NID
|
3.60
|
0x041209CF
|
Derived from sceIoSyncByFdAsync
sceIoSyncByFdForDriver
Version
|
NID
|
3.60
|
0x43170575
|
Derived from sceIoSyncByFd
sceIoSyncAsyncForDriver
Version
|
NID
|
3.60
|
0x4F9EA8B0
|
Derived from _sceIoSyncAsync
sceIoSyncForDriver
Version
|
NID
|
3.60
|
0xDDF78594
|
Derived from _sceIoSync
sceIoWriteAsyncForDriver
Version
|
NID
|
3.60
|
0xA1BD13D0
|
Derived from sceIoWriteAsync
SceIofilemgrForDriver callbacks
It looks like vfs callbacks are exported. Callbacks can be identified using these steps:
- Find all functions that contain indirect calls
- Locate only calls that use address, taken from table, that is pointed by vfs_node (offset 0x40, then valid offset inside pointer table)
- Trace back to first exported function (usually this is single export, not far away in call stack)
- Turns out ScePfsMgr and SceExfatfs use these exports from their vfs node function callbacks, so this information can be mapped/matched.
vfs_node_func1
Version |
NID
|
3.60 |
0x76B79BEC
|
int vfs_node_func1(vfs_node *ctx, int unk1, int unk2, int unk3)
struct vfs_node_func1_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func1_args;
vfs_node_func2
Version |
NID
|
3.60 |
0x9E347C7D
|
int vfs_node_func2(vfs_node *n0, int unk1, int unk2, int unk3, int arg_0)
struct vfs_node_func2_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
}vfs_node_func2_args;
vfs_node_func3
Version |
NID
|
3.60 |
0x40944C2E
|
int vfs_node_func3(vfs_node *n0, int unk1)
struct vfs_node_func3_args
{
vfs_node* node;
uint32_t arg1;
}vfs_node_func3_args;
vfs_node_func4
Version |
NID
|
3.60 |
0xA5A6A55C
|
int vfs_node_func4(vfs_node *ctx, int unk1, int unk2, int unk3)
struct vfs_node_func4_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func4_args;
vfs_node_func5_or_19
Version |
NID
|
3.60 |
0x570388A5
|
int vfs_node_func5_or_19(vfs_node *n0, int unk1, int unk2, int unk3, int arg_0)
vfs_node_func5_or_19
Version |
NID
|
3.60 |
0xABBC80E3
|
int vfs_node_func5_or_19(vfs_node *n0, int unk1, int unk2, int unk3, int arg_0, int arg_4, int arg_8)
vfs_node_func6_or_20
Version |
NID
|
3.60 |
0x9A68378D
|
int vfs_node_func6_or_20(vfs_node *n0, int unk1, int unk2, int unk3, int arg_0)
vfs_node_func6_or_20
Version |
NID
|
3.60 |
0xA53C040D
|
int vfs_node_func6_or_20(vfs_node *n0, int unk1, int unk2, int unk3, int arg_0, int arg_4, int arg_8)
vfs_node_func7
Version |
NID
|
3.60 |
0xB2B13818
|
int vfs_node_func7(vfs_node *ctx, int unk1, int unk2, int unk3, int arg_0)
struct vfs_node_func7_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
}vfs_node_func7_args;
vfs_node_func8
Version |
NID
|
3.60 |
0x333C904D
|
int vfs_node_func8(vfs_node *n0, int unk0, int unk1, int unk2, int arg_0, int arg_4, int arg_8)
struct vfs_node_func8_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
uint32_t arg_0;
uint32_t arg_4;
uint32_t arg_8;
}vfs_node_func8_args;
vfs_node_func9
Version |
NID
|
3.60 |
0xDC1E7EE4
|
int vfs_node_func9(vfs_node *n0, vfs_node *n1, void *ctx, int unk)
struct vfs_node_func9_args
{
vfs_node* node0;
vfs_node* node1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func9_args;
vfs_node_func10
Version |
NID
|
3.60 |
0x2F3F8C70
|
int vfs_node_func10(vfs_node *n0, int unk1, int unk2, int unk3)
struct vfs_node_func10_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
uint32_t arg3;
}vfs_node_func10_args;
vfs_node_func11
Version |
NID
|
3.60 |
0x1D551105
|
int vfs_node_func11(vfs_node *n0, int unk1, int unk2, int unused)
struct vfs_node_func11_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func11_args;
vfs_node_func12
Version |
NID
|
3.60 |
0x00C9C2DD
|
int vfs_node_func12(vfs_node *n0, int unk1, int unk2)
struct vfs_node_func12_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func12_args;
vfs_node_func13
Version |
NID
|
3.60 |
0x1350F5C7
|
int vfs_node_func13(vfs_node *n0, int unk1)
struct vfs_node_func13_args
{
vfs_node* node;
uint32_t arg1;
}vfs_node_func13_args;
vfs_node_func14
Version |
NID
|
3.60 |
0x77584C8F
|
int vfs_node_func14(vfs_node *n0, int unk1, int unk2)
struct vfs_node_func14_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func14_args;
vfs_node_func15
Version |
NID
|
3.60 |
0x50A63ACF
|
int vfs_node_func15(vfs_node *n0, int unk1, int unk2)
struct vfs_node_func15_args
{
vfs_node* node;
uint32_t arg1;
uint32_t arg2;
}vfs_node_func15_args;
vfs_node_func16
Version |
NID
|
3.60 |
0x1974FA92
|
int vfs_node_func16(vfs_node *n0, int unk1, int unk2, int unk3)
vfs_node_func17
Version |
NID
|
3.60 |
0x36A794C7
|
int vfs_node_func17(vfs_node *n0, int unk1, int unk2, int unk3, int arg_0, int arg_4)
vfs_node_func21
Version |
NID
|
3.60 |
0x8FB94521
|
int vfs_node_func21(vfs_node *n0)
vfs_node_func22
Version |
NID
|
3.60 |
0x942AA61F
|
int vfs_node_func22(vfs_node *n0, int unk1)
vfs_node_func23
Version |
NID
|
3.60 |
0x0D8A806E
|
int vfs_node_func23(vfs_node *n0, int unk1)
vfs_node_func24
Version |
NID
|
3.60 |
0x9CD96406
|
int vfs_node_func24(vfs_node *n0, int unk1, int unk2)
vfs_node_func25
Version |
NID
|
3.60 |
0x1DBCBB01
|
int vfs_node_func25(vfs_node *n0, int unk1, int unk2)
vfs_node_func26
Version |
NID
|
3.60 |
0x082AFD7F
|
int vfs_node_func26(vfs_node *n0, int unk1, int unk2, int unk3)
vfs_node_func27
Version |
NID
|
3.60 |
0xF53399BC
|
int vfs_node_func27(int unk0, vfs_node *n0, int unk2, int unk3)
vfs_node_func28
Version |
NID
|
3.60 |
0x0F7E1718
|
int vfs_node_func28(vfs_node *n0, int unk1, int unused1, int unused2)
vfs_node_func29
Version |
NID
|
3.60 |
0xEEAE8B51
|
int vfs_node_func29(vfs_node *n0, int unused, int unk2, int unk3, int arg_0, int arg_4, int arg_8, int arg_C)
SceIofilemgr
_sceIoDcloseAsync
Version |
NID
|
1.69 |
0xB13031
|
3.60 |
different NID or not present
|
_sceIoOpenAsync
Version |
NID
|
1.69 |
0x9CD0FC8
|
3.60 |
0x9CD0FC8
|
sceIoGetProcessDefaultPriority
Version |
NID
|
1.69 |
0xDC4F1BB
|
3.60 |
0xDC4F1BB
|
_sceIoRmdirAsync
Version |
NID
|
1.69 |
0x13DC3244
|
3.60 |
0x13DC3244
|
sceIoSetPriority
Version |
NID
|
1.69 |
0x14B2D56C
|
3.60 |
0x14B2D56C
|
sceIoSyncByFd
Version |
NID
|
1.69 |
0x16512F59
|
3.60 |
0x16512F59
|
_sceIoIoctl
Version |
NID
|
1.69 |
0x1D2988F1
|
3.60 |
0x1D2988F1
|
_sceIoLseekAsync
Version |
NID
|
1.69 |
0x2300858E
|
3.60 |
0x2300858E
|
sceIoSetPriorityForSystem
Version |
NID
|
1.69 |
0x27373135
|
3.60 |
0x27373135
|
_sceIoComplete
Version |
NID
|
1.69 |
0x34E6A06E
|
3.60 |
different NID or not present
|
sceIoWrite
Version |
NID
|
1.69 |
0x34EFD876
|
3.60 |
0x34EFD876
|
_sceIoGetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0x36CAF911
|
3.60 |
different NID or not present
|
_sceIoSetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0x38FE853B
|
3.60 |
different NID or not present
|
sceIoFlockForSystem
Version |
NID
|
1.69 |
0x3E98E422
|
3.60 |
0x3E98E422
|
_sceIoDevctlAsync
Version |
NID
|
1.69 |
0x3EE3F66E
|
3.60 |
0x3EE3F66E
|
sceIoDclose
Version |
NID
|
1.69 |
0x422A221A
|
3.60 |
0x422A221A
|
_sceIoRename
Version |
NID
|
1.69 |
0x4912F748
|
3.60 |
0x4912F748
|
sceIoLseek32
Version |
NID
|
1.69 |
0x49252B9B
|
3.60 |
0x49252B9B
|
sceIoSetThreadDefaultPriority
Version |
NID
|
1.69 |
0x49312108
|
3.60 |
0x49312108
|
_sceIoDevctl
Version |
NID
|
1.69 |
0x515AC017
|
3.60 |
0x515AC017
|
sceIoGetstatByFdAsync
Version |
NID
|
1.69 |
0x5167AC1E
|
3.60 |
0x5167AC1E
|
_sceIoPread
Version |
NID
|
1.69 |
0x539FD5C4
|
3.60 |
0x539FD5C4
|
_sceIoGetstatByFdAsync
Version |
NID
|
1.69 |
0x554292F0
|
3.60 |
different NID or not present
|
_sceIoChstatByFdAsync
Version |
NID
|
1.69 |
0x58010F40
|
3.60 |
different NID or not present
|
_sceIoGetThreadDefaultPriority
Version |
NID
|
1.69 |
0x5DC29460
|
3.60 |
different NID or not present
|
_sceIoSync
Version |
NID
|
1.69 |
0x5DD867F7
|
3.60 |
0x5DD867F7
|
_sceIoRemoveAsync
Version |
NID
|
1.69 |
0x5FFA47E2
|
3.60 |
0x5FFA47E2
|
_sceIoDreadAsync
Version |
NID
|
1.69 |
0x64B233B8
|
3.60 |
different NID or not present
|
_sceIoSetThreadDefaultPriority
Version |
NID
|
1.69 |
0x654E27B1
|
3.60 |
different NID or not present
|
_sceIoSyncByFdAsync
Version |
NID
|
1.69 |
0x6F78FAFE
|
3.60 |
different NID or not present
|
_sceIoGetPriorityForSystem
Version |
NID
|
1.69 |
0x70B7BB52
|
3.60 |
different NID or not present
|
sceIoReadAsync
Version |
NID
|
1.69 |
0x773EBD45
|
3.60 |
0x773EBD45
|
_sceIoRemove
Version |
NID
|
1.69 |
0x78955C65
|
3.60 |
0x78955C65
|
sceIoSyncByFdAsync
Version |
NID
|
1.69 |
0x7E1367CB
|
3.60 |
0x7E1367CB
|
sceIoSetProcessDefaultPriority
Version |
NID
|
1.69 |
0x7F2ABBAF
|
3.60 |
0x7F2ABBAF
|
_sceIoRenameAsync
Version |
NID
|
1.69 |
0x81794921
|
3.60 |
0x81794921
|
_sceIoSyncAsync
Version |
NID
|
1.69 |
0x86DB0C0E
|
3.60 |
0x86DB0C0E
|
_sceIoDread
Version |
NID
|
1.69 |
0x8713D662
|
3.60 |
0x8713D662
|
_sceIoWrite
Version |
NID
|
1.69 |
0x8C319CF0
|
3.60 |
different NID or not present
|
_sceIoGetstat
Version |
NID
|
1.69 |
0x8E7E11F2
|
3.60 |
0x8E7E11F2
|
sceIoCloseAsync
Version |
NID
|
1.69 |
0x8EA3616A
|
3.60 |
0x8EA3616A
|
_sceIoMkdir
Version |
NID
|
1.69 |
0x8F1ACC32
|
3.60 |
0x8F1ACC32
|
_sceIoCompleteMultiple
Version |
NID
|
1.69 |
0x9111D004
|
3.60 |
0x9111D004
|
_sceIoLseek32
Version |
NID
|
1.69 |
0x92BDA6DA
|
3.60 |
different NID or not present
|
_sceIoPwrite
Version |
NID
|
1.69 |
0x9654094B
|
3.60 |
0x9654094B
|
_sceIoGetPriority
Version |
NID
|
1.69 |
0x9E3F880D
|
3.60 |
different NID or not present
|
sceIoGetThreadDefaultPriority
Version |
NID
|
1.69 |
0xA176CD03
|
3.60 |
0xA176CD03
|
_sceIoLseek
Version |
NID
|
1.69 |
0xA604764A
|
3.60 |
0xA604764A
|
sceIoChstatByFdAsync
Version |
NID
|
1.69 |
0xA9F89275
|
3.60 |
0xA9F89275
|
_sceIoGetProcessDefaultPriority
Version |
NID
|
1.69 |
0xB0486482
|
3.60 |
different NID or not present
|
_sceIoSetPriority
Version |
NID
|
1.69 |
0xB14192F0
|
3.60 |
different NID or not present
|
_sceIoReadAsync
Version |
NID
|
1.69 |
0xB2B891E6
|
3.60 |
different NID or not present
|
_sceIoPwriteAsync
Version |
NID
|
1.69 |
0xB2D0B2F4
|
3.60 |
0xB2D0B2F4
|
_sceIoChstatAsync
Version |
NID
|
1.69 |
0xB4B021D9
|
3.60 |
0xB4B021D9
|
sceIoSetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0xB9C9C9CF
|
3.60 |
0xB9C9C9CF
|
_sceIoPreadAsync
Version |
NID
|
1.69 |
0xBCF5684D
|
3.60 |
0xBCF5684D
|
sceIoDopenAsync
Version |
NID
|
1.69 |
0xC49C312F
|
3.60 |
0xC49C312F
|
sceIoClose
Version |
NID
|
1.69 |
0xC70B8886
|
3.60 |
0xC70B8886
|
_sceIoWriteAsync
Version |
NID
|
1.69 |
0xC92AF88F
|
3.60 |
different NID or not present
|
_sceIoOpen
Version |
NID
|
1.69 |
0xCC67B6FD
|
3.60 |
0xCC67B6FD
|
sceIoCancel
Version |
NID
|
1.69 |
0xCEF48835
|
3.60 |
0xCEF48835
|
sceIoComplete
Version |
NID
|
1.69 |
0xD1C49D2F
|
3.60 |
0xD1C49D2F
|
_sceIoChstat
Version |
NID
|
1.69 |
0xD2EE455F
|
3.60 |
0xD2EE455F
|
_sceIoSetProcessDefaultPriority
Version |
NID
|
1.69 |
0xD302DCB9
|
3.60 |
different NID or not present
|
_sceIoGetstatAsync
Version |
NID
|
1.69 |
0xD414C89F
|
3.60 |
0xD414C89F
|
sceIoDcloseAsync
Version |
NID
|
1.69 |
0xDC2D7D38
|
3.60 |
0xDC2D7D38
|
_sceIoIoctlAsync
Version |
NID
|
1.69 |
0xE00DC256
|
3.60 |
0xE00DC256
|
_sceIoChstatByFd
Version |
NID
|
1.69 |
0xE0BE2A30
|
3.60 |
0xE0BE2A30
|
sceIoWriteAsync
Version |
NID
|
1.69 |
0xE0D63D2A
|
3.60 |
0xE0D63D2A
|
_sceIoGetstatByFd
Version |
NID
|
1.69 |
0xE6C53567
|
3.60 |
0xE6C53567
|
_sceIoSetPriorityForSystem
Version |
NID
|
1.69 |
0xE6C923B3
|
3.60 |
different NID or not present
|
_sceIoDopen
Version |
NID
|
1.69 |
0xE6E614B5
|
3.60 |
0xE6E614B5
|
sceIoGetPriorityForSystem
Version |
NID
|
1.69 |
0xEF5432ED
|
3.60 |
0xEF5432ED
|
sceIoGetPriority
Version |
NID
|
1.69 |
0xF2A472A1
|
3.60 |
0xF2A472A1
|
_sceIoRead
Version |
NID
|
1.69 |
0xF3C9E783
|
3.60 |
different NID or not present
|
_sceIoSyncByFd
Version |
NID
|
1.69 |
0xF437545D
|
3.60 |
different NID or not present
|
_sceIoCloseAsync
Version |
NID
|
1.69 |
0xF4E13260
|
3.60 |
different NID or not present
|
_sceIoDopenAsync
Version |
NID
|
1.69 |
0xF58286C3
|
3.60 |
different NID or not present
|
sceIoDreadAsync
Version |
NID
|
1.69 |
0xF59F37B0
|
3.60 |
0xF59F37B0
|
_sceIoMkdirAsync
Version |
NID
|
1.69 |
0xF5C58B21
|
3.60 |
0xF5C58B21
|
_sceIoCancel
Version |
NID
|
1.69 |
0xF5DEEA19
|
3.60 |
different NID or not present
|
_sceIoClose
Version |
NID
|
1.69 |
0xF69FB394
|
3.60 |
different NID or not present
|
_sceIoDclose
Version |
NID
|
1.69 |
0xFAFF0002
|
3.60 |
different NID or not present
|
sceIoGetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0xFCBCEAED
|
3.60 |
0xFCBCEAED
|
sceIoRead
Version |
NID
|
1.69 |
0xFDB32293
|
3.60 |
0xFDB32293
|
_sceIoRmdir
Version |
NID
|
1.69 |
0xFFFB4D76
|
3.60 |
0xFFFB4D76
|
Device Drivers