KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: die richtigen Treads stoppen für ein VSH-VLF-Plugin
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Würde gerne ein plugin für vsh schreiben für die config meines plugins "PowerPad". Das ganze soll mit der VLFlib geschehen, somit die config fast aussieht wie das vsh-menü. Doch leider weis ich nicht die richtigen Treads, bzw wie ich sie am besten stoppe.

Wer könnte mir bitte weiterhelfen?

MfG 743acid743

743acid743 :
Würde gerne ein plugin für vsh schreiben für die config meines plugins "PowerPad". Das ganze soll mit der VLFlib geschehen, somit die config fast aussieht wie das vsh-menü. Doch leider weis ich nicht die richtigen Treads, bzw wie ich sie am besten stoppe.

Wer könnte mir bitte weiterhelfen?

MfG 743acid743


Wann soll dein Menü geladen werden? Du kannst mit VLF nicht einfach im XMB was hinzufügen... du kannst höchstens irgendwann das XMB stoppen (versuch einfach mal alle Threads zu pausieren) und dann VLF starten, da ist aber vom XMB dann nichts mehr zu sehen.

Das ist genau das was ich mir vorstelle... doch leider bekomme ich es nicht zum laufen.
Also plugin läuft normal im xmb, soll dann das xmb stoppen und ein VLF plugin laden.

hab mom keinen durchblick mehr... to much input... *TILT*

MfG 743acid743
Es gibt eine Funktion um alle User Threads zu stoppen.

Code:
sceKernelSuspendAllUserThreads


Mir ist aber keine Funktion bekannt, die alle User Threads wieder startet.

Deshalb würde ich per while Schleife alle UIDs der Threads auslesen diese speichern, dann die Threads stoppen. So sollte man alle Threads wieder starten können.

Ich gebe aber keine Garantie auf die Funktion ;-)

Ich würd das auch machen wie Chaos das gesagt hat!

mfg
emink123
Du könntest, wie Chaos gesagt hat die Funktion benutzen, dann:

die vshmain/vshctrl.prx laden lassen :

kuKernelLoadModule(vshctrl.prx bzw. vshmain.prx, 0, NULL);

Aber mit vshmain wirds nur bei der 1.50 was Wink
Kann mir einer erklären wie ich diese UID's von den threads bekomme. irgendwie verstehe ich in dem thema nur bahnhof oder wenn ich glaube ich habs entlich, kann ich's am ende wieder in die tonne treten....

Plugins schreiben bzw programmieren für die psp ist das eine, aber das ist mir momentan echt ein kraus... **haare rauf**.
wäre nett wenn mir jemand mit ein paar code-beispiele helfen könnte.

Also ich selber habe die UID bis jetzt nur über PSPLink bekommen und dort ist mir aufgefallen das die UID sich manchmal ändern... somit ist das "feste" coden der UID nicht möglich, aber wie mache ich das mit der threadliste auslesen und die UID daraus zu benutzen....

Wäre echt geil wenn da einer durchsteigt und mir helfen kann :-) .

MfG 743acid743
Man hast du Glück das ich heute erst zu 4. Stunde Schule habe Big Grin
Also ich bin eigentlich gegen Codebeispiele, wenn man es noch nicht selbst schon versucht hat. Denn man gewinnt immer an Erfahrung dazu, auch wenn es am Schluss nicht funktioniert =)

C:

Code:
typedef struct _ThreadInfo
{
    SceUID ID[256];    //Size = 256 * 4 = 1024 Bytes
    int RealCount;
} ThreadInfo;

