statismeles
Messages postés7Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention 2 mai 2011
-
23 sept. 2005 à 00:37
cs_quoi
Messages postés11Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention26 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
statismeles
Messages postés7Date d'inscriptionvendredi 20 août 2004StatutMembreDerniè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".
cs_quoi
Messages postés11Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention26 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.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
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