 |
forums.ps2dev.org Homebrew PS2, PSP & PS3 Development Discussions
|
| View previous topic :: View next topic |
| Author |
Message |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 1:18 am Post subject: Locating Sysconf |
|
|
Hey,
I've been trying this for awhile, searched all over the web, and I think the best place to ask it is here.
I'm trying to locate the sysconf_plugin_module, my first attempt was the following (Pseudo-C):
| Code: | sceKernelDelayThread(2000000);
sceKernelDcacheWritebackAll();
u32 *start = (u32 *)sceKernelFindModuleByName("sysconf_plugin_module");
u32 module = *(start+27); |
That didn't seem to work, however, turning the delay thread into 15 seconds, booting the PSP, and rushing to a settings menu, allowed me to relocate the module, but that's a bit annoying for the end user.
So, sysconf doesn't seem to load on boot yet, so I need an alternative to find it.
Any help is appreciated,
JumpR
Last edited by JumpR on Sun Feb 10, 2008 6:56 am; edited 2 times in total |
|
| Back to top |
|
 |
TyRaNiD
Joined: 18 Jan 2004 Posts: 918
|
Posted: Sun Feb 10, 2008 2:16 am Post subject: |
|
|
Few questions...
1) Why?
2) Why?
3) See 1 and 2 |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 2:23 am Post subject: |
|
|
| TyRaNiD wrote: | Few questions...
1) Why?
2) Why?
3) See 1 and 2 |
I want to apply some memory patches in sysconf. Oh, oops, I confused relocate with locate, I modified the post, my apologies.
Last edited by JumpR on Sun Feb 10, 2008 2:31 am; edited 2 times in total |
|
| Back to top |
|
 |
jimparis
Joined: 10 Jun 2005 Posts: 1179 Location: Boston
|
Posted: Sun Feb 10, 2008 2:26 am Post subject: |
|
|
| I think you mean "locate" not "relocate". |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 2:27 am Post subject: |
|
|
| jimparis wrote: | | I think you mean "locate" not "relocate". |
Indeed. Sorry, didn't think of the difference at first, English is not my first language, locating is a bit more logic to do then relocating, I'll edit first post.
I feel quite emberassed. |
|
| Back to top |
|
 |
SilverSpring
Joined: 27 Feb 2007 Posts: 115
|
Posted: Sun Feb 10, 2008 2:58 am Post subject: |
|
|
| It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon. |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 2:59 am Post subject: |
|
|
| SilverSpring wrote: | | It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon. |
I know, but I need to figure out when it's loaded, so that I can start locating and patching it once that happens, that's why I'm writing all the voodoo code.
I might've caused some confusion with my first post. All I want to do is figure out when sysconf loads, and the location of it. |
|
| Back to top |
|
 |
SilverSpring
Joined: 27 Feb 2007 Posts: 115
|
Posted: Sun Feb 10, 2008 3:17 am Post subject: |
|
|
| JumpR wrote: | | SilverSpring wrote: | | It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon. |
I know, but I need to figure out when it's loaded, so that I can start locating and patching it once that happens, that's why I'm writing all the voodoo code.
I might've caused some confusion with my first post. All I want to do is figure out when sysconf loads, and the location of it. |
The VSH uses scePaf_72A0044D to load/start the module. You can hook it and search for "flash0:/vsh/module/sysconf_plugin.prx" in it's second arg to know when it gets loaded. |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Sun Feb 10, 2008 3:18 am Post subject: |
|
|
| Well, for things like this is for what i export the function sctrlHENSetStartModuleHandler on the cfw, for dynamic patching :P |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 3:20 am Post subject: |
|
|
| SilverSpring wrote: | | JumpR wrote: | | SilverSpring wrote: | | It's a vsh plugin so it only loads when it's used like all other vsh plugin modules (for picture, music, movie, etc.). Ie. when you click the icon. |
I know, but I need to figure out when it's loaded, so that I can start locating and patching it once that happens, that's why I'm writing all the voodoo code.
I might've caused some confusion with my first post. All I want to do is figure out when sysconf loads, and the location of it. |
The VSH uses scePaf_72A0044D to load/start the module. You can hook it and search for "flash0:/vsh/module/sysconf_plugin.prx" in it's second arg to know when it gets loaded. |
Thanks for the information, do you have a quick example on how to hook a function? I did several attempts with things like these
| Code: | #define MIPS_J_ADDRESS(x) (((u32)((x)) & 0x3FFcFFFFF) >> 2)
#define JAL_TO(x) (0x0E000000 | MIPS_J_ADDRESS(x)) |
Then attempting to patch the calls with that and _sw, but it didn't really work.
If you've got a (link to a) example, it'd be great, thanks for all the help so far!
I have partial MIPS knowledge and I'll be able to find the memory offsets I need, so that's not a problem. |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Sun Feb 10, 2008 3:26 am Post subject: |
|
|
| If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash. |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 3:45 am Post subject: |
|
|
| moonlight wrote: | | If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash. |
I didn't notice your previous post till now, I downloaded the M33 SDK and found the sctrlHENSetStartModuleHandler, interesting function which I'll sure experiment with.
However, if I can't hook a user function from a kernel PRX, how would I go about doing that then? A user mode plugin isn't really a perfect solution as far as I know.
Thanks for the help. |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Sun Feb 10, 2008 3:50 am Post subject: |
|
|
Well, better use that function I told you. It will advise your module whenever a module is about to start. You just have to compare mod->modname name with the one you are searching, and doing stuff in that case.
But be careful of using it correctly, calling the "previous" function if it exists, and setting the correct compiler flags (as indicated in function documentation) to avoid the compiler using the gp register. |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 3:55 am Post subject: |
|
|
| moonlight wrote: | Well, better use that function I told you. It will advise your module whenever a module is about to start. You just have to compare mod->modname name with the one you are searching, and doing stuff in that case.
But be careful of using it correctly, calling the "previous" function if it exists, and setting the correct compiler flags (as indicated in function documentation) to avoid the compiler using the gp register. |
Indeed will I use your function, but the question regarding the hooking of functions was apart from it.
Because, after detecting the module, I need to hook some functions in the module. I expected my old code to work, but you just posted that you can't hook user functions from a kernel PRX. Because of that, I'd better ask that seperate question here right now, rather then creating a new thread about it. After this, I should know everything I need to know.
Thanks for your time,
JumpR |
|
| Back to top |
|
 |
Hellcat
Joined: 24 Jan 2007 Posts: 84
|
Posted: Sun Feb 10, 2008 4:13 am Post subject: |
|
|
Not sure if this really helps, but here's the code I use to hook syscalls:
| Code: | struct SyscallHeader
{
void *unk;
unsigned int basenum;
unsigned int topnum;
unsigned int size;
};
u32 pspFindProc(const char* szMod, const char* szLib, u32 nid)
{
struct SceLibraryEntryTable *entry;
SceModule *pMod;
void *entTab;
int entLen;
pMod = sceKernelFindModuleByName(szMod);
if (!pMod)
{
// NOP //
return 0;
}
int i = 0;
entTab = pMod->ent_top;
entLen = pMod->ent_size;
while(i < entLen)
{
int count;
int total;
unsigned int *vars;
entry = (struct SceLibraryEntryTable *) (entTab + i);
if(entry->libname && !strcmp(entry->libname, szLib))
{
total = entry->stubcount + entry->vstubcount;
vars = entry->entrytable;
if(entry->stubcount > 0)
{
for(count = 0; count < entry->stubcount; count++)
{
if (vars[count] == nid)
{
return vars[count+total];
}
}
}
}
i += (entry->len * 4);
}
return 0;
}
void* pspGetSysCallAddr(u32 addr)
{
struct SyscallHeader *head;
u32 *syscalls;
void **ptr;
int size;
int i;
asm(
"cfc0 %0, $12\n"
: "=r"(ptr)
);
if(!ptr)
{
return NULL;
}
head = (struct SyscallHeader *) *ptr;
syscalls = (u32*) (*ptr + 0x10);
size = (head->size - 0x10);
for(i = 0; i < size; i++)
{
if(syscalls[i] == addr)
{
return &syscalls[i];
}
}
return NULL;
}
// static
void* pspPatchProcCall(u32 *addr, void *func)
{
if(!addr)
{
return NULL;
}
*addr = (u32) func;
sceKernelDcacheWritebackInvalidateRange(addr, sizeof(addr));
sceKernelIcacheInvalidateRange(addr, sizeof(addr));
return addr;
} |
and call it (perform the actual hooking) with something like this:
| Code: | oProcAddr = (void*)pspFindProc("sceIOFileManager", "IoFileMgrForUser", 0x109F50BC);
pspPatchProcCall(pspGetSysCallAddr((u32)oProcAddr), &patchedIoOpen);
oIoOpen = (void*)oProcAddr; |
A bit OT, but:
Can anyone tell me in which .PRX is the code doing the memstick formattig when using the option in System-Config of the PSP?
I wanna check a few things in there.... |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Sun Feb 10, 2008 4:17 am Post subject: |
|
|
The process is really ugly :)
Well, user mode and kernel one comunicate between syscalls.
So, basically you have to set a syscall instruction in the point to hook, and make sure the syscall number will end in your code. You can have a syscall in your code by exporting a function to user mode, and the number of your syscall can be get using sceKernelQuerySystemCall(addr), where addr is the address of your function, although I'm not sure if in latest firmwares the syscall is inmediately assigned or if it assigned after having been imported at least once.
Another way would be just patching the address of an already registered syscall, and find a way of diferentiating the call to that function from the one to yours.
Another problem is that syscall don't have a delay slot, so when replacing a jal with a syscall instruction, you have to take care of that.
EDIT: well, someone replied first :p |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Sun Feb 10, 2008 4:23 am Post subject: |
|
|
| Hellcat wrote: |
A bit OT, but:
Can anyone tell me in which .PRX is the code doing the memstick formattig when using the option in System-Config of the PSP?
I wanna check a few things in there.... |
The format itself is done through a fatms0 devctl, in concrete, the devctl code 0x0241d813, but i don't know the caller, maybe sysconf_plugin.
EDIT: yeah, it is, i saw the code.
| Code: |
u32 x[1];
x[0] = 0;
vshIoDevctl("fatms0:", 0x0241d813, &x, 4, NULL, 0); |
(After last edit, this should be the correct code. I bet the "x" is really a structure with only one field that is set to 0/NULL.)
Probably requires kernel mode, that's why they are using vshIoDevctl.
Last edited by moonlight on Sun Feb 10, 2008 4:38 am; edited 5 times in total |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 4:29 am Post subject: |
|
|
Thanks for all the help, much appreciated. I'll Google a bit for more information about syscalls and I should be fine.
Thanks! |
|
| Back to top |
|
 |
KickinAezz
Joined: 03 Jun 2007 Posts: 328
|
Posted: Sun Feb 10, 2008 5:34 am Post subject: |
|
|
| moonlight wrote: | | If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash. | :confused: I had no problems doing so in the past. _________________ Intrigued by PSP system Since December 2006.
Use it more for Development than for Gaming. |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 6:39 am Post subject: |
|
|
Well, this just isn't going to work, I downloaded the M33 SDK and copied it to the pspdev directory (it's found by the compiler if I include it), and coded this in my attempt to dump the sysconf:
| Code: | #include <pspkernel.h>
#include <pspctrl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <systemctrl.h>
#include <systemctrl_se.h>
PSP_MODULE_INFO("dump", 0x1000, 0, 1);
PSP_MAIN_THREAD_ATTR(0);
STMOD_HANDLER previous = NULL;
int OnModuleStart(SceModule2 *mod);
int OnModuleStart(SceModule2 *mod){
if (strcmp(mod->modname, "sysconf_plugin_module") == 0)
{
u32 *start = (u32 *)sceKernelFindModuleByName("sysconf_plugin_module");
u32 module = *(start+27);
int fd = sceIoOpen("ms0:/dump.bin", PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
sceKernelDcacheWritebackAll();
sceIoWrite(fd, (void*) module, 0x030000);
sceIoClose(fd);
}
if (!previous) return 0;
return previous(mod);
}
int main_thread(SceSize args, void* argp)
{
sceKernelDelayThread(2000000);
previous = sctrlHENSetStartModuleHandler(OnModuleStart);
// int fd = sceIoOpen("ms0:/sysconf_dump.bin", PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
// sceIoWrite(fd, (void*) module, 0x030000);
// sceIoClose(fd);
return 0;
}
int module_start(SceSize args, void *argp)
{
SceUID thid;
thid = sceKernelCreateThread("ch_main", main_thread, 0x18, 0x1000, 0, NULL);
if (thid >= 0) sceKernelStartThread(thid, args, argp);
return 0;
}
int module_stop (void) {
return 0;
} |
Added the flag that I should add according to the SDK function doc and also added this:
| Code: | | LIBS = -lpspsystemctrl_kernel |
So, I attempted to compile, and it doesn't work.
| Code: | In file included from dump.c:6:
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:189: er
ror: expected ')' before '*' token
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:230: er
ror: expected '=', ',', ';', 'asm' or '__attribute__' before 'sctrlHENSetStartMo
duleHandler'
dump.c:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'previ
ous'
dump.c:11: error: expected ')' before '*' token
dump.c:12: error: expected ')' before '*' token
dump.c: In function 'main_thread':
dump.c:29: error: 'previous' undeclared (first use in this function)
dump.c:29: error: (Each undeclared identifier is reported only once
dump.c:29: error: for each function it appears in.)
dump.c:29: warning: implicit declaration of function 'sctrlHENSetStartModuleHand
ler'
dump.c:29: error: 'OnModuleStart' undeclared (first use in this function) |
But I'm probably slowly moving into the newbie questions, so maybe I shouldn't ask them here, if so, tell me. |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Sun Feb 10, 2008 6:44 am Post subject: |
|
|
| KickinAezz wrote: | | moonlight wrote: | | If you are in a kernel mode prx, you cannot hook a user function like that, not without endind with a crash. | :confused: I had no problems doing so in the past. |
You cannot jump from a user address to a kernel address directly. Another thing would be in 1.50, where a kernel static elf can be loaded in user memory. |
|
| Back to top |
|
 |
TyRaNiD
Joined: 18 Jan 2004 Posts: 918
|
Posted: Sun Feb 10, 2008 10:16 pm Post subject: |
|
|
| Well if you need to get the syscall numbers allocated (and it doesn't do it for you at load time) you could always make a small user mode prx which you load the unload ;) |
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Sun Feb 10, 2008 10:51 pm Post subject: |
|
|
| TyRaNiD wrote: | | Well if you need to get the syscall numbers allocated (and it doesn't do it for you at load time) you could always make a small user mode prx which you load the unload ;) |
Thanks, but I currently can't even get the M33 SDK working, it keeps showing me errors like these:
| Code: | In file included from dump.c:6:
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:189: er
ror: expected ')' before '*' token
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:230: er
ror: expected '=', ',', ';', 'asm' or '__attribute__' before 'sctrlHENSetStartMo
duleHandler'
dump.c:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'previ
ous'
dump.c:11: error: expected ')' before '*' token
dump.c:12: error: expected ')' before '*' token
dump.c: In function 'main_thread':
dump.c:29: error: 'previous' undeclared (first use in this function)
dump.c:29: error: (Each undeclared identifier is reported only once
dump.c:29: error: for each function it appears in.)
dump.c:29: warning: implicit declaration of function 'sctrlHENSetStartModuleHand
ler'
dump.c:29: error: 'OnModuleStart' undeclared (first use in this function) |
See my previous post for details. This is driving me crazy, if I recall I had this problem with hundreds of things I tried to compile, which I just stopped working on them for. I wish I could get this fixed by now.
My Makefile:
| Code: | TARGET = dump
OBJS = dump.o
USE_KERNEL_LIBC=1
USE_KERNEL_LIBS=1
PSP_FW_VERSION=371
PRX_EXPORTS=exports.exp
INCDIR =
CFLAGS = -Os -G0 -Wall -fno-strict-aliasing -fno-builtin-printf -fno-pic
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LIBS = -lpspsystemctrl_kernel
LDFLAGS = -mno-crt0 -nostartfiles
PSPSDK=/usr/local/pspdev/psp/sdk
include $(PSPSDK)/lib/build_prx.mak |
Any clues? |
|
| Back to top |
|
 |
Mashphealh
Joined: 28 Nov 2007 Posts: 18
|
Posted: Mon Feb 11, 2008 2:03 am Post subject: |
|
|
| JumpR wrote: | | TyRaNiD wrote: | | Well if you need to get the syscall numbers allocated (and it doesn't do it for you at load time) you could always make a small user mode prx which you load the unload ;) |
Thanks, but I currently can't even get the M33 SDK working, it keeps showing me errors like these:
| Code: | In file included from dump.c:6:
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:189: er
ror: expected ')' before '*' token
/usr/local/pspdev/lib/gcc/psp/4.1.0/../../../../psp/include/systemctrl.h:230: er
ror: expected '=', ',', ';', 'asm' or '__attribute__' before 'sctrlHENSetStartMo
duleHandler'
dump.c:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'previ
ous'
dump.c:11: error: expected ')' before '*' token
dump.c:12: error: expected ')' before '*' token
dump.c: In function 'main_thread':
dump.c:29: error: 'previous' undeclared (first use in this function)
dump.c:29: error: (Each undeclared identifier is reported only once
dump.c:29: error: for each function it appears in.)
dump.c:29: warning: implicit declaration of function 'sctrlHENSetStartModuleHand
ler'
dump.c:29: error: 'OnModuleStart' undeclared (first use in this function) |
See my previous post for details. This is driving me crazy, if I recall I had this problem with hundreds of things I tried to compile, which I just stopped working on them for. I wish I could get this fixed by now.
My Makefile:
| Code: | TARGET = dump
OBJS = dump.o
USE_KERNEL_LIBC=1
USE_KERNEL_LIBS=1
PSP_FW_VERSION=371
PRX_EXPORTS=exports.exp
INCDIR =
CFLAGS = -Os -G0 -Wall -fno-strict-aliasing -fno-builtin-printf -fno-pic
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LIBS = -lpspsystemctrl_kernel
LDFLAGS = -mno-crt0 -nostartfiles
PSPSDK=/usr/local/pspdev/psp/sdk
include $(PSPSDK)/lib/build_prx.mak |
Any clues? | I get the same error if I use systemctrl.h :S . |
|
| Back to top |
|
 |
moonlight
Joined: 26 Oct 2005 Posts: 567
|
Posted: Mon Feb 11, 2008 3:35 am Post subject: |
|
|
It maybe because in som version I forgto to include the modified psploadcore.h with "SceModule2" structure.
Try to add this at the beginning of file:
| Code: |
typedef struct SceModule2
{
struct SceModule *next; // 0
u16 attribute; // 4
u8 version[2]; // 6
char modname[27]; // 8
char terminal; // 0x23
char mod_state; // 0x24
char unk1; // 0x25
char unk2[2]; // 0x26
u32 unk3; // 0x28
SceUID modid; // 0x2C
u32 unk4; // 0x30
SceUID mem_id; // 0x34
u32 mpid_text; // 0x38
u32 mpid_data; // 0x3C
void * ent_top; // 0x40
unsigned int ent_size; // 0x44
void * stub_top; // 0x48
u32 stub_size; // 0x4C
u32 entry_addr_; // 0x50
u32 unk5[4]; // 0x54
u32 entry_addr; // 0x64
u32 gp_value; // 0x68
u32 text_addr; // 0x6C
u32 text_size; // 0x70
u32 data_size; // 0x74
u32 bss_size; // 0x78
u32 nsegment; // 0x7C
u32 segmentaddr[4]; // 0x80
u32 segmentsize[4]; // 0x90
} SceModule2; |
|
|
| Back to top |
|
 |
JumpR
Joined: 10 Feb 2008 Posts: 25
|
Posted: Mon Feb 11, 2008 4:12 am Post subject: |
|
|
It compiles now, time to start messing with it.
Thanks! =D |
|
| Back to top |
|
 |
Mashphealh
Joined: 28 Nov 2007 Posts: 18
|
Posted: Mon Feb 11, 2008 6:55 pm Post subject: |
|
|
| Works perfect, thanks again moonlight ;) |
|
| Back to top |
|
 |
ne0h
Joined: 21 Feb 2008 Posts: 386
|
Posted: Tue Oct 14, 2008 12:45 am Post subject: |
|
|
Excuse me,
can I use the "normal" sceIoDevctl in a kernel mode prx to format the ms?
Because I don't know where is defined vshIoDevctl function, I've found a stub file, but if I can I want to use standard library... _________________ Get Xplora! |
|
| Back to top |
|
 |
Torch

Joined: 28 May 2008 Posts: 842
|
Posted: Tue Oct 14, 2008 1:13 am Post subject: |
|
|
| ne0h wrote: | Excuse me,
can I use the "normal" sceIoDevctl in a kernel mode prx to format the ms?
Because I don't know where is defined vshIoDevctl function, I've found a stub file, but if I can I want to use standard library... |
if ur in kernel mode then use sce function. usually vsh* style duplicates are for using the kernel version from user module, like xmb |
|
| Back to top |
|
 |
ab5000
Joined: 06 May 2008 Posts: 74
|
Posted: Tue Oct 14, 2008 1:50 am Post subject: |
|
|
| ne0h wrote: | Excuse me,
can I use the "normal" sceIoDevctl in a kernel mode prx to format the ms?
Because I don't know where is defined vshIoDevctl function, I've found a stub file, but if I can I want to use standard library... |
the vshIo* functions are just a bridge. they simply calls the kernel functions, so a user app can access them. if you are in kernel mode, you can use sceIo*. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|