Para probar este problema, he escrito una aplicación de Windows mínima. Si fuerzo una infracción de acceso en el controlador WM_PAINT
, esta excepción nunca llega al depurador. Si se inició sin depurador, la infracción de acceso tampoco aparece. Por lo general, debe obtener el cuadro de diálogo Informes de errores de Windows.violación de acceso en WM_PAINT no detectada
excavar un poco más profundo que parece que algo en user32.dll captura todas las excepciones entrantes. ¿Es este comportamiento normal? ¿Puedo controlar esto de alguna manera? ¿No está atrapando todas las excepciones un riesgo de seguridad? Al menos es tan molesto como el infierno.
esto es con una aplicación de 32 y 64 bits en Vista 64. En XP excepción parece ser manejados como se esperaba. Otros mensajes de Windows tienen el mismo problema. Quizás todos ellos?
El manejador WM_PAINT
:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
*(int*)0 = 0;
EndPaint(hWnd, &ps);
break;
sé, pero esto es sólo una solución si se utiliza un depurador. ¿Y qué pasa con todas las demás excepciones que pueden producirse al manejar mensajes de Windows? ¿Tiene alguna documentación o razonamiento oficial (o no oficial) para este cambio? –