SceIofilemgr: Difference between revisions
(→Types) |
|||
Line 1,015: | Line 1,015: | ||
uint32_t arg3; | uint32_t arg3; | ||
}vfs_node_func1_args; | }vfs_node_func1_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,037: | Line 1,039: | ||
uint32_t arg_0; | uint32_t arg_0; | ||
}vfs_node_func2_args; | }vfs_node_func2_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,056: | Line 1,060: | ||
uint32_t arg1; | uint32_t arg1; | ||
}vfs_node_func3_args; | }vfs_node_func3_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,077: | Line 1,083: | ||
uint32_t arg3; | uint32_t arg3; | ||
}vfs_node_func4_args; | }vfs_node_func4_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,139: | Line 1,147: | ||
uint32_t arg_0; | uint32_t arg_0; | ||
}vfs_node_func7_args; | }vfs_node_func7_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,163: | Line 1,173: | ||
uint32_t arg_8; | uint32_t arg_8; | ||
}vfs_node_func8_args; | }vfs_node_func8_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,184: | Line 1,196: | ||
uint32_t arg3; | uint32_t arg3; | ||
}vfs_node_func9_args; | }vfs_node_func9_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,205: | Line 1,219: | ||
uint32_t arg3; | uint32_t arg3; | ||
}vfs_node_func10_args; | }vfs_node_func10_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,225: | Line 1,241: | ||
uint32_t arg2; | uint32_t arg2; | ||
}vfs_node_func11_args; | }vfs_node_func11_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,245: | Line 1,263: | ||
uint32_t arg2; | uint32_t arg2; | ||
}vfs_node_func12_args; | }vfs_node_func12_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,264: | Line 1,284: | ||
uint32_t arg1; | uint32_t arg1; | ||
}vfs_node_func13_args; | }vfs_node_func13_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,284: | Line 1,306: | ||
uint32_t arg2; | uint32_t arg2; | ||
}vfs_node_func14_args; | }vfs_node_func14_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,304: | Line 1,328: | ||
uint32_t arg2; | uint32_t arg2; | ||
}vfs_node_func15_args; | }vfs_node_func15_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,325: | Line 1,351: | ||
uint32_t arg3; | uint32_t arg3; | ||
}vfs_node_func16_args; | }vfs_node_func16_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,348: | Line 1,376: | ||
uint32_t arg_4; | uint32_t arg_4; | ||
}vfs_node_func17_args; | }vfs_node_func17_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,366: | Line 1,396: | ||
vfs_node* node; | vfs_node* node; | ||
}vfs_node_func21_args; | }vfs_node_func21_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,385: | Line 1,417: | ||
uint32_t arg1; | uint32_t arg1; | ||
}vfs_node_func22_args; | }vfs_node_func22_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,403: | Line 1,437: | ||
uint32_t arg1; | uint32_t arg1; | ||
}vfs_node_func23_args; | }vfs_node_func23_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,423: | Line 1,459: | ||
uint32_t arg2; | uint32_t arg2; | ||
}vfs_node_func24_args; | }vfs_node_func24_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,444: | Line 1,482: | ||
uint32_t arg2; | uint32_t arg2; | ||
}vfs_node_func25_args; | }vfs_node_func25_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,465: | Line 1,505: | ||
uint32_t arg3; | uint32_t arg3; | ||
}vfs_node_func26_args; | }vfs_node_func26_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,488: | Line 1,530: | ||
uint32_t unk_14; // zero | uint32_t unk_14; // zero | ||
}vfs_node_func27_args; | }vfs_node_func27_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,509: | Line 1,553: | ||
uint32_t unk_C; // zero | uint32_t unk_C; // zero | ||
}vfs_node_func28_args; | }vfs_node_func28_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> | ||
Line 1,534: | Line 1,580: | ||
uint32_t arg_C; | uint32_t arg_C; | ||
}vfs_node_func29_args; | }vfs_node_func29_args; | ||
arguments are packed into <code></code> and passed to <code></code> callback | |||
</source> | </source> |
Revision as of 10:20, 22 February 2017
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
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69 | SceIofilemgrForDriver | Non-secure | Kernel | 0x40FD29C7 |
1.69 | SceIofilemgr | Non-secure | User | 0xF2FF276E |
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
Module | Name | Comment |
---|---|---|
SceSdstor | sdstor_dev_fs | |
SceExfatfs | exfat | |
SceIofilemgr | dummy_ttyp_dev_fs | |
ScePfsMgr | PFS_REDIRECT_INF | Redirect Pseudo Drive. |
ScePfsMgr | PFS_GDSD_INF | Gamedata/Savedata Pseudo Drive. |
ScePfsMgr | PFS_AC_INF | AC Pseudo Drive. |
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); // ? }; //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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
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; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func16
Version | NID |
---|---|
3.60 | 0x1974FA92 |
int vfs_node_func16(vfs_node *n0, int unk1, int unk2, int unk3) struct vfs_node_func16_args { vfs_node* node; uint32_t arg1; uint32_t arg2; uint32_t arg3; }vfs_node_func16_args; arguments are packed into <code></code> and passed to <code></code> callback
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) 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; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func21
Version | NID |
---|---|
3.60 | 0x8FB94521 |
int vfs_node_func21(vfs_node *n0) struct vfs_node_func21_args { vfs_node* node; }vfs_node_func21_args; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func22
Version | NID |
---|---|
3.60 | 0x942AA61F |
int vfs_node_func22(vfs_node *n0, int unk1) struct vfs_node_func22_args { vfs_node* node; uint32_t arg1; }vfs_node_func22_args; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func23
Version | NID |
---|---|
3.60 | 0x0D8A806E |
int vfs_node_func23(vfs_node *n0, int unk1) struct vfs_node_func23_args { vfs_node* node; uint32_t arg1; }vfs_node_func23_args; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func24
Version | NID |
---|---|
3.60 | 0x9CD96406 |
int vfs_node_func24(vfs_node *n0, int unk1, int unk2) struct vfs_node_func24_args { vfs_node* node; uint32_t arg1; uint32_t arg2; }vfs_node_func24_args; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func25
Version | NID |
---|---|
3.60 | 0x1DBCBB01 |
int vfs_node_func25(vfs_node *n0, int unk1, int unk2) struct vfs_node_func25_args { vfs_node* node; uint32_t arg1; uint32_t arg2; }vfs_node_func25_args; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func26
Version | NID |
---|---|
3.60 | 0x082AFD7F |
int vfs_node_func26(vfs_node *n0, int unk1, int unk2, int unk3) struct vfs_node_func26_args { vfs_node* node; uint32_t arg1; uint32_t arg2; uint32_t arg3; }vfs_node_func26_args; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func27
Version | NID |
---|---|
3.60 | 0xF53399BC |
int vfs_node_func27(int unk0, vfs_node *n0, int unk2, int unk3) 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; arguments are packed into <code></code> and passed to <code></code> callback
vfs_node_func28
Version | NID |
---|---|
3.60 | 0x0F7E1718 |
int vfs_node_func28(vfs_node *n0, int unk1, int unused1, int unused2) 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; arguments are packed into <code></code> and passed to <code></code> callback
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) 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; arguments are packed into <code></code> and passed to <code></code> callback
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 |