From: Hermès Bélusca-Maïto Date: Wed, 31 Oct 2012 19:39:53 +0000 (+0000) Subject: Synchronize with trunk's revision r57659. X-Git-Tag: backups/ros-csrss@60644~170 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=b3c0c36f283640cacde4c5570ad8ca4051821922 Synchronize with trunk's revision r57659. svn path=/branches/ros-csrss/; revision=57660 --- diff --git a/win32ss/include/ntuser.h b/win32ss/include/ntuser.h index 7c6d5a40f98..84f315b0e88 100644 --- a/win32ss/include/ntuser.h +++ b/win32ss/include/ntuser.h @@ -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 diff --git a/win32ss/user/ntuser/desktop.c b/win32ss/user/ntuser/desktop.c index da909322245..41f56ad1549 100644 --- a/win32ss/user/ntuser/desktop.c +++ b/win32ss/user/ntuser/desktop.c @@ -26,8 +26,7 @@ IntFreeDesktopHeap(IN PDESKTOP pdesk); /* GLOBALS *******************************************************************/ /* Currently active desktop */ -PDESKTOP InputDesktop = NULL; -HDESK InputDesktopHandle = NULL; +PDESKTOP gpdeskInputDesktop = NULL; HDC ScreenDeviceContext = NULL; PTHREADINFO gptiDesktopThread; HCURSOR gDesktopCursor = NULL; @@ -420,7 +419,7 @@ IntValidateDesktopHandle( PDESKTOP FASTCALL IntGetActiveDesktop(VOID) { - return InputDesktop; + return gpdeskInputDesktop; } /* @@ -1464,40 +1463,31 @@ NtUserOpenInputDesktop( BOOL fInherit, ACCESS_MASK dwDesiredAccess) { - PDESKTOP pdesk; NTSTATUS Status; HDESK hdesk = NULL; + ULONG HandleAttributes = 0; UserEnterExclusive(); - TRACE("Enter NtUserOpenInputDesktop InputDesktopHandle 0x%p\n",InputDesktopHandle); + TRACE("Enter NtUserOpenInputDesktop gpdeskInputDesktop 0x%p\n",gpdeskInputDesktop); - /* Get a pointer to the desktop object */ - Status = IntValidateDesktopHandle(InputDesktopHandle, UserMode, 0, &pdesk); - if (!NT_SUCCESS(Status)) - { - ERR("Validation of input desktop handle (0x%p) failed\n", InputDesktopHandle); - goto Exit; - } + if(fInherit) HandleAttributes = OBJ_INHERIT; /* Create a new handle to the object */ Status = ObOpenObjectByPointer( - pdesk, - 0, + gpdeskInputDesktop, + HandleAttributes, NULL, dwDesiredAccess, ExDesktopObjectType, UserMode, (PHANDLE)&hdesk); - ObDereferenceObject(pdesk); - if (!NT_SUCCESS(Status)) { ERR("Failed to open input desktop object\n"); SetLastNtError(Status); - goto Exit; } -Exit: + TRACE("NtUserOpenInputDesktop returning 0x%p\n",hdesk); UserLeave(); return hdesk; @@ -1654,9 +1644,8 @@ NtUserSwitchDesktop(HDESK hdesk) InputWindowStation->ActiveDesktop = pdesk; /* Set the global state. */ - InputDesktop = pdesk; - InputDesktopHandle = hdesk; - TRACE("SwitchDesktop InputDesktopHandle 0x%p\n",InputDesktopHandle); + gpdeskInputDesktop = pdesk; + TRACE("SwitchDesktop gpdeskInputDesktop 0x%p\n",gpdeskInputDesktop); ObDereferenceObject(pdesk); RETURN(TRUE); diff --git a/win32ss/user/ntuser/desktop.h b/win32ss/user/ntuser/desktop.h index c05ae1ffc63..6f492117dc0 100644 --- a/win32ss/user/ntuser/desktop.h +++ b/win32ss/user/ntuser/desktop.h @@ -70,7 +70,6 @@ typedef struct _DESKTOP DESKTOP_WRITEOBJECTS extern PDESKTOP InputDesktop; -extern HDESK InputDesktopHandle; extern PCLS DesktopWindowClass; extern HDC ScreenDeviceContext; extern PTHREADINFO gptiDesktopThread; diff --git a/win32ss/user/ntuser/simplecall.c b/win32ss/user/ntuser/simplecall.c index 3d5a5425d91..79d21ce6b5c 100644 --- a/win32ss/user/ntuser/simplecall.c +++ b/win32ss/user/ntuser/simplecall.c @@ -260,25 +260,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; @@ -335,9 +316,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; } diff --git a/win32ss/user/user32/include/ntwrapper.h b/win32ss/user/user32/include/ntwrapper.h index a43042be247..b2ec18e1b7c 100644 --- a/win32ss/user/user32/include/ntwrapper.h +++ b/win32ss/user/user32/include/ntwrapper.h @@ -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)