From ccf00c6d954f1f08fa371c211f8d42473f772e51 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 13 Oct 2021 14:53:36 +0200 Subject: [PATCH] win32u: Move NtUserCloseDesktop implementation from user32. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/user32/message.c | 2 +- dlls/user32/user32.spec | 2 +- dlls/user32/winstation.c | 16 ---------------- dlls/win32u/syscall.c | 1 + dlls/win32u/win32u.spec | 2 +- dlls/win32u/winstation.c | 15 +++++++++++++++ dlls/wow64win/syscall.h | 1 + dlls/wow64win/user.c | 7 +++++++ include/ntuser.h | 1 + 9 files changed, 28 insertions(+), 19 deletions(-) diff --git a/dlls/user32/message.c b/dlls/user32/message.c index 7e6b660b8af..e5ea0735ed2 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -4321,7 +4321,7 @@ static BOOL CALLBACK bcast_desktop( LPWSTR desktop, LPARAM lp ) } ret = EnumDesktopWindows( hdesktop, bcast_childwindow, lp ); - CloseDesktop(hdesktop); + NtUserCloseDesktop( hdesktop ); TRACE("-->%d\n", ret); return parm->success; } diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 19bf5ce1b8e..7686e4ed14d 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -74,7 +74,7 @@ @ stdcall ClientToScreen(long ptr) @ stdcall ClipCursor(ptr) @ stdcall CloseClipboard() -@ stdcall CloseDesktop(long) +@ stdcall CloseDesktop(long) NtUserCloseDesktop @ stdcall CloseTouchInputHandle(long) @ stdcall CloseWindow(long) @ stdcall CloseWindowStation(long) NtUserCloseWindowStation diff --git a/dlls/user32/winstation.c b/dlls/user32/winstation.c index 37ae9e9ceb2..1f847ca8b8f 100644 --- a/dlls/user32/winstation.c +++ b/dlls/user32/winstation.c @@ -357,22 +357,6 @@ HDESK WINAPI OpenDesktopW( LPCWSTR name, DWORD flags, BOOL inherit, ACCESS_MASK } -/*********************************************************************** - * CloseDesktop (USER32.@) - */ -BOOL WINAPI CloseDesktop( HDESK handle ) -{ - BOOL ret; - SERVER_START_REQ( close_desktop ) - { - req->handle = wine_server_obj_handle( handle ); - ret = !wine_server_call_err( req ); - } - SERVER_END_REQ; - return ret; -} - - /****************************************************************************** * GetThreadDesktop (USER32.@) */ diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 132c55117a7..2f4269104dd 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -94,6 +94,7 @@ static void * const syscalls[] = NtGdiSetVirtualResolution, NtGdiSwapBuffers, NtGdiTransformPoints, + NtUserCloseDesktop, NtUserCloseWindowStation, NtUserGetProcessWindowStation, NtUserSetProcessWindowStation, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 24625316f9e..69a48236d84 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -794,7 +794,7 @@ @ stub NtUserClearForeground @ stub NtUserClipCursor @ stub NtUserCloseClipboard -@ stub NtUserCloseDesktop +@ stdcall -syscall NtUserCloseDesktop(long) @ stdcall -syscall NtUserCloseWindowStation(long) @ stub NtUserCompositionInputSinkLuidFromPoint @ stub NtUserCompositionInputSinkViewInstanceIdFromPoint diff --git a/dlls/win32u/winstation.c b/dlls/win32u/winstation.c index 153a83e313d..3b0df303821 100644 --- a/dlls/win32u/winstation.c +++ b/dlls/win32u/winstation.c @@ -75,3 +75,18 @@ BOOL WINAPI NtUserSetProcessWindowStation( HWINSTA handle ) SERVER_END_REQ; return ret; } + +/*********************************************************************** + * NtUserCloseDesktop (win32u.@) + */ +BOOL WINAPI NtUserCloseDesktop( HDESK handle ) +{ + BOOL ret; + SERVER_START_REQ( close_desktop ) + { + req->handle = wine_server_obj_handle( handle ); + ret = !wine_server_call_err( req ); + } + SERVER_END_REQ; + return ret; +} diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index ccf0574c639..ebb88f7013d 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -81,6 +81,7 @@ SYSCALL_ENTRY( NtGdiSetVirtualResolution ) \ SYSCALL_ENTRY( NtGdiSwapBuffers ) \ SYSCALL_ENTRY( NtGdiTransformPoints ) \ + SYSCALL_ENTRY( NtUserCloseDesktop ) \ SYSCALL_ENTRY( NtUserCloseWindowStation ) \ SYSCALL_ENTRY( NtUserGetProcessWindowStation ) \ SYSCALL_ENTRY( NtUserSetProcessWindowStation ) diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index cf028383c21..60fd8921b81 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -45,3 +45,10 @@ NTSTATUS WINAPI wow64_NtUserSetProcessWindowStation( UINT *args ) return NtUserSetProcessWindowStation( handle ); } + +NTSTATUS WINAPI wow64_NtUserCloseDesktop( UINT *args ) +{ + HDESK handle = get_handle( &args ); + + return NtUserCloseDesktop( handle ); +} diff --git a/include/ntuser.h b/include/ntuser.h index eac4f0da092..f791af40232 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -22,6 +22,7 @@ #include #include +BOOL WINAPI NtUserCloseDesktop( HDESK handle ); BOOL WINAPI NtUserCloseWindowStation( HWINSTA handle ); HWINSTA WINAPI NtUserGetProcessWindowStation(void); BOOL WINAPI NtUserSetProcessWindowStation( HWINSTA handle );