이 문제를 테스트하려면 최소한의 Windows 응용 프로그램을 작성해야합니다. WM_PAINT
처리기에서 강제로 액세스 위반이 발생하면이 예외가 디버거로 전달되지 않습니다. 디버거없이 시작되면 액세스 위반도 표시되지 않습니다. 일반적으로 Windows 오류보고 대화 상자가 나타납니다.WM_PAINT에서 액세스 위반이 발견되지 않았습니다.
좀 더 자세히 살펴보면 user32.dll의 내용이 들어오는 예외를 모두 잡는 것처럼 보입니다. 이것은 정상적인 행동입니까? 어떻게 든 이것을 제어 할 수 있습니까? 모든 예외를 보안 위험에 포착하지 않습니까? 적어도 그것은 지옥 같은 성가심입니다.
이것은 Vista 64에서 32 비트 및 64 비트 응용 프로그램과 함께 사용됩니다. XP에서는 예외가 예상대로 처리 된 것 같습니다. 다른 윈도우 메시지도 똑같은 문제가 있습니다. 아마 그들 모두?
WM_PAINT
핸들러 :
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
*(int*)0 = 0;
EndPaint(hWnd, &ps);
break;
하지만이 방법은 디버거를 사용하는 경우에만 해결할 수 있습니다. 그리고 Windows 메시지를 처리하는 동안 발생할 수있는 다른 모든 예외는 무엇입니까? 이 변경에 대한 공식적인 (또는 비공식적 인) 문서 또는 추론을 가지고 있습니까? –