SceIofilemgr: Difference between revisions
CelesteBlue (talk | contribs) |
|||
Line 576: | Line 576: | ||
== SceIofilemgrForDriver == | == SceIofilemgrForDriver == | ||
=== | === sceVfsOpDevctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.990-3.60 || 0xB07B307D | ||
|} | |} | ||
=== sceVfsOpDecodePathElemForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xF7DAC0F5 | ||
|} | |} | ||
=== | <source lang="C"> | ||
typedef struct SceVfsPathElem { // size is 0x1C-bytes | |||
void *mnt; | |||
const char *path; | |||
void *data_0x08; | |||
void *data_0x0C; | |||
void *data_0x10; | |||
int data_0x14; | |||
void *data_0x18; | |||
} SceVfsPathElem; | |||
</source> | |||
=== sceVopOpenForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0x76B79BEC | ||
|} | |} | ||
=== | === sceVopCreateForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0x9E347C7D | ||
|} | |} | ||
=== | === sceVopCloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0x40944C2E | ||
|} | |} | ||
In logs it is sceVopClsoe. | |||
=== | === sceVopLookupForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xA5A6A55C | ||
|} | |} | ||
Temp name was sceVfsNodeInitializePartitionForDriver. | |||
<source lang="C">int sceVopLookupForDriver(SceVfsNode *pNode, SceVfsNode **ppNewNode, SceVfsPath *path_info, SceUInt32 flags);</source> | |||
=== sceVopReadForDriver === | === sceVopReadForDriver === | ||
Line 662: | Line 658: | ||
|} | |} | ||
=== | === sceVopLseekForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0xB2B13818 | ||
|} | |} | ||
=== | === sceVopIoctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0x333C904D | ||
|} | |} | ||
=== | === sceVopRemoveForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xDC1E7EE4 | ||
|} | |} | ||
Line 708: | Line 704: | ||
|- | |- | ||
| 0.990-3.60 || 0x00C9C2DD | | 0.990-3.60 || 0x00C9C2DD | ||
|} | |||
=== sceVopDcloseForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x1350F5C7 | |||
|} | |} | ||
Line 718: | Line 722: | ||
|} | |} | ||
=== | === sceVopGetstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0x50A63ACF | ||
|} | |} | ||
Line 742: | Line 746: | ||
|} | |} | ||
=== | === sceVopPreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0xABBC80E3 | ||
|} | |} | ||
=== | === sceVopPwriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.990-3.60 || 0xA53C040D | ||
|} | |} | ||
=== sceVopInactiveForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x8FB94521 | ||
|} | |} | ||
=== sceVopLinkForDriver === | === sceVopLinkForDriver === | ||
Line 806: | Line 790: | ||
Temp name was sceVop_unk_offset_0x58_ForDriver. | Temp name was sceVop_unk_offset_0x58_ForDriver. | ||
=== | === sceVopSyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x9CD96406 | ||
|} | |} | ||
Temp name was | === sceVopFgetstatForDriver === | ||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x1DBCBB01 | |||
|} | |||
Temp name was sceVopGetStateByFdForDriver. | |||
=== | <source>int sceVopFgetstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pVfsFileObject, SceIoStat *stat);</source> | ||
=== sceVopFchstatForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x082AFD7F | ||
|} | |} | ||
Temp name was | Temp name was sceVopChstatByFdForDriver. | ||
<source>int sceVopFchstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pObject, SceIoStat *stat, int bit);</source> | |||
=== | === sceVopWhiteoutForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.996-3.60 || 0xF53399BC | ||
|} | |} | ||
=== | Temp name was sceVopTrashForDriver. | ||
Move target node entry file/directory to <code>xx0:/SceIoTrash/</code>. | |||
=== sceVopCleanupForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x0F7E1718 | ||
|} | |} | ||
Temp name was sceVop_unk_offset_0x6C_ForDriver. | |||
=== | === sceVopZerofillForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.996-3.60 || 0xEEAE8B51 | ||
|} | |} | ||
Temp name was sceVop_unk_offset_0x70_ForDriver. | |||
=== create_SceUIDVfsFileClass === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xCDF3EF52 | ||
|} | |} | ||
creates instance of SceUIDVfsFileClass using <code>sceKernelCreateUidObjForKernel</code> | |||
<source lang="C">SceUID create_SceUIDVfsFileClass(int unk0, int unk1, const char *unk2);</source> | |||
=== vfsIsLockedMntForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xC468B5EF | ||
|} | |} | ||
some thread op | |||
=== vfsBuffCacheCtlForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xA7020B0D | ||
|} | |} | ||
big function | |||
<source | <source>int vfsBuffCacheCtlForDriver(SceVfsNode *vp, int a2, int a3, int a4, int cache_size);</source> | ||
=== | === vfsBuffCacheFreeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xD6AB5E4B | ||
|} | |} | ||
Temp name was sceVfsNodeWaitEventFlagForDriver. | some node op | ||
=== sceVfsLockVnodeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.995-3.60 || 0xAA45010B | |||
|} | |||
Temp name was sceVfsNodeWaitEventFlagForDriver. | |||
calls <code>sceKernelWaitEventFlagForDriver</code> using <code>event_flag_SceVfsVnode</code> from <code>vfs_node</code> | calls <code>sceKernelWaitEventFlagForDriver</code> using <code>event_flag_SceVfsVnode</code> from <code>vfs_node</code> | ||
Line 978: | Line 964: | ||
|} | |} | ||
<source lang="C">int sceVfsMountForDriver(vfs_mount_point_info_base* mnt);</source> | <source lang="C">int sceVfsMountForDriver(vfs_mount_point_info_base *mnt);</source> | ||
=== sceVfsLockMntForDriver === | === sceVfsLockMntForDriver === | ||
Line 1,001: | Line 987: | ||
|} | |} | ||
<source lang="C">int sceVfsGetNewVnodeForDriver(vfs_mount* | <source lang="C">int sceVfsGetNewVnodeForDriver(vfs_mount *mnt, node_ops2 *ops, int unused, vfs_node **node);</source> | ||
=== sceVfsGetVnodeNameForDriver === | === sceVfsGetVnodeNameForDriver === | ||
Line 1,267: | Line 1,253: | ||
</source> | </source> | ||
=== | === sceIoMountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xD070BC48 | ||
|} | |} | ||
operation index 1 in <code>cond_ctx</code> | |||
<source lang="C"> | |||
// intermediate function between sceAppMgrGameDataMountForDriver and sceVfsMountForDriver | |||
int sceIoMountForDriver(int vshMountId, const char *path, int permission, int unk3, int arg_0, int arg_4); | |||
</source> | |||
=== sceIoUmountForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x20574100 | |||
|} | |||
| 3.60 || | |||
|} | |||
operation index 2 in <code>cond_ctx</code> | |||
<source lang="C">int | <source lang="C"> | ||
// intermediate function between sceAppMgrUmountForDriver and sceVfsUnmountForDriver | |||
int sceIoUmountForDriver(int vshMountId, int unk1, int unk2, int unk3); | |||
</source> | |||
=== | === scePfsMgrVfsMountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xFEEE44A9 | |||
| 3.60 || | |||
|} | |} | ||
<source lang="C">int | operation index 3 in <code>cond_ctx</code> | ||
<source lang="C"> | |||
// this function can be used with PFS_GDSD_INF filesystem | |||
int scePfsMgrVfsMountForDriver(vfs_mount_point_info_base *mnt, int unk1, int unk2); | |||
</source> | |||
=== | === scePfsMgrVfsUmountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xD220539D | ||
|} | |} | ||
operation index 4 in <code>cond_ctx</code> | |||
<source lang="C">int | <source lang="C">int scePfsMgrVfsUmountForDriver(vfs_unmount_data* umnt, int unk1, int unk2);</source> | ||
=== | === sceIoRmdevForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.990-3.60 || 0xA39A9CA7 | ||
|} | |} | ||
Like sceIoRemove? | |||
The difference with sceIoRemove is that sceIoRmdev seems to remove the entry to be deleted directly without moving it to SceIoTrash. | |||
<source lang="C">int | <source lang="C">int sceIoRmdevForDriver(const char *path, int flags, int a3, int a4);</source> | ||
=== | === sceIoDelDrvForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | |||
|- | |- | ||
| 0.931 || 0xD51774E3 | |||
|- | |- | ||
| | | 3.60 || not present | ||
|} | |} | ||
Example: "tty" | |||
<source lang="C">int | <source lang="C">int sceIoDelDrvForDriver(const char *drv);</source> | ||
=== | === sceIoAddDrvForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931 || 0x1D8AC9A7 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceIoAddDrvForDriver(const char **drv);</source> | |||
=== sceIoDreadForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.69-3.60 || 0x20CF5FC7 | ||
|} | |} | ||
Call interface is same as <code> | Call interface is same as <code>sceIoDread</code>. | ||
<source lang="C"> | <source lang="C">int sceIoDreadForDriver(SceUID fd, SceIoDirent *dir);</source> | ||
=== | === sceIoDreadForVshbridgeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.995-3.60 || 0x03051B02 | ||
|} | |} | ||
Temp name was sceIoDreadForDriver_2. Derived from [[SceVshBridge#vshIoDread|_vshIoDread]]. | |||
Implementation is completely the same as sceIoDreadForDriver. The only difference is that st_attr in SceIoStat is not set. | |||
<source lang="C">SceUID | <source lang="C">int sceIoDreadForVshbridgeForDriver(SceUID fd, SceIoDirent *dir);</source> | ||
=== | === sceIoWriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x21EE91F0 | ||
|} | |} | ||
Call interface is same as <code>sceIoWrite</code> | |||
<source lang="C">int sceIoWriteForDriver(SceUID fd, const void *data, SceSize size);</source> | |||
=== sceIoDopenForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69-3.60 || | | 1.69-3.60 || 0x463B25CC | ||
|} | |} | ||
Call interface is same as <code> | Call interface is same as <code>sceIoDopen</code> | ||
<source lang="C"> | <source lang="C">SceUID sceIoDopenForDriver(const char *dirname);</source> | ||
=== | === sceIoLseekForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x62090481 | ||
|} | |} | ||
Call interface is same as <code>sceIoLseek</code> | |||
<source lang="C">SceOff sceIoLseekForDriver(SceUID fd, SceOff offset, int whence);</source> | |||
=== sceIoOpenForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.60 || 0x75192972 | ||
|} | |} | ||
Call interface is same as | Call interface is same as [[SceLibKernel#sceIoOpen|sceIoOpen]]. | ||
If the process is game or non-game, the `SCE_O_NOBUF` flag will be ignored. | |||
<source lang="C"> | <source lang="C">SceUID sceIoOpenForDriver(const char *filename, int flag, SceIoMode mode);</source> | ||
=== | === sceIoOpenForPidForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xC3D34965 | ||
|} | |} | ||
This is a wrapper for [[SceIofilemgr#sceIoOpenForDriver|sceIoOpenForDriver]]. | |||
Pid is used for <code>sceFiosKernelOverlayResolveSyncForDriver</code>. | |||
<source lang="C"> | <source lang="C">SceUID sceIoOpenForPidForDriver(SceUID pid, const char *filename, int flag, SceIoMode mode);</source> | ||
=== | === sceIoChstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69-3.60 || | | 1.69-3.60 || 0x7D42B8DC | ||
|} | |} | ||
Call interface is same as <code> | Call interface is same as <code>sceIoChstat</code> | ||
<source lang="C">int | <source lang="C">int sceIoChstatForDriver(const char *name, const SceIoStat *buf, unsigned int cbit);</source> | ||
=== | === sceIoChstatForVshbridgeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.995-3.60 || 0x1F98BD50 | ||
|} | |} | ||
Temp name was sceIoChstatForDriver_2. Derived from [[SceVshBridge#vshIoChstat|_vshIoChstat]]. | |||
Implementation is completely the same as <code>sceIoChstatForDriver</code>. The only difference is that (bits = bits & (~0x10000)) operation is not applied. | |||
<source lang="C">int | <source lang="C">int sceIoChstatForVshbridgeForDriver(const char *name, const SceIoStat *buf, unsigned int cbit);</source> | ||
=== | === sceIoGetstatForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69-3.60 || | | 1.69-3.60 || 0x75C96D25 | ||
|} | |} | ||
Call interface is same as <code> | Call interface is same as <code>sceIoGetstat</code>. | ||
<source lang="C">int | <source lang="C">int sceIoGetstatForDriver(const char *name, SceIoStat *buf);</source> | ||
=== | === sceIoGetstatForVshbridgeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.995-3.60 || 0xD6503624 | ||
|} | |} | ||
Temp name was sceIoGetstatForDriver_2. Derived from [[SceVshBridge#vshIoGetstat|_vshIoGetstat]]. | |||
Implementation is completely the same as sceIoGetstatForDriver. The only difference is that st_attr in SceIoStat *buf is not set. | |||
<source lang="C">int | <source lang="C">int sceIoGetstatForVshbridgeForDriver(const char *name, SceIoStat *buf);</source> | ||
=== | === sceIoMkdirForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69-3.60 || | | 1.69-3.60 || 0x7F710B25 | ||
|} | |} | ||
Call interface is same as <code> | Call interface is same as <code>sceIoMkdir</code> | ||
<source lang="C">int | <source lang="C">int sceIoMkdirForDriver(const char *dirname, SceIoMode mode);</source> | ||
=== | === sceIoReadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0xE17EFC03 | ||
|} | |} | ||
Call interface is same as <code>sceIoRead</code> | |||
<source lang="C">int sceIoReadForDriver(SceUID fd, void *buf, SceSize nbyte);</source> | |||
=== | === sceIoCloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0xF99DD8A3 | ||
|} | |} | ||
Call interface is same as <code>sceIoClose</code> | |||
<source lang="C">int sceIoCloseForDriver(SceUID fd);</source> | |||
=== | === sceIoRenameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0xDC0C4997 | ||
|} | |} | ||
Call interface is same as <code>sceIoRename</code> | |||
<source lang="C">int sceIoRenameForDriver(const char *oldname, const char *newname);</source> | |||
=== | === sceIoRemoveForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x0D7BB3E1 | ||
|} | |} | ||
Call interface is same as <code>sceIoRemove</code> | |||
<source lang="C">int | <source lang="C">int sceIoRemoveForDriver(const char *filename);</source> | ||
=== | === sceIoCancelForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x6D59658D | ||
|} | |} | ||
Derived from <code> | Derived from <code>sceIoCancel</code> | ||
=== | === sceIoChstatAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x7EC442BF | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoChstatAsync</code> | ||
=== | === sceIoChstatByFdAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xEC974400 | ||
|} | |} | ||
Derived from | Derived from <code>sceIoChstatByFdAsync</code> | ||
=== sceIoChstatByFdForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xDF57A75F | |||
|} | |||
< | Derived from <code>_sceIoChstatByFd</code> | ||
/ | |||
<source lang="C">int sceIoChstatByFdForDriver(SceUID fd, const SceIoStat *buf, unsigned int cbit);</source> | |||
< | |||
=== sceIoCloseAsyncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
=== | |||
{| class="wikitable" | |||
|- | |- | ||
| 3.60 || 0x11C57CC6 | |||
| 3.60 || | |||
|} | |} | ||
Derived from <code> | Derived from <code>sceIoCloseAsync</code> | ||
=== sceIoDevctlAsyncForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xA9302946 | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoDevctlAsync</code> | ||
=== | === sceIoDevctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x16882FC4 | ||
|} | |} | ||
Derived from | Derived from [[SceIofilemgr#sceIoDevctl|_sceIoDevctl]]. | ||
This performs device-specific operations. The details of the operations are driver-dependent. | |||
It has the same prototype as [[SceLibKernel#sceIoDevctl]]. | |||
<source lang="C"> | <source lang="C"> | ||
/ | /* | ||
Arguments: | |||
</ | devname Specified device ("<devname><unit>:") | ||
cmd Command code | |||
arg Pointer to device-driver-dependent parameter block | |||
arglen Number of bytes in device-driver-dependent parameter block | |||
bufp Pointer to return data storage block | |||
buflen Size of return data storage block | |||
Return Values: | |||
Non-negative (N>=0) Success (driver-dependent) | |||
<0 Error, e.g. SCE_ERROR_ERRNO_EMFILE, SCE_ERROR_ERRNO_ENODEV, SCE_ERROR_ERRNO_EUNSUP | |||
*/ | |||
=== | int sceIoDevctlForDriver( | ||
{| class="wikitable" | const char *devname, | ||
int cmd, | |||
const void *arg, | |||
SceSize arglen, | |||
void *bufp, | |||
SceSize buflen | |||
); | |||
</source> | |||
=== sceIoDcloseForDriver === | |||
{| class="wikitable" | |||
|- | |- | ||
| 3.60 || | ! Version !! NID | ||
|- | |||
| 3.60 || 0x19C81DD6 | |||
|} | |} | ||
Derived from <code> | Derived from <code>sceIoDclose</code> | ||
<source lang="C">int sceIoDcloseForDriver(SceUID fd);</source> | |||
=== | === sceIoFlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x16336A0D | ||
|} | |} | ||
Derived from <code> | Derived from <code>sceIoFlockForSystem</code> | ||
=== | === sceIoGetstatByFdAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x0FEE1238 | ||
|} | |} | ||
Derived from <code> | Derived from <code>sceIoGetstatByFdAsync</code> | ||
=== sceIoGetstatByFdForDriver === | |||
= | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x462F059B | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoGetstatByFd</code> | ||
<source lang="C"> | |||
// Return: 0 on success | |||
int sceIoGetstatByFdForDriver(SceUID fd, SceIoStat *buf); | |||
</source> | |||
=== | === sceIoGetstatAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x94A5304A | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoGetstatAsync</code> | ||
=== | === sceIoIoctlAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xB761E91B | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoIoctlAsync</code> | ||
=== | === sceIoIoctlForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x161CD33F | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoIoctl</code> | ||
<source lang="C"> | |||
// Return: >=0 on success (driver-dependent) | |||
int sceIoIoctlForDriver(SceUID fd, int cmd, const void *argp, SceSize arglen, void *bufp, SceSize buflen); | |||
</source> | |||
=== | === sceIoLseekAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x541BAABD | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoLseekAsync</code> | ||
=== sceIoMkdirAsyncForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x27003443 | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoMkdirAsync</code> | ||
=== | === sceIoOpenAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x451001DE | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoOpenAsync</code> | ||
=== sceIoPreadAsyncForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x64A46A2C | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoPreadAsync</code> | ||
=== | === sceIoPreadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2A17515D | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoPread</code> | ||
=== | <source lang="C"> | ||
{| class="wikitable" | // Return: Number of bytes actually read | ||
int sceIoPreadForDriver(SceUID uid, void *data, int size, SceOff offset); | |||
</source> | |||
=== sceIoPwriteAsyncForDriver === | |||
{| class="wikitable" | |||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x202CDDE3 | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoPwriteAsync</code> | ||
=== | === sceIoPwriteForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x5F1512C8 | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoPwrite</code> | ||
<source lang="C"> | |||
// Return: Number of bytes actually written | |||
int sceIoPwriteForDriver(SceUID fd, const void *buf, SceSize nbyte, SceOff offset); | |||
</source> | |||
=== | === sceIoReadAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x69047C81 | ||
|} | |} | ||
Derived from <code> | Derived from <code>sceIoReadAsync</code> | ||
=== sceIoRemoveAsyncForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xF9D6507D | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoRemoveAsync</code> | ||
=== | === sceIoRenameAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xAACBC47A | ||
|} | |} | ||
Derived from <code>_sceIoRenameAsync</code> | |||
=== sceIoRmdirAsyncForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xF5B0B36C | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoRmdirAsync</code> | ||
=== | === sceIoRmdirForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x1CC9C634 | ||
|} | |} | ||
Derived from <code> | Derived from <code>_sceIoRmdir</code> | ||
<source lang="C">int | <source lang="C">int sceIoRmdirForDriver(const char *dirname);</source> | ||
=== | === sceIoSyncByFdAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x041209CF | ||
|} | |} | ||
=== | Derived from <code>sceIoSyncByFdAsync</code> | ||
=== not_sceIoSyncByFd_maybe_SyncByFd2ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x43170575 | ||
|} | |} | ||
=== | This function is not sceIoSyncByFdForDriver. | ||
Derived from <code>sceIoSyncByFd</code> | |||
<source lang="C">int not_sceIoSyncByFd_maybe_SyncByFd2ForDriver(SceUID fd, int flag);</source> | |||
=== sceIoSyncAsyncForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x4F9EA8B0 | ||
|} | |} | ||
=== | Derived from <code>_sceIoSyncAsync</code> | ||
=== sceIoSyncForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xDDF78594 | ||
|} | |} | ||
=== | Derived from <code>_sceIoSync</code> | ||
<source lang="C">int sceIoSyncForDriver(const char *device, unsigned int flag);</source> | |||
=== sceIoWriteAsyncForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xA1BD13D0 | ||
|} | |} | ||
=== | Derived from <code>sceIoWriteAsync</code> | ||
=== sceIoGetProcessDefaultPriorityForSystemForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xCE397158 | ||
|} | |} | ||
=== | === sceIoSetProcessDefaultPriorityForSystemForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xABE65071 | ||
|} | |} | ||
=== sceIoDopenAsyncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x72F06BDE | |||
|} | |||
=== sceIoDcloseAsyncForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x3C0343DB | | 3.60 || 0xC08F199F | ||
|} | |||
=== sceIoDreadAsyncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x5982B0E3 | |||
|} | |||
=== sceIoCreateMountEventForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x2DFA192F | |||
|} | |||
Derived from [[SceVshBridge#vshIoCreateMountEvent|vshIoCreateMountEvent]] | |||
<source lang="C">int sceIoCreateMountEventForDriver(int vshMountId, int flag);</source> | |||
=== sceIoCreateErrorEventForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3C0343DB | |||
|} | |} | ||
Line 2,058: | Line 2,102: | ||
<source lang="C">int sceIoGetMediaTypeForDriver(SceUID pid, const char *path, int ignored, int *media_type);</source> | <source lang="C">int sceIoGetMediaTypeForDriver(SceUID pid, const char *path, int ignored, int *media_type);</source> | ||
=== sceIoGetThreadDefaultPriorityForSystemForDriver === | |||
=== sceIoGetThreadDefaultPriorityForSystemForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 2,211: | Line 2,243: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xF4F8C59A | | 3.60 || 0xF4F8C59A | ||
|} | |} | ||
=== sceIoGetGUIDFdListForDebuggerForDriver === | === sceIoGetGUIDFdListForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xdcf75f6d | | 3.60 || 0xdcf75f6d | ||
|} | |} | ||
=== sceIoGetPUIDFdListForDebuggerForDriver === | === sceIoGetPUIDFdListForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xd493274 | | 3.60 || 0xd493274 | ||
|} | |} | ||
=== sceIoGetFileInfoForDriver === | === sceIoGetFileInfoForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xa1ef2648 | | 3.60 || 0xa1ef2648 | ||
|} | |} | ||
This is a guessed name. | |||
=== SceIofilemgrForDriver_12F8D58E === | === SceIofilemgrForDriver_12F8D58E === | ||
Line 2,305: | Line 2,339: | ||
<source>int SceIofilemgrForDriver_6BEEDDB4(SceUID fd, int a2);</source> | <source>int SceIofilemgrForDriver_6BEEDDB4(SceUID fd, int a2);</source> | ||
=== SceIofilemgrForDriver_B499287E === | === SceIofilemgrForDriver_B499287E === | ||
Line 2,353: | Line 2,375: | ||
<source>int sceIoGetMountVectorForDriver(void *dst, int n, SceSize *num);</source> | <source>int sceIoGetMountVectorForDriver(void *dst, int n, SceSize *num);</source> | ||
=== SceIofilemgrForDriver_C722DF35 === | === SceIofilemgrForDriver_C722DF35 === | ||
Line 2,373: | Line 2,385: | ||
some node op. inc ctr. | some node op. inc ctr. | ||
=== sceIoSyncByFdForDriver === | === sceIoSyncByFdForDriver === |
Revision as of 10:54, 10 May 2023
SceIofilemgr is the primary interface for file IO. Read File Management for more information on file IO.
Module
This module exists only in non-secure world. The SELF can be found in os0:kd/iofilemgr.skprx
.
Version | World | Privilege |
---|---|---|
0.990-3.60 | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69-3.60 | SceIofilemgrForDriver | Non-secure | Kernel | 0x40FD29C7 |
1.69-3.60 | SceIofilemgr | Non-secure | User | 0xF2FF276E |
Mount Points
This table is stored in data segment of SceIofilemgr as array of vfs_mount_point_info
elements.
When #sceVfsMountForDriver is executed, it finds vfs_add_data element by filesystem string and then selects appropriate mount scenario by devMinor and devMajor.
<rnd>
means random numeric string of length 13
See SceSdstor for "sdstor0:" Block Device.
Unix Mount | Dev Major | Dev Minor | fsName | assignName | blockdevName | VSH Mount Id | Comment |
---|---|---|---|---|---|---|---|
/PD<rnd> | 0x3 | 0x1001 | PFS_GDSD_INF | PD<rnd>0 | - | 0x0 | - |
/sd/exfat | 0x2030001 | 0x30002 | exfat | sd0: | sdstor0:ext-lp-act-entire | 0x100 | - |
/os/exfat | 0x1000001 | 0x1002 | exfat | os0: | sdstor0:int-lp-act-os | 0x200 | Formatted as FAT16. |
/vs/exfat | 0x1000001 | 0x1002 | exfat | vs0: | sdstor0:int-lp-ign-vsh | 0x300 | Formatted as FAT16. |
/vd/exfat | 0x1000001 | 0x10002 | exfat | vd0: | sdstor0:int-lp-ign-vshdata | 0x400 | Formatted as FAT16. |
/tm/exfat | 0x1000001 | 0x10002 | exfat | tm0: | sdstor0:int-lp-ign-vtrm | 0x500 | Formatted as FAT16. |
/ur/exfat | 0x1000001 | 0x50002 | exfat | ur0: | sdstor0:int-lp-ign-user | 0x600 | Formatted as exFAT. |
/ud/exfat | 0x1000001 | 0x10002 | exfat | ud0: | sdstor0:int-lp-ign-updater | 0x700 | Formatted as FAT16. |
/ux/exfat | 0x2020001 | 0x30002 | exfat | ux0: | External: sdstor0:xmc-lp-ign-userext Internal: sdstor0:int-lp-ign-userext |
0x800 | Formatted as exFAT. |
/gro/exfat | 0x2010001 | 0x21002 | exfat | gro0: | sdstor0:gcd-lp-ign-gamero | 0x900 | Formatted as exFAT. |
/grw/exfat | 0x2010001 | 0x20002 | exfat | grw0: | sdstor0:gcd-lp-ign-gamerw | 0xA00 | Formatted as exFAT. |
/sa/exfat | 0x1000001 | 0x1002 | exfat | sa0: | sdstor0:int-lp-ign-sysdata | 0xB00 | Formatted as FAT16. |
/pd/exfat | 0x1000001 | 0x1002 | exfat | pd0: | sdstor0:int-lp-ign-pidata | 0xC00 | Formatted as exFAT. |
/imc/exfat | 0x2020001 | 0x30002 | exfat | imc0: | sdstor0:int-lp-ign-userext | 0xD00 | Formatted as exFAT. |
/xmc/exfat | 0x2020001 | 0x30002 | exfat | xmc0: | sdstor0:xmc-lp-ign-userext | 0xE00 | Formatted as exFAT. |
/uma/exfat | 0x2030001 | 0x2 | exfat | uma0: | sdstor0:uma-lp-act-entire | 0xF00 | - |
/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 | - |
/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 | - |
/host | 0x3000004 | 0x8006 | - | host0: | deci4p_drfp_dev_fs | - | - |
Dev Minor
Mask | Value | Comment |
---|---|---|
0xFF | - | type |
0xFF00 | - | flags |
0xFF00 | 0x1000 | Read Only |
0xFF0000 | 0x10000 | Invalidate fd on susppend/resume within process/system |
0xFF0000 | 0x20000 | External media |
VFS Implementation
Information can be found on separate page VFS Implementation
Note
Max vfs node number is 0x1000.
Types
typedef 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* node_info_2C; // can be zero vfs_node_info* node_info_30; // can be zero vfs_node_info* node_info_34; // can be zero } vfs_node_info; // It looks like this structure is used to get some response into "error" field // when executing sceKernelSignalCondTo calls. // This structure is used by SceIofileDaemon when it monitors mount/unmount async requests // in SceIofilemgrMount thread using SceIofilemgrMount conditional variable. // Upon completion it issues the signal and result of operation is stored in error field. // It looks like operations 1/2 are used for normal filesystems. // Operations 3/4 are used for PFS_GDSD_INF filesystem. typedef struct cond_ctx { uint32_t op_index; // operation index. 1,3 - mount. 2,4 - unmount uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint32_t unk_10; uint32_t unk_14; uint32_t unk_18; uint32_t unk_1C; int error; // either error code or 0 cond_ctx* next; // 0 means end of list } cond_ctx; typedef struct ctx_19D4 { void* unk_0; uint32_t unk_4; vfs_node* offset; // Pool of vfs_nodes with 0x1000 elements. // It is used in sceVfsGetNewVnodeForDriver, mount/unmount and node find routines. uint32_t size; uint32_t count; uint32_t unk_14; uint32_t unk_18; uint32_t unk_1C; } ctx_19D4; typedef struct ctx_11C { //size is 0x220 void* unk_0; uint32_t unk_4; void* offset; // pointer to array of byte size 0x10000 with 0x40 elements of size 0x400 uint32_t size; uint32_t count; uint8_t data[0x20C]; } ctx_11C; typedef struct io_scheduler_dispatcher { //size is 0xB8 char unk_0[0x50]; io_scheduler* unk_50; // Internal storage io_scheduler* unk_54; // Gamecard io_scheduler* unk_58; // Removable media (memory card) io_scheduler* unk_5C; // Host File System (host0:) io_scheduler* unk_60; // Default uint32_t unk_64; // pointer to unknown module data section uint32_t unk_68; // SceIoSchedulerDispatcher fast mutex uint32_t unk_6C; char unk_70[0x30]; uint32_t unk_A0; uint32_t unk_A4; SceUID unk_A8; // SceIoSchedulerDispatcher event flag uid uint32_t unk_AC; // counter uint32_t unk_B0; // flag uint32_t unk_B4; // 0 } io_scheduler_dispatcher; typedef struct io_scheduler_item { // size is 0x14 - allocated from SceIoScheduler heap io_scheduler* unk_0; // parent uint32_t unk_4; // 0 uint32_t unk_8; // 0 uint32_t unk_C; // 0 uint32_t unk_10; // pointer to unknown module data section } io_scheduler_item; enum io_device_code { Internal = 0x100, Game_Card = 0x201, Removable = 0x202, Host_File_System = 0x300, Default = 0x0 }; typedef struct io_scheduler { //size is 0xA8 - allocated from SceIoScheduler heap io_device_code unk_0; io_scheduler_item* unk_4; // item 0 io_scheduler_item* unk_8; // item 1 io_scheduler_item* unk_C; // item 2 io_scheduler_item* unk_10; // item 3 io_scheduler_item* unk_14; // item 4 io_scheduler_item* unk_18; // item 5 io_scheduler_item* unk_1C; // item 6 io_scheduler_item* unk_20; // item 7 io_scheduler_item* unk_24; // item 8 io_scheduler_item* unk_28; // item 9 io_scheduler_item* unk_2C; // item 10 io_scheduler_item* unk_30; // item 11 io_scheduler_item* unk_34; // item 12 io_scheduler_item* unk_38; // item 13 io_scheduler_item* unk_3C; // item 14 io_scheduler_item* unk_40; // item 15 uint32_t unk_44; // flag1 0x40000 or 0x00 uint32_t unk_48; // flag2 0x40000 or 0x00 io_scheduler_dispatcher* unk_4C; // parent SceUID unk_50; // SceIoScheduler mutex SceUID unk_54; // SceIoScheduler cond char unk_58; // 0 char unk_59; // 0 char unk_5A; // 0 char unk_5B; // 0 uint32_t unk_5C; // 0 // this is probably a separate structure SceUID unk_60; // SceIoSchedWorker thread id SceUID unk_64; // SceIoScheduler mutex from self SceUID unk_68; // SceIoScheduler cond from self io_scheduler* unk_6C; // pointer to self uint32_t unk_70; // 0 uint16_t unk_74; // 0 uint16_t unk_76; // 0 uint32_t unk_78; // 0 uint32_t unk_7C; // 0 uint32_t unk_80; // uint32_t unk_84; // some flag uint32_t unk_88; //0x80 uint32_t unk_8C; //0x80 uint32_t unk_90; //0x80 uint32_t unk_94; //0x80 uint32_t unk_98; //0x80 uint32_t unk_9C; //0x80 uint32_t unk_A0; // 0 uint32_t unk_A4; // 0 } io_scheduler; // Context used for dispatching i/o operations typedef struct io_context { // size is 0xB8 on FW 3.60 uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint16_t unk_10; uint16_t unk_12; uint16_t unk_14; uint16_t unk_16; void *data_0; // 0x18 uint32_t unk_1C; // 0x1C SceSize size_0; // 0x20 uint32_t io_op_index; // 0x24 uint32_t ioctlOutdata0; // 0x28 io_device_code device_code; // 0x2C, ioctlOutdata1 char async; // 0x30 char unk_31; char unk_32; char unk_33; SceUID pid; // 0x34, sceKernelGetProcessIdForDriver SceUID threadId; // 0x38, sceKernelGetThreadIdForDriver SceUID tlsPid; // 0x3C, sceKernelGetProcessIdFromTLSForDriver uint32_t unk_40; // 0x40, SceThreadmgrForDriver_332E127C uint32_t cpuMask; // 0x44, sceKernelGetThreadCpuAffinityMaskForDriver uint32_t threadPriority; // 0x48, sceKernelGetThreadCurrentPriorityForDriver void* list0; // 0x4C, pointer to some linked list with elements of size 0x14 uint32_t listSize; // 0x50, number of items in linst void* list1; // 0x54, pointer to some linked list with elements of size 0x14 uint32_t sizeOfList; // 0x58, size of list in bytes uint16_t state; // 0x5C, bit 16 of state where state = (MRC p15, 0, state, c13, c0, 3) uint16_t unk_5E; // 0x5E uint32_t unk_60; // 0x60 SceUID fd; // 0x64 void *data_1; // 0x68 uint32_t unk_6C; SceSize size_1; // 0x70 uint32_t unk_74; // 0x74 uint32_t unk_78; // 0x78, -1 uint32_t unk_7C; // 0x7C, -1 uint32_t op_result; // 0x80, result of i/o operation uint32_t unk_84; void* unk_88; uint32_t unk_8C; uint32_t unk_90; uint32_t unk_94; uint32_t unk_98; uint32_t unk_9C; uint32_t unk_A0; uint32_t unk_A4; uint32_t unk_A8; uint32_t unk_AC; SceUInt64 sytemTimeWide; // 0xB0, sceKernelGetSystemTimeWideForDriver } io_context; typedef struct _SceVfsFileObject_0995 { //SceVfsFileClass object - size is 0x40 on 0.995 /* SceKernelObject header not included in size nor structure */ SceInt32 unk_0x0; SceInt32 unk_0x4; SceInt64 unk_0x8; SceInt32 unk_0x10; //Set to 1 during sceVfsAllocateFile ScePID creator_pid; //Result of sceKernelGetProcessIdFromTLS() during sceVfsAllocateFile void* unk_0x18; //Pointer provided as a1 to sceVfsAllocateFile SceUIDVfsFileObject* next; //Pointer to next file in linked list - list head is in a1 SceInt32 unk_0x20; SceInt16 unk_0x24; char unk_0x26; //unused? SceInt8 unk_0x27; SceInt32 unk_0x28; //comes from a1->0x4C->0xC8 SceInt32 unk_0x2C; //((a1->0x4C->0x50 & 0x20000) << 1) | (a1->0x4C->0x50 & 0x10000) SceInt32 unk_0x30; char unk_0x34; //unused? SceInt8 unk_0x35; SceInt8 unk_0x36; SceInt8 unk_0x37; SceInt8 unk_0x38; SceInt8 unk_0x39; SceInt8 unk_0x3A; SceInt8 unk_0x3B; SceInt8 unk_0x3C; SceInt8 unk_0x3D; SceInt8 unk_0x3E; SceInt8 unk_0x3F; } SceUIDVfsFileObject_0995; typedef struct _SceUIDVfsFileObject { //SceUIDVfsFileClass object - size is 0x48 on 3.60 /* SceKernelObject header not included in size nor structure */ SceInt32 unk_0x0; SceInt32 unk_0x4; SceInt64 unk_0x8; SceInt32 unk_0x10; //Set to 1 during sceVfsAllocateFile ScePID creator_pid; //Result of sceKernelGetProcessIdFromTLS() during sceVfsAllocateFile void* unk_0x18; //Pointer provided as a1 to sceVfsAllocateFile SceUIDVfsFileObject* next; //Pointer to next file in linked list - list head is in a1 SceInt32 unk_0x20; //Zero'ed in constructor SceInt16 unk_0x24; char unk_0x26; //unused? SceInt8 unk_0x27; SceInt32 unk_0x28; //comes from a1->0x4C->0xC8 SceInt32 unk_0x2C; //((a1->0x4C->0x50 & 0x20000) << 1) | (a1->0x4C->0x50 & 0x10000) SceInt32 unk_0x30; char unk_0x34; //unused? SceInt8 unk_0x35; SceInt8 unk_0x36; SceInt8 unk_0x37; SceInt8 unk_0x38; //Zero'ed during constructor SceInt8 unk_0x39; //^ doing *(SceInt32*)(&file->unk_0x38) = 0; SceInt8 unk_0x3A; //^ SceInt8 unk_0x3B; //^ SceInt8 unk_0x3C; SceInt8 unk_0x3D; SceInt8 unk_0x3E; SceInt8 unk_0x3F; char unk_0x40[8]; //unknown type - haven't seen this used yet } SceUIDVfsFileObject; typedef struct SceVfsPath { //size is 0xC-bytes char *name; // could be `const char *`? SceSize name_len; char *path; // could be `const char *`? } SceVfsPath;
Data segment layout
Address | Size | Description |
---|---|---|
0x0000 | 0x4 | unknown |
0x0004 | 0x8 | some index returned from initialization function 0xb645c7ef in SceThreadmgrForDriver |
0x0008 | 0x4 | unknown |
0x000C | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x00010 | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x00014 | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x00018 | 0x4 | flag that enables usage of sceFiosKernel functions (like OverlayResolveSync) in i/o operations in transition from user to kernel |
0x0001C | 0x4 | unknown |
0x0020 | 0x4 | SceIofileDevWaitForVC event flag SceUID
|
0x0024 | 0x4 | unknown |
0x0028 | 0x4 | SceIofileDevWaitForSD event flag SceUID
|
0x002C | 0x4 | pointed by vfs_mount_cc for SceIofileDevWaitForSD
|
0x0030 | 0x4 | SceIofileDevWaitForMC event flag SceUID
|
0x0034 | 0x4 | unknown |
0x0038 | 0x4 | pointed by vfs_mount_cc for SceIofileDevWaitForVC
|
0x003C | 0x4 | pointed by vfs_mount_cc for SceIofileDevWaitForMC
|
0x0040 | 0x10 | unknown |
0x0050 | 0x4 | address of some callback function called in all vfs operations |
0x0054 | 0x4 | SceIofile heap SceUID
|
0x0058 | 0x80 | unknown |
0x00D8 | 0x4 | SceIoVfsHeap heap SceUID
|
0x00DC | 0x4 | SceIoFileDebug memblock SceUID
|
0x00E0 | 0x3C | unknown |
0x011C | 0x4 | ctx_11C* pointer to structure |
0x0120 | 0x4C | unknown |
0x016C | 0x10 | char* static_buffers[4] - static buffers used instead of SceIoVfsHeap |
0x017C | 0x2C | SceClass for SceVfsFile
|
0x01A8 | 0x1500 | array of 96 elements of vfs_node_info |
0x16A8 | 0x4 | SceVfsRfsLock fast mutex
|
0x16AC | 0x3C | unknown |
0x16E8 | 0x2C | SceClass for SceIoMountEvent
|
0x1714 | 0xC | unknown |
0x1720 | 0x04 | cond_ctx* pointer to the linked list |
0x1724 | 0x4 | SceIoScheduler heap SceUID
|
0x1728 | 0xB8 | io_scheduler_dispatcher structure
|
0x17E0 | 0x2C | SceClass for SceIoAsyncEvent - used in all async i/o operations
|
0x180C | 0xC | unknown |
0x1818 | 0x2C | SceClass for SceIoErrorEvent
|
0x1844 | 0xC | unknown |
0x1850 | 0x4 | SceIofileDaemonLock fast mutex
|
0x1854 | 0x40 | unknown |
0x1894 | 0x4 | SceIofile fast mutex
|
0x1898 | 0x7C | unknown |
0x1914 | 0x4 | function pointer t_1914_callback |
0x1918 | 0x4 | SceIofileFlock fast mutex
|
0x191C | 0x44 | unknown |
0x1960 | 0x4 | some i/o flag |
0x1964 | 0x4 | flag that indicates that any i/o operation happened 1/0. changed by each i/o operation. cleared on suspend. |
0x1968 | 0x18 | unknown |
0x1980 | 0x4 | counter of not finished i/o operations. changed by each i/o operation. |
0x1984 | 0xC | unknown |
0x1990 | 0x4 | SceVfsMntlistLock fast mutex
|
0x1994 | 0x3C | unknown |
0x19D0 | 0x4 | vfs_mount* singly linked list |
0x19D4 | 0x1C | structure ctx_19D4 |
0x19F0 | 0x8 | unknown |
0x19F8 | 0x4 | address used for sceKernelCpuLockSuspendIntrStoreLRForDriver to lock 016C |
0x19FC | 0x4 | vfs_mount* pointer |
0x1A00 | 0x4 | SceVfsNcacheLock fast mutex
|
0x1A04 | 0x40 | unknown |
0x1A44 | 0x4 | address used for sceKernelCpuLockSuspendIntrStoreLRForDriver |
0x1A48 | 0x4 | unknown |
0x1A4C | 0x4 | SceVfsLock fast mutex
|
0x1A50 | 0x3C | unknown |
0x1A8C | 0x04 | SceIofilemgrMount thread SceUID
|
0x1A90 | 0x700 | array of 32 elements of vfs_mount_point_info |
0x2190 | 0x4 | SceIofilemgrMount cond SceUID
|
0x2194 | 0x4 | SceIofilemgrMount SceUID mutexid
|
0x2198 | 0x4 | flag that indicates that IoSchedulerDispatcher functionality is initialized 1/0 |
0x219C | 0x4 | unknown |
0x21A0 | 0x40 | unknown |
0x21E0 | 0x20 | unknown |
0x2200 | 0x04 | SceIofilemgrDaemon thread SceUID
|
0x2204 | 0x8 | unknown |
0x220C | 0x4 | SceIofilemgrDaemon event flag SceUID
|
0x2210 | 0x4 | void* to heap alloc of size 0x100 |
0x2214 | 0x4 | void* to heap alloc of size 0x100 |
0x2218 | 0x4 | = 3 |
0x221C | 0x20 | vfs_add_data dummy_ttyp_dev_fs node
|
SceIofilemgrForDriver
sceVfsOpDevctlForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB07B307D |
sceVfsOpDecodePathElemForDriver
Version | NID |
---|---|
0.990-3.60 | 0xF7DAC0F5 |
typedef struct SceVfsPathElem { // size is 0x1C-bytes void *mnt; const char *path; void *data_0x08; void *data_0x0C; void *data_0x10; int data_0x14; void *data_0x18; } SceVfsPathElem;
sceVopOpenForDriver
Version | NID |
---|---|
0.990-3.60 | 0x76B79BEC |
sceVopCreateForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9E347C7D |
sceVopCloseForDriver
Version | NID |
---|---|
0.990-3.60 | 0x40944C2E |
In logs it is sceVopClsoe.
sceVopLookupForDriver
Version | NID |
---|---|
0.931-3.60 | 0xA5A6A55C |
Temp name was sceVfsNodeInitializePartitionForDriver.
int sceVopLookupForDriver(SceVfsNode *pNode, SceVfsNode **ppNewNode, SceVfsPath *path_info, SceUInt32 flags);
sceVopReadForDriver
Version | NID |
---|---|
0.990-3.60 | 0x570388A5 |
sceVopWriteForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9A68378D |
sceVopLseekForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB2B13818 |
sceVopIoctlForDriver
Version | NID |
---|---|
0.990-3.60 | 0x333C904D |
sceVopRemoveForDriver
Version | NID |
---|---|
3.60 | 0xDC1E7EE4 |
sceVopMkdirForDriver
Version | NID |
---|---|
0.990-3.60 | 0x2F3F8C70 |
sceVopRmdirForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1D551105 |
sceVopDopenForDriver
Version | NID |
---|---|
0.990-3.60 | 0x00C9C2DD |
sceVopDcloseForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1350F5C7 |
sceVopDreadForDriver
Version | NID |
---|---|
0.990-3.60 | 0x77584C8F |
sceVopGetstatForDriver
Version | NID |
---|---|
0.990-3.60 | 0x50A63ACF |
sceVopChstatForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1974FA92 |
sceVopRenameForDriver
Version | NID |
---|---|
0.990-3.60 | 0x36A794C7 |
sceVopPreadForDriver
Version | NID |
---|---|
0.990-3.60 | 0xABBC80E3 |
sceVopPwriteForDriver
Version | NID |
---|---|
0.990-3.60 | 0xA53C040D |
sceVopInactiveForDriver
Version | NID |
---|---|
0.990-3.60 | 0x8FB94521 |
sceVopLinkForDriver
Version | NID |
---|---|
3.60 | 0x942AA61F |
Temp name was sceVop_unk_offset_0x54_ForDriver.
sceVopUnlinkForDriver
Version | NID |
---|---|
3.60 | 0x0D8A806E |
Temp name was sceVop_unk_offset_0x58_ForDriver.
sceVopSyncForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9CD96406 |
sceVopFgetstatForDriver
Version | NID |
---|---|
3.60 | 0x1DBCBB01 |
Temp name was sceVopGetStateByFdForDriver.
int sceVopFgetstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pVfsFileObject, SceIoStat *stat);
sceVopFchstatForDriver
Version | NID |
---|---|
3.60 | 0x082AFD7F |
Temp name was sceVopChstatByFdForDriver.
int sceVopFchstatForDriver(SceVfsNode *pNode, SceVfsFileObject *pObject, SceIoStat *stat, int bit);
sceVopWhiteoutForDriver
Version | NID |
---|---|
0.996-3.60 | 0xF53399BC |
Temp name was sceVopTrashForDriver.
Move target node entry file/directory to xx0:/SceIoTrash/
.
sceVopCleanupForDriver
Version | NID |
---|---|
3.60 | 0x0F7E1718 |
Temp name was sceVop_unk_offset_0x6C_ForDriver.
sceVopZerofillForDriver
Version | NID |
---|---|
0.996-3.60 | 0xEEAE8B51 |
Temp name was sceVop_unk_offset_0x70_ForDriver.
create_SceUIDVfsFileClass
Version | NID |
---|---|
3.60 | 0xCDF3EF52 |
creates instance of SceUIDVfsFileClass using sceKernelCreateUidObjForKernel
SceUID create_SceUIDVfsFileClass(int unk0, int unk1, const char *unk2);
vfsIsLockedMntForDriver
Version | NID |
---|---|
3.60 | 0xC468B5EF |
some thread op
vfsBuffCacheCtlForDriver
Version | NID |
---|---|
3.60 | 0xA7020B0D |
big function
int vfsBuffCacheCtlForDriver(SceVfsNode *vp, int a2, int a3, int a4, int cache_size);
vfsBuffCacheFreeForDriver
Version | NID |
---|---|
3.60 | 0xD6AB5E4B |
some node op
sceVfsLockVnodeForDriver
Version | NID |
---|---|
0.995-3.60 | 0xAA45010B |
Temp name was sceVfsNodeWaitEventFlagForDriver.
calls sceKernelWaitEventFlagForDriver
using event_flag_SceVfsVnode
from vfs_node
int sceVfsLockVnodeForDriver(vfs_node* node);
sceVfsUnlockVnodeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x6048F245 |
Temp name was sceVfsNodeSetEventFlagForDriver.
calls sceKernelSetEventFlagForDriver
using event_flag_SceVfsVnode
from vfs_node
int sceVfsUnlockVnodeForDriver(vfs_node* node);
sceVfsUnmountForDriver
Version | NID |
---|---|
1.69-3.60 | 0x9C7E7B76 |
int sceVfsUnmountForDriver(vfs_unmount_data *data);
sceVfsDeleteVfsForDriver
Version | NID |
---|---|
1.69-3.60 | 0x9CBFA725 |
int sceVfsDeleteVfsForDriver(const char *name, void **deleted_node);
sceVfsAddVfsForDriver
Version | NID |
---|---|
0.990-3.60 | 0x673D2FCD |
Used by SceSdstor, SceTty2uart, SceKernelBlueScreenOfDeath.
int sceVfsAddVfsForDriver(vfs_add_data *data);
sceVfsMountForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB62DE9A6 |
int sceVfsMountForDriver(vfs_mount_point_info_base *mnt);
sceVfsLockMntForDriver
Version | NID |
---|---|
3.60 | 0x6B3CA9F7 |
sceVfsUnlockMntForDriver
Version | NID |
---|---|
3.60 | 0xDC2D8BCE |
sceVfsGetNewVnodeForDriver
Version | NID |
---|---|
0.990-3.60 | 0xD60B5C63 |
int sceVfsGetNewVnodeForDriver(vfs_mount *mnt, node_ops2 *ops, int unused, vfs_node **node);
sceVfsGetVnodeNameForDriver
Version | NID |
---|---|
0.990-3.60 | 0xAA253B68 |
int sceVfsGetVnodeNameForDriver(SceVfsNode *vp, char *name, SceSize n, SceSize *result);
sceVfsFreeVnodeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x21D57633 |
sceVfsAllocateFileForDriver
Version | NID |
---|---|
0.995-3.60 | 0xBBAC1751 |
Creates a SceUIDVfsFileClass
object and returns UID and pointer to created object.
// type of a1 is unknown for now - at least 0x98 bytes wide // FW 0.995 SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile); // FW 3.60 // If name is NULL, default name (same as 0.995, "SceVfsFile") is used as object name // Else, name will be created with snprintf("file %s %s", something_from_a1, name); SceUID sceVfsAllocateFileForDriver(void* a1, SceUIDVfsFileObject** ppFile, char* name);
sceVfsFreeFileForDriver
Version | NID |
---|---|
0.990-3.60 | 0xC85E33A2 |
Frees a file created with sceVfsAllocateFileForDriver.
//Pass same a1 as call to AllocateFile SceInt32 sceVfsFreeFileForDriver(void* a1, SceUID file_uid);
sceVfsRmdevForDriver
Version | NID |
---|---|
3.60 | 0x69A7E076 |
sceVfsOpenForDriver
Version | NID |
---|---|
3.60 | 0x0E518FA9 |
Temp name was t_sceIoOpenForDriver.
thread callback for sceIoOpenForDriver
typedef struct SceVfsOpenArgs { const char *filename; int flag; SceIoMode mode; } SceVfsOpenArgs; SceUID sceVfsOpenForDriver(SceVfsOpenArgs *argp);
sceVfsCloseForDriver
Version | NID |
---|---|
3.60 | 0x1AE14011 |
Temp name was t_sceIoCloseForDriver.
thread callback for sceIoCloseForDriver
typedef struct SceVfsCloseArgs{ SceUID fd; } SceVfsCloseArgs; int sceVfsCloseForDriver(SceVfsCloseArgs *argp);
sceVfsReadForDriver
Version | NID |
---|---|
3.60 | 0x809892C1 |
Temp name was t_sceIoReadForDriver.
thread callback for sceIoReadForDriver
typedef struct SceVfsReadArgs { SceUID fd; void *data; SceSize size; } SceVfsReadArgs; int sceVfsReadForDriver(SceVfsReadArgs *argp);
sceVfsWriteForDriver
Version | NID |
---|---|
3.60 | 0x8598ADC3 |
Temp name was t_sceIoWriteForDriver.
thread callback for sceIoWriteForDriver
typedef struct SceVfsWriteArgs { SceUID fd; const void *data; SceSize size; } SceVfsWriteArgs; int sceVfsWriteForDriver(SceVfsWriteArgs *argp);
sceVfsIoctlForDriver
Version | NID |
---|---|
3.60 | 0xC1DD4317 |
Temp name was t_sceIoIoctlForDriver.
thread callback for sceIoIoctlForDriver
typedef struct SceVfsIoctlArgs { SceUID fd; unsigned int cmd; void *indata; int inlen; void *outdata; int outlen; } SceVfsIoctlArgs; int sceVfsIoctlForDriver(SceVfsIoctlArgs *argp);
sceVfsChstatForDriver
Version | NID |
---|---|
3.60 | 0xBCE4865B |
Temp name was t_sceIoChstatForDriver.
thread callback for sceIoChstatForDriver
typedef struct SceVfsChstatArgs { const char *path; const SceIoStat *stat; unsigned int cbit; uint32_t store_attr; } SceVfsChstatArgs; int sceVfsChstatForDriver(SceVfsChstatArgs *argp);
sceVfsChstatByFdForDriver
Version | NID |
---|---|
3.60 | 0x7517FE29 |
Temp name was t_sceIoChstatByFdForDriver.
thread callback for sceIoChstatByFdForDriver
typedef struct SceVfsChstatByFdArgs { SceUID fd; const SceIoStat *buf, unsigned int cbit; } SceVfsChstatByFdArgs; int sceVfsChstatByFdForDriver(SceVfsChstatByFdArgs *args);
sceVfsPreadForDriver
Version | NID |
---|---|
3.60 | 0x0B54F9E0 |
Temp name was t_sceIoPreadForDriver.
thread callback for sceIoPreadForDriver
typedef struct SceVfsPreadArgs { SceUID uid; void *data; SceSize size; int paddind; // unused SceOff offset; } SceVfsPreadArgs; int sceVfsPreadForDriver(SceVfsPreadArgs *argp);
sceVfsPwriteForDriver
Version | NID |
---|---|
3.60 | 0xE5DEA6B7 |
Temp name was t_sceIoPwriteForDriver.
thread callback for sceIoPwriteForDriver
typedef struct SceVfsPwriteArgs { SceUID uid; const void *data; SceSize size; int padding; SceOff offset; } SceVfsPwriteArgs; int sceVfsPwriteForDriver(SceVfsPwriteArgs *argp);
sceIoMountForDriver
Version | NID |
---|---|
3.60 | 0xD070BC48 |
operation index 1 in cond_ctx
// intermediate function between sceAppMgrGameDataMountForDriver and sceVfsMountForDriver int sceIoMountForDriver(int vshMountId, const char *path, int permission, int unk3, int arg_0, int arg_4);
sceIoUmountForDriver
Version | NID |
---|---|
3.60 | 0x20574100 |
operation index 2 in cond_ctx
// intermediate function between sceAppMgrUmountForDriver and sceVfsUnmountForDriver int sceIoUmountForDriver(int vshMountId, int unk1, int unk2, int unk3);
scePfsMgrVfsMountForDriver
Version | NID |
---|---|
3.60 | 0xFEEE44A9 |
operation index 3 in cond_ctx
// this function can be used with PFS_GDSD_INF filesystem int scePfsMgrVfsMountForDriver(vfs_mount_point_info_base *mnt, int unk1, int unk2);
scePfsMgrVfsUmountForDriver
Version | NID |
---|---|
3.60 | 0xD220539D |
operation index 4 in cond_ctx
int scePfsMgrVfsUmountForDriver(vfs_unmount_data* umnt, int unk1, int unk2);
sceIoRmdevForDriver
Version | NID |
---|---|
0.990-3.60 | 0xA39A9CA7 |
Like sceIoRemove?
The difference with sceIoRemove is that sceIoRmdev seems to remove the entry to be deleted directly without moving it to SceIoTrash.
int sceIoRmdevForDriver(const char *path, int flags, int a3, int a4);
sceIoDelDrvForDriver
Version | NID |
---|---|
0.931 | 0xD51774E3 |
3.60 | not present |
Example: "tty"
int sceIoDelDrvForDriver(const char *drv);
sceIoAddDrvForDriver
Version | NID |
---|---|
0.931 | 0x1D8AC9A7 |
3.60 | not present |
int sceIoAddDrvForDriver(const char **drv);
sceIoDreadForDriver
Version | NID |
---|---|
1.69-3.60 | 0x20CF5FC7 |
Call interface is same as sceIoDread
.
int sceIoDreadForDriver(SceUID fd, SceIoDirent *dir);
sceIoDreadForVshbridgeForDriver
Version | NID |
---|---|
0.995-3.60 | 0x03051B02 |
Temp name was sceIoDreadForDriver_2. Derived from _vshIoDread.
Implementation is completely the same as sceIoDreadForDriver. The only difference is that st_attr in SceIoStat is not set.
int sceIoDreadForVshbridgeForDriver(SceUID fd, SceIoDirent *dir);
sceIoWriteForDriver
Version | NID |
---|---|
1.69-3.60 | 0x21EE91F0 |
Call interface is same as sceIoWrite
int sceIoWriteForDriver(SceUID fd, const void *data, SceSize size);
sceIoDopenForDriver
Version | NID |
---|---|
1.69-3.60 | 0x463B25CC |
Call interface is same as sceIoDopen
SceUID sceIoDopenForDriver(const char *dirname);
sceIoLseekForDriver
Version | NID |
---|---|
0.931-3.60 | 0x62090481 |
Call interface is same as sceIoLseek
SceOff sceIoLseekForDriver(SceUID fd, SceOff offset, int whence);
sceIoOpenForDriver
Version | NID |
---|---|
0.931-3.60 | 0x75192972 |
Call interface is same as sceIoOpen.
If the process is game or non-game, the `SCE_O_NOBUF` flag will be ignored.
SceUID sceIoOpenForDriver(const char *filename, int flag, SceIoMode mode);
sceIoOpenForPidForDriver
Version | NID |
---|---|
3.60 | 0xC3D34965 |
This is a wrapper for sceIoOpenForDriver.
Pid is used for sceFiosKernelOverlayResolveSyncForDriver
.
SceUID sceIoOpenForPidForDriver(SceUID pid, const char *filename, int flag, SceIoMode mode);
sceIoChstatForDriver
Version | NID |
---|---|
1.69-3.60 | 0x7D42B8DC |
Call interface is same as sceIoChstat
int sceIoChstatForDriver(const char *name, const SceIoStat *buf, unsigned int cbit);
sceIoChstatForVshbridgeForDriver
Version | NID |
---|---|
0.995-3.60 | 0x1F98BD50 |
Temp name was sceIoChstatForDriver_2. Derived from _vshIoChstat.
Implementation is completely the same as sceIoChstatForDriver
. The only difference is that (bits = bits & (~0x10000)) operation is not applied.
int sceIoChstatForVshbridgeForDriver(const char *name, const SceIoStat *buf, unsigned int cbit);
sceIoGetstatForDriver
Version | NID |
---|---|
1.69-3.60 | 0x75C96D25 |
Call interface is same as sceIoGetstat
.
int sceIoGetstatForDriver(const char *name, SceIoStat *buf);
sceIoGetstatForVshbridgeForDriver
Version | NID |
---|---|
0.995-3.60 | 0xD6503624 |
Temp name was sceIoGetstatForDriver_2. Derived from _vshIoGetstat.
Implementation is completely the same as sceIoGetstatForDriver. The only difference is that st_attr in SceIoStat *buf is not set.
int sceIoGetstatForVshbridgeForDriver(const char *name, SceIoStat *buf);
sceIoMkdirForDriver
Version | NID |
---|---|
1.69-3.60 | 0x7F710B25 |
Call interface is same as sceIoMkdir
int sceIoMkdirForDriver(const char *dirname, SceIoMode mode);
sceIoReadForDriver
Version | NID |
---|---|
1.69-3.60 | 0xE17EFC03 |
Call interface is same as sceIoRead
int sceIoReadForDriver(SceUID fd, void *buf, SceSize nbyte);
sceIoCloseForDriver
Version | NID |
---|---|
1.69-3.60 | 0xF99DD8A3 |
Call interface is same as sceIoClose
int sceIoCloseForDriver(SceUID fd);
sceIoRenameForDriver
Version | NID |
---|---|
1.69-3.60 | 0xDC0C4997 |
Call interface is same as sceIoRename
int sceIoRenameForDriver(const char *oldname, const char *newname);
sceIoRemoveForDriver
Version | NID |
---|---|
1.69-3.60 | 0x0D7BB3E1 |
Call interface is same as sceIoRemove
int sceIoRemoveForDriver(const char *filename);
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
int sceIoChstatByFdForDriver(SceUID fd, const SceIoStat *buf, unsigned int cbit);
sceIoCloseAsyncForDriver
Version | NID |
---|---|
3.60 | 0x11C57CC6 |
Derived from sceIoCloseAsync
sceIoDevctlAsyncForDriver
Version | NID |
---|---|
3.60 | 0xA9302946 |
Derived from _sceIoDevctlAsync
sceIoDevctlForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x16882FC4 |
Derived from _sceIoDevctl.
This performs device-specific operations. The details of the operations are driver-dependent.
It has the same prototype as SceLibKernel#sceIoDevctl.
/* Arguments: devname Specified device ("<devname><unit>:") cmd Command code arg Pointer to device-driver-dependent parameter block arglen Number of bytes in device-driver-dependent parameter block bufp Pointer to return data storage block buflen Size of return data storage block Return Values: Non-negative (N>=0) Success (driver-dependent) <0 Error, e.g. SCE_ERROR_ERRNO_EMFILE, SCE_ERROR_ERRNO_ENODEV, SCE_ERROR_ERRNO_EUNSUP */ int sceIoDevctlForDriver( const char *devname, int cmd, const void *arg, SceSize arglen, void *bufp, SceSize buflen );
sceIoDcloseForDriver
Version | NID |
---|---|
3.60 | 0x19C81DD6 |
Derived from sceIoDclose
int sceIoDcloseForDriver(SceUID fd);
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
// Return: 0 on success int sceIoGetstatByFdForDriver(SceUID fd, SceIoStat *buf);
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
// Return: >=0 on success (driver-dependent) int sceIoIoctlForDriver(SceUID fd, int cmd, const void *argp, SceSize arglen, void *bufp, SceSize buflen);
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
// Return: Number of bytes actually read int sceIoPreadForDriver(SceUID uid, void *data, int size, SceOff offset);
sceIoPwriteAsyncForDriver
Version | NID |
---|---|
3.60 | 0x202CDDE3 |
Derived from _sceIoPwriteAsync
sceIoPwriteForDriver
Version | NID |
---|---|
3.60 | 0x5F1512C8 |
Derived from _sceIoPwrite
// Return: Number of bytes actually written int sceIoPwriteForDriver(SceUID fd, const void *buf, SceSize nbyte, SceOff offset);
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
int sceIoRmdirForDriver(const char *dirname);
sceIoSyncByFdAsyncForDriver
Version | NID |
---|---|
3.60 | 0x041209CF |
Derived from sceIoSyncByFdAsync
not_sceIoSyncByFd_maybe_SyncByFd2ForDriver
Version | NID |
---|---|
3.60 | 0x43170575 |
This function is not sceIoSyncByFdForDriver.
Derived from sceIoSyncByFd
int not_sceIoSyncByFd_maybe_SyncByFd2ForDriver(SceUID fd, int flag);
sceIoSyncAsyncForDriver
Version | NID |
---|---|
3.60 | 0x4F9EA8B0 |
Derived from _sceIoSyncAsync
sceIoSyncForDriver
Version | NID |
---|---|
3.60 | 0xDDF78594 |
Derived from _sceIoSync
int sceIoSyncForDriver(const char *device, unsigned int flag);
sceIoWriteAsyncForDriver
Version | NID |
---|---|
3.60 | 0xA1BD13D0 |
Derived from sceIoWriteAsync
sceIoGetProcessDefaultPriorityForSystemForDriver
Version | NID |
---|---|
0.990-3.60 | 0xCE397158 |
sceIoSetProcessDefaultPriorityForSystemForDriver
Version | NID |
---|---|
0.990-3.60 | 0xABE65071 |
sceIoDopenAsyncForDriver
Version | NID |
---|---|
3.60 | 0x72F06BDE |
sceIoDcloseAsyncForDriver
Version | NID |
---|---|
3.60 | 0xC08F199F |
sceIoDreadAsyncForDriver
Version | NID |
---|---|
3.60 | 0x5982B0E3 |
sceIoCreateMountEventForDriver
Version | NID |
---|---|
3.60 | 0x2DFA192F |
Derived from vshIoCreateMountEvent
int sceIoCreateMountEventForDriver(int vshMountId, int flag);
sceIoCreateErrorEventForDriver
Version | NID |
---|---|
3.60 | 0x3C0343DB |
Derived from vshIoCreateErrorEvent
typedef struct sceIoCreateErrorEventForDriverOpt { uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint32_t unk_10; uint32_t unk_14; uint32_t unk_18; } sceIoCreateErrorEventForDriverOpt; SceUID sceIoCreateErrorEventForDriver(int vshMountId, int flag, sceIoCreateErrorEventForDriverOpt* opt);
sceIoClearErrorEventForDriver
Version | NID |
---|---|
3.60 | 0x40B933C7 |
Derived from vshIoClearErrorEvent
int sceIoClearErrorEventForDriver(SceUID uid);
sceIoDeleteMountEventForDriver
Version | NID |
---|---|
3.60 | 0x43DB0AE4 |
Derived from vshIoDeleteMountEvent
int sceIoDeleteMountEventForDriver(SceUID uid);
sceIoDeleteErrorEventForDriver
Version | NID |
---|---|
3.60 | 0xC6158F8D |
Derived from vshIoDeleteErrorEvent
int sceIoDeleteErrorEventForDriver(SceUID uid);
sceIoSetMountEventForDriver
Version | NID |
---|---|
0.995-3.60 | 0x39ABDB9E |
Temp name was sceIoInvokeMountEventForDriver.
/* * (flags & 0x100) != 0 -> mount * (flags & 0x200) != 0 -> unmount */ int sceIoSetMountEventForDriver(int vshMountId, int flags, int unk2, int unk3);
sceIoUmount2ForDriver
Version | NID |
---|---|
3.60 | 0x5B7E5AB8 |
This is a guessed name.
int sceIoUmount2ForDriver(int vshMountId);
sceIoSetPathMappingFunctionForDriver
Version | NID |
---|---|
3.60 | 0xCFAECF18 |
Used by SceAppMgr.
Sets a callback function that does path mapping:
- function tries to OverlayResolveSync input path
- checks that it is not a PD path (Pseudo Drive mount point aquired by ScePfsMgr)
- takes beginning of path until symbol ":"
- tries to do a lookup by that path copy in data segment global 0x3470C
mount_point_data_entry
item array - if item is found then
path
frommount_point_data_entry
item is copied toresult_path
- in any other case OverlayResolveSync result path is copied to
result_path
typedef int ( SceIoPathMappingFunc)(const char *path, SceUID pid, char *result_path, SceSize size); int sceIoSetPathMappingFunctionForDriver(SceIoPathMappingFunc *func);
sceIoGetMediaTypeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9C220246 |
Was wrongly named sceIoGetPathIdExForDriver.
May also call callback function set by sceIoSetPathMappingFunctionForDriver.
This callback function does path mapping since result in result_path is passed to sceSblACMgrGetMediaTypeForKernel.
int sceIoGetMediaTypeForDriver(SceUID pid, const char *path, int ignored, int *media_type);
sceIoGetThreadDefaultPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0x6D0FEDB6 |
int sceIoGetThreadDefaultPriorityForSystemForDriver(void);
sceIoSetThreadDefaultPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0x3F0FF9D5 |
sceIoGetRemoteKPLSDataForDriver
Version | NID |
---|---|
3.60 | 0x44EDCE57 |
This is a guessed name.
int sceIoGetRemoteKPLSDataForDriver(SceUID pid, void *dst);
sceIoSetProcessFileOpenMaxNumberForDriver
Version | NID |
---|---|
3.60 | 0xAC0E9AAA |
int sceIoSetProcessFileOpenMaxNumberForDriver(SceUID pid, SceSize number);
sceIoSetProcessDirOpenMaxLevelForDriver
Version | NID |
---|---|
3.60 | 0x03F6A684 |
int sceIoSetProcessDirOpenMaxLevelForDriver(SceUID pid, SceSize level);
sceIoCloseInternalForDriver
Version | NID |
---|---|
3.60 | 0x1AE14011 |
typedef struct SceIoCloseArgs { SceUID fd; } SceIoCloseArgs; int sceIoCloseInternalForDriver(SceIoCloseArgs *args);
sceIoPreadInternalForDriver
Version | NID |
---|---|
3.60 | 0x0B54F9E0 |
typedef struct SceIoPreadArgs { SceUID fd; void *data; SceSize size; int dummy; // ?aligment? SceOff offset; } SceIoPreadArgs; int sceIoPreadInternalForDriver(SceIoPreadArgs *args);
sceIoCompleteForDriver
Version | NID |
---|---|
3.60 | 0x8F0DE34D |
int sceIoCompleteForDriver(SceUID fd);
sceIoGetPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0x9FCDCE62 |
int sceIoGetPriorityForSystemForDriver(SceUID a1);
sceIoSetPriorityForSystemForDriver
Version | NID |
---|---|
3.60 | 0xCCE94599 |
int sceIoSetPriorityForSystemForDriver(SceUID a1, int a2);
sceIoComparisonCurrentThreadIdForDriver
Version | NID |
---|---|
3.60 | 0xC3AE93A2 |
int sceIoComparisonCurrentThreadIdForDriver(void *ctx);
sceIoSetErrorEventForDriver
Version | NID |
---|---|
0.995-3.60 | 0xDD46CD63 |
Previously (wrongfully) called sceIoGetGUIDErrorEventListForDriver.
sceIoSetDebuggerCallbackForDriver
Version | NID |
---|---|
3.60 | 0xF4F8C59A |
sceIoGetGUIDFdListForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0xdcf75f6d |
sceIoGetPUIDFdListForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0xd493274 |
sceIoGetFileInfoForDriver
Version | NID |
---|---|
3.60 | 0xa1ef2648 |
This is a guessed name.
SceIofilemgrForDriver_12F8D58E
Version | NID |
---|---|
3.60 | 0x12F8D58E |
get some value
SceIofilemgrForDriver_15C17487
Version | NID |
---|---|
0.996.090-3.740.011 | 0x15C17487 |
A possible name is sceIoSchedulerIssueAnotherIoRequestForDriver.
int SceIofilemgrForDriver_15C17487(int io_device_code);
SceIofilemgrForDriver_2EFDFA12
Version | NID |
---|---|
3.60 | 0x2EFDFA12 |
set path by flags?
int SceIofilemgrForDriver_2EFDFA12(SceUID fd, char *path);
SceIofilemgrForDriver_3675ECB9
Version | NID |
---|---|
3.60 | 0x3675ECB9 |
some node op. dec ctr.
SceIofilemgrForDriver_3A79FAC9
Version | NID |
---|---|
3.60 | 0x3A79FAC9 |
delete fd by flags
int SceIofilemgrForDriver_3A79FAC9(SceUID fd);
SceIofilemgrForDriver_6BEEDDB4
Version | NID |
---|---|
3.60 | 0x6BEEDDB4 |
setting some to fd of dir entry
int SceIofilemgrForDriver_6BEEDDB4(SceUID fd, int a2);
SceIofilemgrForDriver_B499287E
Version | NID |
---|---|
3.60 | 0xB499287E |
delete some puid from a1
int SceIofilemgrForDriver_B499287E(void *a1, int n, int *num);
sceIoGetMountInfoForDriver
Version | NID |
---|---|
3.60 | 0xB987450D |
This is a guessed name.
int sceIoGetMountInfoForDriver(void *mnt, void *info);
sceIoGetMountVectorForDriver
Version | NID |
---|---|
3.60 | 0xC20C621C |
This is a guessed name.
int sceIoGetMountVectorForDriver(void *dst, int n, SceSize *num);
SceIofilemgrForDriver_C722DF35
Version | NID |
---|---|
3.60 | 0xC722DF35 |
some node op. inc ctr.
sceIoSyncByFdForDriver
Version | NID |
---|---|
3.60 | 0x338dcd68 |
SceIofilemgr
_sceIoDcloseAsync
Version | NID |
---|---|
1.69 | 0x00B13031 |
3.60 | different NID or not present |
_sceIoOpenAsync
Version | NID |
---|---|
1.69-3.60 | 0x09CD0FC8 |
sceIoGetProcessDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0x0DC4F1BB |
_sceIoRmdirAsync
Version | NID |
---|---|
1.69-3.60 | 0x13DC3244 |
sceIoSetPriority
Version | NID |
---|---|
1.69-3.60 | 0x14B2D56C |
sceIoSyncByFd
Version | NID |
---|---|
1.69-3.60 | 0x16512F59 |
int sceIoSyncByFd(SceUID fd, unsigned int unk);
_sceIoIoctl
Version | NID |
---|---|
1.69-3.60 | 0x1D2988F1 |
_sceIoLseekAsync
Version | NID |
---|---|
1.69-3.60 | 0x2300858E |
sceIoSetPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0x27373135 |
_sceIoComplete
Version | NID |
---|---|
1.69 | 0x34E6A06E |
3.60 | different NID or not present |
sceIoWrite
Version | NID |
---|---|
1.69-3.60 | 0x34EFD876 |
int sceIoWrite(SceUID fd, const void *data, SceSize size);
_sceIoGetThreadDefaultPriorityForSystem
Version | NID |
---|---|
1.69 | 0x36CAF911 |
3.60 | different NID or not present |
_sceIoSetThreadDefaultPriorityForSystem
Version | NID |
---|---|
0.990-1.69 | 0x38FE853B |
3.60 | different NID or not present |
sceIoFlockForSystem
Version | NID |
---|---|
1.69-3.60 | 0x3E98E422 |
_sceIoDevctlAsync
Version | NID |
---|---|
1.69-3.60 | 0x3EE3F66E |
sceIoDclose
Version | NID |
---|---|
1.69-3.60 | 0x422A221A |
int sceIoDclose(SceUID fd);
_sceIoRename
Version | NID |
---|---|
1.69-3.60 | 0x4912F748 |
typedef struct sceIoRenameOpt { uint32_t unk_0; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; } sceIoRenameOpt; int _sceIoRename(const char *oldname, const char *newname, sceIoRenameOpt *opt);
sceIoLseek32
Version | NID |
---|---|
1.69-3.60 | 0x49252B9B |
int sceIoLseek32(SceUID fd, int offset, int whence);
sceIoSetThreadDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0x49312108 |
_sceIoDevctl
Version | NID |
---|---|
1.000.071-3.740.011 | 0x515AC017 |
This performs device-specific operations. The details of the operations are driver-dependent.
This is a wrapper for sceIoDevctlForDriver.
/* Arguments: devname Specified device ("<devname><unit>:") cmd Command code arg Pointer to device-driver-dependent parameter block arglen Number of bytes in device-driver-dependent parameter block bufp Pointer to return data storage block buflen Size of return data storage block Return Values: Non-negative (N>=0) Success (driver-dependent) <0 Error, e.g. SCE_ERROR_ERRNO_EMFILE, SCE_ERROR_ERRNO_ENODEV, SCE_ERROR_ERRNO_EUNSUP */ typedef struct SceIoDevctlOpt { // size is 0x18 SceSize arglen; // Number of bytes in device-driver-dependent parameter block void *bufp; // Pointer to return data storage block SceSize buflen; // Size of return data storage block char reserved[0xC]; } SceIoDevctlOpt; int _sceIoDevctl( const char *devname, int cmd, const void *arg, const SceIoDevctlOpt *pOpt );
sceIoGetstatByFdAsync
Version | NID |
---|---|
1.69-3.60 | 0x5167AC1E |
_sceIoPread
Version | NID |
---|---|
1.69-3.60 | 0x539FD5C4 |
typedef struct sceIoPreadOpt { SceOff offset; uint32_t unk_8; uint32_t unk_C; } sceIoPreadOpt; int _sceIoPread(SceUID uid, void *buffer, SceSize size, sceIoPreadOpt *opt); // 3.60 typedef struct SceIoPreadSyscallArgs { void *buf; SceSize nbyte; SceOff offset; } SceIoPreadSyscallArgs; SceSSize _sceIoPread(SceUID fd, SceIoPreadSyscallArgs *args);
_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-3.60 | 0x5DD867F7 |
typedef struct sceIoSyncOpt { uint32_t unk_0; uint32_t unk_4; } sceIoSyncOpt; int _sceIoSync(const char* device, unsigned int unk, sceIoSyncOpt* opt);
_sceIoRemoveAsync
Version | NID |
---|---|
1.69-3.60 | 0x5FFA47E2 |
_sceIoDreadAsync
Version | NID |
---|---|
1.69 | 0x64B233B8 |
3.60 | different NID or not present |
_sceIoSetThreadDefaultPriority
Version | NID |
---|---|
0.990-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-3.60 | 0x773EBD45 |
_sceIoRemove
Version | NID |
---|---|
1.69-3.60 | 0x78955C65 |
typedef struct sceIoRemoveOpt { uint32_t unk_0; uint32_t unk_4; } sceIoRemoveOpt; int _sceIoRemove(const char *filename, sceIoRemoveOpt* opt);
sceIoSyncByFdAsync
Version | NID |
---|---|
1.69-3.60 | 0x7E1367CB |
sceIoSetProcessDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0x7F2ABBAF |
_sceIoRenameAsync
Version | NID |
---|---|
1.69-3.60 | 0x81794921 |
_sceIoSyncAsync
Version | NID |
---|---|
1.69-3.60 | 0x86DB0C0E |
_sceIoDread
Version | NID |
---|---|
1.69-3.60 | 0x8713D662 |
int _sceIoDread(SceUID fd, SceIoDirent *dir);
_sceIoWrite
Version | NID |
---|---|
1.69 | 0x8C319CF0 |
3.60 | different NID or not present |
_sceIoGetstat
Version | NID |
---|---|
1.69-3.60 | 0x8E7E11F2 |
typedef struct sceIoGetstatOpt { uint32_t unk_0; uint32_t unk_4; } sceIoGetstatOpt; int _sceIoGetstat(const char *name, SceIoStat *buf, sceIoGetstatOpt *opt);
sceIoCloseAsync
Version | NID |
---|---|
1.69-3.60 | 0x8EA3616A |
_sceIoMkdir
Version | NID |
---|---|
1.69-3.60 | 0x8F1ACC32 |
typedef struct sceIoMkdirOpt { uint32_t unk_0; uint32_t unk_4; } sceIoMkdirOpt; int _sceIoMkdir(const char *dirname, SceIoMode mode, sceIoMkdirOpt opt);
_sceIoCompleteMultiple
Version | NID |
---|---|
1.69-3.60 | 0x9111D004 |
_sceIoLseek32
Version | NID |
---|---|
1.69 | 0x92BDA6DA |
3.60 | different NID or not present |
_sceIoPwrite
Version | NID |
---|---|
1.69-3.60 | 0x9654094B |
typedef struct sceIoPwriteOpt { SceOff offset; uint32_t unk_8; uint32_t unk_C; } sceIoPwriteOpt; int _sceIoPwrite(SceUID uid, const void *data, int size, sceIoPwriteOpt *opt); // 3.60 typedef struct SceIoPwriteSyscallArgs { const void *buf; SceSize nbyte; SceOff offset; } SceIoPwriteSyscallArgs; SceSSize _sceIoPwrite(SceUID fd, SceIoPwriteSyscallArgs *args);
_sceIoGetPriority
Version | NID |
---|---|
1.69 | 0x9E3F880D |
3.60 | different NID or not present |
sceIoGetThreadDefaultPriority
Version | NID |
---|---|
1.69-3.60 | 0xA176CD03 |
_sceIoLseek
Version | NID |
---|---|
1.69-3.60 | 0xA604764A |
typedef struct _sceIoLseekOpt { // size is 0x10 SceOff offset; int whence; uint32_t unk; } _sceIoLseekOpt; SceOff _sceIoLseek(SceUID fd, _sceIoLseekOpt* opt); // 3.60 typedef struct SceIoLseekSyscallArgs { SceOff offset; int whence; int padding; } SceIoLseekSyscallArgs; SceOff _sceIoLseek(SceUID fd, SceIoLseekSyscallArgs *args);
sceIoChstatByFdAsync
Version | NID |
---|---|
1.69-3.60 | 0xA9F89275 |
_sceIoGetProcessDefaultPriority
Version | NID |
---|---|
1.69 | 0xB0486482 |
3.60 | different NID or not present |
_sceIoSetPriority
Version | NID |
---|---|
0.990-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-3.60 | 0xB2D0B2F4 |
_sceIoChstatAsync
Version | NID |
---|---|
1.69-3.60 | 0xB4B021D9 |
sceIoSetThreadDefaultPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0xB9C9C9CF |
_sceIoPreadAsync
Version | NID |
---|---|
1.69-3.60 | 0xBCF5684D |
sceIoDopenAsync
Version | NID |
---|---|
1.69-3.60 | 0xC49C312F |
sceIoClose
Version | NID |
---|---|
1.69-3.60 | 0xC70B8886 |
int sceIoClose(SceUID fd);
_sceIoWriteAsync
Version | NID |
---|---|
1.69 | 0xC92AF88F |
3.60 | different NID or not present |
_sceIoOpen
Version | NID |
---|---|
1.69-3.60 | 0xCC67B6FD |
typedef struct sceIoOpenOpt { uint32_t unk_0; uint32_t unk_4; } sceIoOpenOpt; SceUID _sceIoOpen(const char *filename, int flag, SceIoMode mode, sceIoOpenOpt *opt);
sceIoCancel
Version | NID |
---|---|
1.69-3.60 | 0xCEF48835 |
sceIoComplete
Version | NID |
---|---|
1.69-3.60 | 0xD1C49D2F |
_sceIoChstat
Version | NID |
---|---|
1.69-3.60 | 0xD2EE455F |
typedef struct sceIoChstatOpt { uint32_t unk_0; uint32_t unk_4; } sceIoChstatOpt; int _sceIoChstat(const char *name, const SceIoStat *stat, unsigned int cbit, sceIoChstatOpt *opt);
_sceIoSetProcessDefaultPriority
Version | NID |
---|---|
0.990-1.69 | 0xD302DCB9 |
3.60 | different NID or not present |
_sceIoGetstatAsync
Version | NID |
---|---|
1.69-3.60 | 0xD414C89F |
sceIoDcloseAsync
Version | NID |
---|---|
1.69-3.60 | 0xDC2D7D38 |
_sceIoIoctlAsync
Version | NID |
---|---|
1.69-3.60 | 0xE00DC256 |
_sceIoChstatByFd
Version | NID |
---|---|
1.69-3.60 | 0xE0BE2A30 |
int _sceIoChstatByFd(SceUID fd, const SceIoStat *buf, unsigned int cbit);
sceIoWriteAsync
Version | NID |
---|---|
1.69-3.60 | 0xE0D63D2A |
_sceIoGetstatByFd
Version | NID |
---|---|
1.69-3.60 | 0xE6C53567 |
int _sceIoGetstatByFd(SceUID fd, SceIoStat *stat);
_sceIoSetPriorityForSystem
Version | NID |
---|---|
0.990-1.69 | 0xE6C923B3 |
3.60 | different NID or not present |
_sceIoDopen
Version | NID |
---|---|
1.69-3.60 | 0xE6E614B5 |
typedef struct sceIoDopenOpt { uint32_t unk_0; uint32_t unk_4; } sceIoDopenOpt; SceUID _sceIoDopen(const char *dirname, sceIoDopenOpt *opt);
sceIoGetPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0xEF5432ED |
sceIoGetPriority
Version | NID |
---|---|
1.69-3.60 | 0xF2A472A1 |
_sceIoRead
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
_sceIoSyncByFd
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
_sceIoCloseAsync
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
_sceIoDopenAsync
Version | NID |
---|---|
1.69-3.60 | different NID or not present |
sceIoDreadAsync
Version | NID |
---|---|
1.69-3.60 | 0xF59F37B0 |
_sceIoMkdirAsync
Version | NID |
---|---|
1.69-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 |
---|---|
0.990-1.69 | 0xFAFF0002 |
3.60 | different NID or not present |
sceIoGetThreadDefaultPriorityForSystem
Version | NID |
---|---|
1.69-3.60 | 0xFCBCEAED |
sceIoRead
Version | NID |
---|---|
1.69-3.60 | 0xFDB32293 |
sceIoRead(SceUID fd, void *data, SceSize size);
_sceIoRmdir
Version | NID |
---|---|
1.69-3.60 | 0xFFFB4D76 |
typedef struct sceIoRmdirOpt { uint32_t unk_0; uint32_t unk_4; } sceIoRmdirOpt; int _sceIoRmdir(const char *dirname, sceIoRmdirOpt* opt);