Jacek Caban : win32u: Move NtUserAttachThreadInput implementation from user32.
Alexandre Julliard
julliard at winehq.org
Tue Nov 16 16:32:27 CST 2021
Module: wine
Branch: master
Commit: 94e06293966ac028a776445a283e7ed284648ab2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=94e06293966ac028a776445a283e7ed284648ab2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Nov 16 12:32:55 2021 +0100
win32u: Move NtUserAttachThreadInput implementation from user32.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/input.c | 22 ----------------------
dlls/user32/user32.spec | 2 +-
dlls/win32u/Makefile.in | 1 +
dlls/win32u/input.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
dlls/win32u/syscall.c | 1 +
dlls/win32u/win32u.spec | 2 +-
dlls/wow64win/syscall.h | 1 +
dlls/wow64win/user.c | 9 +++++++++
include/ntuser.h | 8 ++++++++
9 files changed, 71 insertions(+), 24 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index b4e3579f5e8..1362664d0c9 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -593,28 +593,6 @@ BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii)
}
-/**********************************************************************
- * AttachThreadInput (USER32.@)
- *
- * Attaches the input processing mechanism of one thread to that of
- * another thread.
- */
-BOOL WINAPI AttachThreadInput( DWORD from, DWORD to, BOOL attach )
-{
- BOOL ret;
-
- SERVER_START_REQ( attach_thread_input )
- {
- req->tid_from = from;
- req->tid_to = to;
- req->attach = attach;
- ret = !wine_server_call_err( req );
- }
- SERVER_END_REQ;
- return ret;
-}
-
-
/**********************************************************************
* GetKeyState (USER32.@)
*
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index 3825b6a4df2..34ba824dc38 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -12,7 +12,7 @@
@ stdcall AppendMenuW(long long long ptr)
@ stdcall AreDpiAwarenessContextsEqual(long long)
@ stdcall ArrangeIconicWindows(long)
-@ stdcall AttachThreadInput(long long long)
+@ stdcall AttachThreadInput(long long long) NtUserAttachThreadInput
@ stdcall BeginDeferWindowPos(long)
@ stdcall BeginPaint(long ptr)
@ stdcall BlockInput(long)
diff --git a/dlls/win32u/Makefile.in b/dlls/win32u/Makefile.in
index 306a3302260..96cfb4a8ea7 100644
--- a/dlls/win32u/Makefile.in
+++ b/dlls/win32u/Makefile.in
@@ -26,6 +26,7 @@ C_SRCS = \
font.c \
freetype.c \
gdiobj.c \
+ input.c \
main.c \
mapping.c \
opentype.c \
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
new file mode 100644
index 00000000000..0a4ebdace1d
--- /dev/null
+++ b/dlls/win32u/input.c
@@ -0,0 +1,49 @@
+/*
+ * USER Input processing
+ *
+ * Copyright 1993 Bob Amstadt
+ * Copyright 1996 Albrecht Kleine
+ * Copyright 1997 David Faure
+ * Copyright 1998 Morten Welinder
+ * Copyright 1998 Ulrich Weigand
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#if 0
+#pragma makedep unix
+#endif
+
+#include "win32u_private.h"
+#include "wine/server.h"
+
+
+/**********************************************************************
+ * NtUserAttachThreadInput (win32u.@)
+ */
+BOOL WINAPI NtUserAttachThreadInput( DWORD from, DWORD to, BOOL attach )
+{
+ BOOL ret;
+
+ SERVER_START_REQ( attach_thread_input )
+ {
+ req->tid_from = from;
+ req->tid_to = to;
+ req->attach = attach;
+ ret = !wine_server_call_err( req );
+ }
+ SERVER_END_REQ;
+ return ret;
+}
diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c
index 3eb38177a1f..e557eade893 100644
--- a/dlls/win32u/syscall.c
+++ b/dlls/win32u/syscall.c
@@ -102,6 +102,7 @@ static void * const syscalls[] =
NtGdiSwapBuffers,
NtGdiTransformPoints,
NtUserAddClipboardFormatListener,
+ NtUserAttachThreadInput,
NtUserCloseDesktop,
NtUserCloseWindowStation,
NtUserCreateDesktopEx,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 256ab822803..2a627763091 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -754,7 +754,7 @@
@ stub NtUserAddVisualIdentifier
@ stub NtUserAlterWindowStyle
@ stub NtUserAssociateInputContext
-@ stub NtUserAttachThreadInput
+@ stdcall -syscall NtUserAttachThreadInput(long long long)
@ stub NtUserAutoPromoteMouseInPointer
@ stub NtUserAutoRotateScreen
@ stub NtUserBeginLayoutUpdate
diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h
index 45685c3ba21..4f7ff8e003c 100644
--- a/dlls/wow64win/syscall.h
+++ b/dlls/wow64win/syscall.h
@@ -89,6 +89,7 @@
SYSCALL_ENTRY( NtGdiSwapBuffers ) \
SYSCALL_ENTRY( NtGdiTransformPoints ) \
SYSCALL_ENTRY( NtUserAddClipboardFormatListener ) \
+ SYSCALL_ENTRY( NtUserAttachThreadInput ) \
SYSCALL_ENTRY( NtUserCloseDesktop ) \
SYSCALL_ENTRY( NtUserCloseWindowStation ) \
SYSCALL_ENTRY( NtUserCreateDesktopEx ) \
diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c
index c86e7062314..a783eb42229 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -228,3 +228,12 @@ NTSTATUS WINAPI wow64_NtUserRemoveClipboardFormatListener( UINT *args )
return NtUserRemoveClipboardFormatListener( hwnd );
}
+
+NTSTATUS WINAPI wow64_NtUserAttachThreadInput( UINT *args )
+{
+ DWORD from = get_ulong( &args );
+ DWORD to = get_ulong( &args );
+ BOOL attach = get_ulong( &args );
+
+ return NtUserAttachThreadInput( from, to, attach );
+}
diff --git a/include/ntuser.h b/include/ntuser.h
index 9fcd94128fd..d24032d1229 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -24,6 +24,7 @@
#include <winternl.h>
BOOL WINAPI NtUserAddClipboardFormatListener( HWND hwnd );
+BOOL WINAPI NtUserAttachThreadInput( DWORD from, DWORD to, BOOL attach );
BOOL WINAPI NtUserCloseDesktop( HDESK handle );
BOOL WINAPI NtUserCloseWindowStation( HWINSTA handle );
INT WINAPI NtUserCountClipboardFormats(void);
@@ -36,6 +37,10 @@ INT WINAPI NtUserGetClipboardFormatName( UINT format, WCHAR *buffer, INT max
HWND WINAPI NtUserGetClipboardOwner(void);
DWORD WINAPI NtUserGetClipboardSequenceNumber(void);
HWND WINAPI NtUserGetClipboardViewer(void);
+INT WINAPI NtUserGetKeyNameText( LONG lparam, WCHAR *buffer, INT size );
+SHORT WINAPI NtUserGetKeyState( INT vkey );
+HKL WINAPI NtUserGetKeyboardLayout( DWORD thread_id );
+BOOL WINAPI NtUserGetKeyboardState( BYTE *state );
BOOL WINAPI NtUserGetLayeredWindowAttributes( HWND hwnd, COLORREF *key, BYTE *alpha, DWORD *flags );
BOOL WINAPI NtUserGetObjectInformation( HANDLE handle, INT index, void *info,
DWORD len, DWORD *needed );
@@ -45,14 +50,17 @@ HANDLE WINAPI NtUserGetProp( HWND hwnd, const WCHAR *str );
HDESK WINAPI NtUserGetThreadDesktop( DWORD thread );
BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size );
BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format );
+UINT WINAPI NtUserMapVirtualKeyEx( UINT code, UINT type, HKL layout );
HWINSTA WINAPI NtUserOpenWindowStation( OBJECT_ATTRIBUTES *attr, ACCESS_MASK access );
BOOL WINAPI NtUserSetObjectInformation( HANDLE handle, INT index, void *info, DWORD len );
HDESK WINAPI NtUserOpenDesktop( OBJECT_ATTRIBUTES *attr, DWORD flags, ACCESS_MASK access );
HDESK WINAPI NtUserOpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access );
BOOL WINAPI NtUserRemoveClipboardFormatListener( HWND hwnd );
HANDLE WINAPI NtUserRemoveProp( HWND hwnd, const WCHAR *str );
+BOOL WINAPI NtUserSetKeyboardState( BYTE *state );
BOOL WINAPI NtUserSetProcessWindowStation( HWINSTA handle );
BOOL WINAPI NtUserSetProp( HWND hwnd, const WCHAR *str, HANDLE handle );
BOOL WINAPI NtUserSetThreadDesktop( HDESK handle );
+WORD WINAPI NtUserVkKeyScanEx( WCHAR chr, HKL layout );
#endif /* _NTUSER_ */
More information about the wine-cvs
mailing list