- Use ONEPARAM_ROUTINE_GETCURSORPOS instead of ONEPARAM_ROUTINE_GETCURSORPOSITION in GetCursorPos
- Correctly check if the current thread belongs to the active desktop

svn path=/trunk/; revision=57657
This commit is contained in:
Giannis Adamopoulos 2012-10-31 14:55:23 +00:00
parent d93c98ed58
commit fc462652f0
4 changed files with 6 additions and 25 deletions

View file

@ -3251,7 +3251,6 @@ typedef struct tagKMDDELPARAM
#define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
#define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
#define MSQ_STATE_CAPTURE 0x1

View file

@ -26,7 +26,7 @@ IntFreeDesktopHeap(IN PDESKTOP pdesk);
/* GLOBALS *******************************************************************/
/* Currently active desktop */
PDESKTOP InputDesktop = NULL;
PDESKTOP gpdeskInputDesktop = NULL;
HDESK InputDesktopHandle = NULL;
HDC ScreenDeviceContext = NULL;
PTHREADINFO gptiDesktopThread;
@ -420,7 +420,7 @@ IntValidateDesktopHandle(
PDESKTOP FASTCALL
IntGetActiveDesktop(VOID)
{
return InputDesktop;
return gpdeskInputDesktop;
}
/*
@ -1654,7 +1654,7 @@ NtUserSwitchDesktop(HDESK hdesk)
InputWindowStation->ActiveDesktop = pdesk;
/* Set the global state. */
InputDesktop = pdesk;
gpdeskInputDesktop = pdesk;
InputDesktopHandle = hdesk;
TRACE("SwitchDesktop InputDesktopHandle 0x%p\n",InputDesktopHandle);
ObDereferenceObject(pdesk);

View file

@ -259,25 +259,6 @@ NtUserCallOneParam(
RETURN(Result);
}
case ONEPARAM_ROUTINE_GETCURSORPOSITION:
{
BOOL ret = TRUE;
_SEH2_TRY
{
ProbeForWrite((POINT*)Param,sizeof(POINT),1);
RtlCopyMemory((POINT*)Param,&gpsi->ptCursor,sizeof(POINT));
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
SetLastNtError(_SEH2_GetExceptionCode());
ret = FALSE;
}
_SEH2_END;
RETURN (ret);
}
case ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING:
{
BOOL Enable;
@ -334,9 +315,10 @@ NtUserCallOneParam(
BOOL Ret = TRUE;
PPOINTL pptl;
PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
if (pti->hdesk != InputDesktopHandle) RETURN(FALSE);
if (pti->rpdesk != IntGetActiveDesktop()) RETURN(FALSE);
_SEH2_TRY
{
ProbeForWrite((POINT*)Param,sizeof(POINT),1);
pptl = (PPOINTL)Param;
*pptl = gpsi->ptCursor;
}

View file

@ -806,7 +806,7 @@ EXTINLINE PVOID NtUserxGetDesktopMapping(PVOID ptr)
EXTINLINE BOOL NtUserxGetCursorPos(POINT* lpPoint)
{
return (BOOL)NtUserCallOneParam((DWORD_PTR)lpPoint, ONEPARAM_ROUTINE_GETCURSORPOSITION);
return (BOOL)NtUserCallOneParam((DWORD_PTR)lpPoint, ONEPARAM_ROUTINE_GETCURSORPOS);
}
EXTINLINE BOOL NtUserxSetMenuBarHeight(HMENU menu, INT height)