int SuspendAllThreads( void )
{
    //Ich mache lieber mit ANSI Code sauber. Man muss das ganze ja nicht unötig mit string.h pushen ;-)
    unsigned short i;
    for ( i = 0; i < sizeof( ThreadInfo.ID )/4; i++ )
        ThreadInfo.ID[i] = 0;

    RealCount = 0;
    
    sceKernelGetThreadmanIdList( SCE_KERNEL_TMID_Thread, &ThreadInfo.ID, sizeof( ThreadInfo.ID ), &ThreadInfo.RealCount );

    for ( i = 0; i < ThreadInfo.RealCount; i++ )
    {
        sceKernelSuspendThread( ThreadInfo.ID[i] );
        //Je nach Bedarf noch Pause einfügen.
    }

    return 0;
}

int ResumeAllThreads( void )
{
    unsigned short i;
    for ( i = 0; i < ThreadInfo.RealCount; i++ )
    {
        sceKernelResumeThread( ThreadInfo.ID[i] );
        //Je nach Bedarf noch Pause einfügen.
    }

    return 0;
}


C++

Code:
class ThreadMgr
{
private:
    SceUID ID[256];    //Size = 256 * 4 = 1024 Bytes
    int RealCount;

public:
    ThreadMgr( void );
    ~ThreadMgr( void );

    void Clear( void );
    int Stop( void );
    int Start( void );
};

void ThreadMgr::Clear( void )
{
    //Ich mache lieber mit ANSI Code sauber. Man muss das ganze ja nicht unötig mit string.h pushen ;-)
    unsigned short i;
    for ( i = 0; i < sizeof( ThreadInfo.ID )/4; i++ )
        ThreadInfo.ID[i] = 0;

    RealCount = 0;

    return;
}

ThreadMgr::ThreadMgr( void )
{
    Clear();
    return;
}

ThreadMgr::~ThreadMgr( void )
{
    return;
}

int ThreadMgr::Stop( void )
{
    sceKernelGetThreadmanIdList( SCE_KERNEL_TMID_Thread, &this->ID, sizeof( this->ID ), &this->RealCount );

    unsigned short i;
    for ( i = 0; i < this->RealCount; i++ )
    {
        sceKernelSuspendThread( this->ID[i] );
        //Je nach Bedarf noch Pause einfügen.
    }

    return 0;
}

int ThreadMgr::Start( void )
{
    unsigned short i;
    for ( i = 0; i < this->RealCount; i++ )
    {
        sceKernelResumeThread( this->ID[i] );
        //Je nach Bedarf noch Pause einfügen.
    }

    return 0;
}


Für syntax Fehler und die Funktion des Codes übernehme ich keine Haftung Big Grin

Ok ich muss sagen das ich einfach zu dumm anscheinend dafür bin...
kann mir jemand ein kleines plugin machen, das wenn ich es starte das xmb "schlafen" legt und anschliessen ein VLF-prx startet. Wäre nett wenn das ganze mit source ist.

MfG 743acid743
Nein, so etwas nennt man Programmieren, und nicht C&P

Co$m0 :
Du könntest, wie Chaos gesagt hat die Funktion benutzen, dann:

die vshmain/vshctrl.prx laden lassen :

kuKernelLoadModule(vshctrl.prx bzw. vshmain.prx, 0, NULL);

Aber mit vshmain wirds nur bei der 1.50 was Wink


was redest du eig. für einen bull**** da?

vshctrl.prx ist ein custom module und die vshmain.prx ist ein ofw module..

btw.. warum verwendest du eig. immer die KUbridge? -.-

@Total_Noob: Ich geb dir vollständig Recht.

dxem :

Co$m0 :
Du könntest, wie Chaos gesagt hat die Funktion benutzen, dann:

die vshmain/vshctrl.prx laden lassen :

kuKernelLoadModule(vshctrl.prx bzw. vshmain.prx, 0, NULL);

Aber mit vshmain wirds nur bei der 1.50 was Wink


was redest du eig. für einen bull**** da?

vshctrl.prx ist ein custom module und die vshmain.prx ist ein ofw module..

btw.. warum verwendest du eig. immer die KUbridge? -.-


