MASM : Problème avec une variable locale

Tout sur les langages de programmation.

MASM : Problème avec une variable locale

Messagepar Chaosphere » 25 Janvier 2018, 09:01

Bonjour,

J'éssaye d'appeller l'API ReadFile en lui demandant de lire les deux premiers octets d'un fichier.
Je lui envoie donc l'adresse de mon buffer (MagicNumber)
-> Ca marche si MagicNumber est déclaré dans la section .data
-> Ca ne marche plus si il est déclaré en variable locale (dans la pile) : ReadFile me renvoie 1 dans EAX

Je ne comprend pas pourquoi... Est-ce que quelqu'un peut m'aider svp ?


LoadHeader proc file:LPSTR
LOCAL FileHandle:HANDLE
LOCAL MagicNumber:WORD
LOCAL NumberOfBytesRead:BYTE
LOCAL PESignature:DWORD

....

invoke ReadFile,FileHandle, addr MagicNumber, 2, addr NumberOfBytesRead, NULL
.IF eax == 0
invoke MessageBox, NULL, addr TextErrLecture, addr AppName, MB_OK
mov eax, 1
ret
.ELSEIF MagicNumber != "ZM"
invoke MessageBox, NULL, addr TextErrPasMZ, addr AppName, MB_OK
mov eax, 1
ret
.endif

....

ret
LoadHeader endp
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53

Re: MASM : Problème avec une variable locale

Messagepar Chaosphere » 25 Janvier 2018, 09:27

Bon j'ai compris ce que j'ai oublié....

NumberOfBytesRead est un DWORD et non un BYTE

Du coup il débordait sur mes autres variables locales...
Chaosphere
Elève
Elève
 
Messages: 45
Inscription: 15 Janvier 2018, 13:53


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités