Bonjour,

J'ai l'impression que le mnemonique try except fonctionne sauf si c'est une pile personnaliser.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void provoqueexception()
{
	__try
	{
		char *p=NULL;
		*p=5;
	}
	__except(1)
	{
		printf("Exception\n");
	}
}

void cbon()
{
	provoqueexception();
}

#define size_stack 0x10000

unsigned long retesp;
char mapile[size_stack];

void cpasbon()
{
	_asm 
	{
		mov eax,esp
		mov retesp,eax
		lea eax,[mapile];
		add eax,size_stack
		mov esp,eax
	}
	provoqueexception();
	_asm
	{
		mov eax,retesp
		mov esp,eax
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	printf("\nAppel de la fonction cbon ..."); cbon();
	printf("\nAppel de la fonction cbon ..."); cpasbon();
	return 0;
}
Dans la fonction cpasbon , le handler exception ne fonctionne pas car il s'agit d'une pile propre à l'utilisateur.
Pouvez - vous m'aider à résoudre le probléme ?
Aucun intêret , oui , mais j'ai absolument besoin de le faire fonctionner.

Y a t'il une API Windows à appeler aprés et restauration de la pile ?
Si oui je ne sais pas laquelle.

Merci.