Per verificare questo problema, ho scritto un'applicazione Windows minima. Se imposto una violazione di accesso nel gestore WM_PAINT
questa eccezione non arriva mai al debugger. Se avviato senza debugger, anche la violazione di accesso non viene visualizzata. Di solito dovresti ottenere la finestra di dialogo Segnalazione errori di Windows.violazione di accesso in WM_PAINT non rilevato
Scavando un po 'più in profondità, sembra che qualcosa in user32.dll rilevi tutte le eccezioni in arrivo. Questo comportamento normale? Posso controllare questo in qualche modo? Non sta prendendo tutte le eccezioni un rischio per la sicurezza? Almeno è fastidioso da morire.
Questo è con un'applicazione a 32 e 64 bit su Vista 64. Su XP l'eccezione sembra essere gestita come previsto. Altri messaggi di Windows hanno lo stesso problema. Forse tutti loro?
Il WM_PAINT
gestore:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
*(int*)0 = 0;
EndPaint(hWnd, &ps);
break;
Lo so, ma questa è solo una soluzione se si utilizza un debugger. E che cosa è con tutte le altre eccezioni che potrebbero essere generate durante la gestione dei messaggi di Windows? Avete documentazione o ragionamento ufficiale (o non ufficiale) per questo cambiamento? –