2 * Copyright 2021 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 /* this is the structure stored in TEB->Win32ClientInfo */
27 /* no attempt is made to keep the layout compatible with the Windows one */
28 struct user_thread_info
30 HANDLE server_queue
; /* Handle to server-side queue */
31 DWORD wake_mask
; /* Current queue wake mask */
32 DWORD changed_mask
; /* Current queue changed mask */
33 WORD recursion_count
; /* SendMessage recursion counter */
34 WORD message_count
; /* Get/PeekMessage loop counter */
35 WORD hook_call_depth
; /* Number of recursively called hook procs */
36 WORD hook_unicode
; /* Is current hook unicode? */
37 HHOOK hook
; /* Current hook */
38 UINT active_hooks
; /* Bitmap of active hooks */
39 DPI_AWARENESS dpi_awareness
; /* DPI awareness */
40 INPUT_MESSAGE_SOURCE msg_source
; /* Message source for current message */
41 struct received_message_info
*receive_info
; /* Message being currently received */
42 struct wm_char_mapping_data
*wmchar_data
; /* Data for WM_CHAR mappings */
43 DWORD GetMessageTimeVal
; /* Value for GetMessageTime */
44 DWORD GetMessagePosVal
; /* Value for GetMessagePos */
45 ULONG_PTR GetMessageExtraInfoVal
; /* Value for GetMessageExtraInfo */
46 struct user_key_state_info
*key_state
; /* Cache of global key state */
47 HKL kbd_layout
; /* Current keyboard layout */
48 DWORD kbd_layout_id
; /* Current keyboard layout ID */
49 HWND top_window
; /* Desktop window */
50 HWND msg_window
; /* HWND_MESSAGE parent window */
51 struct rawinput_thread_data
*rawinput
; /* RawInput thread local data / buffer */
54 C_ASSERT( sizeof(struct user_thread_info
) <= sizeof(((TEB
*)0)->Win32ClientInfo
) );
56 HKL WINAPI
NtUserActivateKeyboardLayout( HKL layout
, UINT flags
);
57 BOOL WINAPI
NtUserAddClipboardFormatListener( HWND hwnd
);
58 BOOL WINAPI
NtUserAttachThreadInput( DWORD from
, DWORD to
, BOOL attach
);
59 BOOL WINAPI
NtUserCloseDesktop( HDESK handle
);
60 BOOL WINAPI
NtUserCloseWindowStation( HWINSTA handle
);
61 INT WINAPI
NtUserCountClipboardFormats(void);
62 HDESK WINAPI
NtUserCreateDesktopEx( OBJECT_ATTRIBUTES
*attr
, UNICODE_STRING
*device
,
63 DEVMODEW
*devmode
, DWORD flags
, ACCESS_MASK access
,
65 HWINSTA WINAPI
NtUserCreateWindowStation( OBJECT_ATTRIBUTES
*attr
, ACCESS_MASK mask
, ULONG arg3
,
66 ULONG arg4
, ULONG arg5
, ULONG arg6
, ULONG arg7
);
67 INT WINAPI
NtUserGetClipboardFormatName( UINT format
, WCHAR
*buffer
, INT maxlen
);
68 HWND WINAPI
NtUserGetClipboardOwner(void);
69 DWORD WINAPI
NtUserGetClipboardSequenceNumber(void);
70 HWND WINAPI
NtUserGetClipboardViewer(void);
71 INT WINAPI
NtUserGetKeyNameText( LONG lparam
, WCHAR
*buffer
, INT size
);
72 SHORT WINAPI
NtUserGetKeyState( INT vkey
);
73 HKL WINAPI
NtUserGetKeyboardLayout( DWORD thread_id
);
74 UINT WINAPI
NtUserGetKeyboardLayoutList( INT size
, HKL
*layouts
);
75 BOOL WINAPI
NtUserGetKeyboardState( BYTE
*state
);
76 BOOL WINAPI
NtUserGetLayeredWindowAttributes( HWND hwnd
, COLORREF
*key
, BYTE
*alpha
, DWORD
*flags
);
77 int WINAPI
NtUserGetMouseMovePointsEx( UINT size
, MOUSEMOVEPOINT
*ptin
, MOUSEMOVEPOINT
*ptout
,
78 int count
, DWORD resolution
);
79 BOOL WINAPI
NtUserGetObjectInformation( HANDLE handle
, INT index
, void *info
,
80 DWORD len
, DWORD
*needed
);
81 HWND WINAPI
NtUserGetOpenClipboardWindow(void);
82 INT WINAPI
NtUserGetPriorityClipboardFormat( UINT
*list
, INT count
);
83 HWINSTA WINAPI
NtUserGetProcessWindowStation(void);
84 HANDLE WINAPI
NtUserGetProp( HWND hwnd
, const WCHAR
*str
);
85 HDESK WINAPI
NtUserGetThreadDesktop( DWORD thread
);
86 BOOL WINAPI
NtUserGetUpdatedClipboardFormats( UINT
*formats
, UINT size
, UINT
*out_size
);
87 BOOL WINAPI
NtUserIsClipboardFormatAvailable( UINT format
);
88 UINT WINAPI
NtUserMapVirtualKeyEx( UINT code
, UINT type
, HKL layout
);
89 HWINSTA WINAPI
NtUserOpenWindowStation( OBJECT_ATTRIBUTES
*attr
, ACCESS_MASK access
);
90 BOOL WINAPI
NtUserSetObjectInformation( HANDLE handle
, INT index
, void *info
, DWORD len
);
91 HDESK WINAPI
NtUserOpenDesktop( OBJECT_ATTRIBUTES
*attr
, DWORD flags
, ACCESS_MASK access
);
92 HDESK WINAPI
NtUserOpenInputDesktop( DWORD flags
, BOOL inherit
, ACCESS_MASK access
);
93 BOOL WINAPI
NtUserRemoveClipboardFormatListener( HWND hwnd
);
94 HANDLE WINAPI
NtUserRemoveProp( HWND hwnd
, const WCHAR
*str
);
95 BOOL WINAPI
NtUserScrollDC( HDC hdc
, INT dx
, INT dy
, const RECT
*scroll
, const RECT
*clip
,
96 HRGN ret_update_rgn
, RECT
*update_rect
);
97 BOOL WINAPI
NtUserSetKeyboardState( BYTE
*state
);
98 BOOL WINAPI
NtUserSetProcessWindowStation( HWINSTA handle
);
99 BOOL WINAPI
NtUserSetProp( HWND hwnd
, const WCHAR
*str
, HANDLE handle
);
100 BOOL WINAPI
NtUserSetThreadDesktop( HDESK handle
);
101 INT WINAPI
NtUserShowCursor( BOOL show
);
102 INT WINAPI
NtUserToUnicodeEx( UINT virt
, UINT scan
, const BYTE
*state
,
103 WCHAR
*str
, int size
, UINT flags
, HKL layout
);
104 BOOL WINAPI
NtUserUnregisterHotKey( HWND hwnd
, INT id
);
105 WORD WINAPI
NtUserVkKeyScanEx( WCHAR chr
, HKL layout
);
107 #endif /* _NTUSER_ */