Récupérer le pointeur courant de l'execution d'un thread (ou processus) [Résolu]

Signaler
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Bonjour à tous,

Je suis à la recherche depuis peu d'une petite infos auquel je ne trouve pas de solution (difficile d'y nommer).

J'aimerais récupérer le pointeur de l'execution d'un thread en fait, c'est à dire l'adresse mémoire de la prochaine instruction du thread qui sera executée.
Avant, normalement , je suspendrait le thread avant de récupérer cette valeur, afin qu'elle ne change pas une fois que je l'ai récupérée.

Voilà, je ne sais pas si ça existe ce que je cherche lol, mais de ce que je connais de l'execution des threads ça devrait exister non ?
Si vous avez des infos merci beaucoup ;)

- MadMatt -
Vb System Library

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
C'est le registre EIP dans le contexte du thread qui contient le pointeur d'instruction.

Je ne vois vraiment pas ce que tu pourrais en faire autrement qu'en ASM.

ciao...
BruNews, MVP VC++
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Merci c'est pile poil ce que je voulais.

Bien (déjà par curiosité), mais aussi je comptais essayer de faire un petit manipulateur de processus :
-stopper un processus
-enregistrer son état en mémoire dans un fichier
puis pouvoir le recharger en mémoire tel quel, et repartir la où il s'était arreté.

C'est vrai que je sais pas si en VB c'est bien possible, mais j'aimerais bien essayer, déjà pour en savoir un peu plus sur windows et sa structure. Pense tu que c'est faisable ? A la limite je peux faire une DLL en C pour les parties qui seraient les plus délicates en VB.

Pour la déclaration du contexte d'un thread, MSDN était muette (apparement ça dépend du processeur), j'ai trouvé ça sur une source d'EB :
' Contexte d'un thread
Public Type CONTEXT
    ContextFlags As Long
    Dr0 As Long
    Dr1 As Long
    Dr2 As Long
    Dr3 As Long
    Dr6 As Long
    Dr7 As Long
    FloatSave As FLOATING_SAVE_AREA
    SegGs As Long
    SegFs As Long
    SegEs As Long
    SegDs As Long
    Edi As Long
    Esi As Long
    Ebx As Long
    Edx As Long
    Ecx As Long
    Eax As Long
    Ebp As Long
    Eip As Long
    SegCs As Long
    EFlags As Long
    Esp As Long
    SegSs As Long
    ExtendedRegisters(MAXIMUM_SUPPORTED_EXTENSION - 1) As Byte
End Type

(j'ai pas mis les constantes et autres types)

- MadMatt -
Vb System Library