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