Imp sceKernelGetModuleIdList by CPkmn

This commit is contained in:
sum2012 2013-12-04 06:28:32 +08:00
parent 726327beaa
commit eb5c349c2f

View file

@ -1802,9 +1802,27 @@ u32 sceKernelQueryModuleInfo(u32 uid, u32 infoAddr)
return 0;
}
u32 sceKernelGetModuleIdList(u32 resultBuffer, u32 resultBufferSize,u32 idCountAddr)
u32 sceKernelGetModuleIdList(u32 resultBuffer, u32 resultBufferSize, u32 idCountAddr)
{
ERROR_LOG_REPORT(SCEMODULE, "UNIMPL sceKernelGetModuleIdList(%08x, %i,%08x)", resultBuffer, resultBufferSize, idCountAddr);
ERROR_LOG(SCEMODULE, "UNTESTED sceKernelGetModuleIdList(%08x, %i, %08x)", resultBuffer, resultBufferSize, idCountAddr);
int idCount = 0;
int resultBufferOffset = 0;
u32 error;
for (auto mod = loadedModules.begin(), modend = loadedModules.end(); mod != modend; ++mod) {
Module *module = kernelObjects.Get<Module>(*mod, error);
if (!module->isFake) {
if (resultBufferOffset < resultBufferSize) {
Memory::Write_U32(module->GetUID(), resultBuffer + resultBufferOffset);
resultBufferOffset += 4;
}
idCount++;
}
}
Memory::Write_U32(idCount, idCountAddr);
return 0;
}