SceAppMgr: Difference between revisions
CelesteBlue (talk | contribs) |
|||
(181 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Module == | == Module == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version | ! Version !! World !! Privilege | ||
|- | |- | ||
| 1.69 | | 1.69-3.60 || Non-secure || Kernel | ||
|} | |} | ||
Line 36: | Line 33: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! ID !! | ! ID !! Description | ||
|- | |- | ||
| -1 || Corresponds to | | -1 || Corresponds to pid 0 | ||
|- | |- | ||
| -2 || Current | | -2 || Current app | ||
|- | |- | ||
| -3 || Unknown | | -3 || Unknown | ||
Line 50: | Line 47: | ||
| -6 || Unknown | | -6 || Unknown | ||
|} | |} | ||
=== App Run status === | |||
<source> | |||
runStatus: | |||
set: status & 0xfffff00f | runStatus_new | |||
get: status & f | |||
running: 2 | |||
suspended: 0x20 | |||
resumed: 0x10 | |||
debuggerRunStatus: | |||
set: status & 0xfff0ffff | debuggerRunStatus_new | |||
get: status & f0000 | |||
activeness: | |||
set: status & 0xfffffff0 | activeness_new | |||
get: status & 0xff0 | |||
anything (0x30, 2) -> 1 | |||
0x10 -> 0x11 | |||
0x200 -> 0 | |||
WaiterExistentFlag: | |||
set: status | 0x1000 | |||
unset: & 0xffff0fff | |||
TABLE: | |||
0 nothing | |||
1 SCE_APP_RUN_FLAG_DEACTIVATE | |||
2 SCE_APP_RUN_FLAG_ACTIVATE | |||
0x10 resumed | |||
0x20 suspended | |||
0x30 SCE_APP_RUN_FLAG_CREATED | |||
0x100 SCE_APP_RUN_FLAG_NOEXIST | |||
0x200 unk (activeness) | |||
0x400 unk (activeness) | |||
0x300 SCE_APP_RUN_FLAG_RESERVED | |||
0x500 unk (activeness) | |||
0x800 unk (runState) | |||
0x1000 WaiterExistentFlag | |||
0x10000 suspend debuggerRunStatus | |||
0x20000 kill debuggerRunStatus | |||
</source> | |||
=== SceAppMgr Mount IDs === | === SceAppMgr Mount IDs === | ||
<source> | |||
sceAppMgrPhotoMount | |||
0x64 | |||
sceAppMgrAppDataMount | |||
0x64 | |||
0x65 | |||
0x66 | |||
0x67 | |||
0x69 | |||
0x6C | |||
0x6D | |||
0x6F | |||
0x70 | |||
sceAppMgrAppDataMountById | |||
0x68 | |||
0x6A | |||
0x6B | |||
0x6E | |||
sceAppMgrAppMount | |||
direct scePfsMount | |||
sceAppMgrPspSaveDataRootMount | |||
0xCA | |||
sceAppMgrWorkDirMount | |||
0xC8 | |||
0xC9 | |||
0xCA | |||
0xCB | |||
0xCC | |||
0xCE | |||
sceAppMgrWorkDirMountById | |||
0xCD | |||
0xCF | |||
sceAppMgrTrophyMount | |||
0x12C | |||
0x12D | |||
0x12E | |||
sceAppMgrTrophyMountById | |||
0x12F | |||
0x130 | |||
sceAppMgrMmsMount | |||
0x190 | |||
0x191 | |||
0x192 | |||
sceAppMgrInstallDirMount | |||
0x1F4 | |||
0x1F5 | |||
0x1F8 | |||
0x1F9 | |||
sceAppMgrLoopBackMount | |||
0x258 | |||
sceAppMgrGameDataMount | |||
0x3E8 | |||
0x3E9 | |||
sceAppMgrAddContAddMount | |||
0x3EA | |||
sceAppMgrAddContMount | |||
0x3EA | |||
0x3EB | |||
sceAppMgrSaveDataAddMount | |||
0x3EC | |||
sceAppMgrSaveDataMount | |||
direct scePfsMount | |||
</source> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! id !! src !! pfs mount mode !! key type !! default mount point | ||
|- | |- | ||
| | | 0x64 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x65 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x66 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x67 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x68 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x69 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x6A || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x6B || - || 0x15 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x6C || - || 0x15 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x6D || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x6E || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x6F || - || 0x15 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x70 || - || 0x15 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xC8 || - || 0x15 || - || td%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xC9 || - || 0x15 || - || td%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xCA || - || 0x15 || - || sceSblACMgrIsNotSandboxed(0) != 0 ? ms0: : ms%s%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xCB || - || 0x15 || - || td%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xCC || - || 0x15 || - || td%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xCD || - || 0x15 || - || cache0: | ||
|- | |- | ||
| | | 0xCE || - || 0x15 || - || td%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0xCF || - || 0x15 || - || td%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x12D || - || 6 || Sealedkey || trophy_dst0: | ||
|- | |- | ||
| | | 0x12E || - || 6 || Sealedkey || trophy_sys0: | ||
|- | |- | ||
| | | 0x12F || - || 6 || Sealedkey || trophy_dat0: | ||
|- | |- | ||
| | | 0x130 || - || 6 || Sealedkey || trophy_dbk0: | ||
|- | |- | ||
| | | 0x190 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x191 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x192 || - || 0x16 || - || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x1F4 || - || 4 || Sealedkey || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x1F5 || - || 4 || Sealedkey || ad%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x1F8 || - || 6 || Sealedkey || sdimport0: | ||
|- | |- | ||
| | | 0x1F9 || - || 6 || Sealedkey || sdimport_tmp0: | ||
|- | |- | ||
| | | 0x258 || - || 6 || Sealedkey || lm%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x3E8 || - || 2 (0x14 for external path) || klicensee (none for external path) || app0: | ||
|- | |- | ||
| | | 0x3E9 || - || 2 (0x14 for external path) || klicensee (none for external path) || app0: | ||
|- | |- | ||
| | | 0x3EA || - || 4 (0xC for gro0:) || Sealedkey || addcont0: | ||
|- | |- | ||
| | | 0x3EB || - || 4 (0xC for gro0:) || Sealedkey || addcont0: | ||
|- | |- | ||
| | | 0x3EC || - || 5 || Sealedkey || savedata0: | ||
|- | |- | ||
| | | 0x3ED || - || 0x15 || - || savedata0: | ||
|- | |- | ||
| | | 0x3EE || - || 0x14 || - || sd%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x3EF || - || 0x14 || - || sd%02x%02x%02x%02x%02x%02xd0: | ||
|- | |- | ||
| | | 0x3F0 || - || 0x15 || - || ud%02x%02x%02x%02x%02x%02xd0: | ||
|} | |||
{| class="wikitable" | |||
|- | |- | ||
! MountId !! real path <br>(<code>X</code> is an incremental number) !! virtual mount point <br>(<code>X</code> is randomized) !! Function to call for mounting !! Used by | |||
|- | |- | ||
| | | ?0x3F? || ux0:data/near/gift || gift0: || Seen in [[SceAppMgr#sceAppMgrAppDataMountByIdForDriver|sceAppMgrAppDataMountByIdForDriver]] || ?SceNear? | ||
|- | |- | ||
| | | 0x64 || ux0:picture || photo0: || automounted <br>or [[SceAppMgr#sceAppMgrAppDataMount|sceAppMgrAppDataMount]]<br> or [[SceAppUtil#sceAppUtilPhotoMount|sceAppUtilPhotoMount]] || SceEmailApp,<br> SceHostCollaboService, <br>ScePsp2Compat, <br>SceSettings, <br>SceWebBrowser, <br>SceWebUIPlugin, by NPXS10036 | ||
|- | |- | ||
| | | 0x64 || ? || ? || [[SceAppMgr#sceAppMgrPhotoMountForDriver|sceAppMgrPhotoMountForDriver]]<br>[[SceAppMgr#sceAppMgrPhotoMount|sceAppMgrPhotoMount]]<br>[[SceAppMgr#sceAppMgrAppDataMountForDriver|sceAppMgrAppDataMountForDriver]] || | ||
|- | |||
| 0x65 || ur0:user/XX/psnfriend || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrAppDataMount|sceAppMgrAppDataMount]] || SceFriend,<br> SceFriendListDialogPlugin,<br> SceInvitationDlgPlugin,<br> SceNpGameCustomDataDPlugin,<br> SceNpMessageDialogPlugin,<br> SceNpProfile2DialogPlugin,<br> ScePsnMail,<br> SceShell | |||
|- | |||
| 0x66 || ur0:user/XX/psnmsg || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrAppDataMount|sceAppMgrAppDataMount]] || SceInvitationDlgImplPlugin, <br>SceMsgMiddleWare, <br>SceNpGameCustomDataDlgImpl, <br>SceNpMessage, <br>SceNpMessageDlgImplPlugin | |||
|- | |||
| 0x67 || ur0:user/XX/near || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrAppDataMount|sceAppMgrAppDataMount]] || SceNear, <br>SceNearAutoCheckin, <br>SceNearAutoLocation, <br>SceNearProfile, <br>SceNearUtilService, by NPXS10036 | |||
|- | |||
| 0x68 || ? || ? || || | |||
|- | |- | ||
| | | ? || ur0:user/XX/grpmsg || adXXXXXXXXXXXX: || || | ||
|- | |- | ||
| | | ? || ur0:contacts || ? || || | ||
|- | |- | ||
| | | 0x69 || ux0:music || music0: || automounted <br>or [[SceAppMgr#sceAppMgrAppDataMount|sceAppMgrAppDataMount]] <br> or [[SceAppUtil#sceAppUtilMusicMount|sceAppUtilMusicMount]] || SceAvMediaService, <br>SceHostCollaboService, <br>SceMusicBrowser, <br>SceShell | ||
|- | |- | ||
| | | 0x6A || ? || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrAppDataMountById|sceAppMgrAppDataMountById]] || | ||
|- | |- | ||
| | | 0x6B || ? || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrAppDataMountById|sceAppMgrAppDataMountById]] || | ||
|- | |- | ||
| | | 0x6C || ux0:calendar || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrAppDataMount|sceAppMgrAppDataMount]] || SceCalendar, <br>SceCalendarBg, <br>SceCalendarDialogPlugin, <br>SceEmailApp | ||
|- | |- | ||
| | | 0x6D || ux0:video || video0: || [[SceAppUtilExt#sceAppUtilExtVideoMount|sceAppUtilExtVideoMount]] <br>or [[SceDriverUser#sceAppMgrAppDataMount|sceAppMgrAppDataMount]] || | ||
|- | |- | ||
| | | 0x6E || ux0:appmeta/new (only while app promoting)<br>ux0:appmeta/<TITLEID> || adXXXXXXXXXXXX: || mounted when installing app / refreshing LiveArea of an app || | ||
|- | |- | ||
| | | 0x6F || tm0:nphome || adXXXXXXXXXXXX: || || mounted by NPXS10010 when playing a video bought on PSStore, mounted by NPXS10036 when downloading a video bought on PSStore (NPXS10002). SceLibMarlin, SceLibMarlinPb | ||
|- | |- | ||
| | | 0x70 || ux0:book || ?adXXXXXXXXXXXX:? || [[SceAppUtil#sceAppUtilBookMount|sceAppUtilBookMount]] || Reader™ (PCSC80012) | ||
|- | |- | ||
| | | 0xC8 || ur0:temp/sqlite || tdXXXXXXXXXXXX: || mounted by some system apps || | ||
|- | |- | ||
| | | 0xC9 || ur0:temp/attach || tdXXXXXXXXXXXX: || mounted by some games || | ||
| | |- | ||
| 0xCA || ux0:pspemu || ms0: || [[SceAppMgr#sceAppMgrPspSaveDataRootMount|sceAppMgrPspSaveDataRootMount]] || mounted by NPXS19999 (SceShell) when asked by CMA or PspEmu or SceGameManual or Store | |||
|- | |||
| 0xCB || ? || tdXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrWorkDirMount|sceAppMgrWorkDirMount]] || | |||
|- | |||
/ | | 0xCC || ur0:temp/checkout || tdXXXXXXXXXXXX: || mounted by NPXS10002 (SceStoreBrowser or SceCheckoutBrowser) || | ||
// | |- | ||
// | | 0xCD || ux0:cache/<TITLEID> || cache0: || [[SceAppUtil#sceAppUtilCacheMount|sceAppUtilCacheMount]] <br>or [[SceAppMgr#sceAppMgrWorkDirMountById|sceAppMgrWorkDirMountById]] || | ||
// | |- | ||
// | | 0xCE || ur0:temp/webbrowser || tdXXXXXXXXXXXX: || mounted by NPXS10003 (SceWebBrowser) || | ||
|- | |||
| 0xCF || ? || tdXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrWorkDirMountById|sceAppMgrWorkDirMountById]] || ? | |||
|- | |||
| ? || ux0:mtp || ? || ? || ?MTP? | |||
|- | |||
| 0x12C || ? || ? || [[SceAppMgr#sceAppMgrTrophyMount|sceAppMgrTrophyMount]]<br>[[SceAppMgr#sceAppMgrTrophyMountForDriver|sceAppMgrTrophyMountForDriver]] || ? | |||
|- | |||
| 0x12E || ur0:user/XX/trophy/data/sce_trop || trophy_sys0: || ?sceNpTrophyCreateContext?<br>[[SceAppMgr#sceAppMgrTrophyMount|sceAppMgrTrophyMount]]<br>[[SceAppMgr#sceAppMgrTrophyMountForDriver|sceAppMgrTrophyMountForDriver]] || mounted by NPXS19999 (SceShell) when asked by app or games | |||
|- | |||
| 0x12F || ur0:user/XX/trophy/data/<COMMID> || trophy_dat0: || [[SceAppMgr#sceAppMgrTrophyMountById|sceAppMgrTrophyMountById]] || | |||
|- | |||
// | | 0x130 || ?ur0:user/XX/trophy/data/db? || trophy_dbk0: || [[SceAppMgr#sceAppMgrTrophyMountById|sceAppMgrTrophyMountById]] || | ||
|- | |||
| 0x190 || ux0:mms/photo || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrMmsMount|sceAppMgrMmsMount]]<br>[[SceAppMgr#sceAppMgrMmsMountForDriver|sceAppMgrMmsMountForDriver]] || mounted by NPXS10004, by NPXS10036 | |||
|- | |||
| 0x191 || ux0:mms/music || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrMmsMount|sceAppMgrMmsMount]]<br>[[SceAppMgr#sceAppMgrMmsMountForDriver|sceAppMgrMmsMountForDriver]] || ?mounted by NPXS10009? | |||
|- | |||
| 0x192 || ux0:mms/video || adXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrMmsMount|sceAppMgrMmsMount]]<br>[[SceAppMgr#sceAppMgrMmsMountForDriver|sceAppMgrMmsMountForDriver]] || mounted by NPXS10010, by NPXS10036 | |||
|- | |||
| 0x1F4 || ? || ? || || | |||
|- | |||
| 0x1F8 || ? || sdimport0: || || | |||
|- | |||
| 0x1F9 || ? || sdimport_tmp0: || || | |||
|- | |||
| 0x258 || ? || ? || [[SceAppMgr#sceAppMgrLoopBackMount|sceAppMgrLoopBackMount]] || | |||
|- | |||
| 0x384 || ? || ? || || | |||
|- | |||
| 0x3E8 || ux0:temp/fakepkg/expand/<TITLEID> (PKG installer promoting),<br> ux0:bgdl/t/XXXXXXXX/<TITLEID>/0000 (bgdl promoting), <br>vs0:app/<TITLEID> || gpXXXXXXXXXXXX:,<br> app0: || automounted ? || | |||
|- | |||
| 0x3E8 || <br>ux0:app/<TITLEID>, <br>gro0:app/<TITLEID> || gpXXXXXXXXXXXd: || [[SceAppMgr#sceAppMgrGameDataMountForDriver|sceAppMgrGameDataMountForDriver]] || | |||
|- | |||
| 0x3E9 || ux0:temp/fakepkg/expand/<TITLEID> (PKG installer promoting), <br>ux0:bgdl/t/XXXXXXXX/<TITLEID>/0000 (bgdl promoting) || gpXXXXXXXXXXXX:,<br>app0: (mounted over /app/ app0:) || || | |||
|- | |||
| 0x3E9 || ux0:patch/<TITLEID>, <br>grw0:patch/<TITLEID> || gpXXXXXXXXXXXd: || [[SceAppMgr#sceAppMgrGameDataMountForDriver|sceAppMgrGameDataMountForDriver]] || | |||
// | |- | ||
// | | 0x3EA || ux0:temp/fakepkg/expand/<TITLEID> (PKG installer promoting), <br>ux0:bgdl/t/XXXXXXXX/<TITLEID>/0000 (bgdl promoting) || gpXXXXXXXXXXXX:,<br>addcont0: - addcont1: || automounted by [[SceAppMgr]] <br>or [[SceAppUtil#sceAppUtilAddcontMount|sceAppUtilAddcontMount]] <br>or [[SceAppUtil#sceAppUtilDrmOpen|sceAppUtilDrmOpen]] <br>or [[SceAppUtil#sceAppUtilAddcontForceAddcontMount|sceAppUtilAddcontForceAddcontMount]] || | ||
|- | |||
| 0x3EA || gro0:addcont/<TITLEID> || ? || [[SceAppMgr#sceAppMgrAddContMount|sceAppMgrAddContMount]] || | |||
|- | |||
| 0x3EA || ux0:addcont/<TITLEID>, <br>grw0:addcont/<TITLEID> || ? || [[SceAppMgr#sceAppMgrAddContAddMount|sceAppMgrAddContAddMount]]<br>[[SceAppMgr#sceAppMgrAddContMount|sceAppMgrAddContMount]] || | |||
|- | |||
| 0x3EA || gro0:acinst/<titleid> || ? || [[SceAppMgr#sceAppMgrAcInstGetAcdirParamForDriver|sceAppMgrAcInstGetAcdirParamForDriver]] || | |||
|- | |||
| 0x3EB || ux0:addcont/<TITLEID>, <br>grw0:addcont/<TITLEID> || ? || [[SceAppMgr#sceAppMgrAddContMount|sceAppMgrAddContMount]] || | |||
|- | |||
| 0x3EC || ux0:theme/<CONTENTID> || tmXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrThemeDataMount|sceAppMgrThemeDataMount]] || | |||
|- | |||
| 0x3ED || ? || savedata0: of ux0: or grw0: || automounted by [[SceAppMgr]] (writable mount with pfs mount) || | |||
|- | |||
| 0x3ED || ux0:user/XX/savedata/<TITLEID> || savedata0: <br>?savedata1:? || automounted by [[SceAppMgr]] || | |||
|- | |||
| 0x3ED || ?any path? || tsXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrFakeSaveDataCreateMountForDriver|sceAppMgrFakeSaveDataCreateMountForDriver]]<br>[[SceAppMgr#sceAppMgrGetSaveDataInfoForSpecialExport|sceAppMgrGetSaveDataInfoForSpecialExport]] || ?fake_package_installer?<br>?SceContentManager? | |||
|- | |||
| 0x3ED || ?any path? || ? || [[SceAppMgr#sceAppMgrLoadSaveDataSystemFile|sceAppMgrLoadSaveDataSystemFile]] || ?fake_package_installer? | |||
|- | |||
| 0x3ED || ux0:user/XX/savedata_plus/work/<TITLEID> || tsXXXXXXXXXXXX: || [[SceAppMgr#sceAppMgrCloudDataDstCreateMountForDriver|sceAppMgrCloudDataDstCreateMountForDriver]] || | |||
|- | |||
| 0x3ED || ux0:/user/XX/savedata/<TITLEID> || tsXXXXXXXXXXXX:<br>tsXXXXXXXXXXXXd || [[SceAppMgr#sceAppMgrCloudDataSrcMountForDriver|sceAppMgrCloudDataSrcMountForDriver]]<br>[[SceAppMgr#sceAppMgrUpdateSaveDataParam|sceAppMgrUpdateSaveDataParam]] || | |||
|- | |||
| 0x3ED || grw0:savedata/<titleid> || tsXXXXXXXXXXXX:<br>tsXXXXXXXXXXXXd || [[SceAppMgr#sceAppMgrCloudDataSrcMountForDriver|sceAppMgrCloudDataSrcMountForDriver]]<br>[[SceAppMgr#sceAppMgrUpdateSaveDataParam|sceAppMgrUpdateSaveDataParam]] || | |||
|- | |||
| 0x3ED || ux0:/user/XX/savedata_vc/<titleid>,<br>ux0:/user/XX/savedata/<titleid> || ? || [[SceAppMgr#sceAppMgrSaveDataAddMount|sceAppMgrSaveDataAddMount]] || | |||
|- | |||
| 0x3EE || ? || savedata0: of not ux0: and grw0: || automounted by [[SceAppMgr]] (writable mount without pfs mount) || | |||
|- | |||
| 0x3EE || ur0:user/XX/savedata/<TITLEID> || savedata0: <br>?savedata1:? || [[SceAppMgr#sceAppMgrSaveDataAddMount|sceAppMgrSaveDataAddMount]] <br>or [[SceAppUtil#sceAppUtilSaveDataMount|sceAppUtilSaveDataMount]] || | |||
|- | |||
| 0x3EF || vs0:sys/external || sdXXXXXXXXXXXX: || automounted || | |||
|- | |||
| 0x3F0 || vs0:data/external || sdXXXXXXXXXXXX: || automounted || | |||
|} | |||
=== Types === | |||
<source lang="C"> | |||
// invalid category (not gd) or invalid TITLE ID (e.g. "VITASHELL") | |||
#define SCE_APPMGR_ERROR_INVALID_PARAM_SFO (0x80800015) | |||
} | |||
typedef char[0x10] SceTitleId; | |||
// | typedef struct SceAppMgrLaunchParam { // size is 0x34 | ||
// | SceSize size; // Size of this structure | ||
SceUInt32 attr; // set to 0x80000000 to break on launch | |||
SceUInt32 initPriority; | |||
SceUInt32 unk_C; | |||
SceUInt32 unk_10; | |||
SceUInt32 unk_14; | |||
SceUInt32 budgetId; | |||
SceUInt32 unk_1C; | |||
SceUInt32 unk_20; | |||
}; | SceUInt32 unk_24; | ||
SceUInt32 unk_28; | |||
SceUInt32 unk_2C; | |||
SceUInt32 unk_30; | |||
} SceAppMgrLaunchParam; | |||
struct | // Linked list of these items is controlled by common function that is responsible for PFS mounting. | ||
{ | // This function (on FW 3.60, segment 0, offset 0x19B51) is used by all other mount functions in SceAppMgr. | ||
int | // Linked list is used as lookup by callback that is set by sceIoSetPathMappingFunctionForDriver. | ||
// Pointer of address of first entry is: on 3.60, segment 1, offset 0x3470C. | |||
typedef struct pfs_mount_t { // size is 0x1D0 (known) | |||
int mount_id; | |||
char path[0x124]; // path used for PFS mount (like ux0:app/<TITLEID>) | |||
ScePfsRndDriveId pfs_rnd_drive_id; // PFS mount drive name - used internally by iofilemgr to connect to vfs_nodes through vfs_node_info? | |||
SceTitleId titleId; | |||
SceUInt64 auth_ids[0x10]; // array of auth ids | |||
pfs_mount_t *prev; // pointer to prev item in the list or 0 | |||
pfs_mount_t *next; // pointer to next item in the list or 0 | |||
} pfs_mount_t; | |||
struct appmgr_mount_t { // size is 0x24 (known) | |||
pfs_mount_t *this_pfs_mount; | |||
SceFiosOverlayID overlay_id; // overlay for redirecting <appmgr_rnd_drive_id> to <this_pfs_mount->pfs_rnd_drive_id>0: (if this_pfs_mount is not a 0x3E9 patch mount point ) | |||
// or <mctx->prev_pfs_mount->pfs_rnd_drive_id>0: to <this_pfs_mount->pfs_rnd_drive_id>0: (if this_pfs_mount is a 0x3E9 patch mount point ) | |||
// or <mctx->prev_pfs_mount->path> to <this_pfs_mount->path> | |||
ScePfsRndDriveId appmgr_rnd_drive_id; // used for appmgr mount - returned when executing appmgr mount function | |||
pfs_mount_t* prev_pfs_mount; // other pfs mount with same mount_id and appmgr_rnd_drive_id if mount_id is 0x3EA or 0x3E8 | |||
appmgr_mount_t* prev; // pointer to prev item in the list or 0 | |||
appmgr_mount_t* next; // pointer to next item in the list or 0 | |||
}; | } appmgr_mount_t; | ||
struct | typedef struct appmgr_mount_holder_t { | ||
{ | |||
int unk0; | int unk0; | ||
appmgr_mount_t *first_virt_mount; // start of the list for appmgr mounts | |||
} appmgr_mount_holder_t; | |||
typedef struct titleId_item { | |||
SceTitleId titleId; | |||
} titleId_item; | |||
}; | |||
struct | // most importantly contains rif_info and keystone | ||
typedef struct phys_ctx_t { // size is 0x508 (known) | |||
char | int unk0[0x58]; | ||
int flag_160; | |||
}; | int unk164; | ||
int unk168; | |||
int unk16C; | |||
int unk170; | |||
char physical_mountpoint[0xC]; | |||
int unk180[0x46]; | |||
char prefix_298[4]; | |||
int flag_29C; | |||
int unk2A0; | |||
int unk2A4; | |||
rif_info rif; | |||
char keystone_318[0x60]; | |||
SceTitleId titleId_378; | |||
SceTitleId titleid_388; | |||
titleId_item addContTitleIds[8]; | |||
titleId_item saveDataTitleIds[8]; | |||
char unk498[0x70]; | |||
} phys_ctx_t; | |||
struct | typedef struct sub_ctx_23C2960_C { | ||
{ | char unk0[0x128]; | ||
int unk128; | |||
int unk12C; | |||
int | int unk130; | ||
int | int unk134; | ||
int unk138; | |||
int unk13C; | |||
char unk140[0x3F8]; | |||
}; | int unk538; | ||
int unk53C; | |||
char unk540; | |||
char unk541; | |||
char unk542; | |||
char unk543; | |||
int unk544; | |||
int unk548; | |||
} sub_ctx_23C2960_C; | |||
struct | typedef struct sub_ctx_23C2960_558_548 { | ||
{ | |||
int unk0; | int unk0; | ||
int unk4; | int unk4; | ||
int unk8; | int unk8; | ||
char unkC[ | int unkC; | ||
}; | int unk10; | ||
int unk14; | |||
int unk18; | |||
int unk1C; | |||
int unk20; | |||
int unk24; | |||
int unk28; | |||
int unk2C; | |||
} sub_ctx_23C2960_558_548; | |||
// most importantly holds appmgr_mount_holder_t | |||
// which is a root for appmgr mountpoints | |||
typedef struct sub_ctx_23C2960_558 { | |||
char appName[32]; | |||
SceUID pid; | |||
int unk24; | |||
appmgr_mount_holder_t mctx_hldr_28; | |||
phys_ctx_t phys_ctx_30; | |||
sub_ctx_23C2960_558_548 unk548; | |||
} sub_ctx_23C2960_558; | |||
typedef struct sub_ctx_23C2960_AFC_10A4 { | |||
int unk0; | |||
int unk4; | |||
char unk8; | |||
char unk9; | |||
char unkA; | |||
char unkB; | |||
char unkC; | |||
char unkD; | |||
char unkE; | |||
char unkF; | |||
} sub_ctx_23C2960_AFC_10A4; | |||
typedef struct sub_ctx_23C2960_AFC { | |||
char unk_0[4260]; | |||
sub_ctx_23C2960_AFC_10A4 unk_10A4; | |||
} sub_ctx_23C2960_AFC; | |||
typedef struct sub_ctx_23C2960_1BC0_14_7EC { | |||
struct | int unk0; | ||
{ | |||
int | |||
int unk4; | int unk4; | ||
int unk8; | int unk8; | ||
sub_ctx_23C2960_C unkC; | int unkC; | ||
sub_ctx_23C2960_558 unk_558; | int unk10; | ||
int flags_AC0; | int unk14; | ||
int unk_AC4; | int unk18; | ||
int is_this_process_AC8; | int unk1C; | ||
int unk20; | |||
int unk24; | |||
int unk28; | |||
int unk2C; | |||
int unk30; | |||
int unk34; | |||
int unk38; | |||
int unk3C; | |||
} sub_ctx_23C2960_1BC0_14_7EC; | |||
typedef struct sub_ctx_23C2960_1BC0_14 { | |||
char unk0[2028]; | |||
sub_ctx_23C2960_1BC0_14_7EC unk7EC; | |||
} sub_ctx_23C2960_1BC0_14; | |||
struct sub_ctx_23C2960_1BC0 { | |||
__int16 unk0; | |||
__int16 unk2; | |||
int unk4; | |||
int unk8; | |||
SceUID SceAppMgrAppMutex_uid; | |||
SceUID current_thread_10; | |||
sub_ctx_23C2960_1BC0_14 unk14; | |||
} sub_ctx_23C2960_1BC0; | |||
typedef struct sub_ctx_23C2960_2400 { | |||
int unk0; | |||
int unk4; | |||
int unk8; | |||
char unkC[4]; | |||
} sub_ctx_23C2960_2400; | |||
typedef struct ctx_23C2960_SceAppInfoInternal360 { // size is 0x2410 (known) | |||
int appId; | |||
int unk4; | |||
int unk8; | |||
sub_ctx_23C2960_C unkC; | |||
sub_ctx_23C2960_558 unk_558; | |||
int flags_AC0; | |||
int unk_AC4; | |||
int is_this_process_AC8; | |||
int unk_ACC; | int unk_ACC; | ||
int appmgr_0x10000001_event_indicator_AD0; | int appmgr_0x10000001_event_indicator_AD0; | ||
Line 385: | Line 602: | ||
sub_ctx_23C2960_1BC0 unk_1BC0; | sub_ctx_23C2960_1BC0 unk_1BC0; | ||
sub_ctx_23C2960_2400 unk_2400; | sub_ctx_23C2960_2400 unk_2400; | ||
}; | } ctx_23C2960; | ||
typedef ctx_23C2960 global_ctx_item; | typedef ctx_23C2960 global_ctx_item; | ||
struct generic_mount_ctx | typedef struct generic_mount_ctx { | ||
{ | SceTitleId titleId; | ||
char passCode[32]; | char passCode[32]; | ||
char mountDrive[16]; | char mountDrive[16]; | ||
}; | } generic_mount_ctx; | ||
#define SCE_APPMGR_MAX_APP_NAME_LENGTH (31) /* Maximum app name length */ | |||
/* System event ID */ | |||
#define SCE_APPMGR_SYSTEMEVENT_ON_RESUME (0x10000003) | |||
#define SCE_APPMGR_SYSTEMEVENT_ON_STORE_PURCHASE (0x10000004) | |||
#define SCE_APPMGR_SYSTEMEVENT_ON_NP_MESSAGE_ARRIVED (0x10000005) | |||
#define SCE_APPMGR_SYSTEMEVENT_ON_STORE_REDEMPTION (0x10000006) | |||
/* Event ID (old SDK) */ | |||
#define SCE_APP_EVENT_UNK0 (0x00000003) | |||
#define SCE_APP_EVENT_ON_ACTIVATE (0x10000001) | |||
#define SCE_APP_EVENT_ON_DEACTIVATE (0x10000002) | |||
#define SCE_APP_EVENT_UNK1 (0x10000300) | |||
#define SCE_APP_EVENT_REQUEST_QUIT (0x20000001) | |||
#define SCE_APP_EVENT_UNK2 (0x30000003) | |||
== Data segment layout == | /* Error number */ | ||
#define SCE_APPMGR_ERROR_BUSY (0x80802000) /* Busy */ | |||
#define SCE_APPMGR_ERROR_INTERNAL (0x80802001) /* Internal error */ | |||
#define SCE_APPMGR_ERROR_PARAM (0x80802002) /* The parameter is invalid. It is necessary to deal with it by the time of application development */ | |||
#define SCE_APPMGR_ERROR_STATE (0x80802013) /* Invalid state */ | |||
#define SCE_APPMGR_ERROR_NULL_POINTER (0x80802016) /* NULL pointer */ | |||
#define SCE_APPMGR_ERROR_INVALID (0x8080201a) /* Invalid parameter */ | |||
#define SCE_APPMGR_ERROR_INVALID_SELF_PATH (0x8080201e) /* Invalid SELF path */ | |||
#define SCE_APPMGR_ERROR_TOO_LONG_ARGV (0x8080201d) /* argv is too long */ | |||
#define SCE_APPMGR_ERROR_BGM_PORT_BUSY (0x80803000) /* The BGM port was occupied and could not be secured. Entered the queue */ | |||
/* Infobar state */ | |||
typedef enum SceAppMgrInfoBarVisibility { | |||
SCE_APPMGR_INFOBAR_VISIBILITY_INVISIBLE = 0, | |||
SCE_APPMGR_INFOBAR_VISIBILITY_VISIBLE = 1 | |||
} SceAppMgrInfoBarVisibility; | |||
typedef enum SceAppMgrInfoBarColor { | |||
SCE_APPMGR_INFOBAR_COLOR_BLACK = 0, | |||
SCE_APPMGR_INFOBAR_COLOR_WHITE = 1 | |||
} SceAppMgrInfoBarColor; | |||
typedef enum SceAppMgrInfoBarTransparency { | |||
SCE_APPMGR_INFOBAR_TRANSPARENCY_OPAQUE = 0, | |||
SCE_APPMGR_INFOBAR_TRANSPARENCY_TRANSLUCENT = 1 | |||
} SceAppMgrInfoBarTransparency; | |||
#define SCE_APP_MGR_MAX_EVENT_PARM_LENGTH (56) /* Maximum event parameter length */ | |||
/* Event structure */ | |||
typedef struct SceAppMgrEvent { // size is 0x64 | |||
int event; /* Event ID */ | |||
SceUID appId; /* Application ID. Added when required by the event */ | |||
char param[SCE_APP_MGR_MAX_EVENT_PARM_LENGTH]; /* Parameters to pass with the event */ | |||
} SceAppMgrEvent; | |||
/* System event structure */ | |||
typedef struct SceAppMgrSystemEvent { // size is 0x64 | |||
int systemEvent; /* Event ID */ | |||
union { | |||
SceUInt8 reserved[60]; | |||
} data; | |||
} SceAppMgrSystemEvent; | |||
typedef struct SceAppMgrAppState { // size is 128 bytes | |||
SceUInt32 systemEventNum; | |||
SceUInt32 appEventNum; | |||
SceBool isSystemUiOverlaid; | |||
SceUInt8 reserved[128 - sizeof(SceUInt32)*2 - sizeof(SceBool)]; | |||
} SceAppMgrAppState; | |||
typedef struct SceAppMgrAppInfo { // size is 128 bytes | |||
char appName[32]; | |||
SceUInt8 reserved[128 - 32]; | |||
} SceAppMgrAppInfo; | |||
typedef struct SceAppMgrNetworkDisconnectionWarningDialogStateOptParam { | |||
SceUInt8 reserved[128]; | |||
} SceAppMgrNetworkDisconnectionWarningDialogStateOptParam; | |||
typedef struct SceAppMgrLoadExecOptParam { | |||
int reserved[256/4]; | |||
} SceAppMgrLoadExecOptParam; | |||
// First element is at offset 0x22110 on FW 0.990 | |||
typedef struct SceAppInfo_internal { // (size is 0xADC, 4 elements max) on FW 0.990 | |||
SceUID appId; // 0x0 - Application ID - (-1) | |||
char appName[32]; // 0x4 | |||
char appPath[256]; // 0x24 | |||
SceSize budgetSize; // 0x124 | |||
SceSize phycontSize; // 0x128 | |||
SceUInt32 budget_related; // 0x12C | |||
SceUInt32 launchMode; // 0x130 - (0) | |||
SceUInt32 budgetType; // 0x134 - (0) | |||
SceUInt32 processAttr; // 0x138 - (0) | |||
SceUInt32 unk_13C; // 0x13C | |||
SceUInt32 unk_140; // 0x140 - (0) | |||
SceUID processId; // 0x144 - Process ID - (0) | |||
SceUInt32 state; // 0x148 - (-1) | |||
SceUID evfId; // 0x14C - Specify the identifier of the event flag. - (-1) | |||
SceUInt32 unk_150; // 0x150 - (0) | |||
appmgr_mount_t *mount // 0x154 | |||
char buf_158[0x114]; // 0x158 | |||
SceUInt32 unk_26C; // 0x26C - (0) | |||
SceUInt32 unk_270; // 0x270 - (0) | |||
SceUInt32 unk_274; // 0x274 | |||
SceUInt32 status; // 0x278 - bgm_priority (& ?), runStatus (& 0xf), activeness (& ff0) - (0x101) | |||
SceUInt32 unk_27C; // 0x27C - (0) | |||
SceUInt32 unk_280; // 0x280 | |||
SceUInt32 unk_284; // 0x284 - (0) | |||
SceUInt32 firstCustomEventId_maybe; // 0x288 | |||
SceUInt32 lastCustomEventId_maybe; // 0x28C | |||
SceAppMgrEvent *firstCustomEvent; // 0x290 - heap memory address of size 0x14 (the 5 following events on FW 0.990) | |||
SceUInt32 event_on_activate; // 0x294 | |||
SceUInt32 event_on_deactivate; // 0x298 | |||
SceUInt32 systemevent_on_resume; // 0x29C | |||
SceUInt32 systemevent_on_store_purchase; // 0x2A0 | |||
SceUInt32 systemevent_on_np_message_arrived; // 0x2A4 | |||
SceUInt32 appEventNum; // 0x2A8 | |||
SceAppMgrAppParam appParam // 0x2AC | |||
SceUInt32 unk_6AC; // 0x6AC | |||
SceUInt32 unk_6B0; // 0x6B0 | |||
SceUInt32 unk_6B4; // 0x6B4 | |||
char buf_6B8[0x400]; // 0x6B8 | |||
SceUInt32 unk_AB8; // 0xAB8 - (0) | |||
SceUID appMutexId; // 0xABC - SceAppMgrAppMutex uid | |||
SceUInt32 currentBgmState; // 0xAC0 - (0) | |||
SceUInt32 unk_AC4; // 0xAC4 - (-1) | |||
SceUInt32 unk_AC8; // 0xAC8 | |||
SceUInt32 unk_ACC; // 0xACC | |||
SceUInt32 callbackOnLaunch; // 0xAD0 - (-1) | |||
SceUInt32 unk_AD4; // 0xAD4 - (0) | |||
SceUInt32 unk_AD8; // 0xAD8 | |||
} SceAppInfo_internal; | |||
typedef struct SceAppMgrAppStatus { // size is 0x40 on FW 0.990 | |||
SceUInt32 unk_0; // 0x0 | |||
SceUInt32 launchMode; // 0x4 | |||
SceUInt32 bgm_priority_or_status; // 0x8 | |||
char appName[32]; // 0xC | |||
SceUInt32 unk_2C; // 0x2C | |||
SceUID appId; // 0x30 - Application ID | |||
SceUID processId; // 0x34 - Process ID | |||
SceUInt32 status_related_1; // 0x38 | |||
SceUInt32 status_related_2; // 0x3C | |||
} SceAppMgrAppStatus; | |||
typedef struct SceAppMgrAppParam { // size is 0x400 on FW 0.990 | |||
char data[0x400]; | |||
} SceAppMgrAppParam; | |||
typedef struct SceAppMgrBootParam { // size is 0xC on FW 0.990 | |||
SceUint unk_0; // 0x0 | |||
SceUint unk_4; // 0x4 | |||
SceUint unk_8; // 0x8 | |||
} SceAppMgrBootParam; | |||
typedef struct SceSharedFbCreate { // size is 0x18 | |||
SceSize AllocMemSize; | |||
int unk_04; | |||
int unk_08; | |||
int unk_0C; | |||
int unk_10; | |||
int unk_14; | |||
} SceSharedFbCreate; | |||
typedef struct SceSharedFbInfo { // size is 0x58 | |||
int unk_00; // cdram base? | |||
int unk_04; // ex: 0x500000 | |||
int unk_08; // cdram base? | |||
int unk_0C; | |||
void *unk_10; | |||
int unk_14; | |||
int unk_18; | |||
int unk_1C; | |||
int unk_20; | |||
int unk_24; // 960 | |||
int unk_28; // 960 | |||
int unk_2C; // 544 | |||
int unk_30; | |||
int unk_34; // unk idx | |||
int unk_38; | |||
int unk_3C; | |||
int unk_40; | |||
int unk_44; | |||
int unk_48; | |||
int unk_4C; | |||
int unk_50; | |||
int unk_54; | |||
} SceSharedFbInfo; | |||
</source> | |||
== Data segment layout == | |||
On 3.60 : | On 3.60 : | ||
Line 636: | Line 1,037: | ||
It is located in segment 0 at offset 0x19B51 on 3.60. | It is located in segment 0 at offset 0x19B51 on 3.60. | ||
<source lang="C">int create_mountpoint_base(SceUID pid, appmgr_mount_holder_t *mount_ctx_holder, unsigned int mount_id, | <source lang="C">int create_mountpoint_base(SceUID pid, appmgr_mount_holder_t *mount_ctx_holder, unsigned int mount_id, SceTitleId *title_id, char *physical_path, char *mount_drive, char *klicensee, char *mount_point_result);</source> | ||
* pid - current process pid. | * pid - current process pid. | ||
Line 729: | Line 1,130: | ||
<source lang="C"> | <source lang="C"> | ||
struct acinst_res | typedef struct acinst_res { | ||
{ | |||
char keystone[0x60]; | char keystone[0x60]; | ||
char game_title[0x80]; | char game_title[0x80]; | ||
}; | } acinst_res; | ||
int sceAppMgrAcInstGetAcdirParamForDriver( | int sceAppMgrAcInstGetAcdirParamForDriver(SceTitleId *titleId, const char *dlc_folder, acinst_res *outputData); | ||
</source> | </source> | ||
Line 748: | Line 1,148: | ||
Only valid appmgr mount ids are: <code>0x68</code>, <code>0x6A</code>, <code>0x6B</code>, <code>0x6E</code> | Only valid appmgr mount ids are: <code>0x68</code>, <code>0x6A</code>, <code>0x6B</code>, <code>0x6E</code> | ||
<source lang="C">int sceAppMgrAppDataMountByIdForDriver(int mountId, | <source lang="C">int sceAppMgrAppDataMountByIdForDriver(int mountId, SceTitleId *titleId, char *mountPoint);</source> | ||
=== sceAppMgrAppDataMountForDriver === | === sceAppMgrAppDataMountForDriver === | ||
Line 793: | Line 1,193: | ||
| 3.60 || 0x193784A9 | | 3.60 || 0x193784A9 | ||
|} | |} | ||
<source lang="C">int sceAppMgrCheckContentInstallPeriodForDriver(int a1);</source> | |||
=== sceAppMgrCheckPfsMountedForDriver === | === sceAppMgrCheckPfsMountedForDriver === | ||
Line 801: | Line 1,203: | ||
| 3.60 || 0x0B1BEEE0 | | 3.60 || 0x0B1BEEE0 | ||
|} | |} | ||
<source lang="C">int sceAppMgrCheckPfsMountedForDriver(int *result);</source> | |||
=== sceAppMgrCloudDataClearMcIdForDriver === | === sceAppMgrCloudDataClearMcIdForDriver === | ||
Line 809: | Line 1,213: | ||
| 3.60 || 0xEC408FEF | | 3.60 || 0xEC408FEF | ||
|} | |} | ||
<source lang="C">int sceAppMgrCloudDataClearMcIdForDriver(int a1);</source> | |||
=== sceAppMgrCloudDataCreateHeaderForDriver === | === sceAppMgrCloudDataCreateHeaderForDriver === | ||
Line 815: | Line 1,221: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.81 || not present | ||
|- | |||
| 2.000.081-3.740.011 || 0xED87F191 | |||
|} | |} | ||
Line 837: | Line 1,245: | ||
* mount PFS tsXXXXXXXXXXXX: mountpoint to ux0:user/XX/savedata_plus/work/<TITLEID> path with mountid 0x3ED | * mount PFS tsXXXXXXXXXXXX: mountpoint to ux0:user/XX/savedata_plus/work/<TITLEID> path with mountid 0x3ED | ||
<source lang="C">int sceAppMgrCloudDataDstCreateMountForDriver( | <source lang="C">int sceAppMgrCloudDataDstCreateMountForDriver(SceTitleId *titleId, char *mountPoint);</source> | ||
=== sceAppMgrCloudDataGetMcIdForDriver === | === sceAppMgrCloudDataGetMcIdForDriver === | ||
Line 877: | Line 1,285: | ||
<source lang="C"> | <source lang="C"> | ||
//mode probably allows values 1,2,3 | // mode probably allows values 1,2,3 | ||
//1 probably selects ux0: | // 1 probably selects ux0: | ||
//2,3 probably selects grw0: | // 2, 3 probably selects grw0: | ||
int sceAppMgrCloudDataSrcMountForDriver(int mode, | int sceAppMgrCloudDataSrcMountForDriver(int mode, SceTitleId *titleId, char *mountPoint); | ||
</source> | </source> | ||
Line 898: | Line 1,306: | ||
| 3.60 || 0x7554330F | | 3.60 || 0x7554330F | ||
|} | |} | ||
<source lang="C">int sceAppMgrDebugSettingNotifyUpdateForDriver(int a1);</source> | |||
=== sceAppMgrDrmCloseForDriver === | === sceAppMgrDrmCloseForDriver === | ||
Line 967: | Line 1,377: | ||
* override with another mount PFS gpXXXXXXXXXXXd: mountpoint to ux0:patch/<TITLEID> or grw0:patch/<TITLEID> path with 0x3E9 if path exists | * override with another mount PFS gpXXXXXXXXXXXd: mountpoint to ux0:patch/<TITLEID> or grw0:patch/<TITLEID> path with 0x3E9 if path exists | ||
<source lang=" | <source lang="C">int sceAppMgrGameDataMountForDriver(const char *app_path, const char *patch_path, const char *rif_path, char *mount_point);</source> | ||
int sceAppMgrGameDataMountForDriver(char *app_path, char *patch_path, char * | |||
=== sceAppMgrGetBootParamForDriver === | === sceAppMgrGetBootParamForDriver === | ||
Line 1,002: | Line 1,410: | ||
| 3.60 || 0xA888C2DC | | 3.60 || 0xA888C2DC | ||
|} | |} | ||
<source lang="C"> | |||
// titleId: 10 bytes null-terminated string | |||
int sceAppMgrIsExclusiveProcessRunningForDriver(const char* titleId); | |||
</source> | |||
=== sceAppMgrLaunchAppByPathForDriver === | === sceAppMgrLaunchAppByPathForDriver === | ||
Line 1,008: | Line 1,421: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xB0A37065 | ||
|} | |} | ||
Line 1,021: | Line 1,434: | ||
| -memsize || decimal number || Memory size | | -memsize || decimal number || Memory size | ||
|- | |- | ||
| -la_type || | | -la_type || "B" or "C" || LiveArea type | ||
|- | |- | ||
| -bg || none || Run in background | | -bg || none || Run in background | ||
Line 1,027: | Line 1,440: | ||
| -nonsuspendable || none || Non-suspendable | | -nonsuspendable || none || Non-suspendable | ||
|- | |- | ||
| -titleid || string ( | | -titleid || string (8 chars, 9 bytes) || TitleId | ||
|- | |- | ||
| -phcontmemsize || decimal number || Physical | | -phcontmemsize || decimal number || Physical contiguous memory size | ||
|- | |- | ||
| -livearea_off || none || No LiveArea | | -livearea_off || none || No LiveArea | ||
Line 1,038: | Line 1,451: | ||
|- | |- | ||
| -usecdlg || none || Use CDRAM large | | -usecdlg || none || Use CDRAM large | ||
|- | |||
| -port || "1" || Unknown, maybe BGM port | |||
|} | |} | ||
Maybe <code>type</code> is of type SceKernelProcessType like in [[SceProcessmgr#sceKernelStartProcessForKernel]]. | |||
<source lang="C"> | <source lang="C"> | ||
/** | /** | ||
* @brief Launch an application for debugging | * @brief Launch an application for debugging | ||
Line 1,063: | Line 1,463: | ||
* @param[in] path Path to the executable to load | * @param[in] path Path to the executable to load | ||
* @param[in] args Arguments to pass to the executable and to configure appmgr | * @param[in] args Arguments to pass to the executable and to configure appmgr | ||
* @param[in] arg_size | * @param[in] arg_size Size of the args passed in | ||
* @param[in] type Set to 0x80000000 for debugging launch | * @param[in] type Set to 0x80000000 for debugging launch | ||
* @param[in] param | * @param[in] param Pointer to launch params | ||
* @param unk unknown, set to nullptr | * @param unk unknown, set to nullptr | ||
* | * | ||
* @return pid on success, else < 0. | * @return pid on success, else < 0. | ||
*/ | */ | ||
int sceAppMgrLaunchAppByPathForDriver(const char *path, const char *args, unsigned arg_size, unsigned int type, const SceAppMgrLaunchParam * | int sceAppMgrLaunchAppByPathForDriver(const char *path, const char *args, unsigned arg_size, unsigned int type, const SceAppMgrLaunchParam *pParam, void *unk); | ||
</source> | </source> | ||
Line 1,127: | Line 1,527: | ||
|} | |} | ||
Call [[SceAppMgr#sceAppMgrAppDataMountForDriver|sceAppMgrAppDataMountForDriver]] with mount_id 0x64. | |||
<source lang="C"> | <source lang="C"> | ||
struct sceAppMgrPhotoMountParam | typedef struct sceAppMgrPhotoMountParam { | ||
{ | SceSize size; | ||
char unk4[128]; | char unk4[128]; | ||
}; | } sceAppMgrPhotoMountParam; | ||
int sceAppMgrPhotoMountForDriver(sceAppMgrPhotoMountParam *opt); | int sceAppMgrPhotoMountForDriver(sceAppMgrPhotoMountParam *opt); | ||
Line 1,321: | Line 1,720: | ||
<source lang="C">int sceAppMgrWorkDirMountForDriver(int mountId, char *mountPoint);</source> | <source lang="C">int sceAppMgrWorkDirMountForDriver(int mountId, char *mountPoint);</source> | ||
=== | === sceAppMgrGetUserDirPathForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x0813AFCA | | 0.990-3.60 || 0x0813AFCA | ||
|} | |} | ||
derived from _sceAppMgrGetUserDirPath | |||
<source lang="C"> | |||
// partition_id: 1 (ur0:) or 2 (ux0:) | |||
int sceAppMgrGetUserDirPathForDriver(int partition_id, char *userDirPath, SceSize path_maxlen); | |||
</source> | |||
=== sceAppMgrAppParamGetIntForDriver === | === sceAppMgrAppParamGetIntForDriver === | ||
Line 1,337: | Line 1,743: | ||
|} | |} | ||
=== | === sceAppMgrGetShellPidForDriverForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x2FEACA9F | | 0.990-3.60 || 0x2FEACA9F | ||
|} | |} | ||
=== | === sceAppMgrSpawnProcessForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x324DD34E | | 0.990-3.60 || 0x324DD34E | ||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="C">SceUID sceAppMgrSpawnProcessForDriver(const char *name, SceKernelProcessType type, const char *path, SceSize argSize, const void *pArgBlock, void *pOpt);</source> | |||
=== sceAppMgrKillAppByNameForDebuggerForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x0C5D65F1 | | 3.60-3.65 || 0x0C5D65F1 | ||
|} | |} | ||
=== | === sceAppMgrRdrfpMountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,369: | Line 1,779: | ||
|} | |} | ||
=== | <source lang="C">int sceAppMgrRdrfpMountForDriver(SceUInt32 id, const char *path, const void *passcode, char *mountpoint);</source> | ||
=== sceAppMgrLaunchAppByNameForDebuggerForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,377: | Line 1,789: | ||
|} | |} | ||
=== | === sceAppMgrGetPidByNameForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,385: | Line 1,797: | ||
|} | |} | ||
=== | === sceAppMgrSuspendAppForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,393: | Line 1,805: | ||
|} | |} | ||
=== | <source lang="C">int sceAppMgrSuspendAppForDebuggerForDriver(SceUID id);</source> | ||
=== sceAppMgrSaveDataDataSaveForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,401: | Line 1,815: | ||
|} | |} | ||
=== | === sceAppMgrLiveAreaOperationByNameForLoadpForDriver_1 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,409: | Line 1,823: | ||
|} | |} | ||
=== | === sceAppMgrLiveAreaOperationByNameForLoadpForDriver_2 === | ||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xDD5BEEE3 | |||
|} | |||
=== sceAppMgrGetAppIdByNameForDebuggerForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,417: | Line 1,839: | ||
|} | |} | ||
=== | === sceAppMgrLaunchAppForTest2ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,425: | Line 1,847: | ||
|} | |} | ||
=== | Used by [[SceDeci4pLoadp]]. | ||
Requires [[SceSblACMgr#sceSblACMgrHasUserDebugFlagForDriver|sceSblACMgrHasUserDebugFlagForDriver]] to return true. | |||
=== sceAppMgrLaunchAppByNameInternalForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,433: | Line 1,859: | ||
|} | |} | ||
=== | === sceAppMgrSpawnProcessExtForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xC4924946 | | 0.990-3.60 || 0xC4924946 | ||
|} | |} | ||
=== | Call sceKernelSpawnProcessExtForKernel. | ||
<source lang="C">int sceAppMgrSpawnProcessExtForDriver(int a1, int a2, int a3, int a4, int a5, int a6, int a7);</source> | |||
=== sceAppMgrKillAppForDebuggerForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xD80566DB | | 0.990-3.60 || 0xD80566DB | ||
|} | |} | ||
Line 1,454: | Line 1,884: | ||
/** | /** | ||
* @brief Kill an app process. | * @brief Kill an app process. | ||
* @param[in] | * @param[in] id The app to kill. | ||
* @return Zero on success, else < 0. | * @return Zero on success, else < 0. | ||
*/ | */ | ||
int | int sceAppMgrKillAppForDebuggerForDriver(SceUID id); | ||
</source> | </source> | ||
=== | === SceAppMgrForDriver_DC13160A === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,468: | Line 1,898: | ||
|} | |} | ||
Gets App Status by App Id. | |||
<source lang="C">int SceAppMgrForDriver_DC13160A(SceInt32 appId, void* pAppStatus);</source> | |||
=== | === sceAppMgrRdrfpUmountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,484: | Line 1,910: | ||
|} | |} | ||
=== | === sceAppMgrSaveDataDataRemoveForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,492: | Line 1,918: | ||
|} | |} | ||
=== | === sceAppMgrResumeAppByNameForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,500: | Line 1,926: | ||
|} | |} | ||
=== | === sceAppMgrSuspendAppByNameForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,508: | Line 1,934: | ||
|} | |} | ||
=== | === sceAppMgrResumeAppForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,515: | Line 1,941: | ||
| 0.990-3.60 || 0xF9A61E94 | | 0.990-3.60 || 0xF9A61E94 | ||
|} | |} | ||
<source lang="C">int sceAppMgrResumeAppForDebuggerForDriver(SceUID id);</source> | |||
=== sceAppMgrDestroyOtherAppByPidForDriver === | === sceAppMgrDestroyOtherAppByPidForDriver === | ||
Line 1,524: | Line 1,952: | ||
|} | |} | ||
== | === sceAppMgrPhotoUmountForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0xDCADB9FE | ||
|} | |} | ||
<source lang="C">int sceAppMgrPhotoUmountForDriver(void);</source> | |||
=== | === SceAppMgrForDriver_BDD1FBD1 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0xBDD1FBD1 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | === SceAppMgrForDriver_3C7B4B77 === | ||
{| class="wikitable" | |||
=== _sceAppMgrAcquireSoundOutExclusive3 === | |- | ||
! Version !! NID | |||
|- | |||
| 0.990 || 0x3C7B4B77 | |||
|} | |||
== SceAppMgr == | |||
=== __sceAppMgrGetAppState === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x210C0046 | |||
|} | |||
exported to user by <code>SceDriverUser</code> | |||
<source lang="C">int _sceAppMgrGetAppState(SceAppMgrAppState *appState, SceUInt32 sizeofSceAppMgrAppState, SceUInt32 buildVersion);</source> | |||
=== _sceAppMgrAcidDirSet === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69-3.60 || 0x6CBCBE1A | |||
|} | |||
exported to user by <code>SceDriverUser</code> | |||
=== _sceAppMgrAcquireSoundOutExclusive3 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,629: | Line 2,085: | ||
<source lang="C"> | <source lang="C"> | ||
struct sceAppMgrAppDataMountByIdOpt | typedef struct sceAppMgrAppDataMountByIdOpt { | ||
{ | |||
int reserved1; | int reserved1; | ||
int reserved2; | int reserved2; | ||
}; | } sceAppMgrAppDataMountByIdOpt; | ||
int _sceAppMgrAppDataMountById(int mountId, generic_mount_ctx *mctx, char *mountPoint, sceAppMgrAppDataMountByIdOpt *opt); | int _sceAppMgrAppDataMountById(int mountId, generic_mount_ctx *mctx, char *mountPoint, sceAppMgrAppDataMountByIdOpt *opt); | ||
Line 1,689: | Line 2,144: | ||
<source lang="c"> | <source lang="c"> | ||
typedef struct sceAppMgrAppParamGetString_opt | typedef struct sceAppMgrAppParamGetString_opt { // size is 0x10 on 3.60 | ||
{ | SceSize size; | ||
int32_t unk_4; | int32_t unk_4; | ||
int32_t unk_8; | int32_t unk_8; | ||
int32_t unk_C; | int32_t unk_C; | ||
}sceAppMgrAppParamGetString_opt; | } sceAppMgrAppParamGetString_opt; | ||
//example: | // example: | ||
//sceAppMgrAppParamGetString_opt opt; | // sceAppMgrAppParamGetString_opt opt; | ||
//opt. | // opt.size = 0x10; | ||
//sceAppMgrAppParamGetString( | // sceAppMgrAppParamGetString(pid, 0xC, &buffer, &opt); | ||
int _sceAppMgrAppParamGetString(int pid, int param, char *string, sceAppMgrAppParamGetString_opt* | int _sceAppMgrAppParamGetString(int pid, int param, char *string, sceAppMgrAppParamGetString_opt *opt); | ||
</source> | </source> | ||
On WebKit: | On WebKit: | ||
0xC - return current process application name | 0xC - return current process application name | ||
0x8 - | 0x8 - gda | ||
On PSM Dev | On PSM Dev: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Cmd !! Output | ! Cmd !! Output | ||
|- | |- | ||
Line 1,732: | Line 2,185: | ||
|- | |- | ||
| 0x65 || PlayStationArMobile Development Assistant | | 0x65 || PlayStationArMobile Development Assistant | ||
|} | |} | ||
Line 1,795: | Line 2,247: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
Checks game data rif from \license\app\. | |||
<source lang="C"> | <source lang="C"> | ||
typedef struct _sceAppMgrCheckRifGD_opt //size is | typedef struct _sceAppMgrCheckRifGD_opt { // size is 0x8 on FW 3.60 | ||
uint32_t unk_0; | uint32_t unk_0; | ||
uint32_t unk_4; | uint32_t unk_4; | ||
}_sceAppMgrCheckRifGD_opt | } _sceAppMgrCheckRifGD_opt; | ||
//path is a temporary mount point acquired with _sceAppMgrGameDataMount | // path is a temporary mount point acquired with _sceAppMgrGameDataMount | ||
//dest should be buffer of size 0x70 | // dest should be buffer of size 0x70 | ||
int _sceAppMgrCheckRifGD(char* path, void* dest, _sceAppMgrCheckRifGD_opt* opt); | int _sceAppMgrCheckRifGD(const char *path, void *dest, _sceAppMgrCheckRifGD_opt *opt); | ||
</source> | |||
=== _sceAppMgrContentInstallPeriodStart === | === _sceAppMgrContentInstallPeriodStart === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,856: | Line 2,306: | ||
<source lang="c"> | <source lang="c"> | ||
// example: _sceMgrConvertVs0userDrivePath("vs0:sys/external", | // example: | ||
// char sys_external_path[16]; | |||
// memset(sys_external_path, 0, sizeof(sys_external_path)); | |||
// _sceMgrConvertVs0userDrivePath("vs0:sys/external", &sys_external_path, 1024);. | |||
int _sceAppMgrConvertVs0UserDrivePath(const char *path, char | // path_maxlen must be <= 1024 | ||
int _sceAppMgrConvertVs0UserDrivePath(const char *path, char *converted_path, SceSize path_maxlen); | |||
</source> | </source> | ||
Line 1,869: | Line 2,323: | ||
|} | |} | ||
Exported to user by [[SceDriverUser]]. | |||
<source lang="C"> | <source lang="C"> | ||
int _sceAppMgrDeclareShellProcess2 (char | // name: 32 bytes null-terminated string, maybe process name | ||
// unused: 8 bytes buffer, unused on FW 3.60 | |||
int _sceAppMgrDeclareShellProcess2(const char* name, void* unused); | |||
</source> | </source> | ||
Line 1,914: | Line 2,370: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
// id: seen 600 | |||
int _sceAppMgrForceUmount(int id); | |||
</source> | |||
=== _sceAppMgrGameDataMount === | === _sceAppMgrGameDataMount === | ||
Line 1,926: | Line 2,387: | ||
<source lang="C"> | <source lang="C"> | ||
typedef struct _sceAppMgrGameDataMount_opt //size is 0x18 | typedef struct _sceAppMgrGameDataMount_opt { // size is 0x18 on FW 3.60 | ||
char* mount_point; | char* mount_point; | ||
uint32_t unk_4; | uint32_t unk_4; | ||
Line 1,934: | Line 2,394: | ||
uint32_t unk_10; | uint32_t unk_10; | ||
uint32_t unk_14; | uint32_t unk_14; | ||
}_sceAppMgrGameDataMount_opt; | } _sceAppMgrGameDataMount_opt; | ||
int _sceAppMgrGameDataMount(char *app_path, char *patch_path, char *rif_file_path, _sceAppMgrGameDataMount_opt* opt) | int _sceAppMgrGameDataMount(char *app_path, char *patch_path, char *rif_file_path, _sceAppMgrGameDataMount_opt *opt) | ||
</source> | </source> | ||
=== | === __sceAppMgrGetAppInfo === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,945: | Line 2,405: | ||
|- | |- | ||
| 0.990 || 0xCA7AF469 | | 0.990 || 0xCA7AF469 | ||
|} | |||
=== _sceAppMgrGetAppInfo === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |- | ||
| 1.69-3.60 || 0x6E65D746 | | 1.69-3.60 || 0x6E65D746 | ||
Line 1,950: | Line 2,416: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C">int _sceAppMgrGetAppInfo(SceAppMgrAppInfo *pAppInfo, SceUInt32 infoSize, SceUInt32 buildVersion);</source> | |||
=== _sceAppMgrGetAppMgrState === | === _sceAppMgrGetAppMgrState === | ||
Line 1,956: | Line 2,424: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x55C60D20 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C">int _sceAppMgrGetAppMgrState(SceAppMgrAppMgrState *AppMgrState);</source> | |||
=== _sceAppMgrGetAppParam2 === | === _sceAppMgrGetAppParam2 === | ||
Line 1,976: | Line 2,446: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x258C3E3C | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetAppParam_opt { // size is 0x8 on FW 0.990 | |||
SceSize appParamSize; | |||
SceUint32 reserved0; | |||
} _sceAppMgrGetAppParam_opt; | |||
int _sceAppMgrGetAppParam(SceAppMgrAppParam *appParam, _sceAppMgrGetAppParam_opt *opt); | |||
</source> | |||
=== _sceAppMgrGetBootParam === | === _sceAppMgrGetBootParam === | ||
Line 1,986: | Line 2,465: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xEEFBC756 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetBootParam_opt { // size is 0x8 on FW 0.990 | |||
SceSize bootParamSize; // 0x0 | |||
SceUint unk_8; // 0x4 | |||
} _sceAppMgrGetBootParam_opt; | |||
int _sceAppMgrGetBootParam(uint32_t a1, SceAppMgrBootParam *bootParam, _sceAppMgrGetBootParam_opt *opt);</source> | |||
=== _sceAppMgrGetBudgetInfo === | === _sceAppMgrGetBudgetInfo === | ||
Line 2,003: | Line 2,490: | ||
Example from webcore | Example from webcore | ||
<source lang="C">SceAppMgrUser_5F00F261(&struct_of_size_0x88)</source> | <source lang="C">SceAppMgrUser_5F00F261(&struct_of_size_0x88);</source> | ||
=== _sceAppMgrGetCoredumpStateForShell === | === _sceAppMgrGetCoredumpStateForShell === | ||
Line 2,030: | Line 2,517: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x81569A58 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C">int _sceAppMgrGetCurrentBgmState(void **currentBgmId, void **currentBgmState);</source> | |||
=== _sceAppMgrGetDevInfo === | === _sceAppMgrGetDevInfo === | ||
Line 2,047: | Line 2,536: | ||
Example from store_checkout_plugin. | Example from store_checkout_plugin. | ||
<source lang="C">_sceAppMgrGetDevInfo("ux0:", buffer, resultbuf)</source> | <source lang="C">_sceAppMgrGetDevInfo("ux0:", buffer, resultbuf);</source> | ||
=== _sceAppMgrGetFgAppInfo === | === _sceAppMgrGetFgAppInfo === | ||
Line 2,064: | Line 2,553: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xC311CC17 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetIdByName_opt { // size is 0x8 on FW 0.990 | |||
SceSize appNameSize; | |||
SceUint32 reserved0; | |||
} _sceAppMgrGetIdByName_opt; | |||
int _sceAppMgrGetIdByName(SceUID *id, const char *appName, _sceAppMgrGetIdByName_opt *opt); | |||
</source> | |||
=== _sceAppMgrGetMediaTypeFromDriveByPid === | === _sceAppMgrGetMediaTypeFromDriveByPid === | ||
Line 2,104: | Line 2,602: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x08E93582 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetNameById_opt { // size is 0x8 on FW 0.990 | |||
SceSize appNameSize; | |||
SceUint32 reserved0; | |||
} _sceAppMgrGetNameById_opt; | |||
int _sceAppMgrGetNameById(SceUID id, char *appName, _sceAppMgrGetNameById_opt *opt); | |||
</source> | |||
=== _sceAppMgrGetPfsDrive === | === _sceAppMgrGetPfsDrive === | ||
Line 2,147: | Line 2,654: | ||
* Get the real/resolved path of app0: (where it's actually mounted) | * Get the real/resolved path of app0: (where it's actually mounted) | ||
* | * | ||
* @param[in] appId | * @param[in] appId | ||
* @param[out] resolved_path - Buffer that will hold the resolved path. It should have enough room to hold 292 characters or it will buffer overflow (noname120). | * @param[out] resolved_path - Buffer that will hold the resolved path. It should have enough room to hold 292 characters or it will buffer overflow (noname120). | ||
* | * | ||
Line 2,174: | Line 2,681: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | <source lang="C"> | ||
/** | /** | ||
* Resolve a path to the corresponding true path (uses :: | * Resolve a path to the corresponding true path (uses ::sceFiosKernelOverlayResolveSyncForDriver underneath). | ||
* | * | ||
* @param[in] path - Path to convert (e.g. app0:) | * @param[in] path - Path to convert (e.g. app0:) | ||
Line 2,220: | Line 2,725: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
* check auth id SceContentManager(0x280000000000002D) | * check that current app auth id is SceContentManager (0x280000000000002D) | ||
* check some flag set by SceSblPostSsMgrForDriver (related to utoken_sm.self | * check some flag set by [[SceSblPostSsMgr#SceSblPostSsMgrForDriver]] (related to [[Secure_Modules_Functions#utoken_sm.self|utoken_sm.self]]) | ||
* read sealedkey from <path>/sce_sys/sealedkey to restore klicensee | * read sealedkey from <path>/sce_sys/sealedkey to restore klicensee | ||
* mount PFS tsXXXXXXXXXXXX: mountpoint to <path> path with | * mount PFS tsXXXXXXXXXXXX: mountpoint to <path> path with mount ID 0x3ED | ||
* get ACCOUNT_ID from <path>/sce_sys/param.sfo | * get ACCOUNT_ID from <path>/sce_sys/param.sfo | ||
<source lang="C"> | <source lang="C"> | ||
struct | typedef struct _sceAppMgrGetSaveDataInfoForSpecialExport_opt { // size is 0x8 on FW 3.60 | ||
{ | |||
int reserved0; | int reserved0; | ||
int reserved1; | int reserved1; | ||
}; | } _sceAppMgrGetSaveDataInfoForSpecialExport_opt; | ||
int _sceAppMgrGetSaveDataInfoForSpecialExport(char *path, char *account_id, | int _sceAppMgrGetSaveDataInfoForSpecialExport(char *path, char *account_id, _sceAppMgrGetSaveDataInfoForSpecialExport_opt *opt); | ||
</source> | </source> | ||
Line 2,247: | Line 2,751: | ||
<source lang="C"> | <source lang="C"> | ||
struct | typedef struct _sceAppMgrGetSaveDataInfo_res { | ||
{ | |||
int enum_flag_0; | int enum_flag_0; | ||
int enum_flag_4; | int enum_flag_4; | ||
Line 2,256: | Line 2,759: | ||
int open_psid_related_14; | int open_psid_related_14; | ||
int ioctl_related_18; | int ioctl_related_18; | ||
}; | } _sceAppMgrGetSaveDataInfo_res; | ||
struct | typedef struct _sceAppMgrGetSaveDataInfo_opt { // size is 0x10 on FW 3.60 | ||
{ | _sceAppMgrGetSaveDataInfo_res *res; | ||
int unk_4; | |||
int | int unk_8; | ||
int | int unk_C; | ||
int | } _sceAppMgrGetSaveDataInfo_opt; | ||
}; | |||
int _sceAppMgrGetSaveDataInfo(char *path, | int _sceAppMgrGetSaveDataInfo(char *path, SceTitleId *titleid, int force_mount_ux, _sceAppMgrGetSaveDataInfo_opt *opt); | ||
</source> | </source> | ||
Line 2,279: | Line 2,781: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C">int _sceAppMgrGetStatusByAppId(int appId, SceAppMgrAppStatus *appStatus);</source> | |||
=== _sceAppMgrGetStatusById === | |||
=== _sceAppMgrGetStatusById === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x211D9558 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetStatusById_opt { // size is 0x8 on FW 0.990 | |||
SceSize appStatusSize; | |||
uint32_t reserved1; | |||
} _sceAppMgrGetStatusById_opt; | |||
int _sceAppMgrGetStatusById(SceUID id, SceAppMgrAppStatus *appStatus, _sceAppMgrGetStatusById_opt *opt);</source> | |||
=== _sceAppMgrGetStatusByName === | === _sceAppMgrGetStatusByName === | ||
Line 2,301: | Line 2,806: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x46998AFC | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetStatusByName_opt { // size is 0x10 on FW 0.990 | |||
SceSize appNameSize; // max value is 32 | |||
SceSize appStatusSize; | |||
uint32_t reserved1; | |||
uint32_t reserved2; | |||
} _sceAppMgrGetStatusByName_opt; | |||
int _sceAppMgrGetStatusByName(const char* appName, SceAppMgrAppStatus *appStatus, sceAppMgrGetStatus_opt *opt); | |||
_sceAppMgrGetStatusByName( | |||
</source> | </source> | ||
Line 2,337: | Line 2,847: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x84B138BF | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct _sceAppMgrGetUserDirPath_opt { // size is 0x8 on FW 0.990 | |||
SceSize path_maxlen; // Must be <= 1024 | |||
SceUint32 reserved1; | |||
} _sceAppMgrGetUserDirPath_opt; | |||
// partition_id: 1 (ur0:), 2 (ux0:) | |||
int _sceAppMgrGetUserDirPath(int partition_id, char *userDirPath, SceSize path_maxlen, _sceAppMgrGetUserDirPath_opt *opt); | |||
</source> | |||
=== _sceAppMgrGetVs0UserDataDrive === | === _sceAppMgrGetVs0UserDataDrive === | ||
Line 2,347: | Line 2,867: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xC361C084 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
Get drive for mountId 0x3EF. | |||
<source lang="C">int _sceAppMgrGetVs0UserDataDrive(ScePfsRndDriveId *rnd_drive_id);</source> | |||
=== _sceAppMgrGetVs0UserModuleDrive === | === _sceAppMgrGetVs0UserModuleDrive === | ||
Line 2,357: | Line 2,881: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x85589E87 | ||
|} | |} | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
Get drive for mountId 0x3EE. | |||
<source lang="C">int _sceAppMgrGetVs0UserModuleDrive(ScePfsRndDriveId *rnd_drive_id);</source> | |||
=== _sceAppMgrInitSafeMemoryById === | === _sceAppMgrInitSafeMemoryById === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,461: | Line 2,989: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
typedef struct SceAppMgrLaunchAppByUri2Param { // Size is 0x40 on FW 3.60 | |||
SceSize size; // Size of this structure | |||
SceUInt32 unk_4; // ex: 0 | |||
SceUInt32 unk_8; // ex: -1 | |||
SceUInt32 unk_C; | |||
SceUInt32 unk_10; | |||
SceUInt32 unk_14; // ex: -1 | |||
SceUInt8 reserved[0x28]; | |||
} SceAppMgrLaunchAppByUri2Param; | |||
int _sceAppMgrLaunchAppByUri2(const char *uri, SceAppMgrLaunchAppByUri2Param *pParam); | |||
</source> | |||
=== _sceAppMgrLaunchAppByUri === | === _sceAppMgrLaunchAppByUri === | ||
Line 2,509: | Line 3,051: | ||
int _sceAppMgrLoadExec(const char *appPath, /* Path of SELF file. SELF file must be put immediatly under app0: */ | int _sceAppMgrLoadExec(const char *appPath, /* Path of SELF file. SELF file must be put immediatly under app0: */ | ||
char *const argv[], /* Array of arguments pass the entry function of new SELF */ | char *const argv[], /* Array of arguments pass the entry function of new SELF */ | ||
const SceAppMgrLoadExecOptParam *optParam /* Not used in | const SceAppMgrLoadExecOptParam *optParam /* Not used in usermode. Must be NULL */ | ||
); | ); | ||
</source> | </source> | ||
Line 2,561: | Line 3,103: | ||
* check that mountId is 0x258 | * check that mountId is 0x258 | ||
* calls non exported function equal to kernel level of [[ | * calls non exported function equal to kernel level of [[#sceAppMgrWorkDirMountById]] | ||
<source lang="C"> | <source lang="C"> | ||
struct sceAppMgrLoopBackMountOpt | typedef struct sceAppMgrLoopBackMountOpt { | ||
{ | |||
int reserved0; | int reserved0; | ||
int reserved1; | int reserved1; | ||
}; | } sceAppMgrLoopBackMountOpt; | ||
int _sceAppMgrLoopBackMount(int mountId, char * | // part_name: name of the emulated partition image | ||
int _sceAppMgrLoopBackMount(int mountId, char *part_name, char *mountPoint, sceAppMgrLoopBackMountOpt *opt); | |||
</source> | </source> | ||
Line 2,689: | Line 3,231: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
/* Get the number of events from AppMgr */ | |||
int _sceAppMgrReceiveEventNum(int *eventNum /* Number of events in the queue */ | |||
); | |||
</source> | |||
=== _sceAppMgrReceiveEvent === | === _sceAppMgrReceiveEvent === | ||
Line 2,699: | Line 3,247: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C"> | |||
/* Get events from AppMgr */ | |||
int _sceAppMgrReceiveEvent(SceAppMgrEvent *appEvent); | |||
</source> | |||
=== _sceAppMgrReceiveNotificationRequestForShell === | === _sceAppMgrReceiveNotificationRequestForShell === | ||
Line 2,729: | Line 3,282: | ||
exported to user by <code>SceDriverUser</code> | exported to user by <code>SceDriverUser</code> | ||
<source lang="C">int _sceAppMgrReceiveSystemEvent(SceAppMgrSystemEvent *systemEvent);</source> | |||
=== _sceAppMgrSaveDataAddMount === | === _sceAppMgrSaveDataAddMount === | ||
Line 3,000: | Line 3,555: | ||
<source lang="C"> | <source lang="C"> | ||
/* Set network disconnection warning dialog state */ | /* Set network disconnection warning dialog state */ | ||
int _sceAppMgrSetNetworkDisconnectionWarningDialogState(SceBool enable, const SceAppMgrNetworkDisconnectionWarningDialogStateOptParam *optParam); | |||
</source> | </source> | ||
Line 3,111: | Line 3,666: | ||
}; | }; | ||
int _sceAppMgrThemeDataMount( | int _sceAppMgrThemeDataMount(SceTitleId *titleid, const char *theme_path, const char *rif_file_path, sceAppMgrThemeDataMountOpt *opt); | ||
</source> | </source> | ||
Line 3,134: | Line 3,689: | ||
}; | }; | ||
int _sceAppMgrTrophyMountById(int mountId, | int _sceAppMgrTrophyMountById(int mountId, SceTitleId *titleId, char *mountPoint, sceAppMgrTrophyMountByIdOpt *opt); | ||
</source> | </source> | ||
Line 3,278: | Line 3,833: | ||
| 1.69-3.60 || 0xAFCEAB96 | | 1.69-3.60 || 0xAFCEAB96 | ||
|} | |} | ||
<source lang="C"> | |||
/* Get BGM port and sound BGM even when not in front */ | |||
int sceAppMgrAcquireBgmPort(void); | |||
</source> | |||
=== sceAppMgrAcquireBtrm === | === sceAppMgrAcquireBtrm === | ||
Line 3,311: | Line 3,871: | ||
|} | |} | ||
<source lang="C">int sceAppMgrActivateApp(int appId);</source> | |||
<source lang="C"> | |||
int sceAppMgrActivateApp(int | |||
</source> | |||
=== sceAppMgrDeactivateApp === | === sceAppMgrDeactivateApp === | ||
Line 3,573: | Line 4,129: | ||
|} | |} | ||
=== sceAppMgrReleaseBtrm === | <source lang="C"> | ||
/* Open the acquired BGM port */ | |||
int sceAppMgrReleaseBgmPort(void); | |||
</source> | |||
=== sceAppMgrReleaseBtrm === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 3,715: | Line 4,276: | ||
|- | |- | ||
| 1.69-3.60 || 0xF7DFE96E | | 1.69-3.60 || 0xF7DFE96E | ||
|} | |||
=== sceAppMgrSetInfobarStateForShellByPid === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69 || 0xA3314B2B | |||
|} | |} | ||
Line 3,727: | Line 4,296: | ||
<source lang="C"> | <source lang="C"> | ||
/* Set infobar state */ | /* Set infobar state */ | ||
int _sceAppMgrSetInfobarState(SceAppMgrInfoBarVisibility visibility, SceAppMgrInfoBarColor color, SceAppMgrInfoBarTransparency transparency); | |||
</source> | </source> | ||
Line 3,785: | Line 4,354: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 || 0xD3787750 | | 0.990-1.69 || 0xD3787750 | ||
|- | |- | ||
| 3.60 || NOT PRESENT | | 3.60 || NOT PRESENT | ||
Line 3,840: | Line 4,409: | ||
|} | |} | ||
<source lang="C">int _sceAppMgrGetParam(int app_id, char *param_buffer);</source> | |||
<source lang="C"> | |||
_sceAppMgrGetParam(int | |||
</source> | |||
=== _sceAppMgrSendEvent === | === _sceAppMgrSendEvent === | ||
Line 3,852: | Line 4,416: | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69 || 0x5432E51D | | 0.990-1.69 || 0x5432E51D | ||
|- | |- | ||
| 3.60 || NOT PRESENT | | 3.60 || NOT PRESENT | ||
Line 3,927: | Line 4,491: | ||
|} | |} | ||
=== | === _sceAppMgrAssignVoicePortByPid === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 3,943: | Line 4,499: | ||
|} | |} | ||
=== | === _sceAppMgrAssignVoicePortByAppId === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 3,951: | Line 4,507: | ||
|} | |} | ||
=== | === _sceAppMgrGetRunStatus === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 3,959: | Line 4,515: | ||
|} | |} | ||
= | <source lang="C">int _sceAppMgrGetRunStatus(void);</source> | ||
=== | === _sceAppMgrDump === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0xEEDDB508 | ||
|} | |} | ||
=== | <source lang="C">int _sceAppMgrDump(void);</source> | ||
=== _sceAppMgrIsGameProgram === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0x13C5CB3D | ||
|} | |} | ||
=== | === _sceAppMgrActivateApp === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0x86B07AD5 | ||
|} | |} | ||
=== | <source lang="C">int _sceAppMgrActivateApp(SceUID appId);</source> | ||
=== _sceAppMgrDestroyApp === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0x14945ECE | ||
|} | |} | ||
=== | Returns 0 on success. | ||
<source lang="C">int _sceAppMgrDestroyApp(SceUID appId);</source> | |||
=== _sceAppMgrInfoBarClose === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0x1819E285 | ||
|} | |} | ||
=== | <source lang="C">int _sceAppMgrInfoBarClose(void);</source> | ||
== SceSharedFb == | |||
=== sceSharedFbOpen === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0xD2B27255 | ||
|} | |} | ||
=== | === _sceSharedFbOpen === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1.69-3.60 || | | 1.69-3.60 || 0xB358E1B6 | ||
|} | |} | ||
=== | <source lang="C"> | ||
a1 - set 1 | |||
SceUID _sceSharedFbOpen(int a1, int sysver); | |||
</source> | |||
=== sceSharedFbBegin === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x72067C6B | |||
|} | |||
note : If do not call sceSharedFbEnd after calling sceSharedFbBegin, you cannot return to the home | |||
<source lang="C"> | |||
int sceSharedFbBegin(SceUID shared_fb_id, SceSharedFbInfo *info); | |||
</source> | |||
=== sceSharedFbClose === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x33DA3428 | ||
|} | |} | ||
=== | <source lang="C"> | ||
int sceSharedFbClose(SceUID shared_fb_id); | |||
</source> | |||
=== sceSharedFbCreate === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.990-3.60 || 0xD6C643B5 | ||
|} | |} | ||
=== sceSharedFbUpdateProcessBegin === | <source lang="C"> | ||
{| class="wikitable" | |||
|- | a1 - set 1 | ||
! Version !! NID | |||
|- | SceUID sceSharedFbCreate(int a1, SceSharedFbCreate *create_param); | ||
| | |||
|} | </source> | ||
=== sceSharedFbUpdateProcessEnd === | === sceSharedFbDelete === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xBE5A1A81 | ||
|} | |} | ||
=== sceSharedFbUpdateProcess === | === sceSharedFbEnd === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xFC5A62B6 | ||
|} | |} | ||
=== sceSharedFbSetShellRenderPort === | <source lang="C"> | ||
{| class="wikitable" | |||
|- | int sceSharedFbEnd(SceUID shared_fb_id); | ||
! Version !! NID | |||
|- | </source> | ||
| 1.69 || 0x0B81B10F | |||
|} | === sceSharedFbGetInfo === | ||
{| class="wikitable" | |||
=== sceSharedFbSetRenderingOrderForTest === | |- | ||
{| class="wikitable" | ! Version !! NID | ||
|- | |- | ||
! Version !! NID | | 0.990-3.60 || 0x819954FB | ||
|- | |} | ||
| 1.69 || 0x0D2B21AE | |||
|} | <source lang="C"> | ||
== SceSharedFbForDriver == | int sceSharedFbGetInfo(SceUID shared_fb_id, SceSharedFbInfo *info); | ||
</source> | |||
=== sceSharedFbGetRenderingInfo === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x61FEEDFA | |||
|} | |||
=== sceSharedFbGetShellRenderPort === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xAC49FC1D | |||
|} | |||
<source lang="C"> | |||
int sceSharedFbGetShellRenderPort(void); | |||
</source> | |||
=== sceSharedFbUpdateProcessBegin === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xF9754AD9 | |||
|} | |||
<source lang="C"> | |||
a2 buf size is 0x40 | |||
a3 buf size is 4? | |||
int sceSharedFbUpdateProcessBegin(SceUID shared_fb_id, void *a2, void *a3); | |||
</source> | |||
=== sceSharedFbUpdateProcessEnd === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x565A9AB6 | |||
|} | |||
<source lang="C"> | |||
int sceSharedFbUpdateProcessEnd(SceUID shared_fb_id); | |||
</source> | |||
=== sceSharedFbUpdateProcess === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x3889ACF8 | |||
|} | |||
<source lang="C"> | |||
int sceSharedFbUpdateProcess(void); | |||
</source> | |||
=== sceSharedFbSetShellRenderPort === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-1.69 || 0x0B81B10F | |||
|} | |||
=== sceSharedFbSetRenderingOrderForTest === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-1.69 || 0x0D2B21AE | |||
|} | |||
== SceSharedFbForDriver == | |||
[[Category:ARM]] | |||
[[Category:Kernel]] | |||
[[Category:Modules]] | [[Category:Modules]] | ||
[[Category: | [[Category:Library]] |
Latest revision as of 05:03, 6 December 2023
Module
Version | World | Privilege |
---|---|---|
1.69-3.60 | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69-3.60 | SceAppMgrForDriver | Non-secure | Kernel | 0xDCE180F8 |
1.69-3.60 | SceAppMgr | Non-secure | User | 0x8AF17416 |
1.69-3.60 | SceSharedFb | Non-secure | User | 0x32A0442E |
1.69 | SceSharedFbForDriver | Non-secure | Kernel | 0x9B443ECC |
Types
AppId
Some functions take an AppId as argument.
ID | Description |
---|---|
-1 | Corresponds to pid 0 |
-2 | Current app |
-3 | Unknown |
-4 | Unknown |
-5 | Unknown |
-6 | Unknown |
App Run status
runStatus: set: status & 0xfffff00f | runStatus_new get: status & f running: 2 suspended: 0x20 resumed: 0x10 debuggerRunStatus: set: status & 0xfff0ffff | debuggerRunStatus_new get: status & f0000 activeness: set: status & 0xfffffff0 | activeness_new get: status & 0xff0 anything (0x30, 2) -> 1 0x10 -> 0x11 0x200 -> 0 WaiterExistentFlag: set: status | 0x1000 unset: & 0xffff0fff TABLE: 0 nothing 1 SCE_APP_RUN_FLAG_DEACTIVATE 2 SCE_APP_RUN_FLAG_ACTIVATE 0x10 resumed 0x20 suspended 0x30 SCE_APP_RUN_FLAG_CREATED 0x100 SCE_APP_RUN_FLAG_NOEXIST 0x200 unk (activeness) 0x400 unk (activeness) 0x300 SCE_APP_RUN_FLAG_RESERVED 0x500 unk (activeness) 0x800 unk (runState) 0x1000 WaiterExistentFlag 0x10000 suspend debuggerRunStatus 0x20000 kill debuggerRunStatus
SceAppMgr Mount IDs
sceAppMgrPhotoMount 0x64 sceAppMgrAppDataMount 0x64 0x65 0x66 0x67 0x69 0x6C 0x6D 0x6F 0x70 sceAppMgrAppDataMountById 0x68 0x6A 0x6B 0x6E sceAppMgrAppMount direct scePfsMount sceAppMgrPspSaveDataRootMount 0xCA sceAppMgrWorkDirMount 0xC8 0xC9 0xCA 0xCB 0xCC 0xCE sceAppMgrWorkDirMountById 0xCD 0xCF sceAppMgrTrophyMount 0x12C 0x12D 0x12E sceAppMgrTrophyMountById 0x12F 0x130 sceAppMgrMmsMount 0x190 0x191 0x192 sceAppMgrInstallDirMount 0x1F4 0x1F5 0x1F8 0x1F9 sceAppMgrLoopBackMount 0x258 sceAppMgrGameDataMount 0x3E8 0x3E9 sceAppMgrAddContAddMount 0x3EA sceAppMgrAddContMount 0x3EA 0x3EB sceAppMgrSaveDataAddMount 0x3EC sceAppMgrSaveDataMount direct scePfsMount
id | src | pfs mount mode | key type | default mount point |
---|---|---|---|---|
0x64 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x65 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x66 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x67 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x68 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x69 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x6A | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x6B | - | 0x15 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x6C | - | 0x15 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x6D | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x6E | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x6F | - | 0x15 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x70 | - | 0x15 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0xC8 | - | 0x15 | - | td%02x%02x%02x%02x%02x%02xd0: |
0xC9 | - | 0x15 | - | td%02x%02x%02x%02x%02x%02xd0: |
0xCA | - | 0x15 | - | sceSblACMgrIsNotSandboxed(0) != 0 ? ms0: : ms%s%02x%02x%02x%02x%02x%02xd0: |
0xCB | - | 0x15 | - | td%02x%02x%02x%02x%02x%02xd0: |
0xCC | - | 0x15 | - | td%02x%02x%02x%02x%02x%02xd0: |
0xCD | - | 0x15 | - | cache0: |
0xCE | - | 0x15 | - | td%02x%02x%02x%02x%02x%02xd0: |
0xCF | - | 0x15 | - | td%02x%02x%02x%02x%02x%02xd0: |
0x12D | - | 6 | Sealedkey | trophy_dst0: |
0x12E | - | 6 | Sealedkey | trophy_sys0: |
0x12F | - | 6 | Sealedkey | trophy_dat0: |
0x130 | - | 6 | Sealedkey | trophy_dbk0: |
0x190 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x191 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x192 | - | 0x16 | - | ad%02x%02x%02x%02x%02x%02xd0: |
0x1F4 | - | 4 | Sealedkey | ad%02x%02x%02x%02x%02x%02xd0: |
0x1F5 | - | 4 | Sealedkey | ad%02x%02x%02x%02x%02x%02xd0: |
0x1F8 | - | 6 | Sealedkey | sdimport0: |
0x1F9 | - | 6 | Sealedkey | sdimport_tmp0: |
0x258 | - | 6 | Sealedkey | lm%02x%02x%02x%02x%02x%02xd0: |
0x3E8 | - | 2 (0x14 for external path) | klicensee (none for external path) | app0: |
0x3E9 | - | 2 (0x14 for external path) | klicensee (none for external path) | app0: |
0x3EA | - | 4 (0xC for gro0:) | Sealedkey | addcont0: |
0x3EB | - | 4 (0xC for gro0:) | Sealedkey | addcont0: |
0x3EC | - | 5 | Sealedkey | savedata0: |
0x3ED | - | 0x15 | - | savedata0: |
0x3EE | - | 0x14 | - | sd%02x%02x%02x%02x%02x%02xd0: |
0x3EF | - | 0x14 | - | sd%02x%02x%02x%02x%02x%02xd0: |
0x3F0 | - | 0x15 | - | ud%02x%02x%02x%02x%02x%02xd0: |
MountId | real path ( X is an incremental number) |
virtual mount point ( X is randomized) |
Function to call for mounting | Used by |
---|---|---|---|---|
?0x3F? | ux0:data/near/gift | gift0: | Seen in sceAppMgrAppDataMountByIdForDriver | ?SceNear? |
0x64 | ux0:picture | photo0: | automounted or sceAppMgrAppDataMount or sceAppUtilPhotoMount |
SceEmailApp, SceHostCollaboService, ScePsp2Compat, SceSettings, SceWebBrowser, SceWebUIPlugin, by NPXS10036 |
0x64 | ? | ? | sceAppMgrPhotoMountForDriver sceAppMgrPhotoMount sceAppMgrAppDataMountForDriver |
|
0x65 | ur0:user/XX/psnfriend | adXXXXXXXXXXXX: | sceAppMgrAppDataMount | SceFriend, SceFriendListDialogPlugin, SceInvitationDlgPlugin, SceNpGameCustomDataDPlugin, SceNpMessageDialogPlugin, SceNpProfile2DialogPlugin, ScePsnMail, SceShell |
0x66 | ur0:user/XX/psnmsg | adXXXXXXXXXXXX: | sceAppMgrAppDataMount | SceInvitationDlgImplPlugin, SceMsgMiddleWare, SceNpGameCustomDataDlgImpl, SceNpMessage, SceNpMessageDlgImplPlugin |
0x67 | ur0:user/XX/near | adXXXXXXXXXXXX: | sceAppMgrAppDataMount | SceNear, SceNearAutoCheckin, SceNearAutoLocation, SceNearProfile, SceNearUtilService, by NPXS10036 |
0x68 | ? | ? | ||
? | ur0:user/XX/grpmsg | adXXXXXXXXXXXX: | ||
? | ur0:contacts | ? | ||
0x69 | ux0:music | music0: | automounted or sceAppMgrAppDataMount or sceAppUtilMusicMount |
SceAvMediaService, SceHostCollaboService, SceMusicBrowser, SceShell |
0x6A | ? | adXXXXXXXXXXXX: | sceAppMgrAppDataMountById | |
0x6B | ? | adXXXXXXXXXXXX: | sceAppMgrAppDataMountById | |
0x6C | ux0:calendar | adXXXXXXXXXXXX: | sceAppMgrAppDataMount | SceCalendar, SceCalendarBg, SceCalendarDialogPlugin, SceEmailApp |
0x6D | ux0:video | video0: | sceAppUtilExtVideoMount or sceAppMgrAppDataMount |
|
0x6E | ux0:appmeta/new (only while app promoting) ux0:appmeta/<TITLEID> |
adXXXXXXXXXXXX: | mounted when installing app / refreshing LiveArea of an app | |
0x6F | tm0:nphome | adXXXXXXXXXXXX: | mounted by NPXS10010 when playing a video bought on PSStore, mounted by NPXS10036 when downloading a video bought on PSStore (NPXS10002). SceLibMarlin, SceLibMarlinPb | |
0x70 | ux0:book | ?adXXXXXXXXXXXX:? | sceAppUtilBookMount | Reader™ (PCSC80012) |
0xC8 | ur0:temp/sqlite | tdXXXXXXXXXXXX: | mounted by some system apps | |
0xC9 | ur0:temp/attach | tdXXXXXXXXXXXX: | mounted by some games | |
0xCA | ux0:pspemu | ms0: | sceAppMgrPspSaveDataRootMount | mounted by NPXS19999 (SceShell) when asked by CMA or PspEmu or SceGameManual or Store |
0xCB | ? | tdXXXXXXXXXXXX: | sceAppMgrWorkDirMount | |
0xCC | ur0:temp/checkout | tdXXXXXXXXXXXX: | mounted by NPXS10002 (SceStoreBrowser or SceCheckoutBrowser) | |
0xCD | ux0:cache/<TITLEID> | cache0: | sceAppUtilCacheMount or sceAppMgrWorkDirMountById |
|
0xCE | ur0:temp/webbrowser | tdXXXXXXXXXXXX: | mounted by NPXS10003 (SceWebBrowser) | |
0xCF | ? | tdXXXXXXXXXXXX: | sceAppMgrWorkDirMountById | ? |
? | ux0:mtp | ? | ? | ?MTP? |
0x12C | ? | ? | sceAppMgrTrophyMount sceAppMgrTrophyMountForDriver |
? |
0x12E | ur0:user/XX/trophy/data/sce_trop | trophy_sys0: | ?sceNpTrophyCreateContext? sceAppMgrTrophyMount sceAppMgrTrophyMountForDriver |
mounted by NPXS19999 (SceShell) when asked by app or games |
0x12F | ur0:user/XX/trophy/data/<COMMID> | trophy_dat0: | sceAppMgrTrophyMountById | |
0x130 | ?ur0:user/XX/trophy/data/db? | trophy_dbk0: | sceAppMgrTrophyMountById | |
0x190 | ux0:mms/photo | adXXXXXXXXXXXX: | sceAppMgrMmsMount sceAppMgrMmsMountForDriver |
mounted by NPXS10004, by NPXS10036 |
0x191 | ux0:mms/music | adXXXXXXXXXXXX: | sceAppMgrMmsMount sceAppMgrMmsMountForDriver |
?mounted by NPXS10009? |
0x192 | ux0:mms/video | adXXXXXXXXXXXX: | sceAppMgrMmsMount sceAppMgrMmsMountForDriver |
mounted by NPXS10010, by NPXS10036 |
0x1F4 | ? | ? | ||
0x1F8 | ? | sdimport0: | ||
0x1F9 | ? | sdimport_tmp0: | ||
0x258 | ? | ? | sceAppMgrLoopBackMount | |
0x384 | ? | ? | ||
0x3E8 | ux0:temp/fakepkg/expand/<TITLEID> (PKG installer promoting), ux0:bgdl/t/XXXXXXXX/<TITLEID>/0000 (bgdl promoting), vs0:app/<TITLEID> |
gpXXXXXXXXXXXX:, app0: |
automounted ? | |
0x3E8 | ux0:app/<TITLEID>, gro0:app/<TITLEID> |
gpXXXXXXXXXXXd: | sceAppMgrGameDataMountForDriver | |
0x3E9 | ux0:temp/fakepkg/expand/<TITLEID> (PKG installer promoting), ux0:bgdl/t/XXXXXXXX/<TITLEID>/0000 (bgdl promoting) |
gpXXXXXXXXXXXX:, app0: (mounted over /app/ app0:) |
||
0x3E9 | ux0:patch/<TITLEID>, grw0:patch/<TITLEID> |
gpXXXXXXXXXXXd: | sceAppMgrGameDataMountForDriver | |
0x3EA | ux0:temp/fakepkg/expand/<TITLEID> (PKG installer promoting), ux0:bgdl/t/XXXXXXXX/<TITLEID>/0000 (bgdl promoting) |
gpXXXXXXXXXXXX:, addcont0: - addcont1: |
automounted by SceAppMgr or sceAppUtilAddcontMount or sceAppUtilDrmOpen or sceAppUtilAddcontForceAddcontMount |
|
0x3EA | gro0:addcont/<TITLEID> | ? | sceAppMgrAddContMount | |
0x3EA | ux0:addcont/<TITLEID>, grw0:addcont/<TITLEID> |
? | sceAppMgrAddContAddMount sceAppMgrAddContMount |
|
0x3EA | gro0:acinst/<titleid> | ? | sceAppMgrAcInstGetAcdirParamForDriver | |
0x3EB | ux0:addcont/<TITLEID>, grw0:addcont/<TITLEID> |
? | sceAppMgrAddContMount | |
0x3EC | ux0:theme/<CONTENTID> | tmXXXXXXXXXXXX: | sceAppMgrThemeDataMount | |
0x3ED | ? | savedata0: of ux0: or grw0: | automounted by SceAppMgr (writable mount with pfs mount) | |
0x3ED | ux0:user/XX/savedata/<TITLEID> | savedata0: ?savedata1:? |
automounted by SceAppMgr | |
0x3ED | ?any path? | tsXXXXXXXXXXXX: | sceAppMgrFakeSaveDataCreateMountForDriver sceAppMgrGetSaveDataInfoForSpecialExport |
?fake_package_installer? ?SceContentManager? |
0x3ED | ?any path? | ? | sceAppMgrLoadSaveDataSystemFile | ?fake_package_installer? |
0x3ED | ux0:user/XX/savedata_plus/work/<TITLEID> | tsXXXXXXXXXXXX: | sceAppMgrCloudDataDstCreateMountForDriver | |
0x3ED | ux0:/user/XX/savedata/<TITLEID> | tsXXXXXXXXXXXX: tsXXXXXXXXXXXXd |
sceAppMgrCloudDataSrcMountForDriver sceAppMgrUpdateSaveDataParam |
|
0x3ED | grw0:savedata/<titleid> | tsXXXXXXXXXXXX: tsXXXXXXXXXXXXd |
sceAppMgrCloudDataSrcMountForDriver sceAppMgrUpdateSaveDataParam |
|
0x3ED | ux0:/user/XX/savedata_vc/<titleid>, ux0:/user/XX/savedata/<titleid> |
? | sceAppMgrSaveDataAddMount | |
0x3EE | ? | savedata0: of not ux0: and grw0: | automounted by SceAppMgr (writable mount without pfs mount) | |
0x3EE | ur0:user/XX/savedata/<TITLEID> | savedata0: ?savedata1:? |
sceAppMgrSaveDataAddMount or sceAppUtilSaveDataMount |
|
0x3EF | vs0:sys/external | sdXXXXXXXXXXXX: | automounted | |
0x3F0 | vs0:data/external | sdXXXXXXXXXXXX: | automounted |
Types
// invalid category (not gd) or invalid TITLE ID (e.g. "VITASHELL") #define SCE_APPMGR_ERROR_INVALID_PARAM_SFO (0x80800015) typedef char[0x10] SceTitleId; typedef struct SceAppMgrLaunchParam { // size is 0x34 SceSize size; // Size of this structure SceUInt32 attr; // set to 0x80000000 to break on launch SceUInt32 initPriority; SceUInt32 unk_C; SceUInt32 unk_10; SceUInt32 unk_14; SceUInt32 budgetId; SceUInt32 unk_1C; SceUInt32 unk_20; SceUInt32 unk_24; SceUInt32 unk_28; SceUInt32 unk_2C; SceUInt32 unk_30; } SceAppMgrLaunchParam; // Linked list of these items is controlled by common function that is responsible for PFS mounting. // This function (on FW 3.60, segment 0, offset 0x19B51) is used by all other mount functions in SceAppMgr. // Linked list is used as lookup by callback that is set by sceIoSetPathMappingFunctionForDriver. // Pointer of address of first entry is: on 3.60, segment 1, offset 0x3470C. typedef struct pfs_mount_t { // size is 0x1D0 (known) int mount_id; char path[0x124]; // path used for PFS mount (like ux0:app/<TITLEID>) ScePfsRndDriveId pfs_rnd_drive_id; // PFS mount drive name - used internally by iofilemgr to connect to vfs_nodes through vfs_node_info? SceTitleId titleId; SceUInt64 auth_ids[0x10]; // array of auth ids pfs_mount_t *prev; // pointer to prev item in the list or 0 pfs_mount_t *next; // pointer to next item in the list or 0 } pfs_mount_t; struct appmgr_mount_t { // size is 0x24 (known) pfs_mount_t *this_pfs_mount; SceFiosOverlayID overlay_id; // overlay for redirecting <appmgr_rnd_drive_id> to <this_pfs_mount->pfs_rnd_drive_id>0: (if this_pfs_mount is not a 0x3E9 patch mount point ) // or <mctx->prev_pfs_mount->pfs_rnd_drive_id>0: to <this_pfs_mount->pfs_rnd_drive_id>0: (if this_pfs_mount is a 0x3E9 patch mount point ) // or <mctx->prev_pfs_mount->path> to <this_pfs_mount->path> ScePfsRndDriveId appmgr_rnd_drive_id; // used for appmgr mount - returned when executing appmgr mount function pfs_mount_t* prev_pfs_mount; // other pfs mount with same mount_id and appmgr_rnd_drive_id if mount_id is 0x3EA or 0x3E8 appmgr_mount_t* prev; // pointer to prev item in the list or 0 appmgr_mount_t* next; // pointer to next item in the list or 0 } appmgr_mount_t; typedef struct appmgr_mount_holder_t { int unk0; appmgr_mount_t *first_virt_mount; // start of the list for appmgr mounts } appmgr_mount_holder_t; typedef struct titleId_item { SceTitleId titleId; } titleId_item; // most importantly contains rif_info and keystone typedef struct phys_ctx_t { // size is 0x508 (known) int unk0[0x58]; int flag_160; int unk164; int unk168; int unk16C; int unk170; char physical_mountpoint[0xC]; int unk180[0x46]; char prefix_298[4]; int flag_29C; int unk2A0; int unk2A4; rif_info rif; char keystone_318[0x60]; SceTitleId titleId_378; SceTitleId titleid_388; titleId_item addContTitleIds[8]; titleId_item saveDataTitleIds[8]; char unk498[0x70]; } phys_ctx_t; typedef struct sub_ctx_23C2960_C { char unk0[0x128]; int unk128; int unk12C; int unk130; int unk134; int unk138; int unk13C; char unk140[0x3F8]; int unk538; int unk53C; char unk540; char unk541; char unk542; char unk543; int unk544; int unk548; } sub_ctx_23C2960_C; typedef struct sub_ctx_23C2960_558_548 { int unk0; int unk4; int unk8; int unkC; int unk10; int unk14; int unk18; int unk1C; int unk20; int unk24; int unk28; int unk2C; } sub_ctx_23C2960_558_548; // most importantly holds appmgr_mount_holder_t // which is a root for appmgr mountpoints typedef struct sub_ctx_23C2960_558 { char appName[32]; SceUID pid; int unk24; appmgr_mount_holder_t mctx_hldr_28; phys_ctx_t phys_ctx_30; sub_ctx_23C2960_558_548 unk548; } sub_ctx_23C2960_558; typedef struct sub_ctx_23C2960_AFC_10A4 { int unk0; int unk4; char unk8; char unk9; char unkA; char unkB; char unkC; char unkD; char unkE; char unkF; } sub_ctx_23C2960_AFC_10A4; typedef struct sub_ctx_23C2960_AFC { char unk_0[4260]; sub_ctx_23C2960_AFC_10A4 unk_10A4; } sub_ctx_23C2960_AFC; typedef struct sub_ctx_23C2960_1BC0_14_7EC { int unk0; int unk4; int unk8; int unkC; int unk10; int unk14; int unk18; int unk1C; int unk20; int unk24; int unk28; int unk2C; int unk30; int unk34; int unk38; int unk3C; } sub_ctx_23C2960_1BC0_14_7EC; typedef struct sub_ctx_23C2960_1BC0_14 { char unk0[2028]; sub_ctx_23C2960_1BC0_14_7EC unk7EC; } sub_ctx_23C2960_1BC0_14; struct sub_ctx_23C2960_1BC0 { __int16 unk0; __int16 unk2; int unk4; int unk8; SceUID SceAppMgrAppMutex_uid; SceUID current_thread_10; sub_ctx_23C2960_1BC0_14 unk14; } sub_ctx_23C2960_1BC0; typedef struct sub_ctx_23C2960_2400 { int unk0; int unk4; int unk8; char unkC[4]; } sub_ctx_23C2960_2400; typedef struct ctx_23C2960_SceAppInfoInternal360 { // size is 0x2410 (known) int appId; int unk4; int unk8; sub_ctx_23C2960_C unkC; sub_ctx_23C2960_558 unk_558; int flags_AC0; int unk_AC4; int is_this_process_AC8; int unk_ACC; int appmgr_0x10000001_event_indicator_AD0; int appmgr_0x10000002_event_indicator_AD4; int appmgr_0x10000003_event_indicator_AD8; int appmgr_0x20000001_event_indicator_ADC; int appmgr_0x20000004_event_indicator_AE0; int appmgr_0x10000101_0x10000102_event_indicator_AE4; int appmgr_0x10000004_event_indicator_AE8; int appmgr_0x10000006_event_indicator_AEC; int appmgr_0x10000005_event_indicator_AF0; int appmgr_0x20000010_event_indicator_AF4; int unk_AF8; sub_ctx_23C2960_AFC unk_AFC; int unk_1BB0; int unk_1BB4; __int64 timewide_1BB8; sub_ctx_23C2960_1BC0 unk_1BC0; sub_ctx_23C2960_2400 unk_2400; } ctx_23C2960; typedef ctx_23C2960 global_ctx_item; typedef struct generic_mount_ctx { SceTitleId titleId; char passCode[32]; char mountDrive[16]; } generic_mount_ctx; #define SCE_APPMGR_MAX_APP_NAME_LENGTH (31) /* Maximum app name length */ /* System event ID */ #define SCE_APPMGR_SYSTEMEVENT_ON_RESUME (0x10000003) #define SCE_APPMGR_SYSTEMEVENT_ON_STORE_PURCHASE (0x10000004) #define SCE_APPMGR_SYSTEMEVENT_ON_NP_MESSAGE_ARRIVED (0x10000005) #define SCE_APPMGR_SYSTEMEVENT_ON_STORE_REDEMPTION (0x10000006) /* Event ID (old SDK) */ #define SCE_APP_EVENT_UNK0 (0x00000003) #define SCE_APP_EVENT_ON_ACTIVATE (0x10000001) #define SCE_APP_EVENT_ON_DEACTIVATE (0x10000002) #define SCE_APP_EVENT_UNK1 (0x10000300) #define SCE_APP_EVENT_REQUEST_QUIT (0x20000001) #define SCE_APP_EVENT_UNK2 (0x30000003) /* Error number */ #define SCE_APPMGR_ERROR_BUSY (0x80802000) /* Busy */ #define SCE_APPMGR_ERROR_INTERNAL (0x80802001) /* Internal error */ #define SCE_APPMGR_ERROR_PARAM (0x80802002) /* The parameter is invalid. It is necessary to deal with it by the time of application development */ #define SCE_APPMGR_ERROR_STATE (0x80802013) /* Invalid state */ #define SCE_APPMGR_ERROR_NULL_POINTER (0x80802016) /* NULL pointer */ #define SCE_APPMGR_ERROR_INVALID (0x8080201a) /* Invalid parameter */ #define SCE_APPMGR_ERROR_INVALID_SELF_PATH (0x8080201e) /* Invalid SELF path */ #define SCE_APPMGR_ERROR_TOO_LONG_ARGV (0x8080201d) /* argv is too long */ #define SCE_APPMGR_ERROR_BGM_PORT_BUSY (0x80803000) /* The BGM port was occupied and could not be secured. Entered the queue */ /* Infobar state */ typedef enum SceAppMgrInfoBarVisibility { SCE_APPMGR_INFOBAR_VISIBILITY_INVISIBLE = 0, SCE_APPMGR_INFOBAR_VISIBILITY_VISIBLE = 1 } SceAppMgrInfoBarVisibility; typedef enum SceAppMgrInfoBarColor { SCE_APPMGR_INFOBAR_COLOR_BLACK = 0, SCE_APPMGR_INFOBAR_COLOR_WHITE = 1 } SceAppMgrInfoBarColor; typedef enum SceAppMgrInfoBarTransparency { SCE_APPMGR_INFOBAR_TRANSPARENCY_OPAQUE = 0, SCE_APPMGR_INFOBAR_TRANSPARENCY_TRANSLUCENT = 1 } SceAppMgrInfoBarTransparency; #define SCE_APP_MGR_MAX_EVENT_PARM_LENGTH (56) /* Maximum event parameter length */ /* Event structure */ typedef struct SceAppMgrEvent { // size is 0x64 int event; /* Event ID */ SceUID appId; /* Application ID. Added when required by the event */ char param[SCE_APP_MGR_MAX_EVENT_PARM_LENGTH]; /* Parameters to pass with the event */ } SceAppMgrEvent; /* System event structure */ typedef struct SceAppMgrSystemEvent { // size is 0x64 int systemEvent; /* Event ID */ union { SceUInt8 reserved[60]; } data; } SceAppMgrSystemEvent; typedef struct SceAppMgrAppState { // size is 128 bytes SceUInt32 systemEventNum; SceUInt32 appEventNum; SceBool isSystemUiOverlaid; SceUInt8 reserved[128 - sizeof(SceUInt32)*2 - sizeof(SceBool)]; } SceAppMgrAppState; typedef struct SceAppMgrAppInfo { // size is 128 bytes char appName[32]; SceUInt8 reserved[128 - 32]; } SceAppMgrAppInfo; typedef struct SceAppMgrNetworkDisconnectionWarningDialogStateOptParam { SceUInt8 reserved[128]; } SceAppMgrNetworkDisconnectionWarningDialogStateOptParam; typedef struct SceAppMgrLoadExecOptParam { int reserved[256/4]; } SceAppMgrLoadExecOptParam; // First element is at offset 0x22110 on FW 0.990 typedef struct SceAppInfo_internal { // (size is 0xADC, 4 elements max) on FW 0.990 SceUID appId; // 0x0 - Application ID - (-1) char appName[32]; // 0x4 char appPath[256]; // 0x24 SceSize budgetSize; // 0x124 SceSize phycontSize; // 0x128 SceUInt32 budget_related; // 0x12C SceUInt32 launchMode; // 0x130 - (0) SceUInt32 budgetType; // 0x134 - (0) SceUInt32 processAttr; // 0x138 - (0) SceUInt32 unk_13C; // 0x13C SceUInt32 unk_140; // 0x140 - (0) SceUID processId; // 0x144 - Process ID - (0) SceUInt32 state; // 0x148 - (-1) SceUID evfId; // 0x14C - Specify the identifier of the event flag. - (-1) SceUInt32 unk_150; // 0x150 - (0) appmgr_mount_t *mount // 0x154 char buf_158[0x114]; // 0x158 SceUInt32 unk_26C; // 0x26C - (0) SceUInt32 unk_270; // 0x270 - (0) SceUInt32 unk_274; // 0x274 SceUInt32 status; // 0x278 - bgm_priority (& ?), runStatus (& 0xf), activeness (& ff0) - (0x101) SceUInt32 unk_27C; // 0x27C - (0) SceUInt32 unk_280; // 0x280 SceUInt32 unk_284; // 0x284 - (0) SceUInt32 firstCustomEventId_maybe; // 0x288 SceUInt32 lastCustomEventId_maybe; // 0x28C SceAppMgrEvent *firstCustomEvent; // 0x290 - heap memory address of size 0x14 (the 5 following events on FW 0.990) SceUInt32 event_on_activate; // 0x294 SceUInt32 event_on_deactivate; // 0x298 SceUInt32 systemevent_on_resume; // 0x29C SceUInt32 systemevent_on_store_purchase; // 0x2A0 SceUInt32 systemevent_on_np_message_arrived; // 0x2A4 SceUInt32 appEventNum; // 0x2A8 SceAppMgrAppParam appParam // 0x2AC SceUInt32 unk_6AC; // 0x6AC SceUInt32 unk_6B0; // 0x6B0 SceUInt32 unk_6B4; // 0x6B4 char buf_6B8[0x400]; // 0x6B8 SceUInt32 unk_AB8; // 0xAB8 - (0) SceUID appMutexId; // 0xABC - SceAppMgrAppMutex uid SceUInt32 currentBgmState; // 0xAC0 - (0) SceUInt32 unk_AC4; // 0xAC4 - (-1) SceUInt32 unk_AC8; // 0xAC8 SceUInt32 unk_ACC; // 0xACC SceUInt32 callbackOnLaunch; // 0xAD0 - (-1) SceUInt32 unk_AD4; // 0xAD4 - (0) SceUInt32 unk_AD8; // 0xAD8 } SceAppInfo_internal; typedef struct SceAppMgrAppStatus { // size is 0x40 on FW 0.990 SceUInt32 unk_0; // 0x0 SceUInt32 launchMode; // 0x4 SceUInt32 bgm_priority_or_status; // 0x8 char appName[32]; // 0xC SceUInt32 unk_2C; // 0x2C SceUID appId; // 0x30 - Application ID SceUID processId; // 0x34 - Process ID SceUInt32 status_related_1; // 0x38 SceUInt32 status_related_2; // 0x3C } SceAppMgrAppStatus; typedef struct SceAppMgrAppParam { // size is 0x400 on FW 0.990 char data[0x400]; } SceAppMgrAppParam; typedef struct SceAppMgrBootParam { // size is 0xC on FW 0.990 SceUint unk_0; // 0x0 SceUint unk_4; // 0x4 SceUint unk_8; // 0x8 } SceAppMgrBootParam; typedef struct SceSharedFbCreate { // size is 0x18 SceSize AllocMemSize; int unk_04; int unk_08; int unk_0C; int unk_10; int unk_14; } SceSharedFbCreate; typedef struct SceSharedFbInfo { // size is 0x58 int unk_00; // cdram base? int unk_04; // ex: 0x500000 int unk_08; // cdram base? int unk_0C; void *unk_10; int unk_14; int unk_18; int unk_1C; int unk_20; int unk_24; // 960 int unk_28; // 960 int unk_2C; // 544 int unk_30; int unk_34; // unk idx int unk_38; int unk_3C; int unk_40; int unk_44; int unk_48; int unk_4C; int unk_50; int unk_54; } SceSharedFbInfo;
Data segment layout
On 3.60 :
Address | Size | Description |
---|---|---|
0x00000 | 0x4 | SceUID SceAppMgrApp pool if size 0x1000
|
0x00004 | 0x4 | SceUID SceAppMgrApp mutex
|
0x00008 | 0x4 | SceUID SceAppMgrMount pool if size 0x10000
|
0x0000C | 0x4 | SceUID SceAppMgrMount mutex
|
0x00010 | 0x4 | SceUID SceAppMgrSaveData pool if size 0xA000
|
0x00014 | 0x4 | SceUID SceAppMgrSaveData mutex
|
0x00018 | 0x4 | SceUID SceAppMgrPhoto mutex
|
0x0001C | 0x4 | int process local storage SceAppMgrSafeMemory of size 0x10000
|
0x00020 | 0x4 | SceUID SceAppMgrSafeMemory mutex
|
0x00024 | 0x4 | int process local storage SceAppMgrAppInfoCache of size 0x400
|
0x00028 | 0x4 | unknown |
0x0002C | 0x4 | unknown |
0x00030 | 0x4 | SceUID SceAppMgrDbgShellEventCount sema
|
0x00034 | 0x4 | SceUID SceAppMgrBottomSema sema
|
0x00038 | 0x4 | SceUID SceAppMgrLiveAreaOperation mutex
|
0x0003C | 0x4 | SceUID SceAppMgrLiveAreaOpeResultMx mutex
|
0x00040 | 0x4 | SceUID SceAppMgrLiveAreaOpeResultCd mutex
|
0x00044 | 0x4 | unknown |
0x00048 | 0x4 | unknown |
0x0004C | 0x4 | unknown |
0x00050 | 0x4 | unknown |
0x00054 | 0x4 | unknown |
0x00058 | 0x4 | unknown |
0x0005C | 0x4 | unknown |
0x00060 | 0x4 | unknown |
0x00064 | 0x4 | SceUID SceAppMgrUpdtNtfy sema
|
0x00068 | 0x4 | SceUID SceAppMgrProcessStateUpdater thread
|
0x0006C | 0x4 | SceUID SceAppMgrGcListener thread
|
0x00070 | 0x434 | unknown |
0x004A4 | 0x4 | SceUID SceAppMgrCore mutex
|
0x004A8 | 0x4 | SceUID current thread |
0x004AC | 0x4 | SceUID SceAppMgrCore2 mutex
|
0x004B0 | 0x4 | unknown |
0x004B4 | 0x4 | SceUID SceAppMgrCoreKM mutex
|
0x004B8 | 0x48 | unknown |
0x00500 | 0x2D140 | global_ctx_item[20] - array of global contexts most likely for each running app |
0x2D640 | 0x1824 | memset chunk |
0x2EE64 | 0x4 | unknown |
0x2EE68 | 0x4 | SceUID SceAppMgrAbort event flag
|
0x2EE6C | 0x4 | SceUID SceAppMgrCoredump event flag
|
0x2EE70 | 0x4 | SceUID SceAppMgrAbortHandler thread
|
0x2EE74 | 0x4 | unknown |
0x2EE78 | 0xA78 | memset chunk of size 0xA7C |
0x2F8F0 | 0x4 | SceUID SceAppMgrAudioUdt mutex (part of 0xA7C chunk)
|
0x2F8F4 | 0x14 | unknown |
0x2F908 | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F90C | 0x4 | 0x01 |
0x2F910 | 0x4 | 0 |
0x2F914 | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F918 | 0x4 | 0x02 |
0x2F91C | 0x4 | 0 |
0x2F920 | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F924 | 0x4 | 0x04 |
0x2F928 | 0x4 | 0 |
0x2F92C | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F930 | 0x4 | 0x08 |
0x2F934 | 0x4 | 0 |
0x2F938 | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F93C | 0x4 | 0x10 |
0x2F940 | 0x4 | 0 |
0x2F944 | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F948 | 0x4 | 0x20 |
0x2F94C | 0x4 | 0 |
0x2F950 | 0x4 | SceUID SceAppMgrEv event flag
|
0x2F954 | 0x4 | 0x40 |
0x2F958 | 0x4 | 0 |
0x2F95C | 0x298 | unknown |
0x2FBF4 | 0x2D00 | memset chunk |
0x328F4 | 0x1640 | unknown |
0x33F34 | 4 | int ux0: mount event id |
0x33F38 | 0x120 | unknown |
0x34058 | 4 | int grw0: mount event id |
0x3405C | 0x104 | unknown |
0x34160 | 4 | int gro0: mount event id |
0x34164 | 0x424 | unknown |
0x34588 | 0x20 | some struct |
0x345A8 | 0x164 | unknown |
0x3470C | 0x4 | pfs_mount_t* pointer to list of items |
0x34710 | 0x6E0 | unknown |
0x34DF0 | 0x20 | some struct |
0x34E10 | 0x14 | unknown |
0x34E24 | 4 | void* 0x720 buffer allocated from 0x22A0000 pool |
0x34E28 | 0x30 | unknown |
0x34E58 | 4 | void* 0x400 buffer allocated from 0x22A0010 pool |
0x34E5C | 4 | void* 0x8000 buffer allocated from 0x22A0010 pool |
0x34E60 | 0x54 | unknown |
0x34EB4 | 0x368 | memset chunk of size 0x3AC |
0x3521C | 0x40 | fast_mutex SceSharedFb (part of 0x3AC chunk) |
0x3525C | 0x4 | unknown (part of 0x3AC chunk) |
0x35260 | 0x42FC | unknown |
pfs_mount_t Parser
pfs_mount_t** first_entry_addr; tai_module_info_t appmgr_info; taiGetModuleInfoForKernel(KERNEL_PID, "SceAppMgr", &appmgr_info); int res=1; switch (appmgr_info.module_nid) { case 0xDBB29DB7: // 3.60 retail res = module_get_offset(KERNEL_PID, appmgr_info.modid, 1, 0x3470C, &first_entry_addr); break; default: break; } if (!res) { pfs_mount_t* entry = *first_entry_addr; log_write((char*)entry, sizeof(pfs_mount_t)); while ((int)entry->next > 0) { entry = entry->next; log_write((char*)entry, sizeof(pfs_mount_t)); } }
How app, patch and addcont is mounted
Global mountpoint list in AppMgr
Explanation
AppMgr operates with such term as mount_id
.
Different ids correspond to different paths and are described at SceAppMgr_Mount_IDs
There are many different mount functions in AppMgr which mount different paths with corresponding mount_id
.
However on the bottom level there is only one single function that is responsible for all mount operations.
It is located in segment 0 at offset 0x19B51 on 3.60.
int create_mountpoint_base(SceUID pid, appmgr_mount_holder_t *mount_ctx_holder, unsigned int mount_id, SceTitleId *title_id, char *physical_path, char *mount_drive, char *klicensee, char *mount_point_result);
- pid - current process pid.
- mount_ctx_holder - root holder of appmgr_mount_t (stored in segment 1).
- mount_id - mount id to use for this mount operation.
- title_id - title id of the application.
- physical_path - path like ux0:app/<TITLEID>
- mount_drive - virtual drive like app0:. This may be also randomly generated. This argument goes to
appmgr_rnd_drive_id
. This argument is optional. When empty - will be generated bycreate_mountpoint_base
.
- klicensee - klicensee for this mount operation. This argument is optional.
- mount_point_result - mountpoint for the user. Returned from
appmgr_rnd_drive_id
.
AppMgr maintains two parallel lists in segment 1.
One of the lists contains appmgr_mount_t
items.
These are the items that are exposed to user of AppMgr library.
appmgr_rnd_drive_id
is what is returned as mount_point_result
when user calls some mount functions in AppMgr.
appmgr_rnd_drive_id
in many cases is randomly generated (but not always).
Other list is an internal list of pfs_mount_t
items.
These items store arguments that are used for calling PFS mount.
Each item also has randomly generated pfs_rnd_drive_id
in form of PDXXXXXXXXXXXXd.
When create_mountpoint_base
is called, it creates both appmgr_mount_t
and pfs_mount_t
items and links them with this_pfs_mount
.
Each item is put in a corresponding list.
This mapping relation is important and shows how AppMgr mountpoint translates to PfsMgr mountpoint.
All basic relations are shown on a diagram example with black color.
However there is another prev_pfs_mount
relation between items which is especially important for sceAppMgrGameDataMountForDriver.
This relation is illustrated on diagram with red color and applies to pairs of mount_id
s: 0x3E8,0x3E9 or 0x3EA, 0x3EB.
Such relation is used to setup multiple mount levels. For example app (0x3E8) with patch (0x3E9) on top. Or addcont (ro) (0x3EA) with addcont (rw) (0x3EB) on top.
Additionally multiple mount levels are controlled using fios overlays, hence overlay_id
in appmgr_mount_t
.
Overlay is a concept of filesystem path redirection/remapping. Additional description is at SceFios2Kernel
Table below shows how overlays are created for 0x3E8, 0x3E9, 0x3EA, 0x3EB for given appmgr_mount_t
mount_id | folder | overlay_type | src | dst |
---|---|---|---|---|
0x3E8 | app | SCE_FIOS_OVERLAY_TYPE_OPAQUE | <this_pfs_mount->pfs_rnd_drive_id>0: (0x3E8) | appmgr_rnd_drive_id |
0x3E9 | patch | SCE_FIOS_OVERLAY_TYPE_TRANSLUCENT | <this_pfs_mount->pfs_rnd_drive_id>0: (0x3E9) | <prev_pfs_mount->pfs_rnd_drive_id>0: (0x3E8) |
0x3EA | addcont (ro) | SCE_FIOS_OVERLAY_TYPE_OPAQUE | <this_pfs_mount->pfs_rnd_drive_id>0: (0x3EA) | appmgr_rnd_drive_id |
0x3EB | addcont (rw) | SCE_FIOS_OVERLAY_TYPE_TRANSLUCENT | <this_pfs_mount->pfs_rnd_drive_id>0: (0x3EB) | <prev_pfs_mount->pfs_rnd_drive_id>0: (0x3EA) |
Overlay is created with sceFiosKernelOverlayAddForProcessForDriver
This results in a path remapping, where when user reads from appmgr_rnd_drive_id
virtual drive, he will actually read from <this_pfs_mount->pfs_rnd_drive_id>0: (0x3E8)
.
However if patch directory was present, further path remapping will happen, so that user will read from <this_pfs_mount->pfs_rnd_drive_id>0: (0x3E9)
.
SceAppMgrForDriver
sceAppMgrAcInstGetAcdirParamForDriver
Version | NID |
---|---|
3.60 | 0x474AABDF |
- mount PFS drive 0 to path gro0:acinst/<titleid> with mountid 0x3EA
- read keystone from <mountpoint>:sce_sys/keystone into outputData
- extract klicensee from gro0:license/addcont/<titleid>/<dlc_folder>/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.rif
- execute pfs ioctl command 0x4402 with klicensee
- execute pfs ioctl command 0x4403
- read gro0:acinst/<titleid>/<dlc_folder>/sce_sys/param.sfo
- read game title into outputData
typedef struct acinst_res { char keystone[0x60]; char game_title[0x80]; } acinst_res; int sceAppMgrAcInstGetAcdirParamForDriver(SceTitleId *titleId, const char *dlc_folder, acinst_res *outputData);
sceAppMgrAppDataMountByIdForDriver
Version | NID |
---|---|
3.60 | 0x5E311F71 |
Only valid appmgr mount ids are: 0x68
, 0x6A
, 0x6B
, 0x6E
int sceAppMgrAppDataMountByIdForDriver(int mountId, SceTitleId *titleId, char *mountPoint);
sceAppMgrAppDataMountForDriver
Version | NID |
---|---|
3.60 | 0xB1D3C287 |
Only valid appmgr mount ids are: 0x64
, 0x65
, 0x66
, 0x67
, 0x69
, 0x6C
, 0x6D
, 0x6F
, 0x70
int sceAppMgrAppDataMountForDriver(int mountId, char *mountPoint);
sceAppMgrAppMountForDriver
Version | NID |
---|---|
3.60 | 0xEF0C9533 |
sceAppMgrAppUmountForDriver
Version | NID |
---|---|
3.60 | 0x1DE3B7C4 |
sceAppMgrBgdlSetQueueStatusForDriver
Version | NID |
---|---|
3.60 | 0x5B1BE482 |
sceAppMgrCheckContentInstallPeriodForDriver
Version | NID |
---|---|
3.60 | 0x193784A9 |
int sceAppMgrCheckContentInstallPeriodForDriver(int a1);
sceAppMgrCheckPfsMountedForDriver
Version | NID |
---|---|
3.60 | 0x0B1BEEE0 |
int sceAppMgrCheckPfsMountedForDriver(int *result);
sceAppMgrCloudDataClearMcIdForDriver
Version | NID |
---|---|
3.60 | 0xEC408FEF |
int sceAppMgrCloudDataClearMcIdForDriver(int a1);
sceAppMgrCloudDataCreateHeaderForDriver
Version | NID |
---|---|
0.931.010-1.81 | not present |
2.000.081-3.740.011 | 0xED87F191 |
sceAppMgrCloudDataDstCreateMountForDriver
Version | NID |
---|---|
3.60 | 0xB3816B42 |
- check authid SceShell(0x2800000000000001), SceContentManager(0x280000000000002D)
- do some ioctl check 0x3001
- create directory ux0:user/XX/savedata_plus/work/<TITLEID>
- create sealedkey
- retrieve klicensee
- pure mount PFS PDXXXXXXXXXXXX mountpoint to pfs mount ux0:user/XX/savedata_plus/work/<TITLEID> path and authid 0x2800000000000001 or 0x280000000000002D
- create directory ux0:user/XX/savedata_plus/work/<TITLEID>/sce_sys
- write file ux0:user/XX/savedata_plus/work/<TITLEID>/sce_sys/sealedkey
- unmount PFS PDXXXXXXXXXXXX mountpoint
- mount PFS tsXXXXXXXXXXXX: mountpoint to ux0:user/XX/savedata_plus/work/<TITLEID> path with mountid 0x3ED
int sceAppMgrCloudDataDstCreateMountForDriver(SceTitleId *titleId, char *mountPoint);
sceAppMgrCloudDataGetMcIdForDriver
Version | NID |
---|---|
3.60 | 0x1286AF64 |
sceAppMgrCloudDataSetMcIdForDriver
Version | NID |
---|---|
3.60 | 0x0B94BB90 |
sceAppMgrCloudDataSetupKeyForDriver
Version | NID |
---|---|
3.60 | 0x2FAA6ABD |
sceAppMgrCloudDataSrcMountForDriver
Version | NID |
---|---|
3.60 | 0x6D4D6FFE |
- check auth id SceShell(0x2800000000000001), SceContentManager(0x280000000000002D), SceDailyCheckerBg(0x2800000000000039)
- select path depending on mode: ux0:/user/XX/savedata/<titleid> or grw0:savedata/<titleid>
- read sealedkey from ux0:/user/XX/savedata/<titleid>/sce_sys/sealedkey or grw0:savedata/<titleid>/sce_sys/sealedkey
- mount PFS tsXXXXXXXXXXXX: mountpoint to ux0:/user/XX/savedata/<TITLEID> or grw0:savedata/<titleid> path with mountid 0x3ED
// mode probably allows values 1,2,3 // 1 probably selects ux0: // 2, 3 probably selects grw0: int sceAppMgrCloudDataSrcMountForDriver(int mode, SceTitleId *titleId, char *mountPoint);
sceAppMgrCloudDataVerifyHeaderForDriver
Version | NID |
---|---|
3.60 | 0x55D48190 |
sceAppMgrDebugSettingNotifyUpdateForDriver
Version | NID |
---|---|
3.60 | 0x7554330F |
int sceAppMgrDebugSettingNotifyUpdateForDriver(int a1);
sceAppMgrDrmCloseForDriver
Version | NID |
---|---|
3.60 | 0x088670A6 |
sceAppMgrDrmOpenForDriver
Version | NID |
---|---|
3.60 | 0xEA75D157 |
typedef struct drm_opts { uint32_t size; char addcont_id[20]; char mount_point[10]; } drm_opts; int sceAppMgrDrmOpenForDriver(drm_opts *drmOpt);
sceAppMgrFakeSaveDataCreateMountForDriver
Version | NID |
---|---|
3.60 | 0x12FC3FA8 |
- check authid fake_package_installer(0x280000000000002E)
- resolve overlay for <path>
- create <path> directory
- do some ioctl check 0x3001
- create sealedkey
- pure mount PFS PDXXXXXXXXXXXX mountpoint to pfs mount <path> path without klicensee and authid 0x280000000000002E
- create directory <path>/sce_sys
- write file <path>/sce_sys/sealedkey
- write empty file <path>/sce_sys/keystone
- unmount PFS PDXXXXXXXXXXXX mountpoint
- mount PFS tsXXXXXXXXXXXX: mountpoint to <path> path with mountid 0x3ED
int sceAppMgrFakeSaveDataCreateMountForDriver(const char *path, const char *mountPoint);
sceAppMgrGameDataMountForDriver
Version | NID |
---|---|
3.60 | 0xCE356B2D |
- read and parse <app_path>/sce_sys/param.sfo
- check that path does not start from one of these host0:, ux0:data, vs0:
- create <app_path>/sce_pfs folder if required
- check if <app_path>/sce_sys/clearsign exists
- get klicensee from rif (from fixed name at <app_path>/license/app/<titleid> or from <rif_file_path>)
- check <app_path>/sce_sys/package/head.bin vs <app_path>/sce_sys/clearsign
- mount PFS gpXXXXXXXXXXXd: mountpoint to <app_path> path with mountid 0x3E8
- override with another mount PFS gpXXXXXXXXXXXd: mountpoint to <patch_path> path with 0x3E9 if <patch_path> exists
- check that path does not start with ux0:data
- create ux0:patch/<TITLEID> or grw0:patch/<TITLEID> path
- override with another mount PFS gpXXXXXXXXXXXd: mountpoint to ux0:patch/<TITLEID> or grw0:patch/<TITLEID> path with 0x3E9 if path exists
int sceAppMgrGameDataMountForDriver(const char *app_path, const char *patch_path, const char *rif_path, char *mount_point);
sceAppMgrGetBootParamForDriver
Version | NID |
---|---|
3.60 | 0xD2541B4A |
sceAppMgrGetPfsProcessStatusForDriver
Version | NID |
---|---|
3.60 | 0xE72D2A4A |
sceAppMgrGetSystemDataFileForDriver
Version | NID |
---|---|
1.69-3.60 | 0xAEC49533 |
sceAppMgrIsExclusiveProcessRunningForDriver
Version | NID |
---|---|
3.60 | 0xA888C2DC |
// titleId: 10 bytes null-terminated string int sceAppMgrIsExclusiveProcessRunningForDriver(const char* titleId);
sceAppMgrLaunchAppByPathForDriver
Version | NID |
---|---|
0.990-3.60 | 0xB0A37065 |
Loads a SELF at a given path with optional arguments. Arguments is a null-separated string. Arguments are passed directly to the app as a list of strings (char * const argv[]
).
Special arguments are listed below:
Argument | Param | Description |
---|---|---|
-budget | one of "big", "game", "sys", "shell", "small", "mini" | App budget (memory allocation size) |
-memsize | decimal number | Memory size |
-la_type | "B" or "C" | LiveArea type |
-bg | none | Run in background |
-nonsuspendable | none | Non-suspendable |
-titleid | string (8 chars, 9 bytes) | TitleId |
-phcontmemsize | decimal number | Physical contiguous memory size |
-livearea_off | none | No LiveArea |
-exit_to | string (title id) | App to resume upon exit |
-param | string | Param |
-usecdlg | none | Use CDRAM large |
-port | "1" | Unknown, maybe BGM port |
Maybe type
is of type SceKernelProcessType like in SceProcessmgr#sceKernelStartProcessForKernel.
/** * @brief Launch an application for debugging * * @param[in] path Path to the executable to load * @param[in] args Arguments to pass to the executable and to configure appmgr * @param[in] arg_size Size of the args passed in * @param[in] type Set to 0x80000000 for debugging launch * @param[in] param Pointer to launch params * @param unk unknown, set to nullptr * * @return pid on success, else < 0. */ int sceAppMgrLaunchAppByPathForDriver(const char *path, const char *args, unsigned arg_size, unsigned int type, const SceAppMgrLaunchParam *pParam, void *unk);
Example:
SceAppMgrLaunchParam param; param.size = sizeof(param); sceAppMgrLaunchAppByPathForDriver("ux0:temp/bootstrap.self", "-budget\0big\0-nonsuspendable\0-livearea_off\0", 0x2A, 0, param, NULL);
sceAppMgrLoadSafeMemoryForDriver
Version | NID |
---|---|
1.69-3.60 | 0xFAF3DAAA |
sceAppMgrLocalBackupGetOfflineIdForDriver
Version | NID |
---|---|
3.60 | 0x61B13981 |
sceAppMgrLocalBackupVerifyOfflineHeaderForDriver
Version | NID |
---|---|
3.60 | 0x62E98C42 |
sceAppMgrMmsMountForDriver
Version | NID |
---|---|
3.60 | 0x13D54107 |
- check that mountId is 0x190 or 0x191 or 0x192
- calls non exported function equal to kernel level of sceAppMgrAppDataMountForDriver
int sceAppMgrMmsMountForDriver(int mountId, char *mountPoint);
sceAppMgrPhotoMountForDriver
Version | NID |
---|---|
3.60 | 0x43A35729 |
Call sceAppMgrAppDataMountForDriver with mount_id 0x64.
typedef struct sceAppMgrPhotoMountParam { SceSize size; char unk4[128]; } sceAppMgrPhotoMountParam; int sceAppMgrPhotoMountForDriver(sceAppMgrPhotoMountParam *opt);
sceAppMgrRegisterPathForDriver
Version | NID |
---|---|
3.60 | 0xB53FB98E |
sceAppMgrSaveDataGetQuotaForDriver
Version | NID |
---|---|
3.60 | 0xE104C37E |
sceAppMgrSaveDataLocalBackupTargetGetListForDriver
Version | NID |
---|---|
3.60 | 0x9B3F7D66 |
sceAppMgrSaveDataLocalBackupTargetRemoveItemForDriver
Version | NID |
---|---|
3.60 | 0xC4EF95BB |
sceAppMgrSaveDataMountForDriver
Version | NID |
---|---|
3.60 | 0xE73C9516 |
sceAppMgrSaveDataNotifyBackupFinishedForDriver
Version | NID |
---|---|
3.60 | 0x6989B258 |
sceAppMgrSaveDataSlotCreateForDriver
Version | NID |
---|---|
3.60 | 0xE6F389B8 |
sceAppMgrSaveDataSlotDeleteForDriver
Version | NID |
---|---|
3.60 | 0xB544F2A0 |
sceAppMgrSaveDataSlotGetParamForDriver
Version | NID |
---|---|
3.60 | 0xD137D486 |
sceAppMgrSaveDataSlotGetStatusForDriver
Version | NID |
---|---|
3.60 | 0xEC9D5A35 |
sceAppMgrSaveDataSlotInitForDriver
Version | NID |
---|---|
3.60 | 0x2277F736 |
sceAppMgrSaveDataSlotSetParamForDriver
Version | NID |
---|---|
3.60 | 0x7E247E47 |
sceAppMgrSaveDataSlotSetStatusForDriver
Version | NID |
---|---|
3.60 | 0x9ADB00FA |
sceAppMgrSaveDataUmountForDriver
Version | NID |
---|---|
3.60 | 0x2B080268 |
sceAppMgrSaveSafeMemoryForDriver
Version | NID |
---|---|
1.69-3.60 | 0xD366AA44 |
sceAppMgrSystemParamDateTimeSetConfForDriver
Version | NID |
---|---|
3.60 | 0xA9AA3A68 |
sceAppMgrTrophyMountForDriver
Version | NID |
---|---|
3.60 | 0xE977A833 |
- check that mountId is 0x12C or 0x12E
- calls non exported function equal to kernel level of sceAppMgrAppDataMountForDriver
int sceAppMgrTrophyMountForDriver(int mountId, SceUID pid, char *mountPoint);
sceAppMgrUmountForDriver
Version | NID |
---|---|
3.60 | 0xA714BB35 |
derived from _sceAppMgrUmount
The following mount points can be derived from the code:
- "photo0:" (0x64)
- "music0:" (0x69)
- "video0:" (0x6D)
- "addcont0:"
- "addcont1:"
int sceAppMgrUmountForDriver(const char *mount_point);
sceAppMgrUpdateRifInfoForDriver
Version | NID |
---|---|
3.60 | 0x894BDCB8 |
sceAppMgrWorkDirMountForDriver
Version | NID |
---|---|
3.60 | 0x3A0A9B82 |
only valid appmgr mount ids are: 0xC8
, 0xC9
, 0xCA
, 0xCB
, 0xCC
, 0xCE
int sceAppMgrWorkDirMountForDriver(int mountId, char *mountPoint);
sceAppMgrGetUserDirPathForDriver
Version | NID |
---|---|
0.990-3.60 | 0x0813AFCA |
derived from _sceAppMgrGetUserDirPath
// partition_id: 1 (ur0:) or 2 (ux0:) int sceAppMgrGetUserDirPathForDriver(int partition_id, char *userDirPath, SceSize path_maxlen);
sceAppMgrAppParamGetIntForDriver
Version | NID |
---|---|
3.60 | 0x12CE29F7 |
sceAppMgrGetShellPidForDriverForDriver
Version | NID |
---|---|
0.990-3.60 | 0x2FEACA9F |
sceAppMgrSpawnProcessForDriver
Version | NID |
---|---|
0.990-3.60 | 0x324DD34E |
This is a guessed name.
SceUID sceAppMgrSpawnProcessForDriver(const char *name, SceKernelProcessType type, const char *path, SceSize argSize, const void *pArgBlock, void *pOpt);
sceAppMgrKillAppByNameForDebuggerForDriver
Version | NID |
---|---|
3.60-3.65 | 0x0C5D65F1 |
sceAppMgrRdrfpMountForDriver
Version | NID |
---|---|
3.60 | 0x1574E1A4 |
int sceAppMgrRdrfpMountForDriver(SceUInt32 id, const char *path, const void *passcode, char *mountpoint);
sceAppMgrLaunchAppByNameForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0x1B6C2FED |
sceAppMgrGetPidByNameForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0x21BE167A |
sceAppMgrSuspendAppForDebuggerForDriver
Version | NID |
---|---|
0.990-3.60 | 0x29421DCD |
int sceAppMgrSuspendAppForDebuggerForDriver(SceUID id);
sceAppMgrSaveDataDataSaveForDriver
Version | NID |
---|---|
3.60 | 0x30947DF4 |
sceAppMgrLiveAreaOperationByNameForLoadpForDriver_1
Version | NID |
---|---|
3.60 | 0x3B4F305B |
sceAppMgrLiveAreaOperationByNameForLoadpForDriver_2
Version | NID |
---|---|
3.60 | 0xDD5BEEE3 |
sceAppMgrGetAppIdByNameForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0x4FA62A46 |
sceAppMgrLaunchAppForTest2ForDriver
Version | NID |
---|---|
3.60 | 0x504023C8 |
Used by SceDeci4pLoadp.
Requires sceSblACMgrHasUserDebugFlagForDriver to return true.
sceAppMgrLaunchAppByNameInternalForDriver
Version | NID |
---|---|
3.60 | 0x99AA37C1 |
sceAppMgrSpawnProcessExtForDriver
Version | NID |
---|---|
0.990-3.60 | 0xC4924946 |
Call sceKernelSpawnProcessExtForKernel.
int sceAppMgrSpawnProcessExtForDriver(int a1, int a2, int a3, int a4, int a5, int a6, int a7);
sceAppMgrKillAppForDebuggerForDriver
Version | NID |
---|---|
0.990-3.60 | 0xD80566DB |
Temp name was sceAppMgrKillProcessForDriver.
/** * @brief Kill an app process. * @param[in] id The app to kill. * @return Zero on success, else < 0. */ int sceAppMgrKillAppForDebuggerForDriver(SceUID id);
SceAppMgrForDriver_DC13160A
Version | NID |
---|---|
3.60 | 0xDC13160A |
Gets App Status by App Id.
int SceAppMgrForDriver_DC13160A(SceInt32 appId, void* pAppStatus);
sceAppMgrRdrfpUmountForDriver
Version | NID |
---|---|
3.60 | 0xE8DB7942 |
sceAppMgrSaveDataDataRemoveForDriver
Version | NID |
---|---|
3.60 | 0xEBFE1BE2 |
sceAppMgrResumeAppByNameForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0xEE6047CA |
sceAppMgrSuspendAppByNameForDebuggerForDriver
Version | NID |
---|---|
3.60 | 0xF3B1D42E |
sceAppMgrResumeAppForDebuggerForDriver
Version | NID |
---|---|
0.990-3.60 | 0xF9A61E94 |
int sceAppMgrResumeAppForDebuggerForDriver(SceUID id);
sceAppMgrDestroyOtherAppByPidForDriver
Version | NID |
---|---|
3.60 | 0xFC89D33D |
sceAppMgrPhotoUmountForDriver
Version | NID |
---|---|
0.990-3.60 | 0xDCADB9FE |
int sceAppMgrPhotoUmountForDriver(void);
SceAppMgrForDriver_BDD1FBD1
Version | NID |
---|---|
0.990 | 0xBDD1FBD1 |
SceAppMgrForDriver_3C7B4B77
Version | NID |
---|---|
0.990 | 0x3C7B4B77 |
SceAppMgr
__sceAppMgrGetAppState
Version | NID |
---|---|
0.990-3.60 | 0x210C0046 |
exported to user by SceDriverUser
int _sceAppMgrGetAppState(SceAppMgrAppState *appState, SceUInt32 sizeofSceAppMgrAppState, SceUInt32 buildVersion);
_sceAppMgrAcidDirSet
Version | NID |
---|---|
1.69-3.60 | 0x6CBCBE1A |
exported to user by SceDriverUser
_sceAppMgrAcquireSoundOutExclusive3
Version | NID |
---|---|
1.69-3.60 | 0x13ED8FFD |
exported to user by SceDriverUser
_sceAppMgrAddContAddMount
Version | NID |
---|---|
3.60 | 0x581DB1BE |
exported to user by SceDriverUser
- verify that titleid belongs to one of currently running titleids
- mount PFS to ux0:addcont/<titleid> or grw0:addcont/<titleid> path with mountid 0x3EA
- read keystone from <mountpoint>:sce_sys/keystone
- verify keystone passcode
int _sceAppMgrAddContAddMount(generic_mount_ctx *data, int force_mount_ux);
_sceAppMgrAddContMount
Version | NID |
---|---|
1.69-3.60 | 0x0667E10A |
exported to user by SceDriverUser
- if path is gro0:
- produce path gro0:addcont/<titleid>
- else
- obtain path ux0:addcont/<titleid> or grw0:addcont/<titleid>
- mount PFS to one of 3 paths with mountid 0x3EA
- if first mount succeeded
- check that mount drive is addcont0:
- read keystone form <mountpoint>:sce_sys/keystone
- verify keystone content
- if path is gro0:
- obtain path ux0:addcont/<titleid> or grw0:addcont/<titleid>
- mount PFS to one of 2 paths with mountid 0x3EB
- check that mount drive is addcont0:
- read keystone form <mountpoint>:sce_sys/keystone
- verify keystone content
- if path is gro0:
- if first mount failed:
- if path is gro0:
- obtain path ux0:addcont/<titleid> or grw0:addcont/<titleid>
- mount PFS to one of 2 paths with mountid 0x3EA
- check that mount drive is addcont0:
- read keystone form <mountpoint>:sce_sys/keystone
- verify keystone content
- if path is gro0:
- check that mounted drive is indeed addcont0:
int _sceAppMgrAddContMount(SceUID pid, generic_mount_ctx *mctx);
_sceAppMgrAppDataMountById
Version | NID |
---|---|
1.69-3.60 | 0x9275414A |
exported to user by SceDriverUser
Only valid appmgr mount ids are: 0x68
, 0x6A
, 0x6B
, 0x6E
typedef struct sceAppMgrAppDataMountByIdOpt { int reserved1; int reserved2; } sceAppMgrAppDataMountByIdOpt; int _sceAppMgrAppDataMountById(int mountId, generic_mount_ctx *mctx, char *mountPoint, sceAppMgrAppDataMountByIdOpt *opt);
_sceAppMgrAppDataMount
Version | NID |
---|---|
1.69-3.60 | 0xF07B816E |
exported to user by SceDriverUser
Use sceAppMgrUmount to unmount this.
Only valid appmgr mount ids are: 0x64
, 0x65
, 0x66
, 0x67
, 0x69
, 0x6C
, 0x6D
, 0x6F
, 0x70
int _sceAppMgrAppDataMount(int mountId, char *mountPoint);
_sceAppMgrAppMount
Version | NID |
---|---|
1.69-3.60 | 0xCF1C0C0C |
exported to user by SceDriverUser
_sceAppMgrAppParamGetInt
Version | NID |
---|---|
1.69-3.60 | 0xDC7F8DE5 |
exported to user by SceDriverUser
_sceAppMgrAppParamGetString
Version | NID |
---|---|
1.69-3.60 | 0xEF34CA42 |
exported to user by SceDriverUser
This is used to retrieve SFO information. The cmd probably corresponds to and index of SFO entries. See the examples for which entries they may be. Example from store_checkout_plugin.
typedef struct sceAppMgrAppParamGetString_opt { // size is 0x10 on 3.60 SceSize size; int32_t unk_4; int32_t unk_8; int32_t unk_C; } sceAppMgrAppParamGetString_opt; // example: // sceAppMgrAppParamGetString_opt opt; // opt.size = 0x10; // sceAppMgrAppParamGetString(pid, 0xC, &buffer, &opt); int _sceAppMgrAppParamGetString(int pid, int param, char *string, sceAppMgrAppParamGetString_opt *opt);
On WebKit:
0xC - return current process application name
0x8 - gda
On PSM Dev:
Cmd | Output |
---|---|
0x6 | IP9100-PCSI00007_00-PSSUITEDEV000000 |
0x7 | |
0x8 | gd |
0x9 | PlayStationArMobile Development Assistant |
0xA | PSM Dev |
0xC | PCSI00007 |
0x64 | IP9100-PCSI00007_00-PSSUITEDEV000000 |
0x65 | PlayStationArMobile Development Assistant |
_sceAppMgrAppParamSetString
Version | NID |
---|---|
3.60 | 0x5957390F |
exported to user by SceDriverUser
_sceAppMgrAppUmount
Version | NID |
---|---|
1.69-3.60 | 0x2FB40418 |
exported to user by SceDriverUser
_sceAppMgrBgdlGetQueueStatus
Version | NID |
---|---|
1.69-3.60 | 0x5075AE28 |
exported to user by SceDriverUser
_sceAppMgrCaptureFrameBufDMACByAppId
Version | NID |
---|---|
1.69-3.60 | 0xC698385C |
exported to user by SceDriverUser
_sceAppMgrCaptureFrameBufIFTUByAppId
Version | NID |
---|---|
1.69-3.60 | 0xF29E0732 |
exported to user by SceDriverUser
_sceAppMgrCheckRifGD
Version | NID |
---|---|
1.69-3.60 | 0x15D7CA34 |
exported to user by SceDriverUser
Checks game data rif from \license\app\.
typedef struct _sceAppMgrCheckRifGD_opt { // size is 0x8 on FW 3.60 uint32_t unk_0; uint32_t unk_4; } _sceAppMgrCheckRifGD_opt; // path is a temporary mount point acquired with _sceAppMgrGameDataMount // dest should be buffer of size 0x70 int _sceAppMgrCheckRifGD(const char *path, void *dest, _sceAppMgrCheckRifGD_opt *opt);
_sceAppMgrContentInstallPeriodStart
Version | NID |
---|---|
1.69-3.60 | 0xDC478FB1 |
exported to user by SceDriverUser
Example from store_checkout_plugin. Parameters are uncertain.
int sceAppMgrContentInstallPeriodStart();
_sceAppMgrContentInstallPeriodStop
Version | NID |
---|---|
1.69-3.60 | 0xC9854E6E |
exported to user by SceDriverUser
Example from store_checkout_plugin.
- calls non exported function equal to kernel level of sceAppMgrAddContMount
- clears flag 0x1000000 if it is set (in internal structure of one of mountpoints in list in AppMgr )
int sceAppMgrContentInstallPeriodStop();
_sceAppMgrConvertVs0UserDrivePath
Version | NID |
---|---|
1.69-3.60 | 0x19B76D11 |
Exported to user by SceDriverUser.
Pass in a non-restricted vs0: path and an empty buffer and the buffer will be filled with the path of a temporary mount point.
Example from libssl.
// example: // char sys_external_path[16]; // memset(sys_external_path, 0, sizeof(sys_external_path)); // _sceMgrConvertVs0userDrivePath("vs0:sys/external", &sys_external_path, 1024);. // path_maxlen must be <= 1024 int _sceAppMgrConvertVs0UserDrivePath(const char *path, char *converted_path, SceSize path_maxlen);
_sceAppMgrDeclareShellProcess2
Version | NID |
---|---|
1.69-3.60 | 0xBDF15BDC |
Exported to user by SceDriverUser.
// name: 32 bytes null-terminated string, maybe process name // unused: 8 bytes buffer, unused on FW 3.60 int _sceAppMgrDeclareShellProcess2(const char* name, void* unused);
_sceAppMgrDestroyAppByName
Version | NID |
---|---|
1.69-3.60 | 0xEB318002 |
exported to user by SceDriverUser
_sceAppMgrDrmClose
Version | NID |
---|---|
1.69-3.60 | 0xE4CE4A0C |
exported to user by SceDriverUser
_sceAppMgrDrmOpen
Version | NID |
---|---|
1.69-3.60 | 0xAA5B3A37 |
exported to user by SceDriverUser
_sceAppMgrForceUmount
Version | NID |
---|---|
1.69-3.60 | 0x2598EC8A |
exported to user by SceDriverUser
// id: seen 600 int _sceAppMgrForceUmount(int id);
_sceAppMgrGameDataMount
Version | NID |
---|---|
1.69-3.60 | 0x454EB183 |
exported to user by SceDriverUser
typedef struct _sceAppMgrGameDataMount_opt { // size is 0x18 on FW 3.60 char* mount_point; uint32_t unk_4; uint32_t unk_8; uint32_t unk_C; uint32_t unk_10; uint32_t unk_14; } _sceAppMgrGameDataMount_opt; int _sceAppMgrGameDataMount(char *app_path, char *patch_path, char *rif_file_path, _sceAppMgrGameDataMount_opt *opt)
__sceAppMgrGetAppInfo
Version | NID |
---|---|
0.990 | 0xCA7AF469 |
_sceAppMgrGetAppInfo
Version | NID |
---|---|
1.69-3.60 | 0x6E65D746 |
exported to user by SceDriverUser
int _sceAppMgrGetAppInfo(SceAppMgrAppInfo *pAppInfo, SceUInt32 infoSize, SceUInt32 buildVersion);
_sceAppMgrGetAppMgrState
Version | NID |
---|---|
0.990-3.60 | 0x55C60D20 |
exported to user by SceDriverUser
int _sceAppMgrGetAppMgrState(SceAppMgrAppMgrState *AppMgrState);
_sceAppMgrGetAppParam2
Version | NID |
---|---|
1.69-3.60 | 0x26D43923 |
exported to user by SceDriverUser
_sceAppMgrGetAppParam
Version | NID |
---|---|
0.990-3.60 | 0x258C3E3C |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetAppParam_opt { // size is 0x8 on FW 0.990 SceSize appParamSize; SceUint32 reserved0; } _sceAppMgrGetAppParam_opt; int _sceAppMgrGetAppParam(SceAppMgrAppParam *appParam, _sceAppMgrGetAppParam_opt *opt);
_sceAppMgrGetBootParam
Version | NID |
---|---|
0.990-3.60 | 0xEEFBC756 |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetBootParam_opt { // size is 0x8 on FW 0.990 SceSize bootParamSize; // 0x0 SceUint unk_8; // 0x4 } _sceAppMgrGetBootParam_opt; int _sceAppMgrGetBootParam(uint32_t a1, SceAppMgrBootParam *bootParam, _sceAppMgrGetBootParam_opt *opt);
_sceAppMgrGetBudgetInfo
Version | NID |
---|---|
1.69-3.60 | 0xEACF2237 |
exported to user by SceDriverUser
Example from webcore
SceAppMgrUser_5F00F261(&struct_of_size_0x88);
_sceAppMgrGetCoredumpStateForShell
Version | NID |
---|---|
1.69-3.60 | 0x03DD7E65 |
exported to user by SceDriverUser
_sceAppMgrGetCurrentBgmState2
Version | NID |
---|---|
1.69-3.60 | 0x3F7B9BB5 |
exported to user by SceDriverUser
_sceAppMgrGetCurrentBgmState
Version | NID |
---|---|
0.990-3.60 | 0x81569A58 |
exported to user by SceDriverUser
int _sceAppMgrGetCurrentBgmState(void **currentBgmId, void **currentBgmState);
_sceAppMgrGetDevInfo
Version | NID |
---|---|
1.69-3.60 | 0x52766019 |
exported to user by SceDriverUser
Example from store_checkout_plugin.
_sceAppMgrGetDevInfo("ux0:", buffer, resultbuf);
_sceAppMgrGetFgAppInfo
Version | NID |
---|---|
1.69-3.60 | 0xAC9968B7 |
exported to user by SceDriverUser
_sceAppMgrGetIdByName
Version | NID |
---|---|
0.990-3.60 | 0xC311CC17 |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetIdByName_opt { // size is 0x8 on FW 0.990 SceSize appNameSize; SceUint32 reserved0; } _sceAppMgrGetIdByName_opt; int _sceAppMgrGetIdByName(SceUID *id, const char *appName, _sceAppMgrGetIdByName_opt *opt);
_sceAppMgrGetMediaTypeFromDriveByPid
Version | NID |
---|---|
1.69-3.60 | 0xC7566C46 |
exported to user by SceDriverUser
_sceAppMgrGetMediaTypeFromDrive
Version | NID |
---|---|
1.69-3.60 | 0xC8D32206 |
exported to user by SceDriverUser
_sceAppMgrGetMountProcessNum
Version | NID |
---|---|
3.60 | 0x1A844716 |
exported to user by SceDriverUser
_sceAppMgrGetNameById
Version | NID |
---|---|
0.990-3.60 | 0x08E93582 |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetNameById_opt { // size is 0x8 on FW 0.990 SceSize appNameSize; SceUint32 reserved0; } _sceAppMgrGetNameById_opt; int _sceAppMgrGetNameById(SceUID id, char *appName, _sceAppMgrGetNameById_opt *opt);
_sceAppMgrGetPfsDrive
Version | NID |
---|---|
1.69-3.60 | 0x46B208D4 |
exported to user by SceDriverUser
_sceAppMgrGetPidListForShell
Version | NID |
---|---|
1.69-3.60 | 0x29AC9DF0 |
exported to user by SceDriverUser
This function has two IsShell checks, AuthId and pid check
_sceAppMgrGetRawPathOfApp0ByAppIdForShell
Version | NID |
---|---|
1.69-3.60 | 0x7D210054 |
exported to user by SceDriverUser
/** * Get the real/resolved path of app0: (where it's actually mounted) * * @param[in] appId * @param[out] resolved_path - Buffer that will hold the resolved path. It should have enough room to hold 292 characters or it will buffer overflow (noname120). * * @return 0 on success. */ int _sceAppMgrGetRawPathOfApp0ByAppIdForShell(int appId, char resolved_path[292]);
_sceAppMgrGetRawPathOfApp0ByPidForShell
Version | NID |
---|---|
1.69-3.60 | 0x550422F9 |
exported to user by SceDriverUser
_sceAppMgrGetRawPath
Version | NID |
---|---|
1.69-3.60 | 0x9FB3E2C8 |
exported to user by SceDriverUser
/** * Resolve a path to the corresponding true path (uses ::sceFiosKernelOverlayResolveSyncForDriver underneath). * * @param[in] path - Path to convert (e.g. app0:) * @param[out] resolved_path - True resolved path * @param[in] unk - Unknown, provide an empty buffer * * @return 0 on success, < 0 on error. */ int _sceAppMgrGetRawPath(char *path, char *resolved_path, int resolved_path_size, char unk[16]);
_sceAppMgrGetRecommendedScreenOrientation
Version | NID |
---|---|
3.60 | 0x37E94672 |
exported to user by SceDriverUser
_sceAppMgrGetRunningAppIdListForShell
Version | NID |
---|---|
3.60 | 0xDA66AE0E |
exported to user by SceDriverUser
_sceAppMgrGetSaveDataInfoForSpecialExport
Version | NID |
---|---|
3.60 | 0xDC815429 |
exported to user by SceDriverUser
- check that current app auth id is SceContentManager (0x280000000000002D)
- check some flag set by SceSblPostSsMgr#SceSblPostSsMgrForDriver (related to utoken_sm.self)
- read sealedkey from <path>/sce_sys/sealedkey to restore klicensee
- mount PFS tsXXXXXXXXXXXX: mountpoint to <path> path with mount ID 0x3ED
- get ACCOUNT_ID from <path>/sce_sys/param.sfo
typedef struct _sceAppMgrGetSaveDataInfoForSpecialExport_opt { // size is 0x8 on FW 3.60 int reserved0; int reserved1; } _sceAppMgrGetSaveDataInfoForSpecialExport_opt; int _sceAppMgrGetSaveDataInfoForSpecialExport(char *path, char *account_id, _sceAppMgrGetSaveDataInfoForSpecialExport_opt *opt);
_sceAppMgrGetSaveDataInfo
Version | NID |
---|---|
1.69-3.60 | 0x6C52A377 |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetSaveDataInfo_res { int enum_flag_0; int enum_flag_4; int enum_flag_8; int unkC; int unk10; int open_psid_related_14; int ioctl_related_18; } _sceAppMgrGetSaveDataInfo_res; typedef struct _sceAppMgrGetSaveDataInfo_opt { // size is 0x10 on FW 3.60 _sceAppMgrGetSaveDataInfo_res *res; int unk_4; int unk_8; int unk_C; } _sceAppMgrGetSaveDataInfo_opt; int _sceAppMgrGetSaveDataInfo(char *path, SceTitleId *titleid, int force_mount_ux, _sceAppMgrGetSaveDataInfo_opt *opt);
_sceAppMgrGetStatusByAppId
Version | NID |
---|---|
1.69-3.60 | 0xBF4213A3 |
exported to user by SceDriverUser
int _sceAppMgrGetStatusByAppId(int appId, SceAppMgrAppStatus *appStatus);
_sceAppMgrGetStatusById
Version | NID |
---|---|
0.990-3.60 | 0x211D9558 |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetStatusById_opt { // size is 0x8 on FW 0.990 SceSize appStatusSize; uint32_t reserved1; } _sceAppMgrGetStatusById_opt; int _sceAppMgrGetStatusById(SceUID id, SceAppMgrAppStatus *appStatus, _sceAppMgrGetStatusById_opt *opt);
_sceAppMgrGetStatusByName
Version | NID |
---|---|
0.990-3.60 | 0x46998AFC |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetStatusByName_opt { // size is 0x10 on FW 0.990 SceSize appNameSize; // max value is 32 SceSize appStatusSize; uint32_t reserved1; uint32_t reserved2; } _sceAppMgrGetStatusByName_opt; int _sceAppMgrGetStatusByName(const char* appName, SceAppMgrAppStatus *appStatus, sceAppMgrGetStatus_opt *opt);
_sceAppMgrGetSystemDataFilePlayReady
Version | NID |
---|---|
3.60 | 0x7C44FE5D |
exported to user by SceDriverUser
_sceAppMgrGetUserDirPathById
Version | NID |
---|---|
3.60 | 0x617D78DA |
exported to user by SceDriverUser
_sceAppMgrGetUserDirPath
Version | NID |
---|---|
0.990-3.60 | 0x84B138BF |
exported to user by SceDriverUser
typedef struct _sceAppMgrGetUserDirPath_opt { // size is 0x8 on FW 0.990 SceSize path_maxlen; // Must be <= 1024 SceUint32 reserved1; } _sceAppMgrGetUserDirPath_opt; // partition_id: 1 (ur0:), 2 (ux0:) int _sceAppMgrGetUserDirPath(int partition_id, char *userDirPath, SceSize path_maxlen, _sceAppMgrGetUserDirPath_opt *opt);
_sceAppMgrGetVs0UserDataDrive
Version | NID |
---|---|
0.990-3.60 | 0xC361C084 |
exported to user by SceDriverUser
Get drive for mountId 0x3EF.
int _sceAppMgrGetVs0UserDataDrive(ScePfsRndDriveId *rnd_drive_id);
_sceAppMgrGetVs0UserModuleDrive
Version | NID |
---|---|
0.990-3.60 | 0x85589E87 |
exported to user by SceDriverUser
Get drive for mountId 0x3EE.
int _sceAppMgrGetVs0UserModuleDrive(ScePfsRndDriveId *rnd_drive_id);
_sceAppMgrInitSafeMemoryById
Version | NID |
---|---|
3.60 | 0x03FA4036 |
exported to user by SceDriverUser
_sceAppMgrInstallDirMount
Version | NID |
---|---|
1.69-3.60 | 0xED37D810 |
exported to user by SceDriverUser
_sceAppMgrIsCameraActive
Version | NID |
---|---|
1.69-3.60 | 0x7F0C9410 |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByName2ForShell
Version | NID |
---|---|
1.69-3.60 | 0xC6BA9596 |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByName2
Version | NID |
---|---|
1.69-3.60 | 0xAEF06983 |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByName2ndStage
Version | NID |
---|---|
1.69-3.60 | 0xDEDD2AED |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByNameForShell
Version | NID |
---|---|
1.69-3.60 | 0x4C3B5BB8 |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByName
Version | NID |
---|---|
1.69-3.60 | 0xDAC0AF12 |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByPath4
Version | NID |
---|---|
1.69-3.60 | 0x8FE4F651 |
exported to user by SceDriverUser
_sceAppMgrLaunchAppByUri2
Version | NID |
---|---|
1.69-3.60 | 0x4B45EAC0 |
exported to user by SceDriverUser
typedef struct SceAppMgrLaunchAppByUri2Param { // Size is 0x40 on FW 3.60 SceSize size; // Size of this structure SceUInt32 unk_4; // ex: 0 SceUInt32 unk_8; // ex: -1 SceUInt32 unk_C; SceUInt32 unk_10; SceUInt32 unk_14; // ex: -1 SceUInt8 reserved[0x28]; } SceAppMgrLaunchAppByUri2Param; int _sceAppMgrLaunchAppByUri2(const char *uri, SceAppMgrLaunchAppByUri2Param *pParam);
_sceAppMgrLaunchAppByUri
Version | NID |
---|---|
1.69-3.60 | 0x37CE3984 |
exported to user by SceDriverUser
_sceAppMgrLaunchVideoStreamingApp
Version | NID |
---|---|
3.60 | 0x29650EE6 |
exported to user by SceDriverUser
Note: Can only be run from SceShell or Webkit context or 0x8080201F is returned.
/** * @brief Open the video player app * @param[in] buf Arguments for the video player (format is unknown, max size is 0x1824) * @param[in] buf_size Size of the buf array. * @param[in] opt Optional parameters, you can pass NULL. * @return Zero on success, else < 0. */ int _sceAppMgrLaunchVideoStreamingApp(char *buf, size_t buf_size, void *opt);
_sceAppMgrLoadExec
Version | NID |
---|---|
1.69-3.60 | 0xDC2F23E0 |
exported to user by SceDriverUser
/* Relaunch app using other ELF */ int _sceAppMgrLoadExec(const char *appPath, /* Path of SELF file. SELF file must be put immediatly under app0: */ char *const argv[], /* Array of arguments pass the entry function of new SELF */ const SceAppMgrLoadExecOptParam *optParam /* Not used in usermode. Must be NULL */ );
_sceAppMgrLoadSaveDataSystemFile
Version | NID |
---|---|
3.60 | 0xA630BC5D |
exported to user by SceDriverUser
- check auth id SceShell(0x2800000000000001), fake_package_installer(0x280000000000002E)
- resolve overlay for <path>
- create <path> directory if required
- create <path>/sce_pfs directory if required
- mount PFS to <path> path with mountid 0x3ED
- read <path>/sce_sys/param.sfo
struct sceAppMgrLoadSaveDataSystemFileOpt { int reserved0; int reserved1; }; int _sceAppMgrLoadSaveDataSystemFile(char *path, int param_sfo_data, int authid_related, sceAppMgrLoadSaveDataSystemFileOpt *opt);
_sceAppMgrLoopBackFormat
Version | NID |
---|---|
1.69-3.60 | 0xEA307D2C |
exported to user by SceDriverUser
_sceAppMgrLoopBackMount
Version | NID |
---|---|
1.69-3.60 | 0x3493CDFA |
exported to user by SceDriverUser
- check that mountId is 0x258
- calls non exported function equal to kernel level of #sceAppMgrWorkDirMountById
typedef struct sceAppMgrLoopBackMountOpt { int reserved0; int reserved1; } sceAppMgrLoopBackMountOpt; // part_name: name of the emulated partition image int _sceAppMgrLoopBackMount(int mountId, char *part_name, char *mountPoint, sceAppMgrLoopBackMountOpt *opt);
_sceAppMgrMmsMount
Version | NID |
---|---|
1.69-3.60 | 0xE56A2E1B |
exported to user by SceDriverUser
int _sceAppMgrMmsMount(int mountId, char *mountPoint);
_sceAppMgrOverwriteLaunchParamForShell
Version | NID |
---|---|
1.69-3.60 | 0xFDE9A3E3 |
exported to user by SceDriverUser
_sceAppMgrPeekLaunchParamForShell
Version | NID |
---|---|
1.69-3.60 | 0x8CC3DC46 |
exported to user by SceDriverUser
_sceAppMgrPhotoMount
Version | NID |
---|---|
1.69-3.60 | 0xE98E9C52 |
exported to user by SceDriverUser
struct sceAppMgrPhotoMountParam { int size; char unk4[0x80]; }; struct sceAppMgrPhotoMountOpt { int size; int reserved0; }; int _sceAppMgrPhotoMount(sceAppMgrPhotoMountParam *param, sceAppMgrPhotoMountOpt *opt);
_sceAppMgrPhotoUmount
Version | NID |
---|---|
1.69-3.60 | 0xB2EA376F |
exported to user by SceDriverUser
_sceAppMgrPspSaveDataGetParams
Version | NID |
---|---|
3.60 | 0x77A51E82 |
exported to user by SceDriverUser
_sceAppMgrPspSaveDataRead
Version | NID |
---|---|
3.60 | 0xE535161F |
exported to user by SceDriverUser
_sceAppMgrPspSaveDataRootMount
Version | NID |
---|---|
3.60 | 0xA77DF8BA |
exported to user by SceDriverUser
- check that mountId is 0xCA
- calls non exported function equal to kernel level of sceAppMgrAppDataMountForDriver
int _sceAppMgrPspSaveDataRootMount(char *mountPoint);
_sceAppMgrReceiveEventNum
Version | NID |
---|---|
0.990-3.60 | 0x3EEEC172 |
exported to user by SceDriverUser
/* Get the number of events from AppMgr */ int _sceAppMgrReceiveEventNum(int *eventNum /* Number of events in the queue */ );
_sceAppMgrReceiveEvent
Version | NID |
---|---|
1.69-3.60 | 0xA90546F4 |
exported to user by SceDriverUser
/* Get events from AppMgr */ int _sceAppMgrReceiveEvent(SceAppMgrEvent *appEvent);
_sceAppMgrReceiveNotificationRequestForShell
Version | NID |
---|---|
1.69-3.60 | 0x21A86141 |
exported to user by SceDriverUser
_sceAppMgrReceiveShellEvent
Version | NID |
---|---|
1.69-3.60 | 0xE0DADF51 |
exported to user by SceDriverUser
_sceAppMgrReceiveSystemEvent
Version | NID |
---|---|
1.69-3.60 | 0x7240375B |
exported to user by SceDriverUser
int _sceAppMgrReceiveSystemEvent(SceAppMgrSystemEvent *systemEvent);
_sceAppMgrSaveDataAddMount
Version | NID |
---|---|
3.60 | 0xD1391ACE |
exported to user by SceDriverUser
- verify that titleid belongs to one of currently running titleids
- create ux0:/user/XX/savedata_vc/<titleid> or ux0:/user/XX/savedata/<titleid> directory if required
- mount PFS to ux0:/user/XX/savedata_vc/<titleid> or ux0:/user/XX/savedata/<titleid> path with mountid 0x3ED
- read keystone from <mountpoint>:sce_sys/keystone
- verify keystone passcode
int _sceAppMgrSaveDataAddMount(generic_mount_ctx *opt);
_sceAppMgrSaveDataDataRemove2
Version | NID |
---|---|
3.60 | 0x435E0BCB |
exported to user by SceDriverUser
_sceAppMgrSaveDataDataRemove
Version | NID |
---|---|
1.69-3.60 | 0xA579A39E |
exported to user by SceDriverUser
_sceAppMgrSaveDataDataSave2
Version | NID |
---|---|
3.60 | 0xFDACCA65 |
exported to user by SceDriverUser
_sceAppMgrSaveDataDataSave
Version | NID |
---|---|
1.69-3.60 | 0xB81777B7 |
exported to user by SceDriverUser
_sceAppMgrSaveDataGetQuota
Version | NID |
---|---|
1.69-3.60 | 0xF28A426B |
exported to user by SceDriverUser
_sceAppMgrSaveDataMount
Version | NID |
---|---|
1.69-3.60 | 0x95A6B1BF |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotCreate
Version | NID |
---|---|
1.69-3.60 | 0xC48833AA |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotDelete
Version | NID |
---|---|
1.69-3.60 | 0x191CF6B1 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotFileClose
Version | NID |
---|---|
3.60 | 0xFE821175 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotFileGetParam
Version | NID |
---|---|
3.60 | 0x667CC149 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotFileOpen
Version | NID |
---|---|
3.60 | 0x855CDAA4 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotGetParam
Version | NID |
---|---|
1.69-3.60 | 0x74D789E2 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotGetStatus
Version | NID |
---|---|
1.69-3.60 | 0xAF8258D4 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotInit
Version | NID |
---|---|
1.69-3.60 | 0x79689A1D |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotSetParam
Version | NID |
---|---|
1.69-3.60 | 0x0E216486 |
exported to user by SceDriverUser
_sceAppMgrSaveDataSlotSetStatus
Version | NID |
---|---|
1.69-3.60 | 0x030C0CA4 |
exported to user by SceDriverUser
_sceAppMgrSaveDataUmount
Version | NID |
---|---|
1.69-3.60 | 0x53623420 |
exported to user by SceDriverUser
_sceAppMgrSendNotificationRequest
Version | NID |
---|---|
1.69-3.60 | 0xF42E27AD |
exported to user by SceDriverUser
_sceAppMgrSendParam
Version | NID |
---|---|
3.60 | 0xD29236AD |
exported to user by SceDriverUser
_sceAppMgrSendSystemEvent2
Version | NID |
---|---|
1.69-3.60 | 0xD70D5EEC |
exported to user by SceDriverUser
_sceAppMgrSendSystemEvent
Version | NID |
---|---|
1.69-3.60 | 0xCEAF12B6 |
exported to user by SceDriverUser
Example from store_checkout_plugin.
_sceAppMgrSendSystemEvent(0, 0x10000006); _sceAppMgrSendSystemEvent(0, 0x10000004);
_sceAppMgrSetBackRenderPortOwner
Version | NID |
---|---|
1.69-3.60 | 0xE8357021 |
exported to user by SceDriverUser
_sceAppMgrSetBgmProxyApp
Version | NID |
---|---|
1.69-3.60 | 0xF6B093BC |
exported to user by SceDriverUser
_sceAppMgrSetNetworkDisconnectionWarningDialogState
Version | NID |
---|---|
3.60 | 0xD4B0CDB4 |
exported to user by SceDriverUser
/* Set network disconnection warning dialog state */ int _sceAppMgrSetNetworkDisconnectionWarningDialogState(SceBool enable, const SceAppMgrNetworkDisconnectionWarningDialogStateOptParam *optParam);
_sceAppMgrSetPowerSaveMode
Version | NID |
---|---|
1.69-3.60 | 0xB0ECB9C2 |
exported to user by SceDriverUser
_sceAppMgrSetRecommendedScreenOrientationForShell
Version | NID |
---|---|
3.60 | 0xD14D39F5 |
exported to user by SceDriverUser
_sceAppMgrSetShellScreenOrientation
Version | NID |
---|---|
3.60 | 0x10E23253 |
exported to user by SceDriverUser
_sceAppMgrSetSystemDataFilePlayReady
Version | NID |
---|---|
3.60 | 0x8964E793 |
exported to user by SceDriverUser
_sceAppMgrSetSystemDataFile
Version | NID |
---|---|
3.60 | 0x78F5AF66 |
exported to user by SceDriverUser
_sceAppMgrSystemParamDateTimeGetConf
Version | NID |
---|---|
1.69-3.60 | 0xB7F95389 |
exported to user by SceDriverUser
_sceAppMgrSystemParamGetInt
Version | NID |
---|---|
3.60 | 0x18EB1DAC |
exported to user by SceDriverUser
_sceAppMgrSystemParamGetString
Version | NID |
---|---|
1.69-3.60 | 0xAF5F9497 |
exported to user by SceDriverUser
_sceAppMgrThemeDataMount
Version | NID |
---|---|
3.60 | 0xD9B7A5AF |
exported to user by SceDriverUser
- check that program-authority-id is SceShell(0x2800000000000001) or SceSettings (0x2800000000000010)
- read ux0:theme/<CONTENTID>/sce_sys/param.sfo or <theme_path>/<CONTENTID>/sce_sys/param.sfo (in case of debug custom theme)
- check in param.sfo that CATEGORY = ac and get TITLEID
- get klicensee from rif (from fixed name at path ux0:license/theme/<CONTENTID> or from <rif_file_path>)
- check ux0:theme/<CONTENTID>/sce_sys/package/head.bin vs ux0:theme/<CONTENTID>/sce_sys/clearsign or <theme_path>/<CONTENTID>/sce_sys/package/head.bin vs <theme_path>/<CONTENTID>/sce_sys/clearsign
- mount PFS tmXXXXXXXXXXXd: mountpoint to ux0:theme/<CONTENTID> or <theme_path>/<CONTENTID> path with mountid 0x3EC and TITLEID
struct sceAppMgrThemeDataMountOpt { char *mount_point; int reserved0; int reserved1; int reserved2; int reserved3; int reserved4; }; int _sceAppMgrThemeDataMount(SceTitleId *titleid, const char *theme_path, const char *rif_file_path, sceAppMgrThemeDataMountOpt *opt);
_sceAppMgrTrophyMountById
Version | NID |
---|---|
1.69-3.60 | 0x3DFC9410 |
exported to user by SceDriverUser
- check that mountId is 0x12F or 0x130
- calls non exported function equal to kernel level of sceAppMgrWorkDirMountById
struct sceAppMgrTrophyMountByIdOpt { int reserved0; int reserved1; }; int _sceAppMgrTrophyMountById(int mountId, SceTitleId *titleId, char *mountPoint, sceAppMgrTrophyMountByIdOpt *opt);
_sceAppMgrTrophyMount
Version | NID |
---|---|
1.69-3.60 | 0xF8B80AC2 |
exported to user by SceDriverUser
int _sceAppMgrTrophyMount(int mountId, SceUID pid, char *mountPoint);
_sceAppMgrUmountByPid
Version | NID |
---|---|
1.69-3.60 | 0x0A419BC8 |
exported to user by SceDriverUser
_sceAppMgrUmount
Version | NID |
---|---|
1.69-3.60 | 0xFFCA54E0 |
Exported to user by SceDriverUser.
This is the unmount command for the mount point created with _sceAppMgrWorkDirMount.
This unmount command is also called in pair with _sceAppMgrGameDataMount from SceShell.
// max size of mount_point is 0x10 bytes including null int _sceAppMgrUmount(const char *mount_point);
_sceAppMgrUpdateSaveDataParam
Version | NID |
---|---|
1.69-3.60 | 0xF4703412 |
exported to user by SceDriverUser
- resolve overlay for <path>
- if <overlay path> is ux0:/user/XX/savedata or grw0:/savedata/
- mount PFS tsXXXXXXXXXXXXd mountpoint to <overlay path> path with mountid 0x3ED
- verify open psid
- if <overlay path> is ux0:/ or grw0:/
- mount PFS tsXXXXXXXXXXXXd mountpoint to <overlay path>/user/XX/savedata path with mountid 0x3ED
- verify open psid
struct sceAppMgrUpdateSaveDataParamOpt { int reserved0; int reserved1; }; int _sceAppMgrUpdateSaveDataParam(char *path, sceAppMgrUpdateSaveDataParamOpt *opt);
_sceAppMgrWorkDirMountById
Version | NID |
---|---|
1.69-3.60 | 0x58E4CC90 |
exported to user by SceDriverUser
only valid appmgr mount ids are:
0xCD
: ux0:cache/<TITLEID>0xCF
: ?
struct sceAppMgrWorkDirMountByIdOpt { int reserved0; int reserved1; }; int _sceAppMgrWorkDirMountById(int mountId, generic_mount_ctx* data, char *mount_point, sceAppMgrWorkDirMountByIdOpt *opt);
_sceAppMgrWorkDirMount
Version | NID |
---|---|
1.69-3.60 | 0x0C49659E |
exported to user by SceDriverUser
For example used by store_checkout_plugin, sqlite_vsh.
This creates a mount point that can be used as a filesystem.
Only valid appmgr mount ids are:
0xC8
: ur0:temp/sqlite0xC9
: ur0:temp/attach0xCA
: ux0:pspemu0xCB
: ?0xCC
: ur0:temp/checkout0xCE
: ur0:temp/webbrowser
int _sceAppMgrWorkDirMount(int mountId, char *mountPoint);
sceAppMgrAcquireBgmPortForMusicPlayer
Version | NID |
---|---|
1.69-3.60 | 0x44EC36FA |
sceAppMgrAcquireBgmPortWithPriority
Version | NID |
---|---|
1.69-3.60 | 0xAAED7419 |
sceAppMgrAcquireBgmPort
Version | NID |
---|---|
1.69-3.60 | 0xAFCEAB96 |
/* Get BGM port and sound BGM even when not in front */ int sceAppMgrAcquireBgmPort(void);
sceAppMgrAcquireBtrm
Version | NID |
---|---|
1.69-3.60 | 0xD752695D |
sceAppMgrAcquireSoundOutExclusive2
Version | NID |
---|---|
1.69-3.60 | 0xB9365442 |
sceAppMgrAcquireSoundOutExclusive
Version | NID |
---|---|
1.69-3.60 | 0xACB48075 |
sceAppMgrActivateApp
Version | NID |
---|---|
1.69-3.60 | 0x43631508 |
int sceAppMgrActivateApp(int appId);
sceAppMgrDeactivateApp
Version | NID |
---|---|
1.69-3.60 | 0xFFA093D9 |
sceAppMgrDeclareSystemChatApp
Version | NID |
---|---|
1.69-3.60 | 0x77EE891D |
sceAppMgrDestroyAppByAppId
Version | NID |
---|---|
1.69-3.60 | 0x54368A0B |
sceAppMgrDestroyOtherAppByAppIdForShell
Version | NID |
---|---|
1.69-3.60 | 0xDC70C5F7 |
sceAppMgrDestroyOtherAppByPidForShell
Version | NID |
---|---|
1.69-3.60 | 0x5420D23C |
sceAppMgrDestroyOtherApp
Version | NID |
---|---|
1.69-3.60 | 0x3EF143BF |
sceAppMgrDump
Version | NID |
---|---|
1.69-3.60 | 0x527795E8 |
sceAppMgrEnableCoredumpForTest
Version | NID |
---|---|
1.69-3.60 | 0x32FD0B99 |
sceAppMgrEnableDuckingOnSystemChat
Version | NID |
---|---|
1.69-3.60 | 0x5AB230DE |
sceAppMgrEnablePrioritizingSystemChat
Version | NID |
---|---|
1.69-3.60 | 0x3E1FAB92 |
sceAppMgrExitToLiveboardForGameApp
Version | NID |
---|---|
1.69-3.60 | 0x89D1DA55 |
sceAppMgrFinishCoredumpForShell
Version | NID |
---|---|
1.69-3.60 | 0x52FF63D1 |
sceAppMgrGetAppIdByAppId
Version | NID |
---|---|
1.69-3.60 | 0x332C9D98 |
sceAppMgrGetExtraAppParam
Version | NID |
---|---|
3.60 | 0x94A722BC |
sceAppMgrGetProcessIdByAppIdForShell
Version | NID |
---|---|
1.69-3.60 | 0x63FAC2A9 |
sceAppMgrGetSystemDataFile
Version | NID |
---|---|
1.69-3.60 | 0xAEC49533 |
sceAppMgrGrowMemory3
Version | NID |
---|---|
3.60 | 0x4401EDCD |
sceAppMgrGrowMemory
Version | NID |
---|---|
1.69-3.60 | 0x842FCE8C |
sceAppMgrIsDevelopmentMode
Version | NID |
---|---|
1.69-3.60 | 0x7D4F8F83 |
sceAppMgrIsGameBudgetAppPresent
Version | NID |
---|---|
1.69-3.60 | 0xE134F5A0 |
sceAppMgrIsGameProgram
Version | NID |
---|---|
1.69-3.60 | 0xFFF8F7F0 |
sceAppMgrIsNonGameProgram
Version | NID |
---|---|
3.60 | 0x5F22E192 |
sceAppMgrIsOtherAppPresent
Version | NID |
---|---|
1.69-3.60 | 0x371F6F81 |
sceAppMgrIsPidShellAndCrashed
Version | NID |
---|---|
3.60 | 0xC648EA9B |
sceAppMgrIsPsNowClient
Version | NID |
---|---|
3.60 | 0x972EA7BA |
sceAppMgrLaunchAppCancel
Version | NID |
---|---|
1.69-3.60 | 0x5369BC0A |
sceAppMgrLoadSafeMemory
Version | NID |
---|---|
1.69-3.60 | 0xFAF3DAAA |
sceAppMgrNotifyLiveBoardModeForShell
Version | NID |
---|---|
1.69-3.60 | 0x389F048D |
sceAppMgrQuitApp
Version | NID |
---|---|
1.69-3.60 | 0x0DD747FB |
sceAppMgrQuitForNonSuspendableApp
Version | NID |
---|---|
1.69-3.60 | 0xE3F719A0 |
sceAppMgrReceiveShellEventNum
Version | NID |
---|---|
1.69-3.60 | 0xFB67BABD |
sceAppMgrReleaseBgmPort
Version | NID |
---|---|
1.69-3.60 | 0xF3717E37 |
/* Open the acquired BGM port */ int sceAppMgrReleaseBgmPort(void);
sceAppMgrReleaseBtrm
Version | NID |
---|---|
1.69-3.60 | 0xACDCE4DB |
sceAppMgrReleaseSoundOutExclusive2
Version | NID |
---|---|
1.69-3.60 | 0x2BB68701 |
sceAppMgrReleaseSoundOutExclusive3
Version | NID |
---|---|
3.60 | 0x626C339D |
sceAppMgrReleaseSoundOutExclusive
Version | NID |
---|---|
1.69-3.60 | 0x3BA41199 |
sceAppMgrRestoreBgmSettingForShell
Version | NID |
---|---|
1.69-3.60 | 0xD9BCC50C |
sceAppMgrRestoreDisplaySettingForShell
Version | NID |
---|---|
1.69-3.60 | 0xE455922D |
sceAppMgrResumeBgAppByShell
Version | NID |
---|---|
3.60 | 0x64DD4321 |
sceAppMgrReturnLiveAreaOperationResultForShell
Version | NID |
---|---|
3.60 | 0x5CF3BA39 |
sceAppMgrSaveDataGetCachedRequiredSizeKiB
Version | NID |
---|---|
3.60 | 0x56EDE09A |
sceAppMgrSaveSafeMemory
Version | NID |
---|---|
1.69-3.60 | 0xD366AA44 |
sceAppMgrSendLiveBoardMode
Version | NID |
---|---|
1.69-3.60 | 0x3E4AC082 |
sceAppMgrSetAppProtectionModeOnMemoryShortage
Version | NID |
---|---|
1.69-3.60 | 0xAF8C7FFB |
sceAppMgrSetBgmSubPriorityForSystemChat
Version | NID |
---|---|
1.69-3.60 | 0x90E42B4D |
sceAppMgrSetBgmSubPriority
Version | NID |
---|---|
1.69-3.60 | 0x7333C2F1 |
sceAppMgrSetDisplayMergeConf
Version | NID |
---|---|
3.60 | 0x0789D501 |
sceAppMgrSetFakeSettingBug51800
Version | NID |
---|---|
3.60 | 0xF46C81F3 |
sceAppMgrSetInfobarStateForCommonDialog
Version | NID |
---|---|
1.69-3.60 | 0xD6758B4E |
sceAppMgrSetInfobarStateForShellByAppId
Version | NID |
---|---|
1.69-3.60 | 0xF7DFE96E |
sceAppMgrSetInfobarStateForShellByPid
Version | NID |
---|---|
1.69 | 0xA3314B2B |
sceAppMgrSetInfobarState
Version | NID |
---|---|
1.69-3.60 | 0xAD9022A1 |
/* Set infobar state */ int _sceAppMgrSetInfobarState(SceAppMgrInfoBarVisibility visibility, SceAppMgrInfoBarColor color, SceAppMgrInfoBarTransparency transparency);
sceAppMgrSetRecommendedScreenOrientationActivated
Version | NID |
---|---|
3.60 | 0x75876896 |
sceAppMgrSetSystemImposeState2
Version | NID |
---|---|
3.60 | 0x2163759A |
sceAppMgrSetSystemImposeState
Version | NID |
---|---|
1.69-3.60 | 0xD16B91B5 |
sceAppMgrSuspendBgAppByShell
Version | NID |
---|---|
3.60 | 0x5BCF6927 |
sceAppMgrSuspendUntilActivated
Version | NID |
---|---|
1.69-3.60 | 0xECEC7F90 |
_sceAppMgrCaptureFrameBuf
Version | NID |
---|---|
1.69 | 0xFA21A020 |
3.60 | NOT PRESENT |
_sceAppMgrCaptureFrameBufByAppId
Version | NID |
---|---|
0.990-1.69 | 0xD3787750 |
3.60 | NOT PRESENT |
_sceAppMgrCaptureFrameBufDMAC
Version | NID |
---|---|
1.69 | 0x34170882 |
3.60 | NOT PRESENT |
_sceAppMgrCaptureFrameBufIFTU
Version | NID |
---|---|
1.69 | 0x4799F0F7 |
3.60 | NOT PRESENT |
_sceAppMgrCheckSaveDataMounted
Version | NID |
---|---|
1.69 | 0x947A95CA |
3.60 | NOT PRESENT |
_sceAppMgrGameDataMountWithPatch
Version | NID |
---|---|
1.69 | 0x7A239EDC |
3.60 | NOT PRESENT |
_sceAppMgrGetParam
Version | NID |
---|---|
1.69 | 0x5FF430E8 |
3.60 | NOT PRESENT |
int _sceAppMgrGetParam(int app_id, char *param_buffer);
_sceAppMgrSendEvent
Version | NID |
---|---|
0.990-1.69 | 0x5432E51D |
3.60 | NOT PRESENT |
_sceAppMgrReleaseSoundOutExclusive3
Version | NID |
---|---|
1.69 | 0x82C924AD |
3.60 | NOT PRESENT |
sceAppMgrDestroyApp
Version | NID |
---|---|
1.69 | 0xD18F8DDD |
3.60 | NOT PRESENT |
sceAppMgrGetActivateApp
Version | NID |
---|---|
1.69 | 0x4C1183C2 |
3.60 | NOT PRESENT |
sceAppMgrGrowMemory2
Version | NID |
---|---|
1.69 | 0xE4CE2CB5 |
3.60 | NOT PRESENT |
sceAppMgrInfoBarClose
Version | NID |
---|---|
1.69 | 0x9A60BED4 |
3.60 | NOT PRESENT |
sceAppMgrInfoBarOpen
Version | NID |
---|---|
1.69 | 0x97B80C01 |
3.60 | NOT PRESENT |
sceAppMgrSetEnablePrioritizeSystemChat
Version | NID |
---|---|
1.69 | 0xD4078CC0 |
3.60 | NOT PRESENT |
_sceAppMgrAssignVoicePortByPid
Version | NID |
---|---|
0.990 | 0xC10C53D7 |
_sceAppMgrAssignVoicePortByAppId
Version | NID |
---|---|
0.990 | 0x83B3F1BE |
_sceAppMgrGetRunStatus
Version | NID |
---|---|
0.990 | 0x563C494F |
int _sceAppMgrGetRunStatus(void);
_sceAppMgrDump
Version | NID |
---|---|
0.990 | 0xEEDDB508 |
int _sceAppMgrDump(void);
_sceAppMgrIsGameProgram
Version | NID |
---|---|
0.990 | 0x13C5CB3D |
_sceAppMgrActivateApp
Version | NID |
---|---|
0.990 | 0x86B07AD5 |
int _sceAppMgrActivateApp(SceUID appId);
_sceAppMgrDestroyApp
Version | NID |
---|---|
0.990 | 0x14945ECE |
Returns 0 on success.
int _sceAppMgrDestroyApp(SceUID appId);
_sceAppMgrInfoBarClose
Version | NID |
---|---|
0.990 | 0x1819E285 |
int _sceAppMgrInfoBarClose(void);
Version | NID |
---|---|
0.990 | 0xD2B27255 |
Version | NID |
---|---|
1.69-3.60 | 0xB358E1B6 |
a1 - set 1 SceUID _sceSharedFbOpen(int a1, int sysver);
Version | NID |
---|---|
0.990-3.60 | 0x72067C6B |
note : If do not call sceSharedFbEnd after calling sceSharedFbBegin, you cannot return to the home
int sceSharedFbBegin(SceUID shared_fb_id, SceSharedFbInfo *info);
Version | NID |
---|---|
0.990-3.60 | 0x33DA3428 |
int sceSharedFbClose(SceUID shared_fb_id);
Version | NID |
---|---|
0.990-3.60 | 0xD6C643B5 |
a1 - set 1 SceUID sceSharedFbCreate(int a1, SceSharedFbCreate *create_param);
Version | NID |
---|---|
0.990-3.60 | 0xBE5A1A81 |
Version | NID |
---|---|
0.990-3.60 | 0xFC5A62B6 |
int sceSharedFbEnd(SceUID shared_fb_id);
Version | NID |
---|---|
0.990-3.60 | 0x819954FB |
int sceSharedFbGetInfo(SceUID shared_fb_id, SceSharedFbInfo *info);
Version | NID |
---|---|
0.990-3.60 | 0x61FEEDFA |
Version | NID |
---|---|
0.990-3.60 | 0xAC49FC1D |
int sceSharedFbGetShellRenderPort(void);
Version | NID |
---|---|
0.990-3.60 | 0xF9754AD9 |
a2 buf size is 0x40 a3 buf size is 4? int sceSharedFbUpdateProcessBegin(SceUID shared_fb_id, void *a2, void *a3);
Version | NID |
---|---|
0.990-3.60 | 0x565A9AB6 |
int sceSharedFbUpdateProcessEnd(SceUID shared_fb_id);
Version | NID |
---|---|
0.990-3.60 | 0x3889ACF8 |
int sceSharedFbUpdateProcess(void);
Version | NID |
---|---|
0.990-1.69 | 0x0B81B10F |
Version | NID |
---|---|
0.990-1.69 | 0x0D2B21AE |