Jinoh Kang (@iamahuman) commented about dlls/user32/tests/msg.c:
eptr->ContextRecord->Eip++; /* cancel EIP rewinding */
+#elif defined(__x86_64__)
if ((ULONG_PTR)eptr->ExceptionRecord->ExceptionAddress == eptr->ContextRecord->Rip + 1)
eptr->ContextRecord->Rip++; /* cancel RIP rewinding */
+#endif
}
timer_exc_phase = TIMER_EXCEPTION_CONTINUE;
return EXCEPTION_CONTINUE_EXECUTION;
- }
- return EXCEPTION_CONTINUE_SEARCH;
+}
+static void dispatch_message_ansi_handle_exception(const MSG *msg, PVECTORED_EXCEPTION_HANDLER handler) +{
- void *cookie = AddVectoredExceptionHandler(TRUE, handler);
VEH precedes user32 DispatchMessage's SEH, which means this will always catch the exception regardless of the value of `UOI_TIMERPROC_EXCEPTION_SUPPRESSION`.