mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 07:32:57 +00:00
- Add hits to track callback and winproc faults.
svn path=/trunk/; revision=54184
This commit is contained in:
parent
2387a1229b
commit
c27a66c36c
1 changed files with 53 additions and 4 deletions
|
@ -1133,7 +1133,7 @@ IntCallWindowProcW(BOOL IsAnsiProc,
|
||||||
MSG UnicodeMsg;
|
MSG UnicodeMsg;
|
||||||
BOOL Hook = FALSE, MsgOverride = FALSE, Dialog;
|
BOOL Hook = FALSE, MsgOverride = FALSE, Dialog;
|
||||||
LRESULT Result = 0, PreResult = 0;
|
LRESULT Result = 0, PreResult = 0;
|
||||||
DWORD Data = 0;
|
DWORD Hit = 0, Data = 0;
|
||||||
|
|
||||||
if (WndProc == NULL)
|
if (WndProc == NULL)
|
||||||
{
|
{
|
||||||
|
@ -1189,6 +1189,7 @@ IntCallWindowProcW(BOOL IsAnsiProc,
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
Hit = 1;
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
|
|
||||||
|
@ -1237,6 +1238,7 @@ IntCallWindowProcW(BOOL IsAnsiProc,
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
Hit = 2;
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
|
|
||||||
|
@ -1258,6 +1260,18 @@ IntCallWindowProcW(BOOL IsAnsiProc,
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
if (Hook) EndUserApiHook();
|
if (Hook) EndUserApiHook();
|
||||||
|
if (Hit)
|
||||||
|
{
|
||||||
|
switch(Hit)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
ERR("CallWindowProcW Ansi Failed!\n");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ERR("CallWindowProcW Unicode Failed!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1274,7 +1288,7 @@ IntCallWindowProcA(BOOL IsAnsiProc,
|
||||||
MSG UnicodeMsg;
|
MSG UnicodeMsg;
|
||||||
BOOL Hook = FALSE, MsgOverride = FALSE, Dialog;
|
BOOL Hook = FALSE, MsgOverride = FALSE, Dialog;
|
||||||
LRESULT Result = 0, PreResult = 0;
|
LRESULT Result = 0, PreResult = 0;
|
||||||
DWORD Data = 0;
|
DWORD Hit = 0, Data = 0;
|
||||||
|
|
||||||
if (WndProc == NULL)
|
if (WndProc == NULL)
|
||||||
{
|
{
|
||||||
|
@ -1321,6 +1335,7 @@ IntCallWindowProcA(BOOL IsAnsiProc,
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
Hit = 1;
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
|
|
||||||
|
@ -1374,6 +1389,7 @@ IntCallWindowProcA(BOOL IsAnsiProc,
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
Hit = 2;
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
|
|
||||||
|
@ -1400,6 +1416,18 @@ IntCallWindowProcA(BOOL IsAnsiProc,
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
if (Hook) EndUserApiHook();
|
if (Hook) EndUserApiHook();
|
||||||
|
if (Hit)
|
||||||
|
{
|
||||||
|
switch(Hit)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
ERR("CallWindowProcA Ansi Failed!\n");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ERR("CallWindowProcA Unicode Failed!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1562,6 +1590,7 @@ DispatchMessageA(CONST MSG *lpmsg)
|
||||||
LRESULT Ret = 0;
|
LRESULT Ret = 0;
|
||||||
MSG UnicodeMsg;
|
MSG UnicodeMsg;
|
||||||
PWND Wnd;
|
PWND Wnd;
|
||||||
|
BOOL Hit = FALSE;
|
||||||
|
|
||||||
if ( lpmsg->message & ~WM_MAXIMUM )
|
if ( lpmsg->message & ~WM_MAXIMUM )
|
||||||
{
|
{
|
||||||
|
@ -1590,7 +1619,11 @@ DispatchMessageA(CONST MSG *lpmsg)
|
||||||
if ( lpmsg->message == WM_SYSTIMER )
|
if ( lpmsg->message == WM_SYSTIMER )
|
||||||
return NtUserDispatchMessage( (PMSG)lpmsg );
|
return NtUserDispatchMessage( (PMSG)lpmsg );
|
||||||
|
|
||||||
if (!NtUserValidateTimerCallback(lpmsg->hwnd, lpmsg->wParam, lpmsg->lParam)) return 0;
|
if (!NtUserValidateTimerCallback(lpmsg->hwnd, lpmsg->wParam, lpmsg->lParam))
|
||||||
|
{
|
||||||
|
WARN("Validating Timer Callback failed!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
_SEH2_TRY // wine does this. Hint: Prevents call to another thread....
|
_SEH2_TRY // wine does this. Hint: Prevents call to another thread....
|
||||||
{
|
{
|
||||||
|
@ -1601,6 +1634,7 @@ DispatchMessageA(CONST MSG *lpmsg)
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
Hit = TRUE;
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
}
|
||||||
|
@ -1630,6 +1664,11 @@ DispatchMessageA(CONST MSG *lpmsg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Hit)
|
||||||
|
{
|
||||||
|
WARN("Exception in Timer Callback WndProcA!\n");
|
||||||
|
}
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1642,6 +1681,7 @@ DispatchMessageW(CONST MSG *lpmsg)
|
||||||
{
|
{
|
||||||
LRESULT Ret = 0;
|
LRESULT Ret = 0;
|
||||||
PWND Wnd;
|
PWND Wnd;
|
||||||
|
BOOL Hit = FALSE;
|
||||||
|
|
||||||
if ( lpmsg->message & ~WM_MAXIMUM )
|
if ( lpmsg->message & ~WM_MAXIMUM )
|
||||||
{
|
{
|
||||||
|
@ -1670,7 +1710,11 @@ DispatchMessageW(CONST MSG *lpmsg)
|
||||||
if ( lpmsg->message == WM_SYSTIMER )
|
if ( lpmsg->message == WM_SYSTIMER )
|
||||||
return NtUserDispatchMessage( (PMSG) lpmsg );
|
return NtUserDispatchMessage( (PMSG) lpmsg );
|
||||||
|
|
||||||
if (!NtUserValidateTimerCallback(lpmsg->hwnd, lpmsg->wParam, lpmsg->lParam)) return 0;
|
if (!NtUserValidateTimerCallback(lpmsg->hwnd, lpmsg->wParam, lpmsg->lParam))
|
||||||
|
{
|
||||||
|
WARN("Validating Timer Callback failed!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
|
@ -1681,6 +1725,7 @@ DispatchMessageW(CONST MSG *lpmsg)
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
Hit = TRUE;
|
||||||
}
|
}
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
}
|
}
|
||||||
|
@ -1699,6 +1744,10 @@ DispatchMessageW(CONST MSG *lpmsg)
|
||||||
Ret = NtUserDispatchMessage( (PMSG) lpmsg );
|
Ret = NtUserDispatchMessage( (PMSG) lpmsg );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Hit)
|
||||||
|
{
|
||||||
|
WARN("Exception in Timer Callback WndProcW!\n");
|
||||||
|
}
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue