Call API Windows

Résolu
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 12 août 2004 à 15:14
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 12 août 2004 à 19:27
Pourquoi il faut mettre absolument dword ptr avant le nom d'une fonction pour appeler une API de Windows?

3 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
12 août 2004 à 16:07
salut,

parceque tu va chercher l'adresse de la fonction dans une cellule memoire et que ton adresse memoire n'as pas de taille et donc, il faut la preciser. ( ca pourrait etre call word[FonctionAPI] )

sinon, tu cree une macro.
je sais pas ce que ca donne en TASM mais ca doit etre kif MASM:

callAPI MACRO fName
call dword ptr [fName]
ENDM
et donc, dans le prog, on aura plus de dword ptr:
push 0
callAPI ExitProcess

sache que tout acces memoire doit avoir une taille definie.

Pour certaines instructions, elle est explicite:
mov eax,[edx] eax est un dword donc [edx] aussi.

Pour d'autres, ce n'est pas défini:
mov [edx],0 <- ICI, faut préciser.
call [edx] <- idem.

Pour d'autres, c plus ambigue: ( nasm )
cmp dword [edx],byte -1
pour ce cas, byte -1 sera codé sur 8 bits mais la valeur sera testée sur 32 bits. ( equivalent movsx )

@++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 août 2004 à 16:10
vecchio56> vois que ceci est a mettre uniquement en asm inline dans le C, sur MASM pas besoin.

ciao...
BruNews, Admin CS, MVP Visual C++
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2004 à 19:27
Merci messieurs
0
Rejoignez-nous