Module
Known NIDs
Version |
Name |
World |
Privilege |
NID
|
1.69 |
SceAppMgr |
Non-secure |
Kernel |
0x69876CDE
|
3.60 |
SceAppMgr |
Non-secure |
Kernel |
0xDBB29DB7
|
Libraries
Known NIDs
Types
AppId
Some functions take an AppId as argument.
ID |
Desc
|
-1 |
Corresponds to pid 0
|
-2 |
Current app
|
-3 |
Unknown
|
-4 |
Unknown
|
-5 |
Unknown
|
-6 |
Unknown
|
SceAppMgr Mount IDs
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 |
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 |
ur0:user/XX/savedata/<TITLEID> |
savedata0: ?savedata1:? |
sceAppMgrSaveDataAddMount or sceAppUtilSaveDataMount |
|
0x3EF |
vs0:sys/external |
sdXXXXXXXXXXXX: |
automounted |
|
0x3F0 |
vs0:data/external |
sdXXXXXXXXXXXX: |
automounted |
|
Types
// Linked list of these items is controlled by common function that is responsible for PFS mounting.
// This function (on 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.
// size is 0x1D0 (known)
struct pfs_mount_t {
int mount_id;
char path[0x124]; // path used for PFS mount (like ux0:app/<TITLEID>)
char pfs_rnd_drive_id[0x10]; // PFS mount drive name - used for PFS mount - used internally by iofilemgr to connect to vfs_nodes through vfs_node_info?
char title_id[0x10];
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
};
// size is 0x24 (known)
struct appmgr_mount_t {
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>
char appmgr_rnd_drive_id[0x10]; //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
};
struct appmgr_mount_holder_t {
int unk0;
appmgr_mount_t *first_virt_mount; //start of the list for appmgr mounts
};
struct titleId_item {
char titleId[16];
};
// most importantly contains rif_info and keystone
// size is 0x508 (known)
struct phys_ctx_t {
int unk0[88];
int flag_160;
int unk164;
int unk168;
int unk16C;
int unk170;
char physical_mountpoint[12];
int unk180[70];
char prefix_298[4];
int flag_29C;
int unk2A0;
int unk2A4;
rif_info rif;
char keystone_318[96];
char titleId_378[16];
char titleid_388[16];
titleId_item addContTitleIds[8];
titleId_item saveDataTitleIds[8];
char unk498[112];
};
struct sub_ctx_23C2960_C {
char unk0[296];
int unk128;
int unk12C;
int unk130;
int unk134;
int unk138;
int unk13C;
char unk140[1016];
int unk538;
int unk53C;
char unk540;
char unk541;
char unk542;
char unk543;
int unk544;
int unk548;
};
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;
};
// most importantly holds appmgr_mount_holder_t
// which is a root for appmgr mountpoints
struct sub_ctx_23C2960_558 {
char titleId[32];
SceUID pid;
int unk24;
appmgr_mount_holder_t mctx_hldr_28;
phys_ctx_t phys_ctx_30;
sub_ctx_23C2960_558_548 unk548;
};
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;
};
struct sub_ctx_23C2960_AFC {
char unk_0[4260];
sub_ctx_23C2960_AFC_10A4 unk_10A4;
};
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;
};
struct sub_ctx_23C2960_1BC0_14 {
char unk0[2028];
sub_ctx_23C2960_1BC0_14_7EC unk7EC;
};
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;
};
struct sub_ctx_23C2960_2400 {
int unk0;
int unk4;
int unk8;
char unkC[4];
};
// size is 0x2410 (known)
struct ctx_23C2960 {
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;
};
typedef ctx_23C2960 global_ctx_item;
struct generic_mount_ctx {
char titleId[16];
char passCode[32];
char mountDrive[16];
};
#define SCE_APPMGR_MAX_APP_NAME_LENGTH (31) /* Maximum app name length */
/* Event ID */
#define SCE_APPMGR_SYSTEMEVENT_ON_ACTIVATE (0x10000001)
#define SCE_APPMGR_SYSTEMEVENT_ON_DEACTIVATE (0x10000002)
#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)
/* Error number */
#define SCE_APPMGR_ERROR_BUSY (0x80802000) /* 0x80802000 Busy */
#define SCE_APPMGR_ERROR_INTERNAL (0x80802001) /* 0x80802001 Internal error */
#define SCE_APPMGR_ERROR_PARAM (0x80802002) /* 0x80802002 The parameter is invalid. It is necessary to deal with it by the time of application development */
#define SCE_APPMGR_ERROR_STATE (0x80802013) /* 0x80802013 Invalid state */
#define SCE_APPMGR_ERROR_NULL_POINTER (0x80802016) /* 0x80802016 NULL pointer */
#define SCE_APPMGR_ERROR_INVALID (0x8080201a) /* 0x8080201a invalid parameter */
#define SCE_APPMGR_ERROR_INVALID_SELF_PATH (0x8080201e) /* 0x8080201e SELF path is invalid */
#define SCE_APPMGR_ERROR_TOO_LONG_ARGV (0x8080201d) /* 0x8080201d argv is too long */
#define SCE_APPMGR_ERROR_BGM_PORT_BUSY (0x80803000) /* 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;
/* System event structure */
typedef struct SceAppMgrSystemEvent {
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 SceAppMgrNetworkDisconnectionWarningDialogStateOptParam {
SceUInt8 reserved[128];
} SceAppMgrNetworkDisconnectionWarningDialogStateOptParam;
typedef struct SceAppMgrLoadExecOptParam {
int reserved[256/4];
} SceAppMgrLoadExecOptParam;
#define SCE_APP_MGR_MAX_EVENT_PARM_LENGTH (56) /* Maximum event parameter length */
/* Event structure */
typedef struct SceAppMgrEvent {
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;
// First element is at offset 0x22110 on FW 0.990
typedef struct SceAppInfo_internal { // size is 0xADC on FW 0.990
SceUID appId; /* Application ID. Added when required by the event */
char appName[32];
char appPath[256];
SceSize budgetSize;
SceSize phycontSize;
SceUint launchMode;
SceUint budgetType;
SceUint processAttr;
SceUint unk_13C;
SceUint unk_140;
SceUID processId;
SceUint state;
char unk_14C[0x278 - 0x14C];
SceUint bgm_priority;
} SceAppInfo_internal;
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, char *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 by create_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
struct acinst_res
{
char keystone[0x60];
char game_title[0x80];
};
int sceAppMgrAcInstGetAcdirParamForDriver(const char *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, char *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
|
sceAppMgrCheckPfsMountedForDriver
Version |
NID
|
3.60 |
0x0B1BEEE0
|
sceAppMgrCloudDataClearMcIdForDriver
Version |
NID
|
3.60 |
0xEC408FEF
|
Version |
NID
|
3.60 |
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(const char* 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, const char *titleId, char *mountPoint);
Version |
NID
|
3.60 |
0x55D48190
|
sceAppMgrDebugSettingNotifyUpdateForDriver
Version |
NID
|
3.60 |
0x7554330F
|
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
//derived from _sceAppMgrGameDataMount
int sceAppMgrGameDataMountForDriver(char *app_path, char *patch_path, char *rif_file_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
|
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
|
typedef struct SceAppMgrLaunchParam {
size_t size; //<! set to sizeof(SceAppMgrLaunchParam)
unsigned int unk_4; //<! set to 0x80000000 to break on launch
unsigned int unk_8;
unsigned int unk_C;
unsigned int unk_10;
unsigned int unk_14;
unsigned int unk_18;
unsigned int unk_1C;
unsigned int unk_20;
unsigned int unk_24;
unsigned int unk_28;
unsigned int unk_2C;
unsigned int unk_30;
} SceAppMgrLaunchParam;
/**
* @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 *param, 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
|
Version |
NID
|
3.60 |
0x62E98C42
|
sceAppMgrMmsMountForDriver
Version |
NID
|
3.60 |
0x13D54107
|
int sceAppMgrMmsMountForDriver(int mountId, char *mountPoint);
sceAppMgrPhotoMountForDriver
Version |
NID
|
3.60 |
0x43A35729
|
call sceAppMgrAppDataMountForDriver with mount_id 0x64
struct sceAppMgrPhotoMountParam
{
int size;
char unk4[128];
};
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
|
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);
SceAppMgrForDriver_0813AFCA
Version |
NID
|
0.990-3.60 |
0x0813AFCA
|
// partition_id: 1 (ur0:) or 2 (ux0:)
int SceAppMgrForDriver_0813AFCA(int partition_id, char *path, SceSize maxlen);
sceAppMgrAppParamGetIntForDriver
Version |
NID
|
3.60 |
0x12CE29F7
|
SceAppMgrForDriver_2FEACA9F
Version |
NID
|
0.990-3.60 |
0x2FEACA9F
|
sceAppMgrSpawnProcessExt_2ForDriver
Version |
NID
|
0.990-3.60 |
0x324DD34E
|
SceAppMgrForDriver_unk_0C5D65F1
Version |
NID
|
3.60 |
0x0C5D65F1
|
SceAppMgrForDriver_unk_1574E1A4
Version |
NID
|
3.60 |
0x1574E1A4
|
SceAppMgrForDriver_unk_1B6C2FED
Version |
NID
|
3.60 |
0x1B6C2FED
|
SceAppMgrForDriver_unk_21BE167A
Version |
NID
|
3.60 |
0x21BE167A
|
sceAppMgrSuspendAppForDebugger
Version |
NID
|
0.990-3.60 |
0x29421DCD
|
int sceAppMgrSuspendAppForDebugger(uint32_t appId);
SceAppMgrForDriver_unk_30947DF4
Version |
NID
|
3.60 |
0x30947DF4
|
SceAppMgrForDriver_unk_3B4F305B
Version |
NID
|
3.60 |
0x3B4F305B
|
SceAppMgrForDriver_unk_4FA62A46
Version |
NID
|
3.60 |
0x4FA62A46
|
SceAppMgrForDriver_unk_504023C8
Version |
NID
|
3.60 |
0x504023C8
|
SceAppMgrForDriver_unk_99AA37C1
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);
sceAppMgrKillAppForDebugger
Version |
NID
|
0.990-3.60 |
0xD80566DB
|
Temp name was sceAppMgrKillProcessForDriver.
/**
* @brief Kill an app process.
* @param[in] appId The app to kill.
* @return Zero on success, else < 0.
*/
int sceAppMgrKillAppForDebugger(SceUID appId);
SceAppMgrForDriver_unk_DC13160A
Version |
NID
|
3.60 |
0xDC13160A
|
SceAppMgrForDriver_unk_DD5BEEE3
Version |
NID
|
3.60 |
0xDD5BEEE3
|
SceAppMgrForDriver_unk_E8DB7942
Version |
NID
|
3.60 |
0xE8DB7942
|
SceAppMgrForDriver_unk_EBFE1BE2
Version |
NID
|
3.60 |
0xEBFE1BE2
|
SceAppMgrForDriver_unk_EE6047CA
Version |
NID
|
3.60 |
0xEE6047CA
|
SceAppMgrForDriver_unk_F3B1D42E
Version |
NID
|
3.60 |
0xF3B1D42E
|
sceAppMgrResumeAppForDebugger
Version |
NID
|
0.990-3.60 |
0xF9A61E94
|
int sceAppMgrResumeAppForDebugger(uint32_t appId);
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 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
- 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
struct sceAppMgrAppDataMountByIdOpt
{
int reserved1;
int reserved2;
};
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 {
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* buf_size);
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 0x08
{
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(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: _sceMgrConvertVs0userDrivePath("vs0:sys/external", mountname, length)
int _sceAppMgrConvertVs0UserDrivePath(const char *path, char outpath[length], int length);
_sceAppMgrDeclareShellProcess2
Version |
NID
|
1.69-3.60 |
0xBDF15BDC
|
exported to user by SceDriverUser
int _sceAppMgrDeclareShellProcess2 (char (*str)[32], char (*buf)[8]);
_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
_sceAppMgrGameDataMount
Version |
NID
|
1.69-3.60 |
0x454EB183
|
exported to user by SceDriverUser
typedef struct _sceAppMgrGameDataMount_opt //size is 0x18
{
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
|
1.69-3.60 |
0x6E65D746
|
exported to user by SceDriverUser
_sceAppMgrGetAppMgrState
Version |
NID
|
1.69-3.60 |
0x55C60D20
|
exported to user by SceDriverUser
_sceAppMgrGetAppParam2
Version |
NID
|
1.69-3.60 |
0x26D43923
|
exported to user by SceDriverUser
_sceAppMgrGetAppParam
Version |
NID
|
1.69-3.60 |
0x258C3E3C
|
exported to user by SceDriverUser
_sceAppMgrGetBootParam
Version |
NID
|
1.69-3.60 |
0xEEFBC756
|
exported to user by SceDriverUser
_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
|
1.69-3.60 |
0x81569A58
|
exported to user by SceDriverUser
_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
|
1.69-3.60 |
0xC311CC17
|
exported to user by SceDriverUser
_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
|
1.69-3.60 |
0x08E93582
|
exported to user by SceDriverUser
_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
appId possible values
/**
* 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 actual path (uses sceFiosKernelOverlayResolveSyncForDriver underneath).
/**
* Resolve a path to the corresponding true path (uses ::ksceFiosKernelOverlayResolveSync 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 auth id SceContentManager(0x280000000000002D)
- check some flag set by SceSblPostSsMgrForDriver (related to utoken_sm.self F00D commands)
- read sealedkey from <path>/sce_sys/sealedkey to restore klicensee
- mount PFS tsXXXXXXXXXXXX: mountpoint to <path> path with mountid 0x3ED
- get ACCOUNT_ID from <path>/sce_sys/param.sfo
struct sceAppMgrGetSaveDataInfoForSpecialExportOpt
{
int reserved0;
int reserved1;
};
int _sceAppMgrGetSaveDataInfoForSpecialExport(char *path, char *account_id, sceAppMgrGetSaveDataInfoForSpecialExportOpt *opt);
_sceAppMgrGetSaveDataInfo
Version |
NID
|
1.69-3.60 |
0x6C52A377
|
exported to user by SceDriverUser
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;
};
struct sceAppMgrGetSaveDataInfoOpt
{
sceAppMgrGetSaveDataInfo_res *res;
int unk4;
int unk8;
int unkC;
};
int _sceAppMgrGetSaveDataInfo(char *path, char *titleid, int force_mount_ux, sceAppMgrGetSaveDataInfoOpt *opt);
_sceAppMgrGetStatusByAppId
Version |
NID
|
1.69-3.60 |
0xBF4213A3
|
exported to user by SceDriverUser
int _sceAppMgrGetStatusByAppId(int app_id, char *status_buffer);
_sceAppMgrGetStatusById
Version |
NID
|
1.69-3.60 |
0x211D9558
|
exported to user by SceDriverUser
_sceAppMgrGetStatusByName
Version |
NID
|
1.69-3.60 |
0x46998AFC
|
exported to user by SceDriverUser
_sceAppMgrGetStatusByName(const char* app_name, char *status_buffer);
_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
|
1.69-3.60 |
0x84B138BF
|
exported to user by SceDriverUser
_sceAppMgrGetVs0UserDataDrive
Version |
NID
|
1.69-3.60 |
0xC361C084
|
exported to user by SceDriverUser
_sceAppMgrGetVs0UserModuleDrive
Version |
NID
|
1.69-3.60 |
0x85589E87
|
exported to user by SceDriverUser
_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
_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 userland. 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
struct sceAppMgrLoopBackMountOpt
{
int reserved0;
int reserved1;
};
int _sceAppMgrLoopBackMount(int mountId, char *titleId, 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
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(const char *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
struct sceAppMgrTrophyMountByIdOpt
{
int reserved0;
int reserved1;
};
int _sceAppMgrTrophyMountById(int mountId, char *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/sqlite
0xC9
: ur0:temp/attach
0xCA
: ux0:pspemu
0xCB
: ?
0xCC
: ur0:temp/checkout
0xCE
: 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
|
appid is AppId
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
|
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
|
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
|
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
|
SceSharedFb
_sceSharedFbOpen
Version |
NID
|
1.69-3.60 |
0xB358E1B6
|
sceSharedFbBegin
Version |
NID
|
1.69-3.60 |
0x72067C6B
|
sceSharedFbClose
Version |
NID
|
1.69-3.60 |
0x33DA3428
|
sceSharedFbCreate
Version |
NID
|
1.69-3.60 |
0xD6C643B5
|
sceSharedFbDelete
Version |
NID
|
1.69-3.60 |
0xBE5A1A81
|
sceSharedFbEnd
Version |
NID
|
1.69-3.60 |
0xFC5A62B6
|
sceSharedFbGetInfo
Version |
NID
|
1.69-3.60 |
0x819954FB
|
sceSharedFbGetRenderingInfo
Version |
NID
|
1.69-3.60 |
0x61FEEDFA
|
sceSharedFbGetShellRenderPort
Version |
NID
|
1.69-3.60 |
0xAC49FC1D
|
sceSharedFbUpdateProcessBegin
Version |
NID
|
1.69-3.60 |
0xF9754AD9
|
sceSharedFbUpdateProcessEnd
Version |
NID
|
1.69-3.60 |
0x565A9AB6
|
sceSharedFbUpdateProcess
Version |
NID
|
1.69-3.60 |
0x3889ACF8
|
sceSharedFbSetShellRenderPort
Version |
NID
|
1.69 |
0x0B81B10F
|
sceSharedFbSetRenderingOrderForTest
Version |
NID
|
1.69 |
0x0D2B21AE
|
SceSharedFbForDriver