En lisant le code généré par visual c++, j'ai vu des reinterpret_cast()
disséminés un peu partout. Est-ce que les HANDLE de la win32Api
correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian ASTOR
françois M. a écrit:
Est-ce que les HANDLE de la win32Api correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Notamment schema de fin du vieil article pour les != handles http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_handles1.asp
françois M. a écrit:
Est-ce que les HANDLE de la win32Api
correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Notamment schema de fin du vieil article pour les != handles
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_handles1.asp
Est-ce que les HANDLE de la win32Api correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Notamment schema de fin du vieil article pour les != handles http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_handles1.asp
Arnaud Debaene
françois M. wrote:
bonjour,
Bonjour.
En lisant le code généré par visual c++, j'ai vu des reinterpret_cast() disséminés un peu partout.
Le code généré par quoi et pour faire quoi? Un exemple?
Est-ce que les HANDLE de la win32Api correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Eventuellement, peut être certains types de handle. Ceci-dit, comme ce n'est ni documenté ni spécifié tu ne peux pas t'appuyer dessus dans tes programmes car ca pourrait très bien changer dans le prochain service pack (sans parler du fait que, comme tu ne connais pas le contenu des objets en question, tu ne peux pas faire grand chose de ces addresses). Ceci-dit je ne vois pas le rapport avec des reinterpret_cast générés par des wizards...
Arnaud
PS : Dans certains cas, on a effectivement besoin de considérer les handles comme de pointeurs, mais c'est généralement quand on travaille avec le DDK.
françois M. wrote:
bonjour,
Bonjour.
En lisant le code généré par visual c++, j'ai vu des
reinterpret_cast() disséminés un peu partout.
Le code généré par quoi et pour faire quoi? Un exemple?
Est-ce que les HANDLE
de la win32Api correspondent en fait à leur adresse mémoire dans la
mémoire virtuelle ?
Eventuellement, peut être certains types de handle. Ceci-dit, comme ce n'est
ni documenté ni spécifié tu ne peux pas t'appuyer dessus dans tes programmes
car ca pourrait très bien changer dans le prochain service pack (sans parler
du fait que, comme tu ne connais pas le contenu des objets en question, tu
ne peux pas faire grand chose de ces addresses). Ceci-dit je ne vois pas le
rapport avec des reinterpret_cast générés par des wizards...
Arnaud
PS : Dans certains cas, on a effectivement besoin de considérer les handles
comme de pointeurs, mais c'est généralement quand on travaille avec le DDK.
En lisant le code généré par visual c++, j'ai vu des reinterpret_cast() disséminés un peu partout.
Le code généré par quoi et pour faire quoi? Un exemple?
Est-ce que les HANDLE de la win32Api correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Eventuellement, peut être certains types de handle. Ceci-dit, comme ce n'est ni documenté ni spécifié tu ne peux pas t'appuyer dessus dans tes programmes car ca pourrait très bien changer dans le prochain service pack (sans parler du fait que, comme tu ne connais pas le contenu des objets en question, tu ne peux pas faire grand chose de ces addresses). Ceci-dit je ne vois pas le rapport avec des reinterpret_cast générés par des wizards...
Arnaud
PS : Dans certains cas, on a effectivement besoin de considérer les handles comme de pointeurs, mais c'est généralement quand on travaille avec le DDK.
Aurélien REGAT-BARREL
> En lisant le code généré par visual c++, j'ai vu des reinterpret_cast() disséminés un peu partout. Est-ce que les HANDLE de la win32Api correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Le principe du handle est d'être un type opaque, et de ne pas se soucier de sa valeur. Après, certains handle sont des adresses, comme le HINSTANCE ou les handle retournés par LocalAlloc (jamais compris pourquoi d'ailleurs). Pour le reste (les objets systèmes), il me semble que Win95 fabriquait le handle à partir de l'adresse de l'objet "XORée" avec un "obfuscator". Y'avait une manip à faire pour obtenir la valeur de l'obfuscator et donc pouvoir récupérer l'adresse de la structure en RAM... Mais si MS s'est cassé la tête à faire utiliser des handles, c'est justement pour pas qu'on aille chatouiller ses structures internes.
> En lisant le code généré par visual c++, j'ai vu des reinterpret_cast()
disséminés un peu partout. Est-ce que les HANDLE de la win32Api
correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Le principe du handle est d'être un type opaque, et de ne pas se soucier de
sa valeur.
Après, certains handle sont des adresses, comme le HINSTANCE ou les handle
retournés par LocalAlloc (jamais compris pourquoi d'ailleurs).
Pour le reste (les objets systèmes), il me semble que Win95 fabriquait le
handle à partir de l'adresse de l'objet "XORée" avec un "obfuscator".
Y'avait une manip à faire pour obtenir la valeur de l'obfuscator et donc
pouvoir récupérer l'adresse de la structure en RAM... Mais si MS s'est cassé
la tête à faire utiliser des handles, c'est justement pour pas qu'on aille
chatouiller ses structures internes.
> En lisant le code généré par visual c++, j'ai vu des reinterpret_cast() disséminés un peu partout. Est-ce que les HANDLE de la win32Api correspondent en fait à leur adresse mémoire dans la mémoire virtuelle ?
Le principe du handle est d'être un type opaque, et de ne pas se soucier de sa valeur. Après, certains handle sont des adresses, comme le HINSTANCE ou les handle retournés par LocalAlloc (jamais compris pourquoi d'ailleurs). Pour le reste (les objets systèmes), il me semble que Win95 fabriquait le handle à partir de l'adresse de l'objet "XORée" avec un "obfuscator". Y'avait une manip à faire pour obtenir la valeur de l'obfuscator et donc pouvoir récupérer l'adresse de la structure en RAM... Mais si MS s'est cassé la tête à faire utiliser des handles, c'est justement pour pas qu'on aille chatouiller ses structures internes.