diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/kernel/kernel/modulemgr.h | 80 |
1 files changed, 78 insertions, 2 deletions
diff --git a/include/kernel/kernel/modulemgr.h b/include/kernel/kernel/modulemgr.h index 2ecc204..b5e84bc 100644 --- a/include/kernel/kernel/modulemgr.h +++ b/include/kernel/kernel/modulemgr.h @@ -72,6 +72,51 @@ typedef struct SceUInt unk_24; } SceKernelFwInfo; +typedef struct +{ + SceSize size; //!< sizeof(SceKernelLoadedModuleInfo) + SceUID modid; + uint32_t version; + uint32_t unkC; + uint32_t unk10; + uint32_t unk14; + uint32_t unk18; + uint32_t unk1C; + uint32_t unk20; + char module_name[28]; + uint32_t unk40; + uint32_t unk44; + uint32_t unk48; + uint32_t unk4C; + uint32_t unk50; + uint32_t unk54; + uint32_t unk58; + uint32_t unk5C; + uint32_t unk60; + uint32_t unk64; + uint32_t unk68; + uint32_t unk6C; + uint32_t unk70; + uint32_t unk74; + uint32_t unk78; + uint32_t unk7C; + uint32_t unk80; + uint32_t unk84; +} SceKernelLoadedModuleInfo; + +typedef struct +{ + SceSize size; //!< sizeof(SceKernelModuleInfo2) + SceUID modid1; + uint32_t unk1; + uint32_t unk2; + uint32_t unk3; + uint32_t unk4; + char module_name[256]; + uint32_t unk5; + SceUID modid2; +} SceKernelModuleInfo2; + int sceKernelGetModuleList(SceUID pid, int flags1, int flags2, SceUID *modids, size_t *num); int sceKernelGetModuleInfo(SceUID pid, SceUID modid, SceKernelModuleInfo *info); int sceKernelGetModuleInternal(SceUID modid, void **module); @@ -96,7 +141,7 @@ int sceKernelStopUnloadModuleForPid(SceUID pid, SceUID modid, SceSize args, void int sceKernelMountBootfs(const char *bootImagePath); int sceKernelUmountBootfs(void); -int sceKernelSearchModuleByName(const char* module_name, const char* path, int pid); +int sceKernelSearchModuleByName(const char *module_name, const char *path, int pid); /** * @brief Get the main module for a given process. @@ -105,9 +150,40 @@ int sceKernelSearchModuleByName(const char* module_name, const char* path, int p */ SceUID sceKernelGetProcessMainModule(SceUID pid); +/** + * @par Example1: Acquire max to 10 module info + * @code + * SceKernelLoadedModuleInfo infolists[10]; + * size_t num = 10;// Get max + * ret = sceKernelGetModuleList2(pid, infolists, &num); + * @endcode + * + * @param[in] pid - target pid + * @param[out] infolists - infolists output + * @param[in] num - Specify the maximum number of modinfolist to retrieve. If the function returns 0, it returns the number of modules loaded in the target pid in num + * + * @return 0 on success, < 0 on error. + */ +int sceKernelGetModuleList2(SceUID pid, SceKernelLoadedModuleInfo *infolists, size_t *num); + +/** + * @param[in] pid - target pid + * @param[in] modid - target modid + * @param[out] info - info output + * @param[in] unk1 - set 0x120 + * @param[in] unk2 - set 0x120 + * + * @return 0 on success, < 0 on error. + */ +int sceKernelGetModuleInfo2(SceUID pid, SceUID modid, SceKernelModuleInfo2 *info, int unk1, int unk2); + +int sceKernelGetModuleLibraryInfo(SceUID pid, SceUID modid, void *unk1, const void *unk2, int unk3); +int sceKernelGetModuleUid(SceUID pid, SceUID modid, SceUID *modid_out, const void *unk1, int unk2); +int sceKernelGetModuleUidList(SceUID pid, SceUID *modids, size_t *num); +int sceKernelGetProcessMainModulePath(SceUID pid, char *path, int pathlen); + #ifdef __cplusplus } #endif #endif /* _PSP2_KERNEL_MODULEMGR_H_ */ - |