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);
int (*func6)(void* ctx);
int (*func7)(void* ctx);
int (*func8)(void* ctx);
int (*func9)(void* ctx);
int (*func10)(void* ctx);
int (*func11)(void* ctx);
int (*func12)(void* ctx);
int (*func13)(void* ctx);
};
//probably vnodeops
struct node_ops2 // size is 0x74 (29 pointers)
{
int (*func1)(void* ctx); // sceIoOpenForDriver ?
int (*func2)(void* ctx);
int (*func3)(void* ctx);
int (*func4)(void* ctx);
int (*func5)(void* ctx); // sceIoChstatForDriver ?
int (*func6)(void* ctx); // sceIoWriteForDriver ?
int (*func7)(void* ctx); // sceIoLseekForDriver ?
int (*func8)(void* ctx);
int (*func9)(void* ctx); // sceIoCloseForDriver ?
int (*func10)(void* ctx);
int (*func11)(void* ctx);
int (*func12)(void* ctx);
int (*func13)(void* ctx);
int (*func14)(void* ctx);
int (*func15)(void* ctx);
int (*func16)(void* ctx);
int (*func17)(void* ctx);
int (*func18)(void* ctx);
int (*func19)(void* ctx);
int (*func20)(void* ctx);
int (*func21)(void* ctx);
int (*func22)(void* ctx);
int (*func23)(void* ctx);
int (*func24)(void* ctx);
int (*func25)(void* ctx);
int (*func26)(void* ctx);
int (*func27)(void* ctx);
int (*func28)(void* ctx);
int (*func29)(void* ctx);
};
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;
uint8_t data1[0x80];
uint32_t unk_D0;
}vfs_node;
Data segment layout
Address |
Size |
Description
|
0x0000 |
0x1A90 |
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
|
struct vfs_unmount_data
{
const char *mountpoint;
int flags;
};
int sceVfsUnmount(struct vfs_unmount_data *data);
sceVfsDeleteVfs
Version
|
NID
|
1.69
|
0x9CBFA725
|
int sceVfsDeleteVfs(const char *name, void **deleted_node);
sceVfsAddVfs
Version
|
NID
|
1.69
|
0x673D2FCD
|
int sceVfsAddVfs(struct vfs_add_data *data);
sceVfsMount
Version
|
NID
|
1.69
|
0xB62DE9A6
|
int sceVfsMount(struct vfs_mount_point_info_base* data);
sceVfsGetNewNode
Version
|
NID
|
1.69
|
0xD60B5C63
|
int sceVfsGetNewNode(void *ctx, node_ops2 *ops, int unused, vfs_node **node);
sceIoDreadForDriver
Version
|
NID
|
1.69
|
0x20CF5FC7
|
Call interface is same as sceIoDread
sceIoWriteForDriver
Version
|
NID
|
1.69
|
0x21EE91F0
|
Call interface is same as sceIoWrite
sceIoDopenForDriver
Version
|
NID
|
1.69
|
0x463B25CC
|
Call interface is same as sceIoDopen
sceIoLseekForDriver
Version
|
NID
|
1.69
|
0x62090481
|
Call interface is same as sceIoLseek
sceIoOpenForDriver
Version
|
NID
|
1.69
|
0x75192972
|
Call interface is same as sceIoOpen
sceIoChstatForDriver
Version
|
NID
|
1.69
|
0x7D42B8DC
|
Call interface is same as sceIoChstat
sceIoGetstatForDriver
Version
|
NID
|
1.69
|
0x75C96D25
|
Call interface is same as sceIoGetstat
sceIoMkdirForDriver
Version
|
NID
|
1.69
|
0x7F710B25
|
Call interface is same as sceIoMkdir
sceIoReadForDriver
Version
|
NID
|
1.69
|
0xE17EFC03
|
Call interface is same as sceIoRead
sceIoCloseForDriver
Version
|
NID
|
1.69
|
0xF99DD8A3
|
Call interface is same as sceIoClose
sceIoRenameForDriver
Version
|
NID
|
1.69
|
0xDC0C4997
|
Call interface is same as sceIoRename
sceIoRemoveForDriver
Version
|
NID
|
1.69
|
0x0D7BB3E1
|
Call interface is same as sceIoRemove
sceIoCancelForDriver
sceIoChstatAsyncForDriver
sceIoChstatByFdAsyncForDriver
sceIoChstatByFdForDriver
sceIoCloseAsyncForDriver
sceIoDevctlAsyncForDriver
sceIoDevctlForDriver
sceIoDcloseForDriver
sceIoFlockForSystemForDriver
sceIoGetstatByFdAsyncForDriver
sceIoGetstatByFdForDriver
sceIoGetstatAsyncForDriver
sceIoIoctlAsyncForDriver
sceIoIoctlForDriver
sceIoLseekAsyncForDriver
sceIoMkdirAsyncForDriver
sceIoOpenAsyncForDriver
sceIoPreadAsyncForDriver
sceIoPreadForDriver
sceIoPwriteAsyncForDriver
sceIoPwriteForDriver
sceIoReadAsyncForDriver
sceIoRemoveAsyncForDriver
sceIoRenameAsyncForDriver
sceIoRmdirAsyncForDriver
sceIoRmdirForDriver
sceIoSyncByFdAsyncForDriver
sceIoSyncByFdForDriver
sceIoSyncAsyncForDriver
sceIoSyncForDriver
sceIoWriteAsyncForDriver
SceIofilemgr
_sceIoDcloseAsync
Version |
NID
|
1.69 |
0xB13031
|
_sceIoOpenAsync
Version |
NID
|
1.69 |
0x9CD0FC8
|
sceIoGetProcessDefaultPriority
Version |
NID
|
1.69 |
0xDC4F1BB
|
_sceIoRmdirAsync
Version |
NID
|
1.69 |
0x13DC3244
|
sceIoSetPriority
Version |
NID
|
1.69 |
0x14B2D56C
|
sceIoSyncByFd
Version |
NID
|
1.69 |
0x16512F59
|
_sceIoIoctl
Version |
NID
|
1.69 |
0x1D2988F1
|
_sceIoLseekAsync
Version |
NID
|
1.69 |
0x2300858E
|
sceIoSetPriorityForSystem
Version |
NID
|
1.69 |
0x27373135
|
_sceIoComplete
Version |
NID
|
1.69 |
0x34E6A06E
|
sceIoWrite
Version |
NID
|
1.69 |
0x34EFD876
|
_sceIoGetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0x36CAF911
|
_sceIoSetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0x38FE853B
|
sceIoFlockForSystem
Version |
NID
|
1.69 |
0x3E98E422
|
_sceIoDevctlAsync
Version |
NID
|
1.69 |
0x3EE3F66E
|
sceIoDclose
Version |
NID
|
1.69 |
0x422A221A
|
_sceIoRename
Version |
NID
|
1.69 |
0x4912F748
|
sceIoLseek32
Version |
NID
|
1.69 |
0x49252B9B
|
sceIoSetThreadDefaultPriority
Version |
NID
|
1.69 |
0x49312108
|
_sceIoDevctl
Version |
NID
|
1.69 |
0x515AC017
|
sceIoGetstatByFdAsync
Version |
NID
|
1.69 |
0x5167AC1E
|
_sceIoPread
Version |
NID
|
1.69 |
0x539FD5C4
|
_sceIoGetstatByFdAsync
Version |
NID
|
1.69 |
0x554292F0
|
_sceIoChstatByFdAsync
Version |
NID
|
1.69 |
0x58010F40
|
_sceIoGetThreadDefaultPriority
Version |
NID
|
1.69 |
0x5DC29460
|
_sceIoSync
Version |
NID
|
1.69 |
0x5DD867F7
|
_sceIoRemoveAsync
Version |
NID
|
1.69 |
0x5FFA47E2
|
_sceIoDreadAsync
Version |
NID
|
1.69 |
0x64B233B8
|
_sceIoSetThreadDefaultPriority
Version |
NID
|
1.69 |
0x654E27B1
|
_sceIoSyncByFdAsync
Version |
NID
|
1.69 |
0x6F78FAFE
|
_sceIoGetPriorityForSystem
Version |
NID
|
1.69 |
0x70B7BB52
|
sceIoReadAsync
Version |
NID
|
1.69 |
0x773EBD45
|
_sceIoRemove
Version |
NID
|
1.69 |
0x78955C65
|
sceIoSyncByFdAsync
Version |
NID
|
1.69 |
0x7E1367CB
|
sceIoSetProcessDefaultPriority
Version |
NID
|
1.69 |
0x7F2ABBAF
|
_sceIoRenameAsync
Version |
NID
|
1.69 |
0x81794921
|
_sceIoSyncAsync
Version |
NID
|
1.69 |
0x86DB0C0E
|
_sceIoDread
Version |
NID
|
1.69 |
0x8713D662
|
_sceIoWrite
Version |
NID
|
1.69 |
0x8C319CF0
|
_sceIoGetstat
Version |
NID
|
1.69 |
0x8E7E11F2
|
sceIoCloseAsync
Version |
NID
|
1.69 |
0x8EA3616A
|
_sceIoMkdir
Version |
NID
|
1.69 |
0x8F1ACC32
|
_sceIoCompleteMultiple
Version |
NID
|
1.69 |
0x9111D004
|
_sceIoLseek32
Version |
NID
|
1.69 |
0x92BDA6DA
|
_sceIoPwrite
Version |
NID
|
1.69 |
0x9654094B
|
_sceIoGetPriority
Version |
NID
|
1.69 |
0x9E3F880D
|
sceIoGetThreadDefaultPriority
Version |
NID
|
1.69 |
0xA176CD03
|
_sceIoLseek
Version |
NID
|
1.69 |
0xA604764A
|
sceIoChstatByFdAsync
Version |
NID
|
1.69 |
0xA9F89275
|
_sceIoGetProcessDefaultPriority
Version |
NID
|
1.69 |
0xB0486482
|
_sceIoSetPriority
Version |
NID
|
1.69 |
0xB14192F0
|
_sceIoReadAsync
Version |
NID
|
1.69 |
0xB2B891E6
|
_sceIoPwriteAsync
Version |
NID
|
1.69 |
0xB2D0B2F4
|
_sceIoChstatAsync
Version |
NID
|
1.69 |
0xB4B021D9
|
sceIoSetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0xB9C9C9CF
|
_sceIoPreadAsync
Version |
NID
|
1.69 |
0xBCF5684D
|
sceIoDopenAsync
Version |
NID
|
1.69 |
0xC49C312F
|
sceIoClose
Version |
NID
|
1.69 |
0xC70B8886
|
_sceIoWriteAsync
Version |
NID
|
1.69 |
0xC92AF88F
|
_sceIoOpen
Version |
NID
|
1.69 |
0xCC67B6FD
|
sceIoCancel
Version |
NID
|
1.69 |
0xCEF48835
|
sceIoComplete
Version |
NID
|
1.69 |
0xD1C49D2F
|
_sceIoChstat
Version |
NID
|
1.69 |
0xD2EE455F
|
_sceIoSetProcessDefaultPriority
Version |
NID
|
1.69 |
0xD302DCB9
|
_sceIoGetstatAsync
Version |
NID
|
1.69 |
0xD414C89F
|
sceIoDcloseAsync
Version |
NID
|
1.69 |
0xDC2D7D38
|
_sceIoIoctlAsync
Version |
NID
|
1.69 |
0xE00DC256
|
_sceIoChstatByFd
Version |
NID
|
1.69 |
0xE0BE2A30
|
sceIoWriteAsync
Version |
NID
|
1.69 |
0xE0D63D2A
|
_sceIoGetstatByFd
Version |
NID
|
1.69 |
0xE6C53567
|
_sceIoSetPriorityForSystem
Version |
NID
|
1.69 |
0xE6C923B3
|
_sceIoDopen
Version |
NID
|
1.69 |
0xE6E614B5
|
sceIoGetPriorityForSystem
Version |
NID
|
1.69 |
0xEF5432ED
|
sceIoGetPriority
Version |
NID
|
1.69 |
0xF2A472A1
|
_sceIoRead
Version |
NID
|
1.69 |
0xF3C9E783
|
_sceIoSyncByFd
Version |
NID
|
1.69 |
0xF437545D
|
_sceIoCloseAsync
Version |
NID
|
1.69 |
0xF4E13260
|
_sceIoDopenAsync
Version |
NID
|
1.69 |
0xF58286C3
|
sceIoDreadAsync
Version |
NID
|
1.69 |
0xF59F37B0
|
_sceIoMkdirAsync
Version |
NID
|
1.69 |
0xF5C58B21
|
_sceIoCancel
Version |
NID
|
1.69 |
0xF5DEEA19
|
_sceIoClose
Version |
NID
|
1.69 |
0xF69FB394
|
_sceIoDclose
Version |
NID
|
1.69 |
0xFAFF0002
|
sceIoGetThreadDefaultPriorityForSystem
Version |
NID
|
1.69 |
0xFCBCEAED
|
sceIoRead
Version |
NID
|
1.69 |
0xFDB32293
|
_sceIoRmdir
Version |
NID
|
1.69 |
0xFFFB4D76
|
Device Drivers