Message getlasterror en francais

Soyez le premier à donner votre avis sur cette source.

Snippet vu 1 877 fois - Téléchargée 16 fois

Contenu du snippet

La fonction Err affiche simplement en francais
le message d'erreur fournit par GetLastError après appel
d'une API.
Utile pour déboguer.

Source / Exemple :


.686
.model flat,stdcall
option casemap:none

includelib kernel32.lib
includelib user32.lib

ExitProcess 	PROTO :DWORD
FormatMessageA 	PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
FormatMessage 	equ <FormatMessageA>
MessageBoxA 	PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox 		equ <MessageBoxA>
LocalFree 		PROTO :DWORD
GetLastError PROTO 

DrawTextA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
DrawText equ <DrawTextA>

.code

debut:

	;appel non valide d'une api 
	push 0
	push 0
	push 0
	push 0
	push 0
	call DrawText
	
	;affichage du message d'erreur
	call GetLastError
	call Err
	
	push 0
	call ExitProcess

Err	proc 

	;---------------------------------------
	;affiche dans une MessageBox
	;le message d'erreur en francais
	;correspondant au retour de GetLastError
	;---------------------------------------
	
	LOCAL	lpBuffer:dword
	
	push eax	;eax contient le code retour de GetLastError
	
	push 0 		;pas de liste d'arguments variables
	push 0 		;taille mini du buffer
	lea ebx,lpBuffer 
	push ebx 	;buffer alloué par le système pour le message	
	push 1024 	;langue par défault utilise pa os
	push eax 	;?
	push 0 		;?	
	mov edx,256	;utilisation d'un buffer
	or edx,4096	;+ message produit par API
	push edx 		
	call FormatMessage
	
	push 0
	push 0
	push dword ptr lpBuffer
	push 0
	call MessageBox
	
	push dword ptr lpBuffer
	call LocalFree
	
fin:
	pop eax	
	ret
	
Err endp

end debut

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Relis ce que j'ai mis plus haut.
EBP est comme tous ceux à sauvegarder.

Ex:
mov ebp, eax ; viendrait result d'une fonction de calcul
call autreFonction
ICI j'entends retrouver dans EBP ce que j'y avais mis avant appel de autreFonction().
Messages postés
75
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
25 mars 2019

Bonjour BruNews,
en tracant un prog win32,j'ai vu vu que EBP contient toujours
au lancement du prog l'adresse du sommet de la pile réservée
pour le prog et que [ebp+8] contient l'adresse du point
d'entrée du prog.
C'est donc pour cela que l'on doit préserver EBP ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
EBX est à sauvegarfer sous Windows.
En 32 bits, seuls EAX, ECX et EDX sont consideres comme ecrases en sortie de fonction.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.