Reactos
1#ifndef __WIN32K_NTUSER_H
2#define __WIN32K_NTUSER_H
3
4struct _PROCESSINFO;
5struct _THREADINFO;
6struct _DESKTOP;
7struct _WND;
8struct tagPOPUPMENU;
9
10#define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
11#define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
12
13#define HANDLEENTRY_DESTROY 1
14#define HANDLEENTRY_INDESTROY 2
15
16typedef struct _USER_HANDLE_ENTRY
17{
18 void *ptr; /* pointer to object */
19 union
20 {
21 PVOID pi;
22 struct _THREADINFO *pti; /* pointer to Win32ThreadInfo */
23 struct _PROCESSINFO *ppi; /* pointer to W32ProcessInfo */
24 };
25 unsigned char type; /* object type (0 if free) */
26 unsigned char flags;
27 unsigned short generation; /* generation counter */
28} USER_HANDLE_ENTRY, *PUSER_HANDLE_ENTRY;
29
30typedef struct _USER_HANDLE_TABLE
31{
32 PUSER_HANDLE_ENTRY handles;
33 PUSER_HANDLE_ENTRY freelist;
34 int nb_handles;
35 int allocated_handles;
36} USER_HANDLE_TABLE, *PUSER_HANDLE_TABLE;
37
38typedef enum _HANDLE_TYPE
39{
40 TYPE_FREE = 0,
41 TYPE_WINDOW = 1,
42 TYPE_MENU = 2,
43 TYPE_CURSOR = 3,
44 TYPE_SETWINDOWPOS = 4,
45 TYPE_HOOK = 5,
46 TYPE_CLIPDATA = 6,
47 TYPE_CALLPROC = 7,
48 TYPE_ACCELTABLE = 8,
49 TYPE_DDEACCESS = 9,
50 TYPE_DDECONV = 10,
51 TYPE_DDEXACT = 11,
52 TYPE_MONITOR = 12,
53 TYPE_KBDLAYOUT = 13,
54 TYPE_KBDFILE = 14,
55 TYPE_WINEVENTHOOK = 15,
56 TYPE_TIMER = 16,
57 TYPE_INPUTCONTEXT = 17,
58 TYPE_HIDDATA = 18,
59 TYPE_DEVICEINFO = 19,
60 TYPE_TOUCHINPUTINFO = 20,
61 TYPE_GESTUREINFOOBJ = 21,
62 TYPE_CTYPES,
63 TYPE_GENERIC = 255
64} HANDLE_TYPE, *PHANDLE_TYPE;
65
66typedef enum _USERTHREADINFOCLASS
67{
68 UserThreadShutdownInformation,
69 UserThreadFlags,
70 UserThreadTaskName,
71 UserThreadWOWInformation,
72 UserThreadHungStatus,
73 UserThreadInitiateShutdown,
74 UserThreadEndShutdown,
75 UserThreadUseActiveDesktop,
76 UserThreadUseDesktop,
77 UserThreadRestoreDesktop,
78 UserThreadCsrApiPort,
79} USERTHREADINFOCLASS;
80
81typedef struct _LARGE_UNICODE_STRING
82{
83 ULONG Length;
84 ULONG MaximumLength:31;
85 ULONG bAnsi:1;
86 PWSTR Buffer;
87} LARGE_UNICODE_STRING, *PLARGE_UNICODE_STRING;
88
89typedef struct _LARGE_STRING
90{
91 ULONG Length;
92 ULONG MaximumLength:31;
93 ULONG bAnsi:1;
94 PVOID Buffer;
95} LARGE_STRING, *PLARGE_STRING;
96
97
98/* Based on ANSI_STRING */
99typedef struct _LARGE_ANSI_STRING
100{
101 ULONG Length;
102 ULONG MaximumLength:31;
103 ULONG bAnsi:1;
104 PCHAR Buffer;
105} LARGE_ANSI_STRING, *PLARGE_ANSI_STRING;
106
107VOID
108NTAPI
109RtlInitLargeAnsiString(
110 IN OUT PLARGE_ANSI_STRING,
111 IN PCSZ,
112 IN INT);
113
114VOID
115NTAPI
116RtlInitLargeUnicodeString(
117 IN OUT PLARGE_UNICODE_STRING,
118 IN PCWSTR,
119 IN INT);
120
121BOOL
122NTAPI
123RtlLargeStringToUnicodeString(
124 PUNICODE_STRING,
125 PLARGE_STRING);
126
127#define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1)
128
129/*
130 * DESKTOPINFO structure.
131 * See also: https://reactos.org/wiki/Techwiki:Win32k/DESKTOP
132 */
133typedef struct _DESKTOPINFO
134{
135 PVOID pvDesktopBase;
136 PVOID pvDesktopLimit;
137 struct _WND *spwnd;
138 DWORD fsHooks;
139 LIST_ENTRY aphkStart[NB_HOOKS];
140
141 HWND hTaskManWindow;
142 HWND hProgmanWindow;
143 HWND hShellWindow;
144 struct _WND *spwndShell;
145 struct _WND *spwndBkGnd;
146
147 struct _PROCESSINFO *ppiShellProcess;
148
149 union
150 {
151 UINT Dummy;
152 struct
153 {
154 UINT LastInputWasKbd:1;
155 };
156 };
157
158 WCHAR szDesktopName[1];
159} DESKTOPINFO, *PDESKTOPINFO;
160
161#define CTI_THREADSYSLOCK 0x0001
162#define CTI_INSENDMESSAGE 0x0002
163
164/*
165 * CLIENTTHREADINFO structure.
166 * See also: https://reactos.org/wiki/Techwiki:Win32k/CLIENTTHREADINFO
167 */
168typedef struct _CLIENTTHREADINFO
169{
170 DWORD CTI_flags;
171 WORD fsChangeBits;
172 WORD fsWakeBits;
173 WORD fsWakeBitsJournal;
174 WORD fsWakeMask;
175 ULONG timeLastRead; // Last time the message queue was read.
176 DWORD dwcPumpHook;
177} CLIENTTHREADINFO, *PCLIENTTHREADINFO;
178
179typedef struct _HEAD
180{
181 HANDLE h;
182 DWORD cLockObj;
183} HEAD, *PHEAD;
184
185typedef struct _THROBJHEAD
186{
187 HEAD;
188 struct _THREADINFO *pti;
189} THROBJHEAD, *PTHROBJHEAD;
190
191typedef struct _THRDESKHEAD
192{
193 THROBJHEAD;
194 struct _DESKTOP *rpdesk;
195 PVOID pSelf;
196} THRDESKHEAD, *PTHRDESKHEAD;
197
198typedef struct tagIMC
199{
200 THRDESKHEAD head;
201 struct tagIMC *pImcNext;
202 ULONG_PTR dwClientImcData;
203 HWND hImeWnd;
204} IMC, *PIMC;
205
206#ifndef _WIN64
207C_ASSERT(offsetof(IMC, head.h) == 0x0);
208C_ASSERT(offsetof(IMC, head.cLockObj) == 0x4);
209C_ASSERT(offsetof(IMC, head.pti) == 0x8);
210C_ASSERT(offsetof(IMC, pImcNext) == 0x14);
211C_ASSERT(offsetof(IMC, dwClientImcData) == 0x18);
212C_ASSERT(offsetof(IMC, hImeWnd) == 0x1c);
213#endif
214
215typedef struct _PROCDESKHEAD
216{
217 HEAD;
218 DWORD_PTR hTaskWow;
219 struct _DESKTOP *rpdesk;
220 PVOID pSelf;
221} PROCDESKHEAD, *PPROCDESKHEAD;
222
223typedef struct _PROCMARKHEAD
224{
225 HEAD;
226 ULONG hTaskWow;
227 struct _PROCESSINFO *ppi;
228} PROCMARKHEAD, *PPROCMARKHEAD;
229
230#define UserHMGetHandle(obj) ((obj)->head.h)
231#define UserHMSetHandle(obj, handle) ((obj)->head.h = (handle))
232
233/* Window Client Information structure */
234struct _ETHREAD;
235
236#define WEF_SETBYWNDPTI 0x0001
237
238typedef struct tagHOOK
239{
240 THRDESKHEAD head;
241 struct tagHOOK *phkNext; /* This is for user space. */
242 int HookId; /* Hook table index */
243 ULONG_PTR offPfn;
244 ULONG flags; /* Some internal flags */
245 INT_PTR ihmod;
246 struct _THREADINFO *ptiHooked;
247 struct _DESKTOP *rpdesk;
248 /* ReactOS */
249 LIST_ENTRY Chain; /* Hook chain entry */
250 HOOKPROC Proc; /* Hook function */
251 BOOLEAN Ansi; /* Is it an Ansi hook? */
252 UNICODE_STRING ModuleName; /* Module name for global hooks */
253} HOOK, *PHOOK;
254
255typedef struct tagCLIPBOARDDATA
256{
257 HEAD head;
258 DWORD cbData;
259 BYTE Data[0];
260} CLIPBOARDDATA, *PCLIPBOARDDATA;
261
262/* THREADINFO Flags */
263#define TIF_INCLEANUP 0x00000001
264#define TIF_16BIT 0x00000002
265#define TIF_SYSTEMTHREAD 0x00000004
266#define TIF_CSRSSTHREAD 0x00000008
267#define TIF_TRACKRECTVISIBLE 0x00000010
268#define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
269#define TIF_DONTATTACHQUEUE 0x00000040
270#define TIF_DONTJOURNALATTACH 0x00000080
271#define TIF_WOW64 0x00000100
272#define TIF_INACTIVATEAPPMSG 0x00000200
273#define TIF_SPINNING 0x00000400
274#define TIF_PALETTEAWARE 0x00000800
275#define TIF_SHAREDWOW 0x00001000
276#define TIF_FIRSTIDLE 0x00002000
277#define TIF_WAITFORINPUTIDLE 0x00004000
278#define TIF_MOVESIZETRACKING 0x00008000
279#define TIF_VDMAPP 0x00010000
280#define TIF_DOSEMULATOR 0x00020000
281#define TIF_GLOBALHOOKER 0x00040000
282#define TIF_DELAYEDEVENT 0x00080000
283#define TIF_MSGPOSCHANGED 0x00100000
284#define TIF_SHUTDOWNCOMPLETE 0x00200000
285#define TIF_IGNOREPLAYBACKDELAY 0x00400000
286#define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
287#define TIF_GUITHREADINITIALIZED 0x02000000
288#define TIF_DISABLEIME 0x04000000
289#define TIF_INGETTEXTLENGTH 0x08000000
290#define TIF_ANSILENGTH 0x10000000
291#define TIF_DISABLEHOOKS 0x20000000
292
293typedef struct _CALLBACKWND
294{
295 HWND hWnd;
296 struct _WND *pWnd;
297 PVOID pActCtx;
298} CALLBACKWND, *PCALLBACKWND;
299
300#define CI_TRANSACTION 0x00000001
301#define CI_QUEUEMSG 0x00000002
302#define CI_WOW 0x00000004
303#define CI_INITTHREAD 0x00000008
304#define CI_CURTHPRHOOK 0x00000010
305#define CI_CLASSESREGISTERED 0x00000020
306#define CI_IMMACTIVATE 0x00000040 /* IMM/IME (Asian input) */
307#define CI_CTFCOINIT 0x00000080 /* Did CTF CoInitialize? */
308#define CI_CTFTIM 0x00000100 /* CTF Thread Input Manager (TIM) */
309#define CI_CICERO_STARTED 0x00000200 /* Is Cicero started in the thread? */
310#define CI_TSFDISABLED 0x00000400 /* TSF (Text Services Framework a.k.a. Cicero) */
311#define CI_AIMMACTIVATED 0x00000800 /* Active IMM (AIMM) */
312
313/*
314 * CLIENTINFO structure.
315 * See also: https://reactos.org/wiki/Techwiki:Win32k/CLIENTINFO
316 */
317typedef struct _CLIENTINFO
318{
319 ULONG_PTR CI_flags;
320 ULONG_PTR cSpins;
321 DWORD dwExpWinVer;
322 DWORD dwCompatFlags;
323 DWORD dwCompatFlags2;
324 DWORD dwTIFlags; /* ThreadInfo TIF_Xxx flags for User space. */
325 PDESKTOPINFO pDeskInfo;
326 ULONG_PTR ulClientDelta;
327 PHOOK phkCurrent;
328 ULONG fsHooks;
329 CALLBACKWND CallbackWnd;
330 DWORD dwHookCurrent;
331 INT cInDDEMLCallback;
332 PCLIENTTHREADINFO pClientThreadInfo;
333 ULONG_PTR dwHookData;
334 DWORD dwKeyCache;
335 BYTE afKeyState[8];
336 DWORD dwAsyncKeyCache;
337 BYTE afAsyncKeyState[8];
338 BYTE afAsyncKeyStateRecentDow[8];
339 HKL hKL;
340 USHORT CodePage;
341 UCHAR achDbcsCF[2];
342 MSG msgDbcsCB;
343 LPDWORD lpdwRegisteredClasses;
344 ULONG Win32ClientInfo3[26];
345/* It's just a pointer reference not to be used w the structure in user space. */
346 struct _PROCESSINFO *ppi;
347} CLIENTINFO, *PCLIENTINFO;
348
349/* Make sure it fits into the TEB */
350C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
351
352#define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
353
354typedef struct tagDDEPACK
355{
356 UINT_PTR uiLo;
357 UINT_PTR uiHi;
358} DDEPACK, *PDDEPACK;
359
360#define HRGN_NULL ((HRGN)0) /* NULL empty region */
361#define HRGN_WINDOW ((HRGN)1) /* region from window rcWindow */
362#define HRGN_MONITOR ((HRGN)2) /* region from monitor region. */
363
364/* Menu Item fType. */
365#define MFT_RTOL 0x6000
366
367/* Menu Item fState. */
368#define MFS_HBMMENUBMP 0x20000000
369
370typedef struct tagITEM
371{
372 UINT fType;
373 UINT fState;
374 UINT wID;
375 struct tagMENU *spSubMenu; /* Pop-up menu. */
376 HANDLE hbmpChecked;
377 HANDLE hbmpUnchecked;
378 USHORT *Xlpstr; /* Item text pointer. */
379 ULONG cch;
380 DWORD_PTR dwItemData;
381 ULONG xItem; /* Item position. left */
382 ULONG yItem; /* " top */
383 ULONG cxItem; /* Item Size Width */
384 ULONG cyItem; /* " Height */
385 ULONG dxTab; /* X position of text after Tab */
386 ULONG ulX; /* underline.. start position */
387 ULONG ulWidth; /* underline.. width */
388 HBITMAP hbmp; /* bitmap */
389 INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
390 INT cyBmp; /* Height " */
391 /* ReactOS */
392 UNICODE_STRING lpstr;
393} ITEM, *PITEM;
394
395typedef struct tagMENULIST
396{
397 struct tagMENULIST *pNext;
398 struct tagMENU *pMenu;
399} MENULIST, *PMENULIST;
400
401/* Menu fFlags, upper byte is MNS_X style flags. */
402#define MNF_POPUP 0x0001
403#define MNF_UNDERLINE 0x0004
404#define MNF_INACTIVE 0x0010
405#define MNF_RTOL 0x0020
406#define MNF_DESKTOPMN 0x0040
407#define MNF_SYSDESKMN 0x0080
408#define MNF_SYSSUBMENU 0x0100
409/* Hack */
410#define MNF_SYSMENU 0x0200
411
412/* (other FocusedItem values give the position of the focused item) */
413#define NO_SELECTED_ITEM 0xffff
414
415typedef struct tagMENU
416{
417 PROCDESKHEAD head;
418 ULONG fFlags; /* [Style flags | Menu flags] */
419 INT iItem; /* nPos of selected item, if -1 not selected. AKA focused item */
420 UINT cAlloced; /* Number of allocated items. Inc's of 8 */
421 UINT cItems; /* Number of items in the menu */
422 ULONG cxMenu; /* Width of the whole menu */
423 ULONG cyMenu; /* Height of the whole menu */
424 ULONG cxTextAlign; /* Offset of text when items have both bitmaps and text */
425 struct _WND *spwndNotify; /* window receiving the messages for ownerdraw */
426 PITEM rgItems; /* Array of menu items */
427 struct tagMENULIST *pParentMenus; /* If this is SubMenu, list of parents. */
428 DWORD dwContextHelpId;
429 ULONG cyMax; /* max height of the whole menu, 0 is screen height */
430 DWORD_PTR dwMenuData; /* application defined value */
431 HBRUSH hbrBack; /* brush for menu background */
432 INT iTop; /* Current scroll position Top */
433 INT iMaxTop; /* Current scroll position Max Top */
434 DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
435 /* ReactOS */
436 LIST_ENTRY ListEntry;
437 HWND hWnd; /* Window containing the menu, use POPUPMENU */
438 BOOL TimeToHide;
439} MENU, *PMENU;
440
441typedef struct tagPOPUPMENU
442{
443 ULONG fIsMenuBar:1;
444 ULONG fHasMenuBar:1;
445 ULONG fIsSysMenu:1;
446 ULONG fIsTrackPopup:1;
447 ULONG fDroppedLeft:1;
448 ULONG fHierarchyDropped:1;
449 ULONG fRightButton:1;
450 ULONG fToggle:1;
451 ULONG fSynchronous:1;
452 ULONG fFirstClick:1;
453 ULONG fDropNextPopup:1;
454 ULONG fNoNotify:1;
455 ULONG fAboutToHide:1;
456 ULONG fShowTimer:1;
457 ULONG fHideTimer:1;
458 ULONG fDestroyed:1;
459 ULONG fDelayedFree:1;
460 ULONG fFlushDelayedFree:1;
461 ULONG fFreed:1;
462 ULONG fInCancel:1;
463 ULONG fTrackMouseEvent:1;
464 ULONG fSendUninit:1;
465 ULONG fRtoL:1;
466 // ULONG fDesktopMenu:1;
467 ULONG iDropDir:5;
468 ULONG fUseMonitorRect:1;
469 struct _WND *spwndNotify;
470 struct _WND *spwndPopupMenu;
471 struct _WND *spwndNextPopup;
472 struct _WND *spwndPrevPopup;
473 PMENU spmenu;
474 PMENU spmenuAlternate;
475 struct _WND *spwndActivePopup;
476 struct tagPOPUPMENU *ppopupmenuRoot;
477 struct tagPOPUPMENU *ppmDelayedFree;
478 UINT posSelectedItem;
479 UINT posDropped;
480} POPUPMENU, *PPOPUPMENU;
481
482typedef struct _REGISTER_SYSCLASS
483{
484 /* This is a reactos specific class used to initialize the
485 system window classes during user32 initialization */
486 PWSTR ClassName;
487 UINT Style;
488 WNDPROC ProcW;
489 UINT ExtraBytes;
490 HICON hCursor;
491 HBRUSH hBrush;
492 WORD fiId;
493 WORD iCls;
494} REGISTER_SYSCLASS, *PREGISTER_SYSCLASS;
495
496typedef struct _CLSMENUNAME
497{
498 LPSTR pszClientAnsiMenuName;
499 LPWSTR pwszClientUnicodeMenuName;
500 PUNICODE_STRING pusMenuName;
501} CLSMENUNAME, *PCLSMENUNAME;
502
503typedef struct tagSBDATA
504{
505 INT posMin;
506 INT posMax;
507 INT page;
508 INT pos;
509} SBDATA, *PSBDATA;
510
511typedef struct tagSBINFO
512{
513 INT WSBflags;
514 SBDATA Horz;
515 SBDATA Vert;
516} SBINFO, *PSBINFO;
517
518typedef struct tagSBCALC
519{
520 INT posMin;
521 INT posMax;
522 INT page;
523 INT pos;
524 INT pxTop;
525 INT pxBottom;
526 INT pxLeft;
527 INT pxRight;
528 INT cpxThumb;
529 INT pxUpArrow;
530 INT pxDownArrow;
531 INT pxStart;
532 INT pxThumbBottom;
533 INT pxThumbTop;
534 INT cpx;
535 INT pxMin;
536} SBCALC, *PSBCALC;
537
538typedef enum _GETCPD
539{
540 UserGetCPDA2U = 0x01, /* " Unicode " */
541 UserGetCPDU2A = 0X02, /* " Ansi " */
542 UserGetCPDClass = 0X10,
543 UserGetCPDWindow = 0X20,
544 UserGetCPDDialog = 0X40,
545 UserGetCPDWndtoCls = 0X80
546} GETCPD, *PGETCPD;
547
548typedef struct _CALLPROCDATA
549{
550 PROCDESKHEAD head;
551 struct _CALLPROCDATA *spcpdNext;
552 WNDPROC pfnClientPrevious;
553 GETCPD wType;
554} CALLPROCDATA, *PCALLPROCDATA;
555
556#define CSF_SERVERSIDEPROC 0x0001
557#define CSF_ANSIPROC 0x0002
558#define CSF_WOWDEFERDESTROY 0x0004
559#define CSF_SYSTEMCLASS 0x0008
560#define CSF_WOWCLASS 0x0010
561#define CSF_WOWEXTRA 0x0020
562#define CSF_CACHEDSMICON 0x0040
563#define CSF_WIN40COMPAT 0x0080
564
565typedef struct _CLS
566{
567 struct _CLS *pclsNext;
568 RTL_ATOM atomClassName;
569 ATOM atomNVClassName;
570 DWORD fnid;
571 struct _DESKTOP *rpdeskParent;
572 PVOID pdce;
573 DWORD CSF_flags;
574 PSTR lpszClientAnsiMenuName; /* For client use */
575 PWSTR lpszClientUnicodeMenuName; /* " " " */
576 PCALLPROCDATA spcpdFirst;
577 struct _CLS *pclsBase;
578 struct _CLS *pclsClone;
579 ULONG cWndReferenceCount;
580 UINT style;
581 WNDPROC lpfnWndProc;
582 INT cbclsExtra;
583 INT cbwndExtra;
584 HINSTANCE hModule;
585 struct _CURICON_OBJECT *spicn;
586 struct _CURICON_OBJECT *spcur;
587 HBRUSH hbrBackground;
588 PWSTR lpszMenuName; /* kernel use */
589 PSTR lpszAnsiClassName; /* " */
590 struct _CURICON_OBJECT *spicnSm;
591 ////
592 UINT Unicode:1; // !CSF_ANSIPROC
593 UINT Global:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
594 UINT MenuNameIsString:1;
595 UINT NotUsed:29;
596} CLS, *PCLS;
597
598typedef struct _SBINFOEX
599{
600 SCROLLBARINFO ScrollBarInfo;
601 SCROLLINFO ScrollInfo;
602} SBINFOEX, *PSBINFOEX;
603
604/* State Flags !Not ALL Implemented! */
605#define WNDS_HASMENU 0X00000001
606#define WNDS_HASVERTICALSCROOLLBAR 0X00000002
607#define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
608#define WNDS_HASCAPTION 0X00000008
609#define WNDS_SENDSIZEMOVEMSGS 0X00000010
610#define WNDS_MSGBOX 0X00000020
611#define WNDS_ACTIVEFRAME 0X00000040
612#define WNDS_HASSPB 0X00000080
613#define WNDS_NONCPAINT 0X00000100
614#define WNDS_SENDERASEBACKGROUND 0X00000200
615#define WNDS_ERASEBACKGROUND 0X00000400
616#define WNDS_SENDNCPAINT 0X00000800
617#define WNDS_INTERNALPAINT 0X00001000
618#define WNDS_UPDATEDIRTY 0X00002000
619#define WNDS_HIDDENPOPUP 0X00004000
620#define WNDS_FORCEMENUDRAW 0X00008000
621#define WNDS_DIALOGWINDOW 0X00010000
622#define WNDS_HASCREATESTRUCTNAME 0X00020000
623#define WNDS_SERVERSIDEWINDOWPROC 0x00040000 /* Call proc inside win32k. */
624#define WNDS_ANSIWINDOWPROC 0x00080000
625#define WNDS_BEINGACTIVATED 0x00100000
626#define WNDS_HASPALETTE 0x00200000
627#define WNDS_PAINTNOTPROCESSED 0x00400000
628#define WNDS_SYNCPAINTPENDING 0x00800000
629#define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
630#define WNDS_RECEIVEDSUSPENDMSG 0x02000000
631#define WNDS_TOGGLETOPMOST 0x04000000
632#define WNDS_REDRAWIFHUNG 0x08000000
633#define WNDS_REDRAWFRAMEIFHUNG 0x10000000
634#define WNDS_ANSICREATOR 0x20000000
635#define WNDS_MAXIMIZESTOMONITOR 0x40000000
636#define WNDS_DESTROYED 0x80000000
637
638#define WNDSACTIVEFRAME 0x00000006
639
640/* State2 Flags !Not ALL Implemented! */
641#define WNDS2_WMPAINTSENT 0X00000001
642#define WNDS2_ENDPAINTINVALIDATE 0X00000002
643#define WNDS2_STARTPAINT 0X00000004
644#define WNDS2_OLDUI 0X00000008
645#define WNDS2_HASCLIENTEDGE 0X00000010
646#define WNDS2_BOTTOMMOST 0X00000020
647#define WNDS2_FULLSCREEN 0X00000040
648#define WNDS2_INDESTROY 0X00000080
649#define WNDS2_WIN31COMPAT 0X00000100
650#define WNDS2_WIN40COMPAT 0X00000200
651#define WNDS2_WIN50COMPAT 0X00000400
652#define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
653#define WNDS2_CLOSEBUTTONDOWN 0X00001000
654#define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
655#define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
656#define WNDS2_HELPBUTTONDOWN 0X00008000
657#define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
658#define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
659#define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
660#define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
661#define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
662#define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
663#define WNDS2_FORCENCPAINT 0X00400000
664#define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
665#define WNDS2_FULLSCREENMODE 0X01000000
666#define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
667#define WNDS2_NOMINMAXANIMATERECTS 0X10000000
668#define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
669#define WNDS2_SHELLHOOKREGISTERED 0X40000000
670#define WNDS2_WMCREATEMSGPROCESSED 0X80000000
671
672/* ExStyles2 */
673#define WS_EX2_CLIPBOARDLISTENER 0X00000001
674#define WS_EX2_LAYEREDINVALIDATE 0X00000002
675#define WS_EX2_REDIRECTEDFORPRINT 0X00000004
676#define WS_EX2_LINKED 0X00000008
677#define WS_EX2_LAYEREDFORDWM 0X00000010
678#define WS_EX2_LAYEREDLIMBO 0X00000020
679#define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
680#define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
681#define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
682#define WS_EX2_HASOVERLAY 0X00000200
683#define WS_EX2_CONSOLEWINDOW 0X00000400
684#define WS_EX2_CHILDNOACTIVATE 0X00000800
685
686#define WPF_MININIT 0x0008
687#define WPF_MAXINIT 0x0010
688
689/*
690 * WND structure.
691 * See also: https://reactos.org/wiki/Techwiki:Win32k/WND
692 */
693typedef struct _WND
694{
695 THRDESKHEAD head;
696#if 0
697 WW ww;
698#else
699 /* These fields should be moved in the WW at some point. */
700 /* Plese do not change them to keep the same layout with WW. */
701 DWORD state;
702 DWORD state2;
703 /* Extended style. */
704 DWORD ExStyle;
705 /* Style. */
706 DWORD style;
707 /* Handle of the module that created the window. */
708 HINSTANCE hModule;
709 DWORD fnid;
710#endif
711 struct _WND *spwndNext;
712 struct _WND *spwndPrev;
713 struct _WND *spwndParent;
714 struct _WND *spwndChild;
715 struct _WND *spwndOwner;
716 RECT rcWindow;
717 RECT rcClient;
718 WNDPROC lpfnWndProc;
719 /* Pointer to the window class. */
720 PCLS pcls;
721 HRGN hrgnUpdate;
722 /* Property list head.*/
723 LIST_ENTRY PropListHead;
724 ULONG PropListItems;
725 /* Scrollbar info */
726 PSBINFO pSBInfo;
727 /* system menu handle. */
728 HMENU SystemMenu;
729 //PMENU spmenuSys;
730 /* Window menu handle or window id */
731 UINT_PTR IDMenu; // Use spmenu
732 //PMENU spmenu;
733 HRGN hrgnClip;
734 HRGN hrgnNewFrame;
735 /* Window name. */
736 LARGE_UNICODE_STRING strName;
737 /* Size of the extra data associated with the window. */
738 ULONG cbwndExtra;
739 struct _WND *spwndLastActive;
740 HIMC hImc; // Input context associated with this window.
741 LONG_PTR dwUserData;
742 PVOID pActCtx;
743 //PD3DMATRIX pTransForm;
744 struct _WND *spwndClipboardListener;
745 DWORD ExStyle2;
746
747 /* ReactOS */
748 struct
749 {
750 RECT NormalRect;
751 POINT IconPos;
752 POINT MaxPos;
753 UINT flags; /* WPF_ flags. */
754 } InternalPos;
755
756 UINT Unicode:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */
757 UINT InternalPosInitialized:1;
758 UINT HideFocus:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */
759 UINT HideAccel:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */
760
761 /* Scrollbar info */
762 PSBINFOEX pSBInfoex; // convert to PSBINFO
763 /* Entry in the list of thread windows. */
764 LIST_ENTRY ThreadListEntry;
765
766 PVOID DialogPointer;
767} WND, *PWND;
768
769#define PWND_BOTTOM ((PWND)1)
770
771typedef struct _SBWND
772{
773 WND wnd;
774 BOOL fVert;
775 UINT wDisableFlags;
776 SBCALC SBCalc;
777} SBWND, *PSBWND;
778
779typedef struct _MDIWND
780{
781 WND wnd;
782 DWORD dwReserved;
783 PVOID pmdi;
784} MDIWND, *PMDIWND;
785
786#define GWLP_MDIWND 4
787
788typedef struct _MENUWND
789{
790 WND wnd;
791 PPOPUPMENU ppopupmenu;
792} MENUWND, *PMENUWND;
793
794typedef struct _PFNCLIENT
795{
796 WNDPROC pfnScrollBarWndProc;
797 WNDPROC pfnTitleWndProc;
798 WNDPROC pfnMenuWndProc;
799 WNDPROC pfnDesktopWndProc;
800 WNDPROC pfnDefWindowProc;
801 WNDPROC pfnMessageWindowProc;
802 WNDPROC pfnSwitchWindowProc;
803 WNDPROC pfnButtonWndProc;
804 WNDPROC pfnComboBoxWndProc;
805 WNDPROC pfnComboListBoxProc;
806 WNDPROC pfnDialogWndProc;
807 WNDPROC pfnEditWndProc;
808 WNDPROC pfnListBoxWndProc;
809 WNDPROC pfnMDIClientWndProc;
810 WNDPROC pfnStaticWndProc;
811 WNDPROC pfnImeWndProc;
812 WNDPROC pfnGhostWndProc;
813 WNDPROC pfnHkINLPCWPSTRUCT;
814 WNDPROC pfnHkINLPCWPRETSTRUCT;
815 WNDPROC pfnDispatchHook;
816 WNDPROC pfnDispatchDefWindowProc;
817 WNDPROC pfnDispatchMessage;
818 WNDPROC pfnMDIActivateDlgProc;
819} PFNCLIENT, *PPFNCLIENT;
820
821/*
822 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
823 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
824 */
825
826typedef LRESULT
827(CALLBACK *WNDPROC_EX)(
828 HWND,
829 UINT,
830 WPARAM,
831 LPARAM,
832 BOOL);
833
834typedef struct _PFNCLIENTWORKER
835{
836 WNDPROC_EX pfnButtonWndProc;
837 WNDPROC_EX pfnComboBoxWndProc;
838 WNDPROC_EX pfnComboListBoxProc;
839 WNDPROC_EX pfnDialogWndProc;
840 WNDPROC_EX pfnEditWndProc;
841 WNDPROC_EX pfnListBoxWndProc;
842 WNDPROC_EX pfnMDIClientWndProc;
843 WNDPROC_EX pfnStaticWndProc;
844 WNDPROC_EX pfnImeWndProc;
845 WNDPROC_EX pfnGhostWndProc;
846 WNDPROC_EX pfnCtfHookProc;
847} PFNCLIENTWORKER, *PPFNCLIENTWORKER;
848
849typedef LONG_PTR
850(NTAPI *PFN_FNID)(
851 PWND,
852 UINT,
853 WPARAM,
854 LPARAM,
855 ULONG_PTR);
856
857/* FNID's for NtUserSetWindowFNID, NtUserMessageCall */
858#define FNID_FIRST 0x029A
859#define FNID_SCROLLBAR 0x029A
860#define FNID_ICONTITLE 0x029B
861#define FNID_MENU 0x029C
862#define FNID_DESKTOP 0x029D
863#define FNID_DEFWINDOWPROC 0x029E
864#define FNID_MESSAGEWND 0x029F
865#define FNID_SWITCH 0x02A0
866#define FNID_BUTTON 0x02A1
867#define FNID_COMBOBOX 0x02A2
868#define FNID_COMBOLBOX 0x02A3
869#define FNID_DIALOG 0x02A4
870#define FNID_EDIT 0x02A5
871#define FNID_LISTBOX 0x02A6
872#define FNID_MDICLIENT 0x02A7
873#define FNID_STATIC 0x02A8
874#define FNID_IME 0x02A9
875#define FNID_GHOST 0x02AA
876#define FNID_CALLWNDPROC 0x02AB
877#define FNID_CALLWNDPROCRET 0x02AC
878#define FNID_HKINLPCWPEXSTRUCT 0x02AD
879#define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
880#define FNID_MB_DLGPROC 0x02AF
881#define FNID_MDIACTIVATEDLGPROC 0x02B0
882#define FNID_SENDMESSAGE 0x02B1
883#define FNID_SENDMESSAGEFF 0x02B2
884/* Kernel has option to use TimeOut or normal msg send, based on type of msg. */
885#define FNID_SENDMESSAGEWTOOPTION 0x02B3
886#define FNID_SENDMESSAGECALLPROC 0x02B4
887#define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
888#define FNID_TOOLTIPS 0x02B6
889#define FNID_SENDNOTIFYMESSAGE 0x02B7
890#define FNID_SENDMESSAGECALLBACK 0x02B8
891
892#define FNID_LAST FNID_SENDMESSAGECALLBACK
893
894#define FNID_NUM (FNID_LAST - FNID_FIRST + 1)
895#define FNID_NUMSERVERPROC (FNID_SWITCH - FNID_FIRST + 1)
896
897#define FNID_DDEML 0x2000 /* Registers DDEML */
898#define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */
899 /* Seen during WM_CREATE on error exit too. */
900#define FNID_FREED 0x8000 /* Window being Freed... */
901
902#define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
903
904#define GETPFNCLIENTA(fnid) \
905 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
906#define GETPFNCLIENTW(fnid) \
907 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
908
909#define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
910
911/* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */
912#define ICLS_BUTTON 0
913#define ICLS_EDIT 1
914#define ICLS_STATIC 2
915#define ICLS_LISTBOX 3
916#define ICLS_SCROLLBAR 4
917#define ICLS_COMBOBOX 5
918#define ICLS_MDICLIENT 6
919#define ICLS_COMBOLBOX 7
920#define ICLS_DDEMLEVENT 8
921#define ICLS_DDEMLMOTHER 9
922#define ICLS_DDEML16BIT 10
923#define ICLS_DDEMLCLIENTA 11
924#define ICLS_DDEMLCLIENTW 12
925#define ICLS_DDEMLSERVERA 13
926#define ICLS_DDEMLSERVERW 14
927#define ICLS_IME 15
928#define ICLS_GHOST 16
929#define ICLS_DESKTOP 17
930#define ICLS_DIALOG 18
931#define ICLS_MENU 19
932#define ICLS_SWITCH 20
933#define ICLS_ICONTITLE 21
934#define ICLS_TOOLTIPS 22
935#if (_WIN32_WINNT <= 0x0501)
936#define ICLS_UNKNOWN 22
937#define ICLS_NOTUSED 23
938#else
939#define ICLS_SYSSHADOW 23
940#define ICLS_HWNDMESSAGE 24
941#define ICLS_NOTUSED 25
942#endif
943#define ICLS_END 31
944
945#define COLOR_LAST COLOR_MENUBAR
946#define MAX_MB_STRINGS 11
947
948#define SRVINFO_DBCSENABLED 0x0002
949#define SRVINFO_IMM32 0x0004
950#define SRVINFO_APIHOOK 0x0010
951#define SRVINFO_CTFIME_ENABLED 0x0020
952#define SRVINFO_KBDPREF 0x0080
953
954#define NUM_SYSCOLORS 31
955
956typedef struct tagOEMBITMAPINFO
957{
958 INT x;
959 INT y;
960 INT cx;
961 INT cy;
962} OEMBITMAPINFO, *POEMBITMAPINFO;
963
964typedef enum _OBI_TYPES
965{
966 OBI_CLOSE = 0,
967 OBI_UPARROW = 46,
968 OBI_UPARROWI = 49,
969 OBI_DNARROW = 50,
970 OBI_DNARROWI = 53,
971 OBI_MNARROW = 62,
972 OBI_CTYPES = 93
973} OBI_TYPES;
974
975typedef struct tagMBSTRING
976{
977 WCHAR szName[16];
978 UINT uID;
979 UINT uStr;
980} MBSTRING, *PMBSTRING;
981
982typedef struct tagDPISERVERINFO
983{
984 INT gclBorder; /* 000 */
985 HFONT hCaptionFont; /* 004 */
986 HFONT hMsgFont; /* 008 */
987 INT cxMsgFontChar; /* 00C */
988 INT cyMsgFontChar; /* 010 */
989 UINT wMaxBtnSize; /* 014 */
990} DPISERVERINFO, *PDPISERVERINFO;
991
992/* PUSIFlags: */
993#define PUSIF_PALETTEDISPLAY 0x01
994#define PUSIF_SNAPTO 0x02
995#define PUSIF_COMBOBOXANIMATION 0x04
996#define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
997#define PUSIF_KEYBOARDCUES 0x20
998
999/*
1000 * PERUSERSERVERINFO structure.
1001 * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO
1002 */
1003typedef struct _PERUSERSERVERINFO
1004{
1005 INT aiSysMet[SM_CMETRICS];
1006 ULONG argbSystemUnmatched[NUM_SYSCOLORS];
1007 COLORREF argbSystem[NUM_SYSCOLORS];
1008 HBRUSH ahbrSystem[NUM_SYSCOLORS];
1009 HBRUSH hbrGray;
1010 POINT ptCursor;
1011 POINT ptCursorReal;
1012 DWORD dwLastRITEventTickCount;
1013 INT nEvents;
1014 UINT dtScroll;
1015 UINT dtLBSearch;
1016 UINT dtCaretBlink;
1017 UINT ucWheelScrollLines;
1018 UINT ucWheelScrollChars;
1019 INT wMaxLeftOverlapChars;
1020 INT wMaxRightOverlapChars;
1021 INT cxSysFontChar;
1022 INT cySysFontChar;
1023 TEXTMETRICW tmSysFont;
1024 DPISERVERINFO dpiSystem;
1025 HICON hIconSmWindows;
1026 HICON hIconWindows;
1027 DWORD dwKeyCache;
1028 DWORD dwAsyncKeyCache;
1029 ULONG cCaptures;
1030 OEMBITMAPINFO oembmi[OBI_CTYPES];
1031 RECT rcScreenReal;
1032 USHORT BitCount;
1033 USHORT dmLogPixels;
1034 BYTE Planes;
1035 BYTE BitsPixel;
1036 ULONG PUSIFlags;
1037 UINT uCaretWidth;
1038 USHORT UILangID;
1039 DWORD dwLastSystemRITEventTickCountUpdate;
1040 ULONG adwDBGTAGFlags[35];
1041 DWORD dwTagCount;
1042 DWORD dwRIPFlags;
1043} PERUSERSERVERINFO, *PPERUSERSERVERINFO;
1044
1045/*
1046 * SERVERINFO structure.
1047 * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO
1048 */
1049typedef struct tagSERVERINFO
1050{
1051 DWORD dwSRVIFlags;
1052 ULONG_PTR cHandleEntries;
1053 PFN_FNID mpFnidPfn[FNID_NUM];
1054 WNDPROC aStoCidPfn[FNID_NUMSERVERPROC];
1055 USHORT mpFnid_serverCBWndProc[FNID_NUM];
1056 PFNCLIENT apfnClientA;
1057 PFNCLIENT apfnClientW;
1058 PFNCLIENTWORKER apfnClientWorker;
1059 ULONG cbHandleTable;
1060 ATOM atomSysClass[ICLS_NOTUSED+1];
1061 DWORD dwDefaultHeapBase;
1062 DWORD dwDefaultHeapSize;
1063 UINT uiShellMsg;
1064 MBSTRING MBStrings[MAX_MB_STRINGS];
1065 ATOM atomIconSmProp;
1066 ATOM atomIconProp;
1067 ATOM atomContextHelpIdProp;
1068 ATOM atomFrostedWindowProp;
1069 CHAR acOemToAnsi[256];
1070 CHAR acAnsiToOem[256];
1071 DWORD dwInstalledEventHooks;
1072 PERUSERSERVERINFO;
1073} SERVERINFO, *PSERVERINFO;
1074
1075#ifdef _M_IX86
1076C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE);
1077#endif
1078
1079
1080/* Server event activity bits. */
1081#define SRV_EVENT_MENU 0x0001
1082#define SRV_EVENT_END_APPLICATION 0x0002
1083#define SRV_EVENT_RUNNING 0x0004
1084#define SRV_EVENT_NAMECHANGE 0x0008
1085#define SRV_EVENT_VALUECHANGE 0x0010
1086#define SRV_EVENT_STATECHANGE 0x0020
1087#define SRV_EVENT_LOCATIONCHANGE 0x0040
1088#define SRV_EVENT_CREATE 0x8000
1089
1090typedef struct _PROPLISTITEM
1091{
1092 ATOM Atom;
1093 HANDLE Data;
1094} PROPLISTITEM, *PPROPLISTITEM;
1095
1096#define PROPERTY_FLAG_SYSTEM 1
1097
1098typedef struct _PROPERTY
1099{
1100 LIST_ENTRY PropListEntry;
1101 HANDLE Data;
1102 ATOM Atom;
1103 WORD fs;
1104} PROPERTY, *PPROPERTY;
1105
1106typedef struct _BROADCASTPARM
1107{
1108 DWORD flags;
1109 DWORD recipients;
1110 HDESK hDesk;
1111 HWND hWnd;
1112 LUID luid;
1113} BROADCASTPARM, *PBROADCASTPARM;
1114
1115struct _THREADINFO *GetW32ThreadInfo(VOID);
1116struct _PROCESSINFO *GetW32ProcessInfo(VOID);
1117
1118typedef struct _WNDMSG
1119{
1120 DWORD maxMsgs;
1121 PINT abMsgs;
1122} WNDMSG, *PWNDMSG;
1123
1124/*
1125 * SHAREDINFO structure.
1126 * See also: https://reactos.org/wiki/Techwiki:Win32k/SHAREDINFO
1127 */
1128typedef struct _SHAREDINFO
1129{
1130 PSERVERINFO psi; /* Global Server Info */
1131 PVOID aheList; /* Handle Entry List */
1132 PVOID pDispInfo; /* Global PDISPLAYINFO pointer */
1133 ULONG_PTR ulSharedDelta; /* Shared USER mapped section delta */
1134 WNDMSG awmControl[FNID_NUM];
1135 WNDMSG DefWindowMsgs;
1136 WNDMSG DefWindowSpecMsgs;
1137} SHAREDINFO, *PSHAREDINFO;
1138
1139/* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */
1140typedef struct _USERCONNECT
1141{
1142 ULONG ulVersion;
1143 ULONG ulCurrentVersion;
1144 DWORD dwDispatchCount;
1145 SHAREDINFO siClient;
1146} USERCONNECT, *PUSERCONNECT;
1147
1148/* WinNT 5.0 compatible user32 / win32k */
1149#define USER_VERSION MAKELONG(0x0000, 0x0005)
1150
1151#if defined(_M_IX86)
1152C_ASSERT(sizeof(USERCONNECT) == 0x124);
1153#endif
1154
1155typedef struct tagGETCLIPBDATA
1156{
1157 UINT uFmtRet;
1158 BOOL fGlobalHandle;
1159 union
1160 {
1161 HANDLE hLocale;
1162 HANDLE hPalette;
1163 };
1164} GETCLIPBDATA, *PGETCLIPBDATA;
1165
1166typedef struct tagSETCLIPBDATA
1167{
1168 BOOL fGlobalHandle;
1169 BOOL fIncSerialNumber;
1170} SETCLIPBDATA, *PSETCLIPBDATA;
1171
1172/* Used with NtUserSetCursorIconData, last parameter. */
1173typedef struct tagCURSORDATA
1174{
1175 LPWSTR lpName;
1176 LPWSTR lpModName;
1177 USHORT rt;
1178 USHORT dummy;
1179 ULONG CURSORF_flags;
1180 SHORT xHotspot;
1181 SHORT yHotspot;
1182 HBITMAP hbmMask;
1183 HBITMAP hbmColor;
1184 HBITMAP hbmAlpha;
1185 RECT rcBounds;
1186 HBITMAP hbmUserAlpha; /* Could be in W7U, not in W2k */
1187 ULONG bpp;
1188 ULONG cx;
1189 ULONG cy;
1190 UINT cpcur;
1191 UINT cicur;
1192 struct tagCURSORDATA *aspcur;
1193 DWORD *aicur;
1194 INT *ajifRate;
1195 UINT iicur;
1196} CURSORDATA, *PCURSORDATA; /* !dso CURSORDATA */
1197
1198/* CURSORF_flags: */
1199#define CURSORF_FROMRESOURCE 0x0001
1200#define CURSORF_GLOBAL 0x0002
1201#define CURSORF_LRSHARED 0x0004
1202#define CURSORF_ACON 0x0008
1203#define CURSORF_WOWCLEANUP 0x0010
1204#define CURSORF_ACONFRAME 0x0040
1205#define CURSORF_SECRET 0x0080
1206#define CURSORF_LINKED 0x0100
1207#define CURSORF_CURRENT 0x0200
1208
1209/* Flags for dwCompatFlags2 */
1210#define COMPAT_FLAG_2_CICERO_DISABLED 2
1211
1212#define IS_IMM_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_IMM32))
1213#define IS_CICERO_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_CTFIME_ENABLED))
1214#define IS_16BIT_MODE() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT)
1215#define IS_CICERO_COMPAT_DISABLED() \
1216 (GetWin32ClientInfo()->dwCompatFlags2 & COMPAT_FLAG_2_CICERO_DISABLED)
1217
1218typedef struct tagIMEUI
1219{
1220 PWND spwnd;
1221 HIMC hIMC;
1222 HWND hwndIMC;
1223 HKL hKL;
1224 HWND hwndUI;
1225 LONG nCntInIMEProc;
1226 struct {
1227 UINT fShowStatus:1;
1228 UINT fActivate:1;
1229 UINT fDestroy:1;
1230 UINT fDefault:1;
1231 UINT fChildThreadDef:1;
1232 UINT fCtrlShowStatus:1;
1233 UINT fFreeActiveEvent:1;
1234 };
1235 DWORD dwLastStatus;
1236} IMEUI, *PIMEUI;
1237
1238typedef struct tagIMEWND
1239{
1240 WND wnd;
1241 PIMEUI pimeui;
1242} IMEWND, *PIMEWND;
1243
1244#define GWLP_IMEWND_PIMEUI 0
1245
1246/* IMEWND and GWLP_IMEWND_PIMEUI assume this alignment */
1247C_ASSERT(sizeof(WND) % sizeof(PVOID) == 0);
1248
1249DWORD
1250NTAPI
1251NtUserAssociateInputContext(
1252 _In_ HWND hWnd,
1253 _In_opt_ HIMC hIMC,
1254 _In_ DWORD dwFlags);
1255
1256NTSTATUS
1257NTAPI
1258NtUserBuildHimcList(
1259 _In_ DWORD dwThreadId,
1260 _In_ DWORD dwCount,
1261 _Out_ HIMC *phList,
1262 _Out_ PDWORD pdwCount);
1263
1264DWORD
1265NTAPI
1266NtUserCalcMenuBar(
1267 HWND hwnd,
1268 DWORD x,
1269 DWORD width,
1270 DWORD y,
1271 LPRECT prc);
1272
1273DWORD
1274NTAPI
1275NtUserCheckMenuItem(
1276 HMENU hmenu,
1277 UINT uIDCheckItem,
1278 UINT uCheck);
1279
1280DWORD
1281NTAPI
1282NtUserCtxDisplayIOCtl(
1283 DWORD dwUnknown1,
1284 DWORD dwUnknown2,
1285 DWORD dwUnknown3);
1286
1287DWORD
1288APIENTRY
1289NtUserDbgWin32HeapFail(
1290 DWORD Unknown0,
1291 DWORD Unknown1);
1292
1293DWORD
1294APIENTRY
1295NtUserDbgWin32HeapStat(
1296 DWORD Unknown0,
1297 DWORD Unknown1);
1298
1299BOOL
1300NTAPI
1301NtUserDeleteMenu(
1302 HMENU hMenu,
1303 UINT uPosition,
1304 UINT uFlags);
1305
1306BOOL
1307NTAPI
1308NtUserDestroyMenu(
1309 HMENU hMenu);
1310
1311DWORD
1312NTAPI
1313NtUserDrawMenuBarTemp(
1314 HWND hWnd,
1315 HDC hDC,
1316 PRECT hRect,
1317 HMENU hMenu,
1318 HFONT hFont);
1319
1320UINT
1321NTAPI
1322NtUserEnableMenuItem(
1323 HMENU hMenu,
1324 UINT uIDEnableItem,
1325 UINT uEnable);
1326
1327BOOL
1328NTAPI
1329NtUserEndMenu(VOID);
1330
1331BOOL
1332NTAPI
1333NtUserGetMenuBarInfo(
1334 HWND hwnd,
1335 LONG idObject,
1336 LONG idItem,
1337 PMENUBARINFO pmbi);
1338
1339UINT
1340NTAPI
1341NtUserGetMenuIndex(
1342 HMENU hMenu,
1343 HMENU hSubMenu);
1344
1345BOOL
1346NTAPI
1347NtUserGetMenuItemRect(
1348 HWND hWnd,
1349 HMENU hMenu,
1350 UINT uItem,
1351 LPRECT lprcItem);
1352
1353HMENU
1354NTAPI
1355NtUserGetSystemMenu(
1356 HWND hWnd,
1357 BOOL bRevert);
1358
1359BOOL
1360NTAPI
1361NtUserHiliteMenuItem(
1362 HWND hWnd,
1363 HMENU hMenu,
1364 UINT uItemHilite,
1365 UINT uHilite);
1366
1367int
1368NTAPI
1369NtUserMenuItemFromPoint(
1370 HWND hWnd,
1371 HMENU hMenu,
1372 DWORD X,
1373 DWORD Y);
1374
1375BOOL
1376NTAPI
1377NtUserRemoveMenu(
1378 HMENU hMenu,
1379 UINT uPosition,
1380 UINT uFlags);
1381
1382BOOL
1383NTAPI
1384NtUserSetMenu(
1385 HWND hWnd,
1386 HMENU hMenu,
1387 BOOL bRepaint);
1388
1389BOOL
1390NTAPI
1391NtUserSetMenuContextHelpId(
1392 HMENU hmenu,
1393 DWORD dwContextHelpId);
1394
1395BOOL
1396NTAPI
1397NtUserSetMenuDefaultItem(
1398 HMENU hMenu,
1399 UINT uItem,
1400 UINT fByPos);
1401
1402BOOL
1403NTAPI
1404NtUserSetMenuFlagRtoL(
1405 HMENU hMenu);
1406
1407BOOL
1408NTAPI
1409NtUserSetSystemMenu(
1410 HWND hWnd,
1411 HMENU hMenu);
1412
1413BOOL
1414NTAPI
1415NtUserThunkedMenuInfo(
1416 HMENU hMenu,
1417 LPCMENUINFO lpcmi);
1418
1419BOOL
1420NTAPI
1421NtUserThunkedMenuItemInfo(
1422 HMENU hMenu,
1423 UINT uItem,
1424 BOOL fByPosition,
1425 BOOL bInsert,
1426 LPMENUITEMINFOW lpmii,
1427 PUNICODE_STRING lpszCaption);
1428
1429BOOL
1430NTAPI
1431NtUserTrackPopupMenuEx(
1432 _In_ HMENU hMenu,
1433 _In_ UINT fuFlags,
1434 _In_ INT x,
1435 _In_ INT y,
1436 _In_ HWND hwnd,
1437 _In_opt_ LPTPMPARAMS lptpm);
1438
1439HKL
1440NTAPI
1441NtUserActivateKeyboardLayout(
1442 HKL hKL,
1443 ULONG Flags);
1444
1445DWORD
1446NTAPI
1447NtUserAlterWindowStyle(
1448 HWND hWnd,
1449 DWORD Index,
1450 LONG NewValue);
1451
1452BOOL
1453NTAPI
1454NtUserAttachThreadInput(
1455 IN DWORD idAttach,
1456 IN DWORD idAttachTo,
1457 IN BOOL fAttach);
1458
1459HDC NTAPI
1460NtUserBeginPaint(
1461 HWND hWnd,
1462 PAINTSTRUCT *lPs);
1463
1464BOOL
1465NTAPI
1466NtUserBitBltSysBmp(
1467 HDC hdc,
1468 INT nXDest,
1469 INT nYDest,
1470 INT nWidth,
1471 INT nHeight,
1472 INT nXSrc,
1473 INT nYSrc,
1474 DWORD dwRop);
1475
1476BOOL
1477NTAPI
1478NtUserBlockInput(
1479 BOOL BlockIt);
1480
1481NTSTATUS
1482NTAPI
1483NtUserBuildHwndList(
1484 HDESK hDesktop,
1485 HWND hwndParent,
1486 BOOLEAN bChildren,
1487 ULONG dwThreadId,
1488 ULONG cHwnd,
1489 HWND *phwndList,
1490 ULONG *pcHwndNeeded);
1491
1492NTSTATUS
1493NTAPI
1494NtUserBuildNameList(
1495 HWINSTA hWinSta,
1496 ULONG dwSize,
1497 PVOID lpBuffer,
1498 PULONG pRequiredSize);
1499
1500NTSTATUS
1501NTAPI
1502NtUserBuildPropList(
1503 HWND hWnd,
1504 LPVOID Buffer,
1505 DWORD BufferSize,
1506 DWORD *Count);
1507
1508/* apfnSimpleCall indices from Windows XP SP 2 */
1509/* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1510#define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */
1511
1512enum SimpleCallRoutines
1513{
1514 NOPARAM_ROUTINE_CREATEMENU,
1515 NOPARAM_ROUTINE_CREATEMENUPOPUP,
1516#if (WIN32K_VERSION >= NTDDI_VISTA)
1517 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
1518 NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
1519 NOPARAM_ROUTINE_CREATESYSTEMTHREADS,
1520 NOPARAM_ROUTINE_DESTROY_CARET,
1521#endif
1522 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING,
1523#if (WIN32K_VERSION < NTDDI_VISTA)
1524 NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
1525 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
1526 NOPARAM_ROUTINE_DESTROY_CARET,
1527#endif
1528 NOPARAM_ROUTINE_GETDEVICECHANGEINFO,
1529 NOPARAM_ROUTINE_GETIMESHOWSTATUS,
1530 NOPARAM_ROUTINE_GETINPUTDESKTOP,
1531 NOPARAM_ROUTINE_GETMSESSAGEPOS,
1532#if (WIN32K_VERSION >= NTDDI_VISTA)
1533 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
1534#else
1535 NOPARAM_ROUTINE_GETREMOTEPROCESSID,
1536#endif
1537 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE,
1538 NOPARAM_ROUTINE_LOADCURSANDICOS,
1539#if (WIN32K_VERSION >= NTDDI_VISTA)
1540 NOPARAM_ROUTINE_LOADUSERAPIHOOK,
1541 NOPARAM_ROUTINE_PREPAREFORLOGOFF, /* 0x0f */
1542#endif
1543 NOPARAM_ROUTINE_RELEASECAPTURE,
1544 NOPARAM_ROUTINE_RESETDBLCLICK,
1545 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS,
1546 NOPARAM_ROUTINE_REMOTECONSHDWSTOP,
1547 NOPARAM_ROUTINE_REMOTEDISCONNECT,
1548 NOPARAM_ROUTINE_REMOTELOGOFF,
1549 NOPARAM_ROUTINE_REMOTENTSECURITY,
1550 NOPARAM_ROUTINE_REMOTESHDWSETUP,
1551 NOPARAM_ROUTINE_REMOTESHDWSTOP,
1552 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE,
1553 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE,
1554 NOPARAM_ROUTINE_REMOTECONNECTSTATE,
1555 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING,
1556 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER,
1557#if (WIN32K_VERSION >= NTDDI_VISTA)
1558 NOPARAM_ROUTINE_WAKERITFORSHTDWN,
1559#endif
1560 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP,
1561 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP,
1562#if (WIN32K_VERSION < NTDDI_VISTA)
1563 NOPARAM_ROUTINE_LOADUSERAPIHOOK,
1564#endif
1565 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS,
1566#if (WIN32K_VERSION >= NTDDI_VISTA)
1567 ONEPARAM_ROUTINE_GETSENDMSGRECVR,
1568#endif
1569 ONEPARAM_ROUTINE_WINDOWFROMDC,
1570 ONEPARAM_ROUTINE_ALLOWSETFOREGND,
1571 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT,
1572#if (WIN32K_VERSION < NTDDI_VISTA)
1573 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS,
1574#endif
1575 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE,
1576 ONEPARAM_ROUTINE_DIRECTEDYIELD,
1577 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS,
1578#if (WIN32K_VERSION < NTDDI_VISTA)
1579 ONEPARAM_ROUTINE_GETCURSORPOS,
1580#endif
1581 ONEPARAM_ROUTINE_GETINPUTEVENT,
1582 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT,
1583 ONEPARAM_ROUTINE_GETKEYBOARDTYPE,
1584 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT,
1585 ONEPARAM_ROUTINE_GETQUEUESTATUS,
1586 ONEPARAM_ROUTINE_GETWINSTAINFO,
1587#if (WIN32K_VERSION < NTDDI_VISTA)
1588 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
1589#endif
1590 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW,
1591 ONEPARAM_ROUTINE_LOADFONTS,
1592 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT,
1593 ONEPARAM_ROUTINE_MESSAGEBEEP,
1594 ONEPARAM_ROUTINE_PLAYEVENTSOUND,
1595 ONEPARAM_ROUTINE_POSTQUITMESSAGE,
1596#if (WIN32K_VERSION < NTDDI_VISTA)
1597 ONEPARAM_ROUTINE_PREPAREFORLOGOFF,
1598#endif
1599 ONEPARAM_ROUTINE_REALIZEPALETTE,
1600 ONEPARAM_ROUTINE_REGISTERLPK,
1601#if (WIN32K_VERSION >= NTDDI_VISTA)
1602 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
1603#endif
1604 ONEPARAM_ROUTINE_REMOTERECONNECT,
1605 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS,
1606 ONEPARAM_ROUTINE_RELEASEDC,
1607#if (WIN32K_VERSION >= NTDDI_VISTA)
1608 ONEPARAM_ROUTINE_REMOTENOTIFY,
1609#endif
1610 ONEPARAM_ROUTINE_REPLYMESSAGE,
1611 ONEPARAM_ROUTINE_SETCARETBLINKTIME,
1612 ONEPARAM_ROUTINE_SETDBLCLICKTIME,
1613#if (WIN32K_VERSION < NTDDI_VISTA)
1614 ONEPARAM_ROUTINE_SETIMESHOWSTATUS,
1615#endif
1616 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO,
1617 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT,
1618#if (WIN32K_VERSION >= NTDDI_VISTA)
1619 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS,
1620#endif
1621 ONEPARAM_ROUTINE_SHOWCURSOR,
1622 ONEPARAM_ROUTINE_SHOWSTARTGLASS,
1623 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON,
1624 X_ROUTINE_WOWMODULEUNLOAD,
1625#if (WIN32K_VERSION < NTDDI_VISTA)
1626 X_ROUTINE_REMOTENOTIFY,
1627#endif
1628 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW,
1629 HWND_ROUTINE_DWP_GETENABLEDPOPUP,
1630 HWND_ROUTINE_GETWNDCONTEXTHLPID,
1631 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW,
1632 HWND_ROUTINE_SETMSGBOX,
1633 HWNDOPT_ROUTINE_SETPROGMANWINDOW,
1634 HWNDOPT_ROUTINE_SETTASKMANWINDOW,
1635 HWNDPARAM_ROUTINE_GETCLASSICOCUR,
1636 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE,
1637 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER,
1638 HWNDPARAM_ROUTINE_SETDIALOGPOINTER,
1639 HWNDPARAM_ROUTINE_SETVISIBLE,
1640 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID,
1641 HWNDPARAM_ROUTINE_SETWINDOWSTATE,
1642 HWNDLOCK_ROUTINE_WINDOWHASSHADOW, /* correct prefix ? */
1643 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS,
1644 HWNDLOCK_ROUTINE_DRAWMENUBAR,
1645 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD,
1646 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE,
1647 HWNDLOCK_ROUTINE_REDRAWFRAME,
1648 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK,
1649 HWNDLOCK_ROUTINE_SETDLGSYSMENU,
1650 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW,
1651 HWNDLOCK_ROUTINE_SETSYSMENU,
1652 HWNDLOCK_ROUTINE_UPDATECKIENTRECT,
1653 HWNDLOCK_ROUTINE_UPDATEWINDOW,
1654 TWOPARAM_ROUTINE_IMESHOWSTATUSCHANGE,
1655 TWOPARAM_ROUTINE_ENABLEWINDOW,
1656 TWOPARAM_ROUTINE_REDRAWTITLE,
1657 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS,
1658 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW,
1659 TWOPARAM_ROUTINE_UPDATEWINDOWS,
1660 TWOPARAM_ROUTINE_VALIDATERGN,
1661#if (WIN32K_VERSION >= NTDDI_VISTA)
1662 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER,
1663 TWOPARAM_ROUTINE_GETCURSORPOS,
1664#endif
1665 TWOPARAM_ROUTINE_GETHDEVNAME,
1666 TWOPARAM_ROUTINE_INITANSIOEM,
1667 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY,
1668#if (WIN32K_VERSION >= NTDDI_VISTA)
1669 TWOPARAM_ROUTINE_REGISTERGHSTWND,
1670#endif
1671 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS,
1672#if (WIN32K_VERSION >= NTDDI_VISTA)
1673 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND,
1674#else
1675 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
1676#endif
1677 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS,
1678 TWOPARAM_ROUTINE_SHADOWCLEANUP,
1679 TWOPARAM_ROUTINE_REMOTESHADOWSTART,
1680 TWOPARAM_ROUTINE_SETCARETPOS,
1681 TWOPARAM_ROUTINE_SETCURSORPOS,
1682#if (WIN32K_VERSION >= NTDDI_VISTA)
1683 TWOPARAM_ROUTINE_SETPHYSCURSORPOS,
1684#endif
1685 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK,
1686 TWOPARAM_ROUTINE_WOWCLEANUP
1687};
1688
1689DWORD_PTR
1690NTAPI
1691NtUserCallHwnd(
1692 HWND hWnd,
1693 DWORD Routine);
1694
1695BOOL
1696NTAPI
1697NtUserCallHwndLock(
1698 HWND hWnd,
1699 DWORD Routine);
1700
1701HWND
1702NTAPI
1703NtUserCallHwndOpt(
1704 HWND hWnd,
1705 DWORD Routine);
1706
1707DWORD
1708NTAPI
1709NtUserCallHwndParam(
1710 HWND hWnd,
1711 DWORD_PTR Param,
1712 DWORD Routine);
1713
1714DWORD
1715NTAPI
1716NtUserCallHwndParamLock(
1717 HWND hWnd,
1718 DWORD_PTR Param,
1719 DWORD Routine);
1720
1721BOOL
1722NTAPI
1723NtUserCallMsgFilter(
1724 LPMSG msg,
1725 INT code);
1726
1727LRESULT
1728NTAPI
1729NtUserCallNextHookEx(
1730 int Code,
1731 WPARAM wParam,
1732 LPARAM lParam,
1733 BOOL Ansi);
1734
1735DWORD_PTR
1736NTAPI
1737NtUserCallNoParam(
1738 DWORD Routine);
1739
1740DWORD_PTR
1741NTAPI
1742NtUserCallOneParam(
1743 DWORD_PTR Param,
1744 DWORD Routine);
1745
1746DWORD_PTR
1747NTAPI
1748NtUserCallTwoParam(
1749 DWORD_PTR Param1,
1750 DWORD_PTR Param2,
1751 DWORD Routine);
1752
1753BOOL
1754NTAPI
1755NtUserChangeClipboardChain(
1756 HWND hWndRemove,
1757 HWND hWndNewNext);
1758
1759LONG
1760NTAPI
1761NtUserChangeDisplaySettings(
1762 PUNICODE_STRING lpszDeviceName,
1763 LPDEVMODEW lpDevMode,
1764 DWORD dwflags,
1765 LPVOID lParam);
1766
1767BOOL
1768NTAPI
1769NtUserCheckDesktopByThreadId(
1770 DWORD dwThreadId);
1771
1772BOOL
1773NTAPI
1774NtUserCheckWindowThreadDesktop(
1775 HWND hwnd,
1776 DWORD dwThreadId,
1777 ULONG ReturnValue);
1778
1779DWORD
1780NTAPI
1781NtUserCheckImeHotKey(
1782 _In_ UINT uVirtualKey,
1783 _In_ LPARAM lParam);
1784
1785HWND NTAPI
1786NtUserChildWindowFromPointEx(
1787 HWND Parent,
1788 LONG x,
1789 LONG y,
1790 UINT Flags);
1791
1792BOOL
1793NTAPI
1794NtUserClipCursor(
1795 RECT *lpRect);
1796
1797BOOL
1798NTAPI
1799NtUserCloseClipboard(VOID);
1800
1801BOOL
1802NTAPI
1803NtUserCloseDesktop(
1804 HDESK hDesktop);
1805
1806BOOL
1807NTAPI
1808NtUserCloseWindowStation(
1809 HWINSTA hWinSta);
1810
1811/* Console commands for NtUserConsoleControl */
1812typedef enum _CONSOLECONTROL
1813{
1814 ConsoleCtrlDesktopConsoleThread = 0,
1815 GuiConsoleWndClassAtom = 1,
1816 ConsoleMakePalettePublic = 5,
1817 ConsoleAcquireDisplayOwnership,
1818} CONSOLECONTROL, *PCONSOLECONTROL;
1819
1820typedef struct _DESKTOP_CONSOLE_THREAD
1821{
1822 HDESK DesktopHandle;
1823 ULONG_PTR ThreadId;
1824} DESKTOP_CONSOLE_THREAD, *PDESKTOP_CONSOLE_THREAD;
1825
1826NTSTATUS
1827APIENTRY
1828NtUserConsoleControl(
1829 IN CONSOLECONTROL ConsoleCtrl,
1830 IN PVOID ConsoleCtrlInfo,
1831 IN ULONG ConsoleCtrlInfoLength);
1832
1833HANDLE
1834NTAPI
1835NtUserConvertMemHandle(
1836 PVOID pData,
1837 DWORD cbData);
1838
1839ULONG
1840NTAPI
1841NtUserCopyAcceleratorTable(
1842 HACCEL Table,
1843 LPACCEL Entries,
1844 ULONG EntriesCount);
1845
1846DWORD
1847NTAPI
1848NtUserCountClipboardFormats(VOID);
1849
1850HACCEL
1851NTAPI
1852NtUserCreateAcceleratorTable(
1853 LPACCEL Entries,
1854 ULONG EntriesCount);
1855
1856BOOL
1857NTAPI
1858NtUserCreateCaret(
1859 HWND hWnd,
1860 HBITMAP hBitmap,
1861 int nWidth,
1862 int nHeight);
1863
1864HDESK
1865NTAPI
1866NtUserCreateDesktop(
1867 POBJECT_ATTRIBUTES poa,
1868 PUNICODE_STRING lpszDesktopDevice,
1869 LPDEVMODEW lpdmw,
1870 DWORD dwFlags,
1871 ACCESS_MASK dwDesiredAccess);
1872
1873HIMC
1874NTAPI
1875NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData);
1876
1877NTSTATUS
1878NTAPI
1879NtUserCreateLocalMemHandle(
1880 HANDLE hMem,
1881 PVOID pData,
1882 DWORD cbData,
1883 DWORD *pcbData);
1884
1885HWND
1886NTAPI
1887NtUserCreateWindowEx(
1888 DWORD dwExStyle,
1889 PLARGE_STRING plstrClassName,
1890 PLARGE_STRING plstrClsVersion,
1891 PLARGE_STRING plstrWindowName,
1892 DWORD dwStyle,
1893 int x,
1894 int y,
1895 int nWidth,
1896 int nHeight,
1897 HWND hWndParent,
1898 HMENU hMenu,
1899 HINSTANCE hInstance,
1900 LPVOID lpParam,
1901 DWORD dwFlags,
1902 PVOID acbiBuffer);
1903
1904HWINSTA
1905NTAPI
1906NtUserCreateWindowStation(
1907 POBJECT_ATTRIBUTES ObjectAttributes,
1908 ACCESS_MASK dwDesiredAccess,
1909 DWORD Unknown2,
1910 DWORD Unknown3,
1911 DWORD Unknown4,
1912 DWORD Unknown5,
1913 DWORD Unknown6);
1914
1915BOOL
1916NTAPI
1917NtUserDdeGetQualityOfService(
1918 IN HWND hwndClient,
1919 IN HWND hWndServer,
1920 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1921
1922DWORD
1923NTAPI
1924NtUserDdeInitialize(
1925 DWORD Unknown0,
1926 DWORD Unknown1,
1927 DWORD Unknown2,
1928 DWORD Unknown3,
1929 DWORD Unknown4);
1930
1931BOOL
1932NTAPI
1933NtUserDdeSetQualityOfService(
1934 IN HWND hwndClient,
1935 IN PSECURITY_QUALITY_OF_SERVICE pqosNew,
1936 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1937
1938HDWP
1939NTAPI
1940NtUserDeferWindowPos(
1941 HDWP WinPosInfo,
1942 HWND Wnd,
1943 HWND WndInsertAfter,
1944 int x,
1945 int y,
1946 int cx,
1947 int cy,
1948 UINT Flags);
1949
1950BOOL
1951NTAPI
1952NtUserDefSetText(
1953 HWND WindowHandle,
1954 PLARGE_STRING WindowText);
1955
1956BOOLEAN
1957NTAPI
1958NtUserDestroyAcceleratorTable(
1959 HACCEL Table);
1960
1961BOOL
1962NTAPI
1963NtUserDestroyCursor(
1964 _In_ HANDLE Handle,
1965 _In_ BOOL bForce);
1966
1967BOOL
1968NTAPI
1969NtUserDestroyInputContext(_In_ HIMC hIMC);
1970
1971BOOLEAN
1972NTAPI
1973NtUserDestroyWindow(
1974 HWND Wnd);
1975
1976BOOL
1977NTAPI
1978NtUserDisableThreadIme(
1979 _In_ DWORD dwThreadID);
1980
1981LRESULT
1982NTAPI
1983NtUserDispatchMessage(
1984 PMSG pMsg);
1985
1986BOOL
1987NTAPI
1988NtUserDragDetect(
1989 HWND hWnd,
1990 POINT pt);
1991
1992DWORD
1993NTAPI
1994NtUserDragObject(
1995 HWND hwnd1,
1996 HWND hwnd2,
1997 UINT u1,
1998 DWORD dw1,
1999 HCURSOR hc1);
2000
2001BOOL
2002NTAPI
2003NtUserDrawAnimatedRects(
2004 HWND hwnd,
2005 INT idAni,
2006 RECT *lprcFrom,
2007 RECT *lprcTo);
2008
2009BOOL
2010NTAPI
2011NtUserDrawCaption(
2012 HWND hWnd,
2013 HDC hDc,
2014 LPCRECT lpRc,
2015 UINT uFlags);
2016
2017BOOL
2018NTAPI
2019NtUserDrawCaptionTemp(
2020 HWND hWnd,
2021 HDC hDC,
2022 LPCRECT lpRc,
2023 HFONT hFont,
2024 HICON hIcon,
2025 const PUNICODE_STRING str,
2026 UINT uFlags);
2027
2028/* Used with NtUserDrawIconEx, last parameter. */
2029typedef struct _DRAWICONEXDATA
2030{
2031 HBITMAP hbmMask;
2032 HBITMAP hbmColor;
2033 int cx;
2034 int cy;
2035} DRAWICONEXDATA, *PDRAWICONEXDATA;
2036
2037BOOL
2038NTAPI
2039NtUserDrawIconEx(
2040 HDC hdc,
2041 int xLeft,
2042 int yTop,
2043 HICON hIcon,
2044 int cxWidth,
2045 int cyWidth,
2046 UINT istepIfAniCur,
2047 HBRUSH hbrFlickerFreeDraw,
2048 UINT diFlags,
2049 BOOL bMetaHDC,
2050 PVOID pDIXData);
2051
2052BOOL
2053NTAPI
2054NtUserEmptyClipboard(VOID);
2055
2056BOOL
2057NTAPI
2058NtUserEnableScrollBar(
2059 HWND hWnd,
2060 UINT wSBflags,
2061 UINT wArrows);
2062
2063BOOL
2064NTAPI
2065NtUserEndDeferWindowPosEx(
2066 HDWP WinPosInfo,
2067 BOOL bAsync);
2068
2069BOOL
2070NTAPI
2071NtUserEndPaint(
2072 HWND hWnd,
2073 CONST PAINTSTRUCT *lPs);
2074
2075BOOL
2076NTAPI
2077NtUserEnumDisplayDevices(
2078 PUNICODE_STRING lpDevice, /* device name */
2079 DWORD iDevNum, /* display device */
2080 PDISPLAY_DEVICEW lpDisplayDevice, /* device information */
2081 DWORD dwFlags); /* reserved */
2082
2083/*
2084BOOL
2085NTAPI
2086NtUserEnumDisplayMonitors(
2087 HDC hdc,
2088 LPCRECT lprcClip,
2089 MONITORENUMPROC lpfnEnum,
2090 LPARAM dwData);
2091*/
2092/* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
2093INT
2094NTAPI
2095NtUserEnumDisplayMonitors(
2096 OPTIONAL IN HDC hDC,
2097 OPTIONAL IN LPCRECT pRect,
2098 OPTIONAL OUT HMONITOR *hMonitorList,
2099 OPTIONAL OUT LPRECT monitorRectList,
2100 OPTIONAL IN DWORD listSize);
2101
2102
2103NTSTATUS
2104NTAPI
2105NtUserEnumDisplaySettings(
2106 PUNICODE_STRING lpszDeviceName,
2107 DWORD iModeNum,
2108 LPDEVMODEW lpDevMode, /* FIXME is this correct? */
2109 DWORD dwFlags);
2110
2111DWORD
2112NTAPI
2113NtUserEvent(
2114 DWORD Unknown0);
2115
2116INT
2117NTAPI
2118NtUserExcludeUpdateRgn(
2119 HDC hDC,
2120 HWND hWnd);
2121
2122BOOL
2123NTAPI
2124NtUserFillWindow(
2125 HWND hWndPaint,
2126 HWND hWndPaint1,
2127 HDC hDC,
2128 HBRUSH hBrush);
2129
2130HWND
2131NTAPI
2132NtUserFindWindowEx(
2133 HWND hwndParent,
2134 HWND hwndChildAfter,
2135 PUNICODE_STRING ucClassName,
2136 PUNICODE_STRING ucWindowName,
2137 DWORD dwUnknown);
2138
2139BOOL
2140NTAPI
2141NtUserFlashWindowEx(
2142 IN PFLASHWINFO pfwi);
2143
2144BOOL
2145NTAPI
2146NtUserGetAltTabInfo(
2147 HWND hwnd,
2148 INT iItem,
2149 PALTTABINFO pati,
2150 LPWSTR pszItemText,
2151 UINT cchItemText,
2152 BOOL Ansi);
2153
2154HWND
2155NTAPI
2156NtUserGetAncestor(
2157 _In_ HWND hWnd,
2158 _In_ UINT uType);
2159
2160DWORD
2161NTAPI
2162NtUserGetAppImeLevel(_In_ HWND hWnd);
2163
2164SHORT
2165NTAPI
2166NtUserGetAsyncKeyState(
2167 INT Key);
2168
2169_Success_(return != 0)
2170_At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return * 2 + 2))
2171ULONG
2172APIENTRY
2173NtUserGetAtomName(
2174 _In_ ATOM atom,
2175 _Inout_ PUNICODE_STRING pustrName);
2176
2177UINT
2178NTAPI
2179NtUserGetCaretBlinkTime(VOID);
2180
2181BOOL
2182NTAPI
2183NtUserGetCaretPos(
2184 LPPOINT lpPoint);
2185
2186BOOL
2187NTAPI
2188NtUserGetClassInfo(
2189 HINSTANCE hInstance,
2190 PUNICODE_STRING ClassName,
2191 LPWNDCLASSEXW wcex,
2192 LPWSTR *ppszMenuName,
2193 BOOL Ansi);
2194
2195INT
2196NTAPI
2197NtUserGetClassName(
2198 HWND hWnd,
2199 BOOL Real, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2200 PUNICODE_STRING ClassName);
2201
2202HANDLE
2203NTAPI
2204NtUserGetClipboardData(
2205 UINT fmt,
2206 PGETCLIPBDATA pgcd);
2207
2208INT
2209NTAPI
2210NtUserGetClipboardFormatName(
2211 UINT uFormat,
2212 LPWSTR lpszFormatName,
2213 INT cchMaxCount);
2214
2215HWND
2216NTAPI
2217NtUserGetClipboardOwner(VOID);
2218
2219DWORD
2220NTAPI
2221NtUserGetClipboardSequenceNumber(VOID);
2222
2223HWND
2224NTAPI
2225NtUserGetClipboardViewer(VOID);
2226
2227BOOL
2228NTAPI
2229NtUserGetClipCursor(
2230 RECT *lpRect);
2231
2232BOOL
2233NTAPI
2234NtUserGetComboBoxInfo(
2235 HWND hWnd,
2236 PCOMBOBOXINFO pcbi);
2237
2238HBRUSH
2239NTAPI
2240NtUserGetControlBrush(
2241 HWND hwnd,
2242 HDC hdc,
2243 UINT ctlType);
2244
2245HBRUSH
2246NTAPI
2247NtUserGetControlColor(
2248 HWND hwndParent,
2249 HWND hwnd,
2250 HDC hdc,
2251 UINT CtlMsg);
2252
2253ULONG_PTR
2254NTAPI
2255NtUserGetCPD(
2256 HWND hWnd,
2257 GETCPD Flags,
2258 ULONG_PTR Proc);
2259
2260HCURSOR
2261NTAPI
2262NtUserGetCursorFrameInfo(
2263 HCURSOR hCursor,
2264 DWORD istep,
2265 INT *rate_jiffies,
2266 DWORD *num_steps);
2267
2268BOOL
2269NTAPI
2270NtUserGetCursorInfo(
2271 PCURSORINFO pci);
2272
2273HDC
2274NTAPI
2275NtUserGetDC(
2276 HWND hWnd);
2277
2278HDC
2279NTAPI
2280NtUserGetDCEx(
2281 HWND hWnd,
2282 HANDLE hRegion,
2283 ULONG Flags);
2284
2285UINT
2286NTAPI
2287NtUserGetDoubleClickTime(VOID);
2288
2289HWND
2290NTAPI
2291NtUserGetForegroundWindow(VOID);
2292
2293DWORD
2294NTAPI
2295NtUserGetGuiResources(
2296 HANDLE hProcess,
2297 DWORD uiFlags);
2298
2299BOOL
2300NTAPI
2301NtUserGetGUIThreadInfo(
2302 DWORD idThread,
2303 LPGUITHREADINFO lpgui);
2304
2305_Success_(return != FALSE)
2306BOOL
2307NTAPI
2308NtUserGetIconInfo(
2309 _In_ HANDLE hCurIcon,
2310 _Out_opt_ PICONINFO IconInfo,
2311 _Inout_opt_ PUNICODE_STRING lpInstName,
2312 _Inout_opt_ PUNICODE_STRING lpResName,
2313 _Out_opt_ LPDWORD pbpp,
2314 _In_ BOOL bInternal);
2315
2316BOOL
2317NTAPI
2318NtUserGetIconSize(
2319 HANDLE Handle,
2320 UINT istepIfAniCur,
2321 LONG *plcx,
2322 LONG *plcy);
2323
2324BOOL
2325NTAPI
2326NtUserGetImeHotKey(
2327 _In_ DWORD dwHotKeyId,
2328 _Out_ PUINT lpuModifiers,
2329 _Out_ PUINT lpuVirtualKey,
2330 _Out_opt_ LPHKL lphKL);
2331
2332BOOL
2333NTAPI
2334NtUserGetImeInfoEx(
2335 _Inout_ PIMEINFOEX pImeInfoEx,
2336 _In_ IMEINFOEXCLASS SearchType);
2337
2338DWORD
2339NTAPI
2340NtUserGetInternalWindowPos(
2341 HWND hwnd,
2342 LPRECT rectWnd,
2343 LPPOINT ptIcon);
2344
2345HKL
2346NTAPI
2347NtUserGetKeyboardLayout(
2348 DWORD dwThreadid);
2349
2350UINT
2351NTAPI
2352NtUserGetKeyboardLayoutList(
2353 ULONG nItems,
2354 HKL *pHklBuff);
2355
2356BOOL
2357NTAPI
2358NtUserGetKeyboardLayoutName(
2359 _Inout_ PUNICODE_STRING pustrName);
2360
2361DWORD
2362NTAPI
2363NtUserGetKeyboardState(
2364 LPBYTE Unknown0);
2365
2366DWORD
2367NTAPI
2368NtUserGetKeyboardType(
2369 DWORD TypeFlag);
2370
2371DWORD
2372NTAPI
2373NtUserGetKeyNameText(
2374 LONG lParam,
2375 LPWSTR lpString,
2376 int nSize);
2377
2378SHORT
2379NTAPI
2380NtUserGetKeyState(
2381 INT VirtKey);
2382
2383BOOL
2384NTAPI
2385NtUserGetLayeredWindowAttributes(
2386 HWND hwnd,
2387 COLORREF *pcrKey,
2388 BYTE *pbAlpha,
2389 DWORD *pdwFlags);
2390
2391DWORD
2392NTAPI
2393NtUserGetListBoxInfo(
2394 HWND hWnd);
2395
2396BOOL
2397APIENTRY
2398NtUserGetMessage(
2399 PMSG pMsg,
2400 HWND hWnd,
2401 UINT MsgFilterMin,
2402 UINT MsgFilterMax);
2403
2404DWORD
2405NTAPI
2406NtUserGetMouseMovePointsEx(
2407 UINT cbSize,
2408 LPMOUSEMOVEPOINT lppt,
2409 LPMOUSEMOVEPOINT lpptBuf,
2410 int nBufPoints,
2411 DWORD resolution);
2412
2413BOOL
2414NTAPI
2415NtUserGetObjectInformation(
2416 HANDLE hObject,
2417 DWORD nIndex,
2418 PVOID pvInformation,
2419 DWORD nLength,
2420 PDWORD nLengthNeeded);
2421
2422HWND
2423NTAPI
2424NtUserGetOpenClipboardWindow(VOID);
2425
2426INT
2427NTAPI
2428NtUserGetPriorityClipboardFormat(
2429 UINT *paFormatPriorityList,
2430 INT cFormats);
2431
2432HWINSTA
2433NTAPI
2434NtUserGetProcessWindowStation(VOID);
2435
2436DWORD
2437NTAPI
2438NtUserGetRawInputBuffer(
2439 PRAWINPUT pData,
2440 PUINT pcbSize,
2441 UINT cbSizeHeader);
2442
2443DWORD
2444NTAPI
2445NtUserGetRawInputData(
2446 HRAWINPUT hRawInput,
2447 UINT uiCommand,
2448 LPVOID pData,
2449 PUINT pcbSize,
2450 UINT cbSizeHeader);
2451
2452DWORD
2453NTAPI
2454NtUserGetRawInputDeviceInfo(
2455 HANDLE hDevice,
2456 UINT uiCommand,
2457 LPVOID pData,
2458 PUINT pcbSize);
2459
2460DWORD
2461NTAPI
2462NtUserGetRawInputDeviceList(
2463 PRAWINPUTDEVICELIST pRawInputDeviceList,
2464 PUINT puiNumDevices,
2465 UINT cbSize);
2466
2467DWORD
2468NTAPI
2469NtUserGetRegisteredRawInputDevices(
2470 PRAWINPUTDEVICE pRawInputDevices,
2471 PUINT puiNumDevices,
2472 UINT cbSize);
2473
2474BOOL
2475NTAPI
2476NtUserGetScrollBarInfo(
2477 HWND hWnd,
2478 LONG idObject,
2479 PSCROLLBARINFO psbi);
2480
2481HDESK
2482NTAPI
2483NtUserGetThreadDesktop(
2484 DWORD dwThreadId,
2485 HDESK hConsoleDesktop);
2486
2487enum ThreadStateRoutines
2488{
2489 THREADSTATE_FOCUSWINDOW = 0,
2490 THREADSTATE_ACTIVEWINDOW,
2491 THREADSTATE_CAPTUREWINDOW,
2492 THREADSTATE_DEFAULTIMEWINDOW,
2493 THREADSTATE_DEFAULTINPUTCONTEXT,
2494 THREADSTATE_GETINPUTSTATE,
2495 THREADSTATE_GETCURSOR,
2496 THREADSTATE_CHANGEBITS,
2497 THREADSTATE_UPTIMELASTREAD,
2498 THREADSTATE_GETMESSAGEEXTRAINFO,
2499 THREADSTATE_INSENDMESSAGE,
2500 THREADSTATE_GETMESSAGETIME,
2501 THREADSTATE_FOREGROUNDTHREAD,
2502 THREADSTATE_IMECOMPATFLAGS,
2503 THREADSTATE_OLDKEYBOARDLAYOUT,
2504 THREADSTATE_ISWINLOGON,
2505 THREADSTATE_UNKNOWN_0x10,
2506 THREADSTATE_CHECKCONIME,
2507 THREADSTATE_GETTHREADINFO,
2508 THREADSTATE_PROGMANWINDOW, /* FIXME: Delete this HACK */
2509 THREADSTATE_TASKMANWINDOW, /* FIXME: Delete this HACK */
2510};
2511
2512DWORD_PTR
2513NTAPI
2514NtUserGetThreadState(
2515 DWORD Routine);
2516
2517BOOLEAN
2518NTAPI
2519NtUserGetTitleBarInfo(
2520 HWND hwnd,
2521 PTITLEBARINFO pti);
2522
2523BOOL
2524NTAPI
2525NtUserGetUpdateRect(
2526 HWND hWnd,
2527 LPRECT lpRect,
2528 BOOL fErase);
2529
2530INT
2531NTAPI
2532NtUserGetUpdateRgn(
2533 HWND hWnd,
2534 HRGN hRgn,
2535 BOOL bErase);
2536
2537HDC
2538NTAPI
2539NtUserGetWindowDC(
2540 HWND hWnd);
2541
2542BOOL
2543NTAPI
2544NtUserGetWindowPlacement(
2545 HWND hWnd,
2546 WINDOWPLACEMENT *lpwndpl);
2547
2548PCLS
2549NTAPI
2550NtUserGetWOWClass(
2551 HINSTANCE hInstance,
2552 PUNICODE_STRING ClassName);
2553
2554DWORD
2555NTAPI
2556NtUserHardErrorControl(
2557 DWORD dwUnknown1,
2558 DWORD dwUnknown2,
2559 DWORD dwUnknown3);
2560
2561BOOL
2562NTAPI
2563NtUserImpersonateDdeClientWindow(
2564 HWND hWndClient,
2565 HWND hWndServer);
2566
2567NTSTATUS
2568NTAPI
2569NtUserInitialize(
2570 DWORD dwWinVersion,
2571 HANDLE hPowerRequestEvent,
2572 HANDLE hMediaRequestEvent);
2573
2574NTSTATUS
2575NTAPI
2576NtUserInitializeClientPfnArrays(
2577 PPFNCLIENT pfnClientA,
2578 PPFNCLIENT pfnClientW,
2579 PPFNCLIENTWORKER pfnClientWorker,
2580 HINSTANCE hmodUser);
2581
2582DWORD
2583NTAPI
2584NtUserInitTask(
2585 DWORD Unknown0,
2586 DWORD Unknown1,
2587 DWORD Unknown2,
2588 DWORD Unknown3,
2589 DWORD Unknown4,
2590 DWORD Unknown5,
2591 DWORD Unknown6,
2592 DWORD Unknown7,
2593 DWORD Unknown8,
2594 DWORD Unknown9,
2595 DWORD Unknown10,
2596 DWORD Unknown11);
2597
2598INT
2599NTAPI
2600NtUserInternalGetWindowText(
2601 HWND hWnd,
2602 LPWSTR lpString,
2603 INT nMaxCount);
2604
2605BOOL
2606NTAPI
2607NtUserInvalidateRect(
2608 HWND hWnd,
2609 CONST RECT *lpRect,
2610 BOOL bErase);
2611
2612BOOL
2613NTAPI
2614NtUserInvalidateRgn(
2615 HWND hWnd,
2616 HRGN hRgn,
2617 BOOL bErase);
2618
2619BOOL
2620NTAPI
2621NtUserIsClipboardFormatAvailable(
2622 UINT format);
2623
2624BOOL
2625NTAPI
2626NtUserKillTimer(
2627 HWND hWnd,
2628 UINT_PTR uIDEvent);
2629
2630HKL
2631NTAPI
2632NtUserLoadKeyboardLayoutEx(
2633 IN HANDLE hFile,
2634 IN DWORD offTable,
2635 IN PVOID pTables,
2636 IN HKL hOldKL,
2637 IN PUNICODE_STRING puszKLID,
2638 IN DWORD dwNewKL,
2639 IN UINT Flags);
2640
2641BOOL
2642NTAPI
2643NtUserLockWindowStation(
2644 HWINSTA hWindowStation);
2645
2646BOOL
2647NTAPI
2648NtUserLockWindowUpdate(
2649 HWND hWnd);
2650
2651BOOL
2652NTAPI
2653NtUserLockWorkStation(VOID);
2654
2655UINT
2656NTAPI
2657NtUserMapVirtualKeyEx(
2658 UINT keyCode,
2659 UINT transType,
2660 DWORD keyboardId,
2661 HKL dwhkl);
2662
2663typedef struct tagDOSENDMESSAGE
2664{
2665 UINT uFlags;
2666 UINT uTimeout;
2667 ULONG_PTR Result;
2668}
2669DOSENDMESSAGE, *PDOSENDMESSAGE;
2670
2671BOOL
2672NTAPI
2673NtUserMessageCall(
2674 HWND hWnd,
2675 UINT Msg,
2676 WPARAM wParam,
2677 LPARAM lParam,
2678 ULONG_PTR ResultInfo,
2679 DWORD dwType, /* FNID_XX types */
2680 BOOL Ansi);
2681
2682DWORD
2683NTAPI
2684NtUserMinMaximize(
2685 HWND hWnd,
2686 UINT cmd, /* Wine SW_ commands */
2687 BOOL Hide);
2688
2689DWORD
2690NTAPI
2691NtUserMNDragLeave(VOID);
2692
2693DWORD
2694NTAPI
2695NtUserMNDragOver(
2696 DWORD Unknown0,
2697 DWORD Unknown1);
2698
2699DWORD
2700NTAPI
2701NtUserModifyUserStartupInfoFlags(
2702 DWORD Unknown0,
2703 DWORD Unknown1);
2704
2705BOOL
2706NTAPI
2707NtUserMoveWindow(
2708 HWND hWnd,
2709 int X,
2710 int Y,
2711 int nWidth,
2712 int nHeight,
2713 BOOL bRepaint
2714);
2715
2716DWORD
2717NTAPI
2718NtUserNotifyIMEStatus(
2719 _In_ HWND hwnd,
2720 _In_ BOOL fOpen,
2721 _In_ DWORD dwConversion);
2722
2723BOOL
2724NTAPI
2725NtUserNotifyProcessCreate(
2726 HANDLE NewProcessId,
2727 HANDLE ParentThreadId,
2728 ULONG dwUnknown,
2729 ULONG CreateFlags);
2730
2731VOID
2732NTAPI
2733NtUserNotifyWinEvent(
2734 DWORD Event,
2735 HWND hWnd,
2736 LONG idObject,
2737 LONG idChild);
2738
2739BOOL
2740NTAPI
2741NtUserOpenClipboard(
2742 HWND hWnd,
2743 DWORD Unknown1);
2744
2745HDESK
2746NTAPI
2747NtUserOpenDesktop(
2748 POBJECT_ATTRIBUTES ObjectAttributes,
2749 DWORD dwFlags,
2750 ACCESS_MASK dwDesiredAccess);
2751
2752HDESK
2753NTAPI
2754NtUserOpenInputDesktop(
2755 DWORD dwFlags,
2756 BOOL fInherit,
2757 ACCESS_MASK dwDesiredAccess);
2758
2759HWINSTA
2760NTAPI
2761NtUserOpenWindowStation(
2762 POBJECT_ATTRIBUTES ObjectAttributes,
2763 ACCESS_MASK dwDesiredAccess);
2764
2765BOOL
2766NTAPI
2767NtUserPaintDesktop(
2768 HDC hDC);
2769
2770DWORD
2771NTAPI
2772NtUserPaintMenuBar(
2773 HWND hWnd,
2774 HDC hDC,
2775 ULONG left, // x,
2776 ULONG right, // width, // Scale the edge thickness, offset?
2777 ULONG top, // y,
2778 BOOL bActive); // DWORD Flags); DC_ACTIVE or WS_ACTIVECAPTION, by checking WNDS_ACTIVEFRAME and foreground.
2779
2780BOOL
2781APIENTRY
2782NtUserPeekMessage(
2783 PMSG pMsg,
2784 HWND hWnd,
2785 UINT MsgFilterMin,
2786 UINT MsgFilterMax,
2787 UINT RemoveMsg);
2788
2789BOOL
2790NTAPI
2791NtUserPostMessage(
2792 HWND hWnd,
2793 UINT Msg,
2794 WPARAM wParam,
2795 LPARAM lParam);
2796
2797BOOL
2798NTAPI
2799NtUserPostThreadMessage(
2800 DWORD idThread,
2801 UINT Msg,
2802 WPARAM wParam,
2803 LPARAM lParam);
2804
2805BOOL
2806NTAPI
2807NtUserPrintWindow(
2808 HWND hwnd,
2809 HDC hdcBlt,
2810 UINT nFlags);
2811
2812NTSTATUS
2813NTAPI
2814NtUserProcessConnect(
2815 IN HANDLE ProcessHandle,
2816 OUT PUSERCONNECT pUserConnect,
2817 IN ULONG Size); /* sizeof(USERCONNECT) */
2818
2819NTSTATUS
2820NTAPI
2821NtUserQueryInformationThread(
2822 IN HANDLE ThreadHandle,
2823 IN USERTHREADINFOCLASS ThreadInformationClass,
2824 OUT PVOID ThreadInformation,
2825 IN ULONG ThreadInformationLength);
2826
2827DWORD_PTR
2828NTAPI
2829NtUserQueryInputContext(
2830 HIMC hIMC,
2831 DWORD dwType);
2832
2833DWORD
2834NTAPI
2835NtUserQuerySendMessage(
2836 DWORD Unknown0);
2837
2838DWORD
2839NTAPI
2840NtUserQueryUserCounters(
2841 DWORD Unknown0,
2842 DWORD Unknown1,
2843 DWORD Unknown2,
2844 DWORD Unknown3,
2845 DWORD Unknown4);
2846
2847#define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2848#define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2849#define QUERY_WINDOW_ACTIVE 0x02
2850#define QUERY_WINDOW_FOCUS 0x03
2851#define QUERY_WINDOW_ISHUNG 0x04
2852#define QUERY_WINDOW_REAL_ID 0x05
2853#define QUERY_WINDOW_FOREGROUND 0x06
2854#define QUERY_WINDOW_DEFAULT_IME 0x07
2855#define QUERY_WINDOW_DEFAULT_ICONTEXT 0x08
2856#define QUERY_WINDOW_ACTIVE_IME 0x09
2857
2858DWORD_PTR
2859NTAPI
2860NtUserQueryWindow(
2861 HWND hWnd,
2862 DWORD Index);
2863
2864BOOL
2865NTAPI
2866NtUserRealInternalGetMessage(
2867 LPMSG lpMsg,
2868 HWND hWnd,
2869 UINT wMsgFilterMin,
2870 UINT wMsgFilterMax,
2871 UINT wRemoveMsg,
2872 BOOL bGMSG);
2873
2874HWND
2875NTAPI
2876NtUserRealChildWindowFromPoint(
2877 HWND Parent,
2878 LONG x,
2879 LONG y);
2880
2881BOOL
2882NTAPI
2883NtUserRealWaitMessageEx(
2884 DWORD dwWakeMask,
2885 UINT uTimeout);
2886
2887BOOL
2888NTAPI
2889NtUserRedrawWindow(
2890 HWND hWnd,
2891 CONST RECT *lprcUpdate,
2892 HRGN hrgnUpdate,
2893 UINT flags);
2894
2895RTL_ATOM
2896NTAPI
2897NtUserRegisterClassExWOW(
2898 WNDCLASSEXW* lpwcx,
2899 PUNICODE_STRING pustrClassName,
2900 PUNICODE_STRING pustrCVersion,
2901 PCLSMENUNAME pClassMenuName,
2902 DWORD fnID,
2903 DWORD Flags,
2904 LPDWORD pWow);
2905
2906BOOL
2907NTAPI
2908NtUserRegisterRawInputDevices(
2909 IN PCRAWINPUTDEVICE pRawInputDevices,
2910 IN UINT uiNumDevices,
2911 IN UINT cbSize);
2912
2913BOOL
2914NTAPI
2915NtUserRegisterUserApiHook(
2916 PUNICODE_STRING m_dllname1,
2917 PUNICODE_STRING m_funname1,
2918 DWORD dwUnknown3,
2919 DWORD dwUnknown4);
2920
2921BOOL
2922NTAPI
2923NtUserRegisterHotKey(
2924 HWND hWnd,
2925 int id,
2926 UINT fsModifiers,
2927 UINT vk);
2928
2929DWORD
2930NTAPI
2931NtUserRegisterTasklist(
2932 DWORD Unknown0);
2933
2934UINT
2935NTAPI
2936NtUserRegisterWindowMessage(
2937 PUNICODE_STRING MessageName);
2938
2939DWORD
2940NTAPI
2941NtUserRemoteConnect(
2942 DWORD dwUnknown1,
2943 DWORD dwUnknown2,
2944 DWORD dwUnknown3);
2945
2946DWORD
2947NTAPI
2948NtUserRemoteRedrawRectangle(
2949 DWORD dwUnknown1,
2950 DWORD dwUnknown2,
2951 DWORD dwUnknown3,
2952 DWORD dwUnknown4);
2953
2954DWORD
2955NTAPI
2956NtUserRemoteRedrawScreen(VOID);
2957
2958DWORD
2959NTAPI
2960NtUserRemoteStopScreenUpdates(VOID);
2961
2962HANDLE
2963NTAPI
2964NtUserRemoveProp(
2965 HWND hWnd,
2966 ATOM Atom);
2967
2968HDESK
2969NTAPI
2970NtUserResolveDesktop(
2971 IN HANDLE ProcessHandle,
2972 IN PUNICODE_STRING DesktopPath,
2973 IN BOOL bInherit,
2974 OUT HWINSTA* phWinSta);
2975
2976DWORD
2977NTAPI
2978NtUserResolveDesktopForWOW(
2979 DWORD Unknown0);
2980
2981BOOL
2982NTAPI
2983NtUserSBGetParms(
2984 HWND hwnd,
2985 int fnBar,
2986 PSBDATA pSBData,
2987 LPSCROLLINFO lpsi);
2988
2989BOOL
2990NTAPI
2991NtUserScrollDC(
2992 HDC hDC,
2993 int dx,
2994 int dy,
2995 CONST RECT *lprcScroll,
2996 CONST RECT *lprcClip ,
2997 HRGN hrgnUpdate,
2998 LPRECT lprcUpdate);
2999
3000DWORD
3001NTAPI
3002NtUserScrollWindowEx(
3003 HWND hWnd,
3004 INT dx,
3005 INT dy,
3006 const RECT *rect,
3007 const RECT *clipRect,
3008 HRGN hrgnUpdate,
3009 LPRECT rcUpdate,
3010 UINT flags);
3011
3012UINT
3013NTAPI
3014NtUserSendInput(
3015 UINT nInputs,
3016 LPINPUT pInput,
3017 INT cbSize);
3018
3019HWND
3020NTAPI
3021NtUserSetActiveWindow(
3022 HWND Wnd);
3023
3024BOOL
3025NTAPI
3026NtUserSetAppImeLevel(
3027 HWND hWnd,
3028 DWORD dwLevel);
3029
3030HWND
3031NTAPI
3032NtUserSetCapture(
3033 HWND Wnd);
3034
3035ULONG_PTR
3036NTAPI
3037NtUserSetClassLong(
3038 _In_ HWND hWnd,
3039 _In_ INT Offset,
3040 _In_ ULONG dwNewLong,
3041 _In_ BOOL Ansi);
3042
3043#ifdef _WIN64
3044
3045ULONG_PTR
3046APIENTRY
3047NtUserSetClassLongPtr(
3048 _In_ HWND hWnd,
3049 _In_ INT Offset,
3050 _In_ ULONG_PTR dwNewLong,
3051 _In_ BOOL Ansi);
3052
3053#endif // _WIN64
3054WORD
3055NTAPI
3056NtUserSetClassWord(
3057 HWND hWnd,
3058 INT nIndex,
3059 WORD wNewWord);
3060
3061HANDLE
3062NTAPI
3063NtUserSetClipboardData(
3064 UINT fmt,
3065 HANDLE hMem,
3066 PSETCLIPBDATA scd);
3067
3068HWND
3069NTAPI
3070NtUserSetClipboardViewer(
3071 HWND hWndNewViewer);
3072
3073HPALETTE
3074NTAPI
3075NtUserSelectPalette(
3076 HDC hDC,
3077 HPALETTE hpal,
3078 BOOL ForceBackground);
3079
3080DWORD
3081NTAPI
3082NtUserSetConsoleReserveKeys(
3083 DWORD Unknown0,
3084 DWORD Unknown1);
3085
3086HCURSOR
3087NTAPI
3088NtUserSetCursor(
3089 HCURSOR hCursor);
3090
3091BOOL
3092NTAPI
3093NtUserSetCursorContents(
3094 HANDLE Handle,
3095 PICONINFO IconInfo);
3096
3097BOOL
3098NTAPI
3099NtUserSetCursorIconData(
3100 _In_ HCURSOR hCursor,
3101 _In_opt_ PUNICODE_STRING pustrModule,
3102 _In_opt_ PUNICODE_STRING puSrcName,
3103 _In_ const CURSORDATA *pCursorData);
3104
3105typedef struct _tagFINDEXISTINGCURICONPARAM
3106{
3107 BOOL bIcon;
3108 LONG cx;
3109 LONG cy;
3110} FINDEXISTINGCURICONPARAM;
3111
3112HICON
3113NTAPI
3114NtUserFindExistingCursorIcon(
3115 _In_ PUNICODE_STRING pustrModule,
3116 _In_ PUNICODE_STRING pustrRsrc,
3117 _In_ FINDEXISTINGCURICONPARAM *param);
3118
3119DWORD
3120NTAPI
3121NtUserSetDbgTag(
3122 DWORD Unknown0,
3123 DWORD Unknown1);
3124
3125DWORD
3126APIENTRY
3127NtUserSetDbgTagCount(
3128 DWORD Unknown0);
3129
3130HWND
3131NTAPI
3132NtUserSetFocus(
3133 HWND hWnd);
3134
3135BOOL
3136NTAPI
3137NtUserSetImeHotKey(
3138 _In_ DWORD dwHotKeyId,
3139 _In_ UINT uModifiers,
3140 _In_ UINT uVirtualKey,
3141 _In_opt_ HKL hKL,
3142 _In_ DWORD dwAction);
3143
3144BOOL
3145NTAPI
3146NtUserSetImeInfoEx(
3147 _In_ const IMEINFOEX *pImeInfoEx);
3148
3149BOOL
3150NTAPI
3151NtUserSetImeOwnerWindow(_In_ HWND hImeWnd, _In_opt_ HWND hwndFocus);
3152
3153DWORD
3154NTAPI
3155NtUserSetInformationProcess(
3156 DWORD dwUnknown1,
3157 DWORD dwUnknown2,
3158 DWORD dwUnknown3,
3159 DWORD dwUnknown4);
3160
3161NTSTATUS
3162NTAPI
3163NtUserSetInformationThread(
3164 IN HANDLE ThreadHandle,
3165 IN USERTHREADINFOCLASS ThreadInformationClass,
3166 IN PVOID ThreadInformation,
3167 IN ULONG ThreadInformationLength);
3168
3169DWORD
3170NTAPI
3171NtUserSetInternalWindowPos(
3172 HWND hwnd,
3173 UINT showCmd,
3174 LPRECT rect,
3175 LPPOINT pt);
3176
3177BOOL
3178NTAPI
3179NtUserSetKeyboardState(
3180 LPBYTE lpKeyState);
3181
3182BOOL
3183NTAPI
3184NtUserSetLayeredWindowAttributes(
3185 HWND hwnd,
3186 COLORREF crKey,
3187 BYTE bAlpha,
3188 DWORD dwFlags);
3189
3190BOOL
3191NTAPI
3192NtUserSetLogonNotifyWindow(
3193 HWND hWnd);
3194
3195BOOL
3196NTAPI
3197NtUserSetObjectInformation(
3198 HANDLE hObject,
3199 DWORD nIndex,
3200 PVOID pvInformation,
3201 DWORD nLength);
3202
3203HWND
3204NTAPI
3205NtUserSetParent(
3206 HWND hWndChild,
3207 HWND hWndNewParent);
3208
3209BOOL
3210NTAPI
3211NtUserSetProcessWindowStation(
3212 HWINSTA hWindowStation);
3213
3214BOOL
3215NTAPI
3216NtUserSetProp(
3217 HWND hWnd,
3218 ATOM Atom,
3219 HANDLE Data);
3220
3221DWORD
3222NTAPI
3223NtUserSetRipFlags(
3224 DWORD Unknown0);
3225
3226DWORD
3227NTAPI
3228NtUserSetScrollInfo(
3229 HWND hwnd,
3230 int fnBar,
3231 LPCSCROLLINFO lpsi,
3232 BOOL bRedraw);
3233
3234BOOL
3235NTAPI
3236NtUserSetShellWindowEx(
3237 HWND hwndShell,
3238 HWND hwndShellListView);
3239
3240BOOL
3241NTAPI
3242NtUserSetSysColors(
3243 int cElements,
3244 IN CONST INT *lpaElements,
3245 IN CONST COLORREF *lpaRgbValues,
3246 FLONG Flags);
3247
3248BOOL
3249NTAPI
3250NtUserSetSystemCursor(
3251 HCURSOR hcur,
3252 DWORD id);
3253
3254BOOL
3255NTAPI
3256NtUserSetThreadDesktop(
3257 HDESK hDesktop);
3258
3259DWORD
3260NTAPI
3261NtUserSetThreadState(
3262 DWORD Unknown0,
3263 DWORD Unknown1);
3264
3265UINT_PTR
3266NTAPI
3267NtUserSetSystemTimer(
3268 HWND hWnd,
3269 UINT_PTR nIDEvent,
3270 UINT uElapse,
3271 TIMERPROC lpTimerFunc);
3272
3273DWORD
3274NTAPI
3275NtUserSetThreadLayoutHandles(
3276 _In_ HKL hNewKL,
3277 _In_ HKL hOldKL);
3278
3279UINT_PTR
3280NTAPI
3281NtUserSetTimer(
3282 HWND hWnd,
3283 UINT_PTR nIDEvent,
3284 UINT uElapse,
3285 TIMERPROC lpTimerFunc);
3286
3287BOOL
3288NTAPI
3289NtUserSetWindowFNID(
3290 HWND hWnd,
3291 WORD fnID);
3292
3293LONG
3294NTAPI
3295NtUserSetWindowLong(
3296 HWND hWnd,
3297 DWORD Index,
3298 LONG NewValue,
3299 BOOL Ansi);
3300
3301#ifdef _WIN64
3302LONG_PTR
3303NTAPI
3304NtUserSetWindowLongPtr(
3305 HWND hWnd,
3306 DWORD Index,
3307 LONG_PTR NewValue,
3308 BOOL Ansi);
3309#else
3310#define NtUserSetWindowLongPtr NtUserSetWindowLong
3311#endif // _WIN64
3312
3313BOOL
3314NTAPI
3315NtUserSetWindowPlacement(
3316 HWND hWnd,
3317 WINDOWPLACEMENT *lpwndpl);
3318
3319BOOL
3320NTAPI
3321NtUserSetWindowPos(
3322 HWND hWnd,
3323 HWND hWndInsertAfter,
3324 int X,
3325 int Y,
3326 int cx,
3327 int cy,
3328 UINT uFlags);
3329
3330INT
3331NTAPI
3332NtUserSetWindowRgn(
3333 HWND hWnd,
3334 HRGN hRgn,
3335 BOOL bRedraw);
3336
3337HHOOK
3338NTAPI
3339NtUserSetWindowsHookAW(
3340 int idHook,
3341 HOOKPROC lpfn,
3342 BOOL Ansi);
3343
3344HHOOK
3345NTAPI
3346NtUserSetWindowsHookEx(
3347 HINSTANCE Mod,
3348 PUNICODE_STRING ModuleName,
3349 DWORD ThreadId,
3350 int HookId,
3351 HOOKPROC HookProc,
3352 BOOL Ansi);
3353
3354BOOL
3355NTAPI
3356NtUserSetWindowStationUser(
3357 IN HWINSTA hWindowStation,
3358 IN PLUID pluid,
3359 IN PSID psid OPTIONAL,
3360 IN DWORD size);
3361
3362WORD
3363NTAPI
3364NtUserSetWindowWord(
3365 HWND hWnd,
3366 INT Index,
3367 WORD NewVal);
3368
3369HWINEVENTHOOK
3370NTAPI
3371NtUserSetWinEventHook(
3372 UINT eventMin,
3373 UINT eventMax,
3374 HMODULE hmodWinEventProc,
3375 PUNICODE_STRING puString,
3376 WINEVENTPROC lpfnWinEventProc,
3377 DWORD idProcess,
3378 DWORD idThread,
3379 UINT dwflags);
3380
3381BOOL
3382NTAPI
3383NtUserShowCaret(
3384 HWND hWnd);
3385
3386BOOL
3387NTAPI
3388NtUserHideCaret(
3389 HWND hWnd);
3390
3391DWORD
3392NTAPI
3393NtUserShowScrollBar(
3394 HWND hWnd,
3395 int wBar,
3396 DWORD bShow);
3397
3398BOOL
3399NTAPI
3400NtUserShowWindow(
3401 HWND hWnd,
3402 LONG nCmdShow);
3403
3404BOOL
3405NTAPI
3406NtUserShowWindowAsync(
3407 HWND hWnd,
3408 LONG nCmdShow);
3409
3410BOOL
3411NTAPI
3412NtUserSoundSentry(VOID);
3413
3414BOOL
3415NTAPI
3416NtUserSwitchDesktop(
3417 HDESK hDesktop);
3418
3419BOOL
3420NTAPI
3421NtUserSystemParametersInfo(
3422 UINT uiAction,
3423 UINT uiParam,
3424 PVOID pvParam,
3425 UINT fWinIni);
3426
3427DWORD
3428NTAPI
3429NtUserTestForInteractiveUser(
3430 DWORD dwUnknown1);
3431
3432INT
3433NTAPI
3434NtUserToUnicodeEx(
3435 UINT wVirtKey,
3436 UINT wScanCode,
3437 PBYTE lpKeyState,
3438 LPWSTR pwszBuff,
3439 int cchBuff,
3440 UINT wFlags,
3441 HKL dwhkl);
3442
3443BOOL
3444NTAPI
3445NtUserTrackMouseEvent(
3446 LPTRACKMOUSEEVENT lpEventTrack);
3447
3448int
3449NTAPI
3450NtUserTranslateAccelerator(
3451 HWND Window,
3452 HACCEL Table,
3453 LPMSG Message);
3454
3455BOOL
3456NTAPI
3457NtUserTranslateMessage(
3458 LPMSG lpMsg,
3459 UINT flags );
3460
3461BOOL
3462NTAPI
3463NtUserUnhookWindowsHookEx(
3464 HHOOK Hook);
3465
3466BOOL
3467NTAPI
3468NtUserUnhookWinEvent(
3469 HWINEVENTHOOK hWinEventHook);
3470
3471BOOL
3472NTAPI
3473NtUserUnloadKeyboardLayout(
3474 HKL hKl);
3475
3476BOOL
3477NTAPI
3478NtUserUnlockWindowStation(
3479 HWINSTA hWindowStation);
3480
3481BOOL
3482NTAPI
3483NtUserUnregisterClass(
3484 PUNICODE_STRING ClassNameOrAtom,
3485 HINSTANCE hInstance,
3486 PCLSMENUNAME pClassMenuName);
3487
3488BOOL
3489NTAPI
3490NtUserUnregisterHotKey(
3491 HWND hWnd,
3492 int id);
3493
3494BOOL
3495NTAPI
3496NtUserUnregisterUserApiHook(VOID);
3497
3498BOOL
3499NTAPI
3500NtUserUpdateInputContext(
3501 HIMC hIMC,
3502 DWORD dwType,
3503 DWORD_PTR dwValue);
3504
3505DWORD
3506NTAPI
3507NtUserUpdateInstance(
3508 DWORD Unknown0,
3509 DWORD Unknown1,
3510 DWORD Unknown2);
3511
3512BOOL
3513NTAPI
3514NtUserUpdateLayeredWindow(
3515 HWND hwnd,
3516 HDC hdcDst,
3517 POINT *pptDst,
3518 SIZE *psize,
3519 HDC hdcSrc,
3520 POINT *pptSrc,
3521 COLORREF crKey,
3522 BLENDFUNCTION *pblend,
3523 DWORD dwFlags,
3524 RECT *prcDirty);
3525
3526BOOL
3527NTAPI
3528NtUserUpdatePerUserSystemParameters(
3529 DWORD dwReserved,
3530 BOOL bEnable);
3531
3532BOOL
3533NTAPI
3534NtUserUserHandleGrantAccess(
3535 IN HANDLE hUserHandle,
3536 IN HANDLE hJob,
3537 IN BOOL bGrant);
3538
3539BOOL
3540NTAPI
3541NtUserValidateHandleSecure(
3542 HANDLE hHdl);
3543
3544BOOL
3545NTAPI
3546NtUserValidateRect(
3547 HWND hWnd,
3548 CONST RECT *lpRect);
3549
3550BOOL
3551APIENTRY
3552NtUserValidateTimerCallback(
3553 LPARAM lParam);
3554
3555DWORD
3556NTAPI
3557NtUserVkKeyScanEx(
3558 WCHAR wChar,
3559 HKL KeyboardLayout,
3560 BOOL bUsehHK);
3561
3562DWORD
3563NTAPI
3564NtUserWaitForInputIdle(
3565 IN HANDLE hProcess,
3566 IN DWORD dwMilliseconds,
3567 IN BOOL bSharedWow); /* Always FALSE */
3568
3569DWORD
3570NTAPI
3571NtUserWaitForMsgAndEvent(
3572 DWORD Unknown0);
3573
3574BOOL
3575NTAPI
3576NtUserWaitMessage(VOID);
3577
3578DWORD
3579NTAPI
3580NtUserWin32PoolAllocationStats(
3581 DWORD Unknown0,
3582 DWORD Unknown1,
3583 DWORD Unknown2,
3584 DWORD Unknown3,
3585 DWORD Unknown4,
3586 DWORD Unknown5);
3587
3588HWND
3589NTAPI
3590NtUserWindowFromPoint(
3591 LONG X,
3592 LONG Y);
3593
3594DWORD
3595NTAPI
3596NtUserYieldTask(VOID);
3597
3598/* NtUserBad
3599 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3600 */
3601
3602#define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3603#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3604#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3605#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3606#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051
3607#define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052
3608
3609#define MSQ_STATE_CAPTURE 0x1
3610#define MSQ_STATE_ACTIVE 0x2
3611#define MSQ_STATE_FOCUS 0x3
3612#define MSQ_STATE_MENUOWNER 0x4
3613#define MSQ_STATE_MOVESIZE 0x5
3614#define MSQ_STATE_CARET 0x6
3615
3616#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3617#define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3618
3619BOOL
3620NTAPI
3621NtUserGetMonitorInfo(
3622 IN HMONITOR hMonitor,
3623 OUT LPMONITORINFO pMonitorInfo);
3624
3625/* Should be done in usermode */
3626
3627HMONITOR
3628NTAPI
3629NtUserMonitorFromPoint(
3630 _In_ POINT point,
3631 _In_ DWORD dwFlags);
3632
3633HMONITOR
3634NTAPI
3635NtUserMonitorFromRect(
3636 _In_ LPCRECT pRect,
3637 _In_ DWORD dwFlags);
3638
3639HMONITOR
3640NTAPI
3641NtUserMonitorFromWindow(
3642 _In_ HWND hWnd,
3643 _In_ DWORD dwFlags);
3644
3645typedef struct _SETSCROLLBARINFO
3646{
3647 int nTrackPos;
3648 int reserved;
3649 DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
3650} SETSCROLLBARINFO, *PSETSCROLLBARINFO;
3651
3652BOOL
3653NTAPI
3654NtUserSetScrollBarInfo(
3655 HWND hwnd,
3656 LONG idObject,
3657 SETSCROLLBARINFO *info);
3658
3659ULONG
3660RtlGetExpWinVer(_In_ PVOID BaseAddress);
3661
3662#endif /* __WIN32K_NTUSER_H */
3663
3664/* EOF */