OVH Cloud OVH Cloud

acces memoire directe sous windows avec C++

79 réponses
Avatar
heinquoi
Bjr,

Ayant un probleme avec une fonction de CALLBACK et pour ne pas la citer
WndProc, j'ai chercher à acceder directement à la memoire, sans y parvenir
( sous dos nous avons la fameuse peekb ) mais sous win32 je n'y parvient
pas.
_comment acceder directement a la memoire virtuelle alloué au processus de
mon prog ?
_Et/ou acceder directement à la memoire virtuelle general ? ( genre dump)

et eventuellement, si un puriste avait trouvé la solution pour faire du vrai
C++ avec <Windows.h> et notament placer WndProc dans une classe. En tirer
son adresse sur un pointeur type WNDPROC, la ce serais vraiment NOEL pour
moi. ( j'ai le sentiment que les fonctions appartenant à un classe ne sont
pas constitué de la meme facon que les fonctions C: pointeur "this" peut
etre ?)

Ce probleme est récurant lorsque l'on se lance dans la programmation
windows.
DirectX par exemple ou APIWindows ne sont pas adapté au C++ a cause notament
de ces callback.
Votre avis ?
Cordialement
Heinquoi

10 réponses

1 2 3 4 5
Avatar
Thierry
Bonjour,

Arnaud Debaene a écrit :

- Utilisation du champ USERDATA asocié à chaque fenêtre pour y stocker
un pointeur. Je ne connais pas de framework qui utilises cela, mais
c'est une possibilité (avec pas mal de limitations néanmoins - entre
autres que ce champ n'est plus disponible pour autre chose et que les
perfs sont assez décevantes).



En quoi les perfs sont altérées ?
J'avais fait ça pour convertir une appli MFC en Win32 et aucun
ralentissement flagrant. Y'a qu'un Getwindowlong a chaque message
supplementaire.

--
« Always look at the bright side of the life... »
Avatar
Vincent Burel
"AMcD®" wrote in message
news:4080ad2e$0$17514$

C'est bon, ça va, n'en parlons plus.



sur et certains ! ? :-)

PS : Et s'il me cherche encore, je reviens poster régulièrement ici ;o) !



ha ha ! ne tente pas le diable ... !

VB
Avatar
AMcD®
Vincent Burel wrote:

Tiens qui voilà :o) !? Alors, ça boume ? Quoi de neuf ? Ça fait 3-4 jours
que je suis réabonné ici, c'est pas nerveux-nerveux...

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Vincent Burel
"AMcD®" wrote in message
news:4084398c$0$17599$
Vincent Burel wrote:

Tiens qui voilà :o) !? Alors, ça boume ? Quoi de neuf ? Ça fait 3-4 jours
que je suis réabonné ici, c'est pas nerveux-nerveux...



:-) c'est vrai que ca manque de débat passionnés :-)

VB
Avatar
Dominique Vaufreydaz
Salut,

:-) c'est vrai que ca manque de débat passionnés :-)



Je préfère utilise FILE plutot que CFile, et "c'est mon choix".
"Ca se discute" mais c'est comme ca.
Allez hop, un débat passionnés de lancé ! Euh, un troll ;-P

BTW, salut Arnold ! ;-D

Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/
Avatar
AMcD®
Dominique Vaufreydaz wrote:
Salut,

c'est vrai que ca manque de débat passionnés





C'est pas ce que je voulais dire, . Je raisonnais en terme de posts.
C'est pas la marée haute...

Je préfère utilise FILE plutot que CFile, et "c'est mon choix".
"Ca se discute" mais c'est comme ca.
Allez hop, un débat passionnés de lancé ! Euh, un troll ;-P



Tsss, c'est du troll d'amateur ça . Non, non, ressort les bons classiques
"Code C++ non optimisé vs ASM", ou "MFC vs API", là on va rire.

BTW, salut Arnold ! ;-D



Héhé, je vois que c'est un peu toujours les mêmes ici. Manque plus que GG et
Tene tiens.

AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Vincent Burel
"AMcD®" wrote in message
news:4085ce08$0$22867$
Dominique Vaufreydaz wrote:
> Salut,
>
>> c'est vrai que ca manque de débat passionnés

C'est pas ce que je voulais dire,



c'est jamais ce que tu voulais dire :-)

. Je raisonnais en terme de posts.
C'est pas la marée haute...



ha ! oui... il faut dire qu'un peu tous les sujets on déjà été abordés et
que sur les archives de ce newsgroup (via google), on trouve a peu près
toujours une réponse à la question qu'on se pose. il faut le dire : beaucoup
grace à l'encyclopédie ASTOR :-)

Maintenant, ben il faut inventer des problèmes pour créer de la
discussion... :-)

VB
Avatar
Ambassadeur Kosh
> ha ! oui... il faut dire qu'un peu tous les sujets on déjà été abordés et
que sur les archives de ce newsgroup (via google), on trouve a peu près
toujours une réponse à la question qu'on se pose. il faut le dire :


beaucoup
grace à l'encyclopédie ASTOR :-)
Maintenant, ben il faut inventer des problèmes pour créer de la
discussion... :-)



ça fait longtemps qu'on avait pas vu de post de toi egallement.
de retours parmi nous ?
Avatar
Vincent Burel
"Ambassadeur Kosh" wrote in message
news:Q2rhc.39364$
> ha ! oui... il faut dire qu'un peu tous les sujets on déjà été abordés


et
> que sur les archives de ce newsgroup (via google), on trouve a peu près
> toujours une réponse à la question qu'on se pose. il faut le dire :
beaucoup
> grace à l'encyclopédie ASTOR :-)
> Maintenant, ben il faut inventer des problèmes pour créer de la
> discussion... :-)

ça fait longtemps qu'on avait pas vu de post de toi egallement.
de retours parmi nous ?



en dilletente alors... place aux jeunes ! :-)

VB
Avatar
Aurélien REGAT-BARREL
> Une solution, ça serait pas de stocker le CMaClasse*
dans les windows words et de coder une windowproc qui
fait un appel systématique à une windowproc d'instance ?



Oui, mais faut être prudent avec WM_CREATE (pas de ptr associé encore).
Je crois que c'est OWL qui utilise une autre manière : compiler
dynamiquement une fonction de ce style :

void CallMyInstanceXXX()
{
static CMaClasse * ptr = XXX;
ptr->WndProc();
}

Ils allouent un buffer exécutable, y placent les opcodes assembleurs qu'il
faut en modifiant l'adresse de l'appel. Cette routine compilée dynamiquement
est donnée comme nouvelle callback de la fenêtre crée via un subclassing
SetWindowLong( GWL_WNDPROC, CallMyInstanceXXX );
C'est osé hein ?
1 2 3 4 5