Routine compatible xp qui plante sous 2000

Signaler
Messages postés
7
Date d'inscription
vendredi 20 août 2004
Statut
Membre
Dernière intervention
2 mai 2011
-
Messages postés
11
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
26 mai 2008
-
Salut à tous,

Je travaille avec MASM et jusqu'à présent je n'ai jamais eut de cas majeur d'incompatiblité d'une de mes sources avec windows de 95 à xp.


Je suis confronté à un cas incompréhensible car en pistant je me suis aperçu qu'une opération passait dans le "parent" et que le même type d'instruction plantait dans une portion de dialogbox. Dans le parent j'utilise sans pb mov registre1,[registre2] et xp et w2000 "obeissent bien" alors que sous xp dans la routine "child" dialogbox tout va bien mais sous w2000 j'ai une violation d'accés mémoire. Si dans la routine "child" j'utilise mov registre1,[registre2+registreIndex] alors w2000 me laisse tranquille...

Si quelqu'un a un lien sur de la doc, mille remerciements

7 réponses

Messages postés
7
Date d'inscription
vendredi 20 août 2004
Statut
Membre
Dernière intervention
2 mai 2011

Merci à BruNews qui m'a mis sur la voie dans une autre discussion.
Pour chaque événement de la dialogbox "child" j'ai sauvé/restauré en debut/fin les registres ebx,ecx et edx ainsi que sur des modules communs uitilisés sans pb par le "parent" et qui bloquaient dans le child. Par contre d'autres dialogboxs childs de la child n'ont pas nécessités cette "lourdeur".

Je reste toujours à la recherche de docs.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
ecx et edx n'ont pas besoin d'être sauvegardés (pas plus que eax) du point de vue du sytème, tous les autres doivent l'être.

ciao...
BruNews, MVP VC++
Messages postés
582
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
20 juillet 2021
2
Salut,
Dans les dialog box , les accès mèmoires sont différents de ceux du programme principal et la dialog box ne peut pas tout faire.


Le SDK arrive a fournir des renseignements a peu près compréhensibles mais pas forcément utilisables.


Seule solution,tester et reserver l'utilisation de la mémoire au prog principal lorsque cela est possible.
Messages postés
7
Date d'inscription
vendredi 20 août 2004
Statut
Membre
Dernière intervention
2 mai 2011

Merci à tous,

Je tiens à signaler que ce forum est + sympa que celui de MASM dont je me suis désincrit...

@+
Messages postés
11
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
26 mai 2008

quoi[mailto: jmp67@bluewin.ch]

Celà m'est dejà arrivé qu'un prog fonctionne sous XP et plante sous 2K j'ai reussis à le rendre compatible
en mettant des pushad et des popad mais la j'ai un prog qui veut pas je cherche de l'aide sur ça
merci d'avance.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Vérifie les minimum requis pour chaque API employée.
Pour les cas ordinaires, pushad popad ne s'emploient pas, on sauvegarde et restaure uniquement les registres utilisés.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
11
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
26 mai 2008

quoi[mailto:quoijmp67@bluewin.ch jmp67@bluewin.ch]

Effectivement j'ai trouvé ce qui faisait que ça plantait sous 2K.


Quand tu réalloue dynamiquement un buffer avec HeapReAlloc sous XP
le Flag HEAP_REALLOC_IN_PLACE_ONLY n'est pas nécessaire
alors que apparement il l'est sous 2K
exemple:
invoke HeapReAlloc,hHeap,HEAP_REALLOC_IN_PLACE_ONLY or HEAP_ZERO_MEMORY,pFrames,eax