J'utilise l'assembleur masm et j'utilise kernel32.lib pour créer la mémoire heap, mais sur la page de l'API Windows pour la procédure HeapCreate, il ne me dit pas où sa valeur de retour est stockée. (c'est-à-dire la poignée vers le tas) Je suppose qu'il est stocké dans EAX
? puisque la plupart des procédures placent leur valeur de retour dans EAX
. Après que j'appelle HeapCreate, j'appelle HealAlloc d'allouer de la mémoire dans mon tas:HeapCreate renvoie-t-il le handle de segment dans EAX?
INCLUDE \masm32\include\kernel32.inc
INCLUDELIB \masm32\lib\kernel32.lib
.CODE
PUSH DWORD PTR 00h ;max size
PUSH DWORD PTR 00h ;initial size
PUSH DWORD PTR 04h ;flOption
CALL HeapCreate
PUSH DWORD PTR 04h ;dwBytes (the size in bytes)
PUSH DWORD PTR 04h ;dwFlag
PUSH EAX ;I am not sure if the heap handle is stored in EAX or not?
CALL HeapAlloc
END
Essentiellement, je ne sais pas où la valeur de retour à HeapCreate
est stocké. Si quelqu'un pouvait clarifier où, je l'apprécierais.
Merci
Familiarisez-vous avec la convention d'appel stdcall, qui est la valeur par défaut utilisée pour les appels d'API Windows. Voir [ici] (https://msdn.microsoft.com/en-us/library/984x0h58.aspx) et [ici] (https://msdn.microsoft.com/fr-fr/library/zxk0tw93.aspx) . –