public virtual int sceKernelLoadModuleNpDrm(PspString path, int flags, TPointer optionAddr) { SceKernelLMOption lmOption = null; if (optionAddr.NotNull) { lmOption = new SceKernelLMOption(); lmOption.read(optionAddr); if (log.InfoEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleNpDrm options: {0}", lmOption)); } } // SPRX modules can't be decrypted yet. if (!DisableDLCStatus) { Console.WriteLine(string.Format("sceKernelLoadModuleNpDrm detected encrypted DLC module: {0}", path.String)); return(SceKernelErrors.ERROR_NPDRM_INVALID_PERM); } LoadModuleContext loadModuleContext = new LoadModuleContext(); loadModuleContext.fileName = path.String; loadModuleContext.flags = flags; loadModuleContext.lmOption = lmOption; loadModuleContext.needModuleInfo = true; loadModuleContext.allocMem = true; return(Modules.ModuleMgrForUserModule.hleKernelLoadModule(loadModuleContext)); }
public virtual int sceKernelLoadModuleBuffer(TPointer buffer, int bufSize, int flags, TPointer optionAddr) { SceKernelLMOption lmOption = null; if (optionAddr.NotNull) { lmOption = new SceKernelLMOption(); lmOption.read(optionAddr); if (log.InfoEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleBuffer options: {0}", lmOption)); } } LoadModuleContext loadModuleContext = new LoadModuleContext(); loadModuleContext.fileName = buffer.ToString(); loadModuleContext.flags = flags; loadModuleContext.buffer = buffer.Address; loadModuleContext.bufferSize = bufSize; loadModuleContext.lmOption = lmOption; loadModuleContext.needModuleInfo = true; loadModuleContext.allocMem = true; return(Modules.ModuleMgrForUserModule.hleKernelLoadModule(loadModuleContext)); }
public virtual int sceKernelLoadModuleVSH(PspString path, int flags, TPointer optionAddr) { SceKernelLMOption lmOption = null; if (optionAddr.NotNull) { lmOption = new SceKernelLMOption(); lmOption.read(optionAddr); if (log.InfoEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleVSH options: {0}", lmOption)); } } LoadModuleContext loadModuleContext = new LoadModuleContext(); loadModuleContext.fileName = path.String; loadModuleContext.flags = flags; loadModuleContext.lmOption = lmOption; loadModuleContext.needModuleInfo = true; loadModuleContext.allocMem = true; return(Modules.ModuleMgrForUserModule.hleKernelLoadModule(loadModuleContext)); }
public virtual int sceKernelLoadModuleToBlock(PspString path, int blockId, TPointer32 separatedBlockId, int unknown2, TPointer optionAddr) { SceKernelLMOption lmOption = null; if (optionAddr.NotNull) { lmOption = new SceKernelLMOption(); lmOption.read(optionAddr); if (log.InfoEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleToBlock options: {0}", lmOption)); } } SysMemInfo sysMemInfo = Modules.SysMemUserForUserModule.getSysMemInfo(blockId); if (sysMemInfo == null) { return(-1); } //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleToBlock sysMemInfo={0}", sysMemInfo)); } modulesWithMemoryAllocated.Add(path.String); // If we cannot load the module file, return the same blockId separatedBlockId.setValue(blockId); StringBuilder localFileName = new StringBuilder(); IVirtualFileSystem vfs = Modules.IoFileMgrForUserModule.getVirtualFileSystem(path.String, localFileName); if (vfs != null) { IVirtualFile vFile = vfs.ioOpen(localFileName.ToString(), IoFileMgrForUser.PSP_O_RDONLY, 0); if (vFile != null) { sbyte[] bytes = new sbyte[(int)vFile.Length()]; int Length = vFile.ioRead(bytes, 0, bytes.Length); ByteBuffer moduleBuffer = ByteBuffer.wrap(bytes, 0, Length); SceModule module = Modules.ModuleMgrForUserModule.getModuleInfo(path.String, moduleBuffer, sysMemInfo.partitionid, sysMemInfo.partitionid); if (module != null) { int size = Modules.ModuleMgrForUserModule.getModuleRequiredMemorySize(module); //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleToBlock module requiring 0x{0:X} bytes", size)); } // Aligned on 256 bytes boundary size = Utilities.alignUp(size, 0xFF); SysMemInfo separatedSysMemInfo = Modules.SysMemUserForUserModule.separateMemoryBlock(sysMemInfo, size); // This is the new blockId after calling sceKernelSeparateMemoryBlock separatedBlockId.setValue(separatedSysMemInfo.uid); //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceKernelLoadModuleToBlock separatedSysMemInfo={0}", separatedSysMemInfo)); } } } } LoadModuleContext loadModuleContext = new LoadModuleContext(); loadModuleContext.fileName = path.String; loadModuleContext.lmOption = lmOption; loadModuleContext.needModuleInfo = true; loadModuleContext.allocMem = false; loadModuleContext.baseAddr = sysMemInfo.addr; loadModuleContext.basePartition = sysMemInfo.partitionid; return(Modules.ModuleMgrForUserModule.hleKernelLoadModule(loadModuleContext)); }