Routine compatible xp qui plante sous 2000

statismeles Messages postés 7 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 2 mai 2011 - 23 sept. 2005 à 00:37
cs_quoi Messages postés 11 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 26 mai 2008 - 13 janv. 2006 à 12:00
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

statismeles Messages postés 7 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 2 mai 2011
23 sept. 2005 à 16:47
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.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 sept. 2005 à 17:41
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++
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
24 sept. 2005 à 09:03
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.
0
statismeles Messages postés 7 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 2 mai 2011
25 sept. 2005 à 19:23
Merci à tous,

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

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_quoi Messages postés 11 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 26 mai 2008
11 janv. 2006 à 20:02
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.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 janv. 2006 à 12:07
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++
0
cs_quoi Messages postés 11 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 26 mai 2008
13 janv. 2006 à 12:00
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
0
Rejoignez-nous