Mach dir nichts draus, Co$m0 ist nur ein Noob, der sich irgendwelche billigen Codes im I-Net sucht und dann kopiert. Die PNs die er mir dauernd geschrieben hat, und seine Threads, beweißen dass. Ich denke langsam dass er HellcatX aka Dark_TonY ist, denn er führt sich genauso auf.

Ich habe keinen plan was ihr da redet... aber
@Total_Noob: ich habe versucht das ganze zu verstehen und selber zu machen, nachdem ich nicht weiter komme und mich nur im kreis drehe habe ich anständig gefragt ob jemand mehr plan hat als ich von deisem threadstopstart geschichte. Nun kommst du und schmeist mir so nen scheiß an den kopf. ich weis selber was C&P ist, ich habe nach hilfe und einem beispiel gesucht. Damit ich das vielleicht auch mal verstehen kann....

bin halt nicht so gut darin, jeder fängt mal klein an. und ohne hilfe und beispiele, wärst du bestimmt auch kein developer geworden.

Also kann mir jetzt jemand vielleicht helfen, oder habt ihr alle wie ich auch keinen plan davon und wir könnten uns zusammenschliessen und das prob lösen.

MfG 743acid743

743acid743 :
Ich habe keinen plan was ihr da redet... aber
@Total_Noob: ich habe versucht das ganze zu verstehen und selber zu machen, nachdem ich nicht weiter komme und mich nur im kreis drehe habe ich anständig gefragt ob jemand mehr plan hat als ich von deisem threadstopstart geschichte. Nun kommst du und schmeist mir so nen scheiß an den kopf. ich weis selber was C&P ist, ich habe nach hilfe und einem beispiel gesucht. Damit ich das vielleicht auch mal verstehen kann....

bin halt nicht so gut darin, jeder fängt mal klein an. und ohne hilfe und beispiele, wärst du bestimmt auch kein developer geworden.

Also kann mir jetzt jemand vielleicht helfen, oder habt ihr alle wie ich auch keinen plan davon und wir könnten uns zusammenschliessen und das prob lösen.

MfG 743acid743


Ich geb dir nicht Recht. Ich hatte damals, als ich mit dem Programmieren angefangen hab, nur seeehr selten Internet. Ich hab mir sämtliche Grundlagen selber beigebracht (fürm PC). Der Umstieg auf die PSP ist mir relativ einfach gefallen (hab mir eins der Tutorials auf psp-programming.com durchgelesen, das hello world reichte mir). Dann hab ich sehr viel rumgespielt, mich durch Developement Foren wie lan.st durchgelesen, und auch diverse Dokumentationen und Tutorials wie z.B. das Modul Import/Export Tutorial durchgelesen. Damit kannte ich mich schon relativ gut mit der PSP selber aus. Den Rest hab ich durch lesen von Source Codes, durch MIPS lernen und Reverse Engineeren, durch lesen von Büchern und durch reden mit Developern gelernt Wink
Nur eins sollte man wissen: Man sollte sich nicht an Projekten versuchen, die man noch nicht lösen kann. Man sollte nicht einfach irgendwelche Codes kopieren und dann ohne sie zu verstehen ausführen, das macht keinen Sinn. Man sollte sich entweder ne Zeit lang beschäftigen, bis man es versteht, oder was leichteres anfangen. Damit mein ich nicht dass man nicht fragen sollte, den Thread finde ich mehr als okay, aber man sollte es dann schon selber umsetzten können. C&P bringt rein gar nichts.

mfg, Andreas

Nach dem was ich mir jetzt selber "erlernt" habe , kann ich thread's starten stoppen oder aber auch "schlafen" legen. Mein problem liegt eher darin die aktuellen UID der threads zu finden die ich stoppen möchte.

mfg 743acid743

EDIT:
Habe die lösung glaube ich gerade eben gefunden :-). Bin aber trotzdem froh über vorschläge.
Seiten: 1 2
Referenz-URLs