mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 09:24:11 +00:00
When sending WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED messages from
Win32k, make sure the WINDOWPOS structure referenced by lParam is located in user space svn path=/trunk/; revision=4703
This commit is contained in:
parent
b41ecb619a
commit
c865c87d30
|
@ -1,4 +1,4 @@
|
|||
/* $Id: window.c,v 1.30 2003/05/17 09:20:23 gvg Exp $
|
||||
/* $Id: window.c,v 1.31 2003/05/17 14:37:23 gvg Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS user32.dll
|
||||
|
@ -131,6 +131,52 @@ User32SendNCCREATEMessageForKernel(PVOID Arguments, ULONG ArgumentLength)
|
|||
return(ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS));
|
||||
}
|
||||
|
||||
NTSTATUS STDCALL
|
||||
User32SendWINDOWPOSCHANGINGMessageForKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||
{
|
||||
PSENDWINDOWPOSCHANGING_CALLBACK_ARGUMENTS CallbackArgs;
|
||||
WNDPROC Proc;
|
||||
LRESULT Result;
|
||||
|
||||
DPRINT("User32SendWINDOWPOSCHANGINGMessageForKernel.\n");
|
||||
CallbackArgs = (PSENDWINDOWPOSCHANGING_CALLBACK_ARGUMENTS)Arguments;
|
||||
if (ArgumentLength != sizeof(SENDWINDOWPOSCHANGING_CALLBACK_ARGUMENTS))
|
||||
{
|
||||
DPRINT("Wrong length.\n");
|
||||
return(STATUS_INFO_LENGTH_MISMATCH);
|
||||
}
|
||||
Proc = (WNDPROC)GetWindowLongW(CallbackArgs->Wnd, GWL_WNDPROC);
|
||||
DPRINT("Proc %X\n", Proc);
|
||||
/* Call the window procedure; notice kernel messages are always unicode. */
|
||||
Result = CallWindowProcW(Proc, CallbackArgs->Wnd, WM_WINDOWPOSCHANGING, 0,
|
||||
(LPARAM)&CallbackArgs->WindowPos);
|
||||
DPRINT("Returning result %d.\n", Result);
|
||||
return(ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS));
|
||||
}
|
||||
|
||||
NTSTATUS STDCALL
|
||||
User32SendWINDOWPOSCHANGEDMessageForKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||
{
|
||||
PSENDWINDOWPOSCHANGED_CALLBACK_ARGUMENTS CallbackArgs;
|
||||
WNDPROC Proc;
|
||||
LRESULT Result;
|
||||
|
||||
DPRINT("User32SendWINDOWPOSCHANGEDMessageForKernel.\n");
|
||||
CallbackArgs = (PSENDWINDOWPOSCHANGED_CALLBACK_ARGUMENTS)Arguments;
|
||||
if (ArgumentLength != sizeof(SENDWINDOWPOSCHANGED_CALLBACK_ARGUMENTS))
|
||||
{
|
||||
DPRINT("Wrong length.\n");
|
||||
return(STATUS_INFO_LENGTH_MISMATCH);
|
||||
}
|
||||
Proc = (WNDPROC)GetWindowLongW(CallbackArgs->Wnd, GWL_WNDPROC);
|
||||
DPRINT("Proc %X\n", Proc);
|
||||
/* Call the window procedure; notice kernel messages are always unicode. */
|
||||
Result = CallWindowProcW(Proc, CallbackArgs->Wnd, WM_WINDOWPOSCHANGED, 0,
|
||||
(LPARAM)&CallbackArgs->WindowPos);
|
||||
DPRINT("Returning result %d.\n", Result);
|
||||
return(ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS));
|
||||
}
|
||||
|
||||
NTSTATUS STDCALL
|
||||
User32CallSendAsyncProcForKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue