xref: /reactos/win32ss/include/ntuser.h (revision 92a36b36)
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 
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 
16 typedef 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 
30 typedef 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 
38 typedef 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 
66 typedef 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 
81 typedef 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 
89 typedef 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 */
99 typedef 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 
107 VOID
108 NTAPI
109 RtlInitLargeAnsiString(
110     IN OUT PLARGE_ANSI_STRING,
111     IN PCSZ,
112     IN INT);
113 
114 VOID
115 NTAPI
116 RtlInitLargeUnicodeString(
117     IN OUT PLARGE_UNICODE_STRING,
118     IN PCWSTR,
119     IN INT);
120 
121 BOOL
122 NTAPI
123 RtlLargeStringToUnicodeString(
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  */
133 typedef 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  */
168 typedef 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 
179 typedef struct _HEAD
180 {
181     HANDLE h;
182     DWORD cLockObj;
183 } HEAD, *PHEAD;
184 
185 typedef struct _THROBJHEAD
186 {
187     HEAD;
188     struct _THREADINFO *pti;
189 } THROBJHEAD, *PTHROBJHEAD;
190 
191 typedef struct _THRDESKHEAD
192 {
193     THROBJHEAD;
194     struct _DESKTOP *rpdesk;
195     PVOID pSelf;
196 } THRDESKHEAD, *PTHRDESKHEAD;
197 
198 typedef struct tagIMC
199 {
200     THRDESKHEAD    head;
201     struct tagIMC *pImcNext;
202     ULONG_PTR      dwClientImcData;
203     HWND           hImeWnd;
204 } IMC, *PIMC;
205 
206 #ifndef _WIN64
207 C_ASSERT(offsetof(IMC, head.h) == 0x0);
208 C_ASSERT(offsetof(IMC, head.cLockObj) == 0x4);
209 C_ASSERT(offsetof(IMC, head.pti) == 0x8);
210 C_ASSERT(offsetof(IMC, pImcNext) == 0x14);
211 C_ASSERT(offsetof(IMC, dwClientImcData) == 0x18);
212 C_ASSERT(offsetof(IMC, hImeWnd) == 0x1c);
213 #endif
214 
215 typedef struct _PROCDESKHEAD
216 {
217     HEAD;
218     DWORD_PTR hTaskWow;
219     struct _DESKTOP *rpdesk;
220     PVOID pSelf;
221 } PROCDESKHEAD, *PPROCDESKHEAD;
222 
223 typedef 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 */
234 struct _ETHREAD;
235 
236 #define WEF_SETBYWNDPTI 0x0001
237 
238 typedef 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 
255 typedef 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 
293 typedef 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  */
317 typedef 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 */
350 C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
351 
352 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
353 
354 typedef 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 
370 typedef 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 
395 typedef 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 
415 typedef 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 
441 typedef 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 
482 typedef 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 
496 typedef struct _CLSMENUNAME
497 {
498     LPSTR pszClientAnsiMenuName;
499     LPWSTR pwszClientUnicodeMenuName;
500     PUNICODE_STRING pusMenuName;
501 } CLSMENUNAME, *PCLSMENUNAME;
502 
503 typedef struct tagSBDATA
504 {
505     INT posMin;
506     INT posMax;
507     INT page;
508     INT pos;
509 } SBDATA, *PSBDATA;
510 
511 typedef struct tagSBINFO
512 {
513     INT WSBflags;
514     SBDATA Horz;
515     SBDATA Vert;
516 } SBINFO, *PSBINFO;
517 
518 typedef 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 
538 typedef 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 
548 typedef 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 
565 typedef 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 
598 typedef 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  */
693 typedef 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 
771 typedef struct _SBWND
772 {
773     WND wnd;
774     BOOL fVert;
775     UINT wDisableFlags;
776     SBCALC SBCalc;
777 } SBWND, *PSBWND;
778 
779 typedef struct _MDIWND
780 {
781   WND wnd;
782   DWORD dwReserved;
783   PVOID pmdi;
784 } MDIWND, *PMDIWND;
785 
786 #define GWLP_MDIWND 4
787 
788 typedef struct _MENUWND
789 {
790     WND wnd;
791     PPOPUPMENU ppopupmenu;
792 } MENUWND, *PMENUWND;
793 
794 typedef 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 
826 typedef LRESULT
827 (CALLBACK *WNDPROC_EX)(
828     HWND,
829     UINT,
830     WPARAM,
831     LPARAM,
832     BOOL);
833 
834 typedef 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 
849 typedef 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_CICERO_ENABLED 0x0020
952 #define SRVINFO_KBDPREF     0x0080
953 
954 #define NUM_SYSCOLORS 31
955 
956 typedef struct tagOEMBITMAPINFO
957 {
958     INT x;
959     INT y;
960     INT cx;
961     INT cy;
962 } OEMBITMAPINFO, *POEMBITMAPINFO;
963 
964 typedef 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 
975 typedef struct tagMBSTRING
976 {
977     WCHAR szName[16];
978     UINT uID;
979     UINT uStr;
980 } MBSTRING, *PMBSTRING;
981 
982 typedef 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  */
1003 typedef 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  */
1049 typedef 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
1076 C_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 
1090 typedef struct _PROPLISTITEM
1091 {
1092     ATOM Atom;
1093     HANDLE Data;
1094 } PROPLISTITEM, *PPROPLISTITEM;
1095 
1096 #define PROPERTY_FLAG_SYSTEM 1
1097 
1098 typedef struct _PROPERTY
1099 {
1100     LIST_ENTRY PropListEntry;
1101     HANDLE Data;
1102     ATOM Atom;
1103     WORD fs;
1104 } PROPERTY, *PPROPERTY;
1105 
1106 typedef struct _BROADCASTPARM
1107 {
1108     DWORD flags;
1109     DWORD recipients;
1110     HDESK hDesk;
1111     HWND hWnd;
1112     LUID luid;
1113 } BROADCASTPARM, *PBROADCASTPARM;
1114 
1115 struct _THREADINFO *GetW32ThreadInfo(VOID);
1116 struct _PROCESSINFO *GetW32ProcessInfo(VOID);
1117 
1118 typedef 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  */
1128 typedef 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 */
1140 typedef 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)
1152 C_ASSERT(sizeof(USERCONNECT) == 0x124);
1153 #endif
1154 
1155 typedef struct tagGETCLIPBDATA
1156 {
1157     UINT uFmtRet;
1158     BOOL fGlobalHandle;
1159     union
1160     {
1161         HANDLE hLocale;
1162         HANDLE hPalette;
1163     };
1164 } GETCLIPBDATA, *PGETCLIPBDATA;
1165 
1166 typedef struct tagSETCLIPBDATA
1167 {
1168     BOOL fGlobalHandle;
1169     BOOL fIncSerialNumber;
1170 } SETCLIPBDATA, *PSETCLIPBDATA;
1171 
1172 /* Used with NtUserSetCursorIconData, last parameter. */
1173 typedef 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 typedef struct tagIMEINFOEX
1210 {
1211     HKL hkl;
1212     IMEINFO ImeInfo;
1213     WCHAR wszUIClass[16];
1214     ULONG fdwInitConvMode;
1215     INT fInitOpen;
1216     INT fLoadFlag;
1217     DWORD dwProdVersion;
1218     DWORD dwImeWinVersion;
1219     WCHAR wszImeDescription[50];
1220     WCHAR wszImeFile[80];
1221     struct
1222     {
1223         INT fSysWow64Only:1;
1224         INT fCUASLayer:1;
1225     };
1226 } IMEINFOEX, *PIMEINFOEX;
1227 
1228 typedef enum IMEINFOEXCLASS
1229 {
1230     ImeInfoExKeyboardLayout,
1231     ImeInfoExKeyboardLayoutTFS,
1232     ImeInfoExImeWindow,
1233     ImeInfoExImeFileName
1234 } IMEINFOEXCLASS;
1235 
1236 #define IS_IME_HKL(hkl) ((((ULONG_PTR)(hkl)) & 0xF0000000) == 0xE0000000)
1237 #define IS_IMM_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_IMM32))
1238 #define IS_CICERO_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
1239 #define IS_16BIT_MODE() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT)
1240 
1241 typedef struct tagIMEUI
1242 {
1243     PWND spwnd;
1244     HIMC hIMC;
1245     HWND hwndIMC;
1246     HKL hKL;
1247     HWND hwndUI;
1248     LONG nCntInIMEProc;
1249     struct {
1250         UINT fShowStatus:1;
1251         UINT fActivate:1;
1252         UINT fDestroy:1;
1253         UINT fDefault:1;
1254         UINT fChildThreadDef:1;
1255         UINT fCtrlShowStatus:1;
1256         UINT fFreeActiveEvent:1;
1257     };
1258     DWORD dwLastStatus;
1259 } IMEUI, *PIMEUI;
1260 
1261 /* Window Extra data container. */
1262 typedef struct _IMEWND
1263 {
1264     WND wnd;
1265     PIMEUI pimeui;
1266 } IMEWND, *PIMEWND;
1267 
1268 DWORD
1269 NTAPI
1270 NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags);
1271 
1272 NTSTATUS
1273 NTAPI
1274 NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount);
1275 
1276 DWORD
1277 NTAPI
1278 NtUserCalcMenuBar(
1279     HWND   hwnd,
1280     DWORD  x,
1281     DWORD  width,
1282     DWORD  y,
1283     LPRECT prc);
1284 
1285 DWORD
1286 NTAPI
1287 NtUserCheckMenuItem(
1288     HMENU hmenu,
1289     UINT uIDCheckItem,
1290     UINT uCheck);
1291 
1292 DWORD
1293 NTAPI
1294 NtUserCtxDisplayIOCtl(
1295     DWORD dwUnknown1,
1296     DWORD dwUnknown2,
1297     DWORD dwUnknown3);
1298 
1299 DWORD
1300 APIENTRY
1301 NtUserDbgWin32HeapFail(
1302     DWORD Unknown0,
1303     DWORD Unknown1);
1304 
1305 DWORD
1306 APIENTRY
1307 NtUserDbgWin32HeapStat(
1308     DWORD Unknown0,
1309     DWORD Unknown1);
1310 
1311 BOOL
1312 NTAPI
1313 NtUserDeleteMenu(
1314     HMENU hMenu,
1315     UINT uPosition,
1316     UINT uFlags);
1317 
1318 BOOL
1319 NTAPI
1320 NtUserDestroyMenu(
1321     HMENU hMenu);
1322 
1323 DWORD
1324 NTAPI
1325 NtUserDrawMenuBarTemp(
1326     HWND hWnd,
1327     HDC hDC,
1328     PRECT hRect,
1329     HMENU hMenu,
1330     HFONT hFont);
1331 
1332 UINT
1333 NTAPI
1334 NtUserEnableMenuItem(
1335     HMENU hMenu,
1336     UINT uIDEnableItem,
1337     UINT uEnable);
1338 
1339 BOOL
1340 NTAPI
1341 NtUserEndMenu(VOID);
1342 
1343 BOOL
1344 NTAPI
1345 NtUserGetMenuBarInfo(
1346     HWND hwnd,
1347     LONG idObject,
1348     LONG idItem,
1349     PMENUBARINFO pmbi);
1350 
1351 UINT
1352 NTAPI
1353 NtUserGetMenuIndex(
1354     HMENU hMenu,
1355     HMENU hSubMenu);
1356 
1357 BOOL
1358 NTAPI
1359 NtUserGetMenuItemRect(
1360     HWND hWnd,
1361     HMENU hMenu,
1362     UINT uItem,
1363     LPRECT lprcItem);
1364 
1365 HMENU
1366 NTAPI
1367 NtUserGetSystemMenu(
1368     HWND hWnd,
1369     BOOL bRevert);
1370 
1371 BOOL
1372 NTAPI
1373 NtUserHiliteMenuItem(
1374     HWND hWnd,
1375     HMENU hMenu,
1376     UINT uItemHilite,
1377     UINT uHilite);
1378 
1379 int
1380 NTAPI
1381 NtUserMenuItemFromPoint(
1382     HWND hWnd,
1383     HMENU hMenu,
1384     DWORD X,
1385     DWORD Y);
1386 
1387 BOOL
1388 NTAPI
1389 NtUserRemoveMenu(
1390     HMENU hMenu,
1391     UINT uPosition,
1392     UINT uFlags);
1393 
1394 BOOL
1395 NTAPI
1396 NtUserSetMenu(
1397     HWND hWnd,
1398     HMENU hMenu,
1399     BOOL bRepaint);
1400 
1401 BOOL
1402 NTAPI
1403 NtUserSetMenuContextHelpId(
1404     HMENU hmenu,
1405     DWORD dwContextHelpId);
1406 
1407 BOOL
1408 NTAPI
1409 NtUserSetMenuDefaultItem(
1410     HMENU hMenu,
1411     UINT uItem,
1412     UINT fByPos);
1413 
1414 BOOL
1415 NTAPI
1416 NtUserSetMenuFlagRtoL(
1417     HMENU hMenu);
1418 
1419 BOOL
1420 NTAPI
1421 NtUserSetSystemMenu(
1422     HWND hWnd,
1423     HMENU hMenu);
1424 
1425 BOOL
1426 NTAPI
1427 NtUserThunkedMenuInfo(
1428     HMENU hMenu,
1429     LPCMENUINFO lpcmi);
1430 
1431 BOOL
1432 NTAPI
1433 NtUserThunkedMenuItemInfo(
1434     HMENU hMenu,
1435     UINT uItem,
1436     BOOL fByPosition,
1437     BOOL bInsert,
1438     LPMENUITEMINFOW lpmii,
1439     PUNICODE_STRING lpszCaption);
1440 
1441 BOOL
1442 NTAPI
1443 NtUserTrackPopupMenuEx(
1444     HMENU hmenu,
1445     UINT fuFlags,
1446     int x,
1447     int y,
1448     HWND hwnd,
1449     LPTPMPARAMS lptpm);
1450 
1451 HKL
1452 NTAPI
1453 NtUserActivateKeyboardLayout(
1454     HKL hKL,
1455     ULONG Flags);
1456 
1457 DWORD
1458 NTAPI
1459 NtUserAlterWindowStyle(
1460     HWND hWnd,
1461     DWORD Index,
1462     LONG NewValue);
1463 
1464 BOOL
1465 NTAPI
1466 NtUserAttachThreadInput(
1467     IN DWORD idAttach,
1468     IN DWORD idAttachTo,
1469     IN BOOL fAttach);
1470 
1471 HDC NTAPI
1472 NtUserBeginPaint(
1473     HWND hWnd,
1474     PAINTSTRUCT *lPs);
1475 
1476 BOOL
1477 NTAPI
1478 NtUserBitBltSysBmp(
1479     HDC hdc,
1480     INT nXDest,
1481     INT nYDest,
1482     INT nWidth,
1483     INT nHeight,
1484     INT nXSrc,
1485     INT nYSrc,
1486     DWORD dwRop);
1487 
1488 BOOL
1489 NTAPI
1490 NtUserBlockInput(
1491     BOOL BlockIt);
1492 
1493 NTSTATUS
1494 NTAPI
1495 NtUserBuildHwndList(
1496     HDESK hDesktop,
1497     HWND hwndParent,
1498     BOOLEAN bChildren,
1499     ULONG dwThreadId,
1500     ULONG cHwnd,
1501     HWND *phwndList,
1502     ULONG *pcHwndNeeded);
1503 
1504 NTSTATUS
1505 NTAPI
1506 NtUserBuildNameList(
1507     HWINSTA hWinSta,
1508     ULONG dwSize,
1509     PVOID lpBuffer,
1510     PULONG pRequiredSize);
1511 
1512 NTSTATUS
1513 NTAPI
1514 NtUserBuildPropList(
1515     HWND hWnd,
1516     LPVOID Buffer,
1517     DWORD BufferSize,
1518     DWORD *Count);
1519 
1520 /* apfnSimpleCall indices from Windows XP SP 2 */
1521 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1522 #define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */
1523 
1524 enum SimpleCallRoutines
1525 {
1526     NOPARAM_ROUTINE_CREATEMENU,
1527     NOPARAM_ROUTINE_CREATEMENUPOPUP,
1528 #if (WIN32K_VERSION >= NTDDI_VISTA)
1529     NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
1530     NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
1531     NOPARAM_ROUTINE_CREATESYSTEMTHREADS,
1532     NOPARAM_ROUTINE_DESTROY_CARET,
1533 #endif
1534     NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING,
1535 #if (WIN32K_VERSION < NTDDI_VISTA)
1536     NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
1537     NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
1538     NOPARAM_ROUTINE_DESTROY_CARET,
1539 #endif
1540     NOPARAM_ROUTINE_GETDEVICECHANGEINFO,
1541     NOPARAM_ROUTINE_GETIMESHOWSTATUS,
1542     NOPARAM_ROUTINE_GETINPUTDESKTOP,
1543     NOPARAM_ROUTINE_GETMSESSAGEPOS,
1544 #if (WIN32K_VERSION >= NTDDI_VISTA)
1545     NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
1546 #else
1547     NOPARAM_ROUTINE_GETREMOTEPROCESSID,
1548 #endif
1549     NOPARAM_ROUTINE_HIDECURSORNOCAPTURE,
1550     NOPARAM_ROUTINE_LOADCURSANDICOS,
1551 #if (WIN32K_VERSION >= NTDDI_VISTA)
1552     NOPARAM_ROUTINE_LOADUSERAPIHOOK,
1553     NOPARAM_ROUTINE_PREPAREFORLOGOFF, /* 0x0f */
1554 #endif
1555     NOPARAM_ROUTINE_RELEASECAPTURE,
1556     NOPARAM_ROUTINE_RESETDBLCLICK,
1557     NOPARAM_ROUTINE_ZAPACTIVEANDFOUS,
1558     NOPARAM_ROUTINE_REMOTECONSHDWSTOP,
1559     NOPARAM_ROUTINE_REMOTEDISCONNECT,
1560     NOPARAM_ROUTINE_REMOTELOGOFF,
1561     NOPARAM_ROUTINE_REMOTENTSECURITY,
1562     NOPARAM_ROUTINE_REMOTESHDWSETUP,
1563     NOPARAM_ROUTINE_REMOTESHDWSTOP,
1564     NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE,
1565     NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE,
1566     NOPARAM_ROUTINE_REMOTECONNECTSTATE,
1567     NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING,
1568     NOPARAM_ROUTINE_USERPWRCALLOUTWORKER,
1569 #if (WIN32K_VERSION >= NTDDI_VISTA)
1570     NOPARAM_ROUTINE_WAKERITFORSHTDWN,
1571 #endif
1572     NOPARAM_ROUTINE_INIT_MESSAGE_PUMP,
1573     NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP,
1574 #if (WIN32K_VERSION < NTDDI_VISTA)
1575     NOPARAM_ROUTINE_LOADUSERAPIHOOK,
1576 #endif
1577     ONEPARAM_ROUTINE_BEGINDEFERWNDPOS,
1578 #if (WIN32K_VERSION >= NTDDI_VISTA)
1579     ONEPARAM_ROUTINE_GETSENDMSGRECVR,
1580 #endif
1581     ONEPARAM_ROUTINE_WINDOWFROMDC,
1582     ONEPARAM_ROUTINE_ALLOWSETFOREGND,
1583     ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT,
1584 #if (WIN32K_VERSION < NTDDI_VISTA)
1585     ONEPARAM_ROUTINE_CREATESYSTEMTHREADS,
1586 #endif
1587     ONEPARAM_ROUTINE_CSDDEUNINITIALIZE,
1588     ONEPARAM_ROUTINE_DIRECTEDYIELD,
1589     ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS,
1590 #if (WIN32K_VERSION < NTDDI_VISTA)
1591     ONEPARAM_ROUTINE_GETCURSORPOS,
1592 #endif
1593     ONEPARAM_ROUTINE_GETINPUTEVENT,
1594     ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT,
1595     ONEPARAM_ROUTINE_GETKEYBOARDTYPE,
1596     ONEPARAM_ROUTINE_GETPROCDEFLAYOUT,
1597     ONEPARAM_ROUTINE_GETQUEUESTATUS,
1598     ONEPARAM_ROUTINE_GETWINSTAINFO,
1599 #if (WIN32K_VERSION < NTDDI_VISTA)
1600     ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
1601 #endif
1602     ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW,
1603     ONEPARAM_ROUTINE_LOADFONTS,
1604     ONEPARAM_ROUTINE_MAPDEKTOPOBJECT,
1605     ONEPARAM_ROUTINE_MESSAGEBEEP,
1606     ONEPARAM_ROUTINE_PLAYEVENTSOUND,
1607     ONEPARAM_ROUTINE_POSTQUITMESSAGE,
1608 #if (WIN32K_VERSION < NTDDI_VISTA)
1609     ONEPARAM_ROUTINE_PREPAREFORLOGOFF,
1610 #endif
1611     ONEPARAM_ROUTINE_REALIZEPALETTE,
1612     ONEPARAM_ROUTINE_REGISTERLPK,
1613 #if (WIN32K_VERSION >= NTDDI_VISTA)
1614     ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
1615 #endif
1616     ONEPARAM_ROUTINE_REMOTERECONNECT,
1617     ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS,
1618     ONEPARAM_ROUTINE_RELEASEDC,
1619 #if (WIN32K_VERSION >= NTDDI_VISTA)
1620     ONEPARAM_ROUTINE_REMOTENOTIFY,
1621 #endif
1622     ONEPARAM_ROUTINE_REPLYMESSAGE,
1623     ONEPARAM_ROUTINE_SETCARETBLINKTIME,
1624     ONEPARAM_ROUTINE_SETDBLCLICKTIME,
1625 #if (WIN32K_VERSION < NTDDI_VISTA)
1626     ONEPARAM_ROUTINE_SETIMESHOWSTATUS,
1627 #endif
1628     ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO,
1629     ONEPARAM_ROUTINE_SETPROCDEFLAYOUT,
1630 #if (WIN32K_VERSION >= NTDDI_VISTA)
1631     ONEPARAM_ROUTINE_SETWATERMARKSTRINGS,
1632 #endif
1633     ONEPARAM_ROUTINE_SHOWCURSOR,
1634     ONEPARAM_ROUTINE_SHOWSTARTGLASS,
1635     ONEPARAM_ROUTINE_SWAPMOUSEBUTTON,
1636     X_ROUTINE_WOWMODULEUNLOAD,
1637 #if (WIN32K_VERSION < NTDDI_VISTA)
1638     X_ROUTINE_REMOTENOTIFY,
1639 #endif
1640     HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW,
1641     HWND_ROUTINE_DWP_GETENABLEDPOPUP,
1642     HWND_ROUTINE_GETWNDCONTEXTHLPID,
1643     HWND_ROUTINE_REGISTERSHELLHOOKWINDOW,
1644     HWND_ROUTINE_SETMSGBOX,
1645     HWNDOPT_ROUTINE_SETPROGMANWINDOW,
1646     HWNDOPT_ROUTINE_SETTASKMANWINDOW,
1647     HWNDPARAM_ROUTINE_GETCLASSICOCUR,
1648     HWNDPARAM_ROUTINE_CLEARWINDOWSTATE,
1649     HWNDPARAM_ROUTINE_KILLSYSTEMTIMER,
1650     HWNDPARAM_ROUTINE_SETDIALOGPOINTER,
1651     HWNDPARAM_ROUTINE_SETVISIBLE,
1652     HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID,
1653     HWNDPARAM_ROUTINE_SETWINDOWSTATE,
1654     HWNDLOCK_ROUTINE_WINDOWHASSHADOW, /* correct prefix ? */
1655     HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS,
1656     HWNDLOCK_ROUTINE_DRAWMENUBAR,
1657     HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD,
1658     HWNDLOCK_ROUTINE_GETSYSMENUHANDLE,
1659     HWNDLOCK_ROUTINE_REDRAWFRAME,
1660     HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK,
1661     HWNDLOCK_ROUTINE_SETDLGSYSMENU,
1662     HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW,
1663     HWNDLOCK_ROUTINE_SETSYSMENU,
1664     HWNDLOCK_ROUTINE_UPDATECKIENTRECT,
1665     HWNDLOCK_ROUTINE_UPDATEWINDOW,
1666     TWOPARAM_ROUTINE_IMESHOWSTATUSCHANGE,
1667     TWOPARAM_ROUTINE_ENABLEWINDOW,
1668     TWOPARAM_ROUTINE_REDRAWTITLE,
1669     TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS,
1670     TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW,
1671     TWOPARAM_ROUTINE_UPDATEWINDOWS,
1672     TWOPARAM_ROUTINE_VALIDATERGN,
1673 #if (WIN32K_VERSION >= NTDDI_VISTA)
1674     TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER,
1675     TWOPARAM_ROUTINE_GETCURSORPOS,
1676 #endif
1677     TWOPARAM_ROUTINE_GETHDEVNAME,
1678     TWOPARAM_ROUTINE_INITANSIOEM,
1679     TWOPARAM_ROUTINE_NLSSENDIMENOTIFY,
1680 #if (WIN32K_VERSION >= NTDDI_VISTA)
1681     TWOPARAM_ROUTINE_REGISTERGHSTWND,
1682 #endif
1683     TWOPARAM_ROUTINE_REGISTERLOGONPROCESS,
1684 #if (WIN32K_VERSION >= NTDDI_VISTA)
1685     TWOPARAM_ROUTINE_REGISTERSBLFROSTWND,
1686 #else
1687     TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
1688 #endif
1689     TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS,
1690     TWOPARAM_ROUTINE_SHADOWCLEANUP,
1691     TWOPARAM_ROUTINE_REMOTESHADOWSTART,
1692     TWOPARAM_ROUTINE_SETCARETPOS,
1693     TWOPARAM_ROUTINE_SETCURSORPOS,
1694 #if (WIN32K_VERSION >= NTDDI_VISTA)
1695     TWOPARAM_ROUTINE_SETPHYSCURSORPOS,
1696 #endif
1697     TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK,
1698     TWOPARAM_ROUTINE_WOWCLEANUP
1699 };
1700 
1701 DWORD
1702 NTAPI
1703 NtUserCallHwnd(
1704     HWND hWnd,
1705     DWORD Routine);
1706 
1707 BOOL
1708 NTAPI
1709 NtUserCallHwndLock(
1710     HWND hWnd,
1711     DWORD Routine);
1712 
1713 HWND
1714 NTAPI
1715 NtUserCallHwndOpt(
1716     HWND hWnd,
1717     DWORD Routine);
1718 
1719 DWORD
1720 NTAPI
1721 NtUserCallHwndParam(
1722     HWND hWnd,
1723     DWORD_PTR Param,
1724     DWORD Routine);
1725 
1726 DWORD
1727 NTAPI
1728 NtUserCallHwndParamLock(
1729     HWND hWnd,
1730     DWORD_PTR Param,
1731     DWORD Routine);
1732 
1733 BOOL
1734 NTAPI
1735 NtUserCallMsgFilter(
1736     LPMSG msg,
1737     INT code);
1738 
1739 LRESULT
1740 NTAPI
1741 NtUserCallNextHookEx(
1742     int Code,
1743     WPARAM wParam,
1744     LPARAM lParam,
1745     BOOL Ansi);
1746 
1747 DWORD_PTR
1748 NTAPI
1749 NtUserCallNoParam(
1750     DWORD Routine);
1751 
1752 DWORD_PTR
1753 NTAPI
1754 NtUserCallOneParam(
1755     DWORD_PTR Param,
1756     DWORD Routine);
1757 
1758 DWORD_PTR
1759 NTAPI
1760 NtUserCallTwoParam(
1761     DWORD_PTR Param1,
1762     DWORD_PTR Param2,
1763     DWORD Routine);
1764 
1765 BOOL
1766 NTAPI
1767 NtUserChangeClipboardChain(
1768     HWND hWndRemove,
1769     HWND hWndNewNext);
1770 
1771 LONG
1772 NTAPI
1773 NtUserChangeDisplaySettings(
1774     PUNICODE_STRING lpszDeviceName,
1775     LPDEVMODEW lpDevMode,
1776     DWORD dwflags,
1777     LPVOID lParam);
1778 
1779 BOOL
1780 NTAPI
1781 NtUserCheckDesktopByThreadId(
1782     DWORD dwThreadId);
1783 
1784 BOOL
1785 NTAPI
1786 NtUserCheckWindowThreadDesktop(
1787     HWND hwnd,
1788     DWORD dwThreadId,
1789     ULONG ReturnValue);
1790 
1791 DWORD
1792 NTAPI
1793 NtUserCheckImeHotKey(
1794     UINT uVirtualKey,
1795     LPARAM lParam);
1796 
1797 HWND NTAPI
1798 NtUserChildWindowFromPointEx(
1799     HWND Parent,
1800     LONG x,
1801     LONG y,
1802     UINT Flags);
1803 
1804 BOOL
1805 NTAPI
1806 NtUserClipCursor(
1807     RECT *lpRect);
1808 
1809 BOOL
1810 NTAPI
1811 NtUserCloseClipboard(VOID);
1812 
1813 BOOL
1814 NTAPI
1815 NtUserCloseDesktop(
1816     HDESK hDesktop);
1817 
1818 BOOL
1819 NTAPI
1820 NtUserCloseWindowStation(
1821     HWINSTA hWinSta);
1822 
1823 /* Console commands for NtUserConsoleControl */
1824 typedef enum _CONSOLECONTROL
1825 {
1826     ConsoleCtrlDesktopConsoleThread = 0,
1827     GuiConsoleWndClassAtom = 1,
1828     ConsoleMakePalettePublic = 5,
1829     ConsoleAcquireDisplayOwnership,
1830 } CONSOLECONTROL, *PCONSOLECONTROL;
1831 
1832 typedef struct _DESKTOP_CONSOLE_THREAD
1833 {
1834     HDESK DesktopHandle;
1835     ULONG_PTR ThreadId;
1836 } DESKTOP_CONSOLE_THREAD, *PDESKTOP_CONSOLE_THREAD;
1837 
1838 NTSTATUS
1839 APIENTRY
1840 NtUserConsoleControl(
1841     IN CONSOLECONTROL ConsoleCtrl,
1842     IN PVOID ConsoleCtrlInfo,
1843     IN ULONG ConsoleCtrlInfoLength);
1844 
1845 HANDLE
1846 NTAPI
1847 NtUserConvertMemHandle(
1848     PVOID pData,
1849     DWORD cbData);
1850 
1851 ULONG
1852 NTAPI
1853 NtUserCopyAcceleratorTable(
1854     HACCEL Table,
1855     LPACCEL Entries,
1856     ULONG EntriesCount);
1857 
1858 DWORD
1859 NTAPI
1860 NtUserCountClipboardFormats(VOID);
1861 
1862 HACCEL
1863 NTAPI
1864 NtUserCreateAcceleratorTable(
1865     LPACCEL Entries,
1866     ULONG EntriesCount);
1867 
1868 BOOL
1869 NTAPI
1870 NtUserCreateCaret(
1871     HWND hWnd,
1872     HBITMAP hBitmap,
1873     int nWidth,
1874     int nHeight);
1875 
1876 HDESK
1877 NTAPI
1878 NtUserCreateDesktop(
1879     POBJECT_ATTRIBUTES poa,
1880     PUNICODE_STRING lpszDesktopDevice,
1881     LPDEVMODEW lpdmw,
1882     DWORD dwFlags,
1883     ACCESS_MASK dwDesiredAccess);
1884 
1885 HIMC
1886 NTAPI
1887 NtUserCreateInputContext(ULONG_PTR dwClientImcData);
1888 
1889 NTSTATUS
1890 NTAPI
1891 NtUserCreateLocalMemHandle(
1892     HANDLE hMem,
1893     PVOID pData,
1894     DWORD cbData,
1895     DWORD *pcbData);
1896 
1897 HWND
1898 NTAPI
1899 NtUserCreateWindowEx(
1900     DWORD dwExStyle,
1901     PLARGE_STRING plstrClassName,
1902     PLARGE_STRING plstrClsVersion,
1903     PLARGE_STRING plstrWindowName,
1904     DWORD dwStyle,
1905     int x,
1906     int y,
1907     int nWidth,
1908     int nHeight,
1909     HWND hWndParent,
1910     HMENU hMenu,
1911     HINSTANCE hInstance,
1912     LPVOID lpParam,
1913     DWORD dwFlags,
1914     PVOID acbiBuffer);
1915 
1916 HWINSTA
1917 NTAPI
1918 NtUserCreateWindowStation(
1919     POBJECT_ATTRIBUTES ObjectAttributes,
1920     ACCESS_MASK dwDesiredAccess,
1921     DWORD Unknown2,
1922     DWORD Unknown3,
1923     DWORD Unknown4,
1924     DWORD Unknown5,
1925     DWORD Unknown6);
1926 
1927 BOOL
1928 NTAPI
1929 NtUserDdeGetQualityOfService(
1930     IN HWND hwndClient,
1931     IN HWND hWndServer,
1932     OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1933 
1934 DWORD
1935 NTAPI
1936 NtUserDdeInitialize(
1937     DWORD Unknown0,
1938     DWORD Unknown1,
1939     DWORD Unknown2,
1940     DWORD Unknown3,
1941     DWORD Unknown4);
1942 
1943 BOOL
1944 NTAPI
1945 NtUserDdeSetQualityOfService(
1946     IN HWND hwndClient,
1947     IN PSECURITY_QUALITY_OF_SERVICE pqosNew,
1948     OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1949 
1950 HDWP
1951 NTAPI
1952 NtUserDeferWindowPos(
1953     HDWP WinPosInfo,
1954     HWND Wnd,
1955     HWND WndInsertAfter,
1956     int x,
1957     int y,
1958     int cx,
1959     int cy,
1960     UINT Flags);
1961 
1962 BOOL
1963 NTAPI
1964 NtUserDefSetText(
1965     HWND WindowHandle,
1966     PLARGE_STRING WindowText);
1967 
1968 BOOLEAN
1969 NTAPI
1970 NtUserDestroyAcceleratorTable(
1971     HACCEL Table);
1972 
1973 BOOL
1974 NTAPI
1975 NtUserDestroyCursor(
1976   _In_ HANDLE Handle,
1977   _In_ BOOL bForce);
1978 
1979 BOOL
1980 NTAPI
1981 NtUserDestroyInputContext(HIMC hIMC);
1982 
1983 BOOLEAN
1984 NTAPI
1985 NtUserDestroyWindow(
1986     HWND Wnd);
1987 
1988 BOOL
1989 NTAPI
1990 NtUserDisableThreadIme(
1991     DWORD dwThreadID);
1992 
1993 LRESULT
1994 NTAPI
1995 NtUserDispatchMessage(
1996     PMSG pMsg);
1997 
1998 BOOL
1999 NTAPI
2000 NtUserDragDetect(
2001     HWND hWnd,
2002     POINT pt);
2003 
2004 DWORD
2005 NTAPI
2006 NtUserDragObject(
2007     HWND hwnd1,
2008     HWND hwnd2,
2009     UINT u1,
2010     DWORD dw1,
2011     HCURSOR hc1);
2012 
2013 BOOL
2014 NTAPI
2015 NtUserDrawAnimatedRects(
2016     HWND hwnd,
2017     INT idAni,
2018     RECT *lprcFrom,
2019     RECT *lprcTo);
2020 
2021 BOOL
2022 NTAPI
2023 NtUserDrawCaption(
2024     HWND hWnd,
2025     HDC hDc,
2026     LPCRECT lpRc,
2027     UINT uFlags);
2028 
2029 BOOL
2030 NTAPI
2031 NtUserDrawCaptionTemp(
2032     HWND hWnd,
2033     HDC hDC,
2034     LPCRECT lpRc,
2035     HFONT hFont,
2036     HICON hIcon,
2037     const PUNICODE_STRING str,
2038     UINT uFlags);
2039 
2040 /* Used with NtUserDrawIconEx, last parameter. */
2041 typedef struct _DRAWICONEXDATA
2042 {
2043     HBITMAP hbmMask;
2044     HBITMAP hbmColor;
2045     int cx;
2046     int cy;
2047 } DRAWICONEXDATA, *PDRAWICONEXDATA;
2048 
2049 BOOL
2050 NTAPI
2051 NtUserDrawIconEx(
2052     HDC hdc,
2053     int xLeft,
2054     int yTop,
2055     HICON hIcon,
2056     int cxWidth,
2057     int cyWidth,
2058     UINT istepIfAniCur,
2059     HBRUSH hbrFlickerFreeDraw,
2060     UINT diFlags,
2061     BOOL bMetaHDC,
2062     PVOID pDIXData);
2063 
2064 BOOL
2065 NTAPI
2066 NtUserEmptyClipboard(VOID);
2067 
2068 BOOL
2069 NTAPI
2070 NtUserEnableScrollBar(
2071     HWND hWnd,
2072     UINT wSBflags,
2073     UINT wArrows);
2074 
2075 BOOL
2076 NTAPI
2077 NtUserEndDeferWindowPosEx(
2078     HDWP WinPosInfo,
2079     BOOL bAsync);
2080 
2081 BOOL
2082 NTAPI
2083 NtUserEndPaint(
2084     HWND hWnd,
2085     CONST PAINTSTRUCT *lPs);
2086 
2087 BOOL
2088 NTAPI
2089 NtUserEnumDisplayDevices(
2090     PUNICODE_STRING lpDevice, /* device name */
2091     DWORD iDevNum, /* display device */
2092     PDISPLAY_DEVICEW lpDisplayDevice, /* device information */
2093     DWORD dwFlags); /* reserved */
2094 
2095 /*
2096 BOOL
2097 NTAPI
2098 NtUserEnumDisplayMonitors(
2099     HDC hdc,
2100     LPCRECT lprcClip,
2101     MONITORENUMPROC lpfnEnum,
2102     LPARAM dwData);
2103 */
2104 /* FIXME:  The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
2105 INT
2106 NTAPI
2107 NtUserEnumDisplayMonitors(
2108     OPTIONAL IN HDC hDC,
2109     OPTIONAL IN LPCRECT pRect,
2110     OPTIONAL OUT HMONITOR *hMonitorList,
2111     OPTIONAL OUT LPRECT monitorRectList,
2112     OPTIONAL IN DWORD listSize);
2113 
2114 
2115 NTSTATUS
2116 NTAPI
2117 NtUserEnumDisplaySettings(
2118     PUNICODE_STRING lpszDeviceName,
2119     DWORD iModeNum,
2120     LPDEVMODEW lpDevMode, /* FIXME is this correct? */
2121     DWORD dwFlags);
2122 
2123 DWORD
2124 NTAPI
2125 NtUserEvent(
2126     DWORD Unknown0);
2127 
2128 INT
2129 NTAPI
2130 NtUserExcludeUpdateRgn(
2131     HDC hDC,
2132     HWND hWnd);
2133 
2134 BOOL
2135 NTAPI
2136 NtUserFillWindow(
2137     HWND hWndPaint,
2138     HWND hWndPaint1,
2139     HDC hDC,
2140     HBRUSH hBrush);
2141 
2142 HWND
2143 NTAPI
2144 NtUserFindWindowEx(
2145     HWND hwndParent,
2146     HWND hwndChildAfter,
2147     PUNICODE_STRING ucClassName,
2148     PUNICODE_STRING ucWindowName,
2149     DWORD dwUnknown);
2150 
2151 BOOL
2152 NTAPI
2153 NtUserFlashWindowEx(
2154     IN PFLASHWINFO pfwi);
2155 
2156 BOOL
2157 NTAPI
2158 NtUserGetAltTabInfo(
2159     HWND hwnd,
2160     INT iItem,
2161     PALTTABINFO pati,
2162     LPWSTR pszItemText,
2163     UINT cchItemText,
2164     BOOL Ansi);
2165 
2166 HWND
2167 NTAPI
2168 NtUserGetAncestor(
2169     HWND hWnd,
2170     UINT Flags);
2171 
2172 DWORD
2173 NTAPI
2174 NtUserGetAppImeLevel(HWND hWnd);
2175 
2176 SHORT
2177 NTAPI
2178 NtUserGetAsyncKeyState(
2179     INT Key);
2180 
2181 _Success_(return != 0)
2182 _At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return * 2 + 2))
2183 ULONG
2184 APIENTRY
2185 NtUserGetAtomName(
2186     _In_ ATOM atom,
2187     _Inout_ PUNICODE_STRING pustrName);
2188 
2189 UINT
2190 NTAPI
2191 NtUserGetCaretBlinkTime(VOID);
2192 
2193 BOOL
2194 NTAPI
2195 NtUserGetCaretPos(
2196     LPPOINT lpPoint);
2197 
2198 BOOL
2199 NTAPI
2200 NtUserGetClassInfo(
2201     HINSTANCE hInstance,
2202     PUNICODE_STRING ClassName,
2203     LPWNDCLASSEXW wcex,
2204     LPWSTR *ppszMenuName,
2205     BOOL Ansi);
2206 
2207 INT
2208 NTAPI
2209 NtUserGetClassName(
2210     HWND hWnd,
2211     BOOL Real, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2212     PUNICODE_STRING ClassName);
2213 
2214 HANDLE
2215 NTAPI
2216 NtUserGetClipboardData(
2217     UINT fmt,
2218     PGETCLIPBDATA pgcd);
2219 
2220 INT
2221 NTAPI
2222 NtUserGetClipboardFormatName(
2223     UINT uFormat,
2224     LPWSTR lpszFormatName,
2225     INT cchMaxCount);
2226 
2227 HWND
2228 NTAPI
2229 NtUserGetClipboardOwner(VOID);
2230 
2231 DWORD
2232 NTAPI
2233 NtUserGetClipboardSequenceNumber(VOID);
2234 
2235 HWND
2236 NTAPI
2237 NtUserGetClipboardViewer(VOID);
2238 
2239 BOOL
2240 NTAPI
2241 NtUserGetClipCursor(
2242     RECT *lpRect);
2243 
2244 BOOL
2245 NTAPI
2246 NtUserGetComboBoxInfo(
2247     HWND hWnd,
2248     PCOMBOBOXINFO pcbi);
2249 
2250 HBRUSH
2251 NTAPI
2252 NtUserGetControlBrush(
2253     HWND hwnd,
2254     HDC  hdc,
2255     UINT ctlType);
2256 
2257 HBRUSH
2258 NTAPI
2259 NtUserGetControlColor(
2260     HWND hwndParent,
2261     HWND hwnd,
2262     HDC hdc,
2263     UINT CtlMsg);
2264 
2265 ULONG_PTR
2266 NTAPI
2267 NtUserGetCPD(
2268     HWND hWnd,
2269     GETCPD Flags,
2270     ULONG_PTR Proc);
2271 
2272 HCURSOR
2273 NTAPI
2274 NtUserGetCursorFrameInfo(
2275     HCURSOR hCursor,
2276     DWORD istep,
2277     INT *rate_jiffies,
2278     DWORD *num_steps);
2279 
2280 BOOL
2281 NTAPI
2282 NtUserGetCursorInfo(
2283     PCURSORINFO pci);
2284 
2285 HDC
2286 NTAPI
2287 NtUserGetDC(
2288     HWND hWnd);
2289 
2290 HDC
2291 NTAPI
2292 NtUserGetDCEx(
2293     HWND hWnd,
2294     HANDLE hRegion,
2295     ULONG Flags);
2296 
2297 UINT
2298 NTAPI
2299 NtUserGetDoubleClickTime(VOID);
2300 
2301 HWND
2302 NTAPI
2303 NtUserGetForegroundWindow(VOID);
2304 
2305 DWORD
2306 NTAPI
2307 NtUserGetGuiResources(
2308     HANDLE hProcess,
2309     DWORD uiFlags);
2310 
2311 BOOL
2312 NTAPI
2313 NtUserGetGUIThreadInfo(
2314     DWORD idThread,
2315     LPGUITHREADINFO lpgui);
2316 
2317 _Success_(return != FALSE)
2318 BOOL
2319 NTAPI
2320 NtUserGetIconInfo(
2321     _In_ HANDLE hCurIcon,
2322     _Out_opt_ PICONINFO IconInfo,
2323     _Inout_opt_ PUNICODE_STRING lpInstName,
2324     _Inout_opt_ PUNICODE_STRING lpResName,
2325     _Out_opt_ LPDWORD pbpp,
2326     _In_ BOOL bInternal);
2327 
2328 BOOL
2329 NTAPI
2330 NtUserGetIconSize(
2331     HANDLE Handle,
2332     UINT istepIfAniCur,
2333     LONG *plcx,
2334     LONG *plcy);
2335 
2336 BOOL
2337 NTAPI
2338 NtUserGetImeHotKey(DWORD dwHotKeyId,
2339                    LPUINT lpuModifiers,
2340                    LPUINT lpuVirtualKey,
2341                    LPHKL lphKL);
2342 
2343 BOOL
2344 NTAPI
2345 NtUserGetImeInfoEx(
2346     PIMEINFOEX pImeInfoEx,
2347     IMEINFOEXCLASS SearchType);
2348 
2349 DWORD
2350 NTAPI
2351 NtUserGetInternalWindowPos(
2352     HWND hwnd,
2353     LPRECT rectWnd,
2354     LPPOINT ptIcon);
2355 
2356 HKL
2357 NTAPI
2358 NtUserGetKeyboardLayout(
2359     DWORD dwThreadid);
2360 
2361 UINT
2362 NTAPI
2363 NtUserGetKeyboardLayoutList(
2364     ULONG nItems,
2365     HKL *pHklBuff);
2366 
2367 BOOL
2368 NTAPI
2369 NtUserGetKeyboardLayoutName(
2370     _Inout_ PUNICODE_STRING pustrName);
2371 
2372 DWORD
2373 NTAPI
2374 NtUserGetKeyboardState(
2375     LPBYTE Unknown0);
2376 
2377 DWORD
2378 NTAPI
2379 NtUserGetKeyboardType(
2380     DWORD TypeFlag);
2381 
2382 DWORD
2383 NTAPI
2384 NtUserGetKeyNameText(
2385     LONG lParam,
2386     LPWSTR lpString,
2387     int nSize);
2388 
2389 SHORT
2390 NTAPI
2391 NtUserGetKeyState(
2392     INT VirtKey);
2393 
2394 BOOL
2395 NTAPI
2396 NtUserGetLayeredWindowAttributes(
2397     HWND hwnd,
2398     COLORREF *pcrKey,
2399     BYTE *pbAlpha,
2400     DWORD *pdwFlags);
2401 
2402 DWORD
2403 NTAPI
2404 NtUserGetListBoxInfo(
2405     HWND hWnd);
2406 
2407 BOOL
2408 APIENTRY
2409 NtUserGetMessage(
2410     PMSG pMsg,
2411     HWND hWnd,
2412     UINT MsgFilterMin,
2413     UINT MsgFilterMax);
2414 
2415 DWORD
2416 NTAPI
2417 NtUserGetMouseMovePointsEx(
2418     UINT cbSize,
2419     LPMOUSEMOVEPOINT lppt,
2420     LPMOUSEMOVEPOINT lpptBuf,
2421     int nBufPoints,
2422     DWORD resolution);
2423 
2424 BOOL
2425 NTAPI
2426 NtUserGetObjectInformation(
2427     HANDLE hObject,
2428     DWORD nIndex,
2429     PVOID pvInformation,
2430     DWORD nLength,
2431     PDWORD nLengthNeeded);
2432 
2433 HWND
2434 NTAPI
2435 NtUserGetOpenClipboardWindow(VOID);
2436 
2437 INT
2438 NTAPI
2439 NtUserGetPriorityClipboardFormat(
2440     UINT *paFormatPriorityList,
2441     INT cFormats);
2442 
2443 HWINSTA
2444 NTAPI
2445 NtUserGetProcessWindowStation(VOID);
2446 
2447 DWORD
2448 NTAPI
2449 NtUserGetRawInputBuffer(
2450     PRAWINPUT pData,
2451     PUINT pcbSize,
2452     UINT cbSizeHeader);
2453 
2454 DWORD
2455 NTAPI
2456 NtUserGetRawInputData(
2457     HRAWINPUT hRawInput,
2458     UINT uiCommand,
2459     LPVOID pData,
2460     PUINT pcbSize,
2461     UINT cbSizeHeader);
2462 
2463 DWORD
2464 NTAPI
2465 NtUserGetRawInputDeviceInfo(
2466     HANDLE hDevice,
2467     UINT uiCommand,
2468     LPVOID pData,
2469     PUINT pcbSize);
2470 
2471 DWORD
2472 NTAPI
2473 NtUserGetRawInputDeviceList(
2474     PRAWINPUTDEVICELIST pRawInputDeviceList,
2475     PUINT puiNumDevices,
2476     UINT cbSize);
2477 
2478 DWORD
2479 NTAPI
2480 NtUserGetRegisteredRawInputDevices(
2481     PRAWINPUTDEVICE pRawInputDevices,
2482     PUINT puiNumDevices,
2483     UINT cbSize);
2484 
2485 BOOL
2486 NTAPI
2487 NtUserGetScrollBarInfo(
2488     HWND hWnd,
2489     LONG idObject,
2490     PSCROLLBARINFO psbi);
2491 
2492 HDESK
2493 NTAPI
2494 NtUserGetThreadDesktop(
2495     DWORD dwThreadId,
2496     HDESK hConsoleDesktop);
2497 
2498 enum ThreadStateRoutines
2499 {
2500     THREADSTATE_FOCUSWINDOW = 0,
2501     THREADSTATE_ACTIVEWINDOW,
2502     THREADSTATE_CAPTUREWINDOW,
2503     THREADSTATE_DEFAULTIMEWINDOW,
2504     THREADSTATE_DEFAULTINPUTCONTEXT,
2505     THREADSTATE_GETINPUTSTATE,
2506     THREADSTATE_GETCURSOR,
2507     THREADSTATE_CHANGEBITS,
2508     THREADSTATE_UPTIMELASTREAD,
2509     THREADSTATE_GETMESSAGEEXTRAINFO,
2510     THREADSTATE_INSENDMESSAGE,
2511     THREADSTATE_GETMESSAGETIME,
2512     THREADSTATE_FOREGROUNDTHREAD,
2513     THREADSTATE_IMECOMPATFLAGS,
2514     THREADSTATE_OLDKEYBOARDLAYOUT,
2515     THREADSTATE_ISWINLOGON,
2516     THREADSTATE_ISWINLOGON2,
2517     THREADSTATE_CHECKCONIME,
2518     THREADSTATE_GETTHREADINFO,
2519     THREADSTATE_PROGMANWINDOW, /* FIXME: Delete this HACK */
2520     THREADSTATE_TASKMANWINDOW, /* FIXME: Delete this HACK */
2521 };
2522 
2523 DWORD_PTR
2524 NTAPI
2525 NtUserGetThreadState(
2526     DWORD Routine);
2527 
2528 BOOLEAN
2529 NTAPI
2530 NtUserGetTitleBarInfo(
2531     HWND hwnd,
2532     PTITLEBARINFO pti);
2533 
2534 BOOL
2535 NTAPI
2536 NtUserGetUpdateRect(
2537     HWND hWnd,
2538     LPRECT lpRect,
2539     BOOL fErase);
2540 
2541 INT
2542 NTAPI
2543 NtUserGetUpdateRgn(
2544     HWND hWnd,
2545     HRGN hRgn,
2546     BOOL bErase);
2547 
2548 HDC
2549 NTAPI
2550 NtUserGetWindowDC(
2551     HWND hWnd);
2552 
2553 BOOL
2554 NTAPI
2555 NtUserGetWindowPlacement(
2556     HWND hWnd,
2557     WINDOWPLACEMENT *lpwndpl);
2558 
2559 PCLS
2560 NTAPI
2561 NtUserGetWOWClass(
2562     HINSTANCE hInstance,
2563     PUNICODE_STRING ClassName);
2564 
2565 DWORD
2566 NTAPI
2567 NtUserHardErrorControl(
2568     DWORD dwUnknown1,
2569     DWORD dwUnknown2,
2570     DWORD dwUnknown3);
2571 
2572 BOOL
2573 NTAPI
2574 NtUserImpersonateDdeClientWindow(
2575     HWND hWndClient,
2576     HWND hWndServer);
2577 
2578 NTSTATUS
2579 NTAPI
2580 NtUserInitialize(
2581     DWORD dwWinVersion,
2582     HANDLE hPowerRequestEvent,
2583     HANDLE hMediaRequestEvent);
2584 
2585 NTSTATUS
2586 NTAPI
2587 NtUserInitializeClientPfnArrays(
2588     PPFNCLIENT pfnClientA,
2589     PPFNCLIENT pfnClientW,
2590     PPFNCLIENTWORKER pfnClientWorker,
2591     HINSTANCE hmodUser);
2592 
2593 DWORD
2594 NTAPI
2595 NtUserInitTask(
2596     DWORD Unknown0,
2597     DWORD Unknown1,
2598     DWORD Unknown2,
2599     DWORD Unknown3,
2600     DWORD Unknown4,
2601     DWORD Unknown5,
2602     DWORD Unknown6,
2603     DWORD Unknown7,
2604     DWORD Unknown8,
2605     DWORD Unknown9,
2606     DWORD Unknown10,
2607     DWORD Unknown11);
2608 
2609 INT
2610 NTAPI
2611 NtUserInternalGetWindowText(
2612     HWND hWnd,
2613     LPWSTR lpString,
2614     INT nMaxCount);
2615 
2616 BOOL
2617 NTAPI
2618 NtUserInvalidateRect(
2619     HWND hWnd,
2620     CONST RECT *lpRect,
2621     BOOL bErase);
2622 
2623 BOOL
2624 NTAPI
2625 NtUserInvalidateRgn(
2626     HWND hWnd,
2627     HRGN hRgn,
2628     BOOL bErase);
2629 
2630 BOOL
2631 NTAPI
2632 NtUserIsClipboardFormatAvailable(
2633     UINT format);
2634 
2635 BOOL
2636 NTAPI
2637 NtUserKillTimer(
2638     HWND hWnd,
2639     UINT_PTR uIDEvent);
2640 
2641 HKL
2642 NTAPI
2643 NtUserLoadKeyboardLayoutEx(
2644     IN HANDLE hFile,
2645     IN DWORD offTable,
2646     IN PVOID pTables,
2647     IN HKL hOldKL,
2648     IN PUNICODE_STRING puszKLID,
2649     IN DWORD dwNewKL,
2650     IN UINT Flags);
2651 
2652 BOOL
2653 NTAPI
2654 NtUserLockWindowStation(
2655     HWINSTA hWindowStation);
2656 
2657 BOOL
2658 NTAPI
2659 NtUserLockWindowUpdate(
2660     HWND hWnd);
2661 
2662 BOOL
2663 NTAPI
2664 NtUserLockWorkStation(VOID);
2665 
2666 UINT
2667 NTAPI
2668 NtUserMapVirtualKeyEx(
2669     UINT keyCode,
2670     UINT transType,
2671     DWORD keyboardId,
2672     HKL dwhkl);
2673 
2674 typedef struct tagDOSENDMESSAGE
2675 {
2676     UINT uFlags;
2677     UINT uTimeout;
2678     ULONG_PTR Result;
2679 }
2680 DOSENDMESSAGE, *PDOSENDMESSAGE;
2681 
2682 BOOL
2683 NTAPI
2684 NtUserMessageCall(
2685     HWND hWnd,
2686     UINT Msg,
2687     WPARAM wParam,
2688     LPARAM lParam,
2689     ULONG_PTR ResultInfo,
2690     DWORD dwType, /* FNID_XX types */
2691     BOOL Ansi);
2692 
2693 DWORD
2694 NTAPI
2695 NtUserMinMaximize(
2696     HWND hWnd,
2697     UINT cmd, /* Wine SW_ commands */
2698     BOOL Hide);
2699 
2700 DWORD
2701 NTAPI
2702 NtUserMNDragLeave(VOID);
2703 
2704 DWORD
2705 NTAPI
2706 NtUserMNDragOver(
2707     DWORD Unknown0,
2708     DWORD Unknown1);
2709 
2710 DWORD
2711 NTAPI
2712 NtUserModifyUserStartupInfoFlags(
2713     DWORD Unknown0,
2714     DWORD Unknown1);
2715 
2716 BOOL
2717 NTAPI
2718 NtUserMoveWindow(
2719     HWND hWnd,
2720     int X,
2721     int Y,
2722     int nWidth,
2723     int nHeight,
2724     BOOL bRepaint
2725 );
2726 
2727 DWORD
2728 NTAPI
2729 NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion);
2730 
2731 BOOL
2732 NTAPI
2733 NtUserNotifyProcessCreate(
2734     HANDLE NewProcessId,
2735     HANDLE ParentThreadId,
2736     ULONG dwUnknown,
2737     ULONG CreateFlags);
2738 
2739 VOID
2740 NTAPI
2741 NtUserNotifyWinEvent(
2742     DWORD Event,
2743     HWND hWnd,
2744     LONG idObject,
2745     LONG idChild);
2746 
2747 BOOL
2748 NTAPI
2749 NtUserOpenClipboard(
2750     HWND hWnd,
2751     DWORD Unknown1);
2752 
2753 HDESK
2754 NTAPI
2755 NtUserOpenDesktop(
2756     POBJECT_ATTRIBUTES ObjectAttributes,
2757     DWORD dwFlags,
2758     ACCESS_MASK dwDesiredAccess);
2759 
2760 HDESK
2761 NTAPI
2762 NtUserOpenInputDesktop(
2763     DWORD dwFlags,
2764     BOOL fInherit,
2765     ACCESS_MASK dwDesiredAccess);
2766 
2767 HWINSTA
2768 NTAPI
2769 NtUserOpenWindowStation(
2770     POBJECT_ATTRIBUTES ObjectAttributes,
2771     ACCESS_MASK dwDesiredAccess);
2772 
2773 BOOL
2774 NTAPI
2775 NtUserPaintDesktop(
2776     HDC hDC);
2777 
2778 DWORD
2779 NTAPI
2780 NtUserPaintMenuBar(
2781     HWND hWnd,
2782     HDC hDC,
2783     ULONG left,    // x,
2784     ULONG right,   // width, // Scale the edge thickness, offset?
2785     ULONG top,     // y,
2786     BOOL bActive); // DWORD Flags); DC_ACTIVE or WS_ACTIVECAPTION, by checking WNDS_ACTIVEFRAME and foreground.
2787 
2788 BOOL
2789 APIENTRY
2790 NtUserPeekMessage(
2791     PMSG pMsg,
2792     HWND hWnd,
2793     UINT MsgFilterMin,
2794     UINT MsgFilterMax,
2795     UINT RemoveMsg);
2796 
2797 BOOL
2798 NTAPI
2799 NtUserPostMessage(
2800     HWND hWnd,
2801     UINT Msg,
2802     WPARAM wParam,
2803     LPARAM lParam);
2804 
2805 BOOL
2806 NTAPI
2807 NtUserPostThreadMessage(
2808     DWORD idThread,
2809     UINT Msg,
2810     WPARAM wParam,
2811     LPARAM lParam);
2812 
2813 BOOL
2814 NTAPI
2815 NtUserPrintWindow(
2816     HWND hwnd,
2817     HDC hdcBlt,
2818     UINT nFlags);
2819 
2820 NTSTATUS
2821 NTAPI
2822 NtUserProcessConnect(
2823     IN HANDLE ProcessHandle,
2824     OUT PUSERCONNECT pUserConnect,
2825     IN ULONG Size); /* sizeof(USERCONNECT) */
2826 
2827 NTSTATUS
2828 NTAPI
2829 NtUserQueryInformationThread(
2830     IN HANDLE ThreadHandle,
2831     IN USERTHREADINFOCLASS ThreadInformationClass,
2832     OUT PVOID ThreadInformation,
2833     IN ULONG ThreadInformationLength);
2834 
2835 DWORD_PTR
2836 NTAPI
2837 NtUserQueryInputContext(
2838     HIMC hIMC,
2839     DWORD dwType);
2840 
2841 DWORD
2842 NTAPI
2843 NtUserQuerySendMessage(
2844     DWORD Unknown0);
2845 
2846 DWORD
2847 NTAPI
2848 NtUserQueryUserCounters(
2849     DWORD Unknown0,
2850     DWORD Unknown1,
2851     DWORD Unknown2,
2852     DWORD Unknown3,
2853     DWORD Unknown4);
2854 
2855 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2856 #define QUERY_WINDOW_UNIQUE_THREAD_ID  0x01
2857 #define QUERY_WINDOW_ACTIVE            0x02
2858 #define QUERY_WINDOW_FOCUS             0x03
2859 #define QUERY_WINDOW_ISHUNG            0x04
2860 #define QUERY_WINDOW_REAL_ID           0x05
2861 #define QUERY_WINDOW_FOREGROUND        0x06
2862 #define QUERY_WINDOW_DEFAULT_IME       0x07
2863 #define QUERY_WINDOW_DEFAULT_ICONTEXT  0x08
2864 #define QUERY_WINDOW_ACTIVE_IME        0x09
2865 
2866 DWORD_PTR
2867 NTAPI
2868 NtUserQueryWindow(
2869     HWND hWnd,
2870     DWORD Index);
2871 
2872 BOOL
2873 NTAPI
2874 NtUserRealInternalGetMessage(
2875     LPMSG lpMsg,
2876     HWND hWnd,
2877     UINT wMsgFilterMin,
2878     UINT wMsgFilterMax,
2879     UINT wRemoveMsg,
2880     BOOL bGMSG);
2881 
2882 HWND
2883 NTAPI
2884 NtUserRealChildWindowFromPoint(
2885     HWND Parent,
2886     LONG x,
2887     LONG y);
2888 
2889 BOOL
2890 NTAPI
2891 NtUserRealWaitMessageEx(
2892     DWORD dwWakeMask,
2893     UINT uTimeout);
2894 
2895 BOOL
2896 NTAPI
2897 NtUserRedrawWindow(
2898     HWND hWnd,
2899     CONST RECT *lprcUpdate,
2900     HRGN hrgnUpdate,
2901     UINT flags);
2902 
2903 RTL_ATOM
2904 NTAPI
2905 NtUserRegisterClassExWOW(
2906     WNDCLASSEXW* lpwcx,
2907     PUNICODE_STRING pustrClassName,
2908     PUNICODE_STRING pustrCVersion,
2909     PCLSMENUNAME pClassMenuName,
2910     DWORD fnID,
2911     DWORD Flags,
2912     LPDWORD pWow);
2913 
2914 BOOL
2915 NTAPI
2916 NtUserRegisterRawInputDevices(
2917     IN PCRAWINPUTDEVICE pRawInputDevices,
2918     IN UINT uiNumDevices,
2919     IN UINT cbSize);
2920 
2921 BOOL
2922 NTAPI
2923 NtUserRegisterUserApiHook(
2924     PUNICODE_STRING m_dllname1,
2925     PUNICODE_STRING m_funname1,
2926     DWORD dwUnknown3,
2927     DWORD dwUnknown4);
2928 
2929 BOOL
2930 NTAPI
2931 NtUserRegisterHotKey(
2932     HWND hWnd,
2933     int id,
2934     UINT fsModifiers,
2935     UINT vk);
2936 
2937 DWORD
2938 NTAPI
2939 NtUserRegisterTasklist(
2940     DWORD Unknown0);
2941 
2942 UINT
2943 NTAPI
2944 NtUserRegisterWindowMessage(
2945     PUNICODE_STRING MessageName);
2946 
2947 DWORD
2948 NTAPI
2949 NtUserRemoteConnect(
2950     DWORD dwUnknown1,
2951     DWORD dwUnknown2,
2952     DWORD dwUnknown3);
2953 
2954 DWORD
2955 NTAPI
2956 NtUserRemoteRedrawRectangle(
2957     DWORD dwUnknown1,
2958     DWORD dwUnknown2,
2959     DWORD dwUnknown3,
2960     DWORD dwUnknown4);
2961 
2962 DWORD
2963 NTAPI
2964 NtUserRemoteRedrawScreen(VOID);
2965 
2966 DWORD
2967 NTAPI
2968 NtUserRemoteStopScreenUpdates(VOID);
2969 
2970 HANDLE
2971 NTAPI
2972 NtUserRemoveProp(
2973     HWND hWnd,
2974     ATOM Atom);
2975 
2976 HDESK
2977 NTAPI
2978 NtUserResolveDesktop(
2979     IN HANDLE ProcessHandle,
2980     IN PUNICODE_STRING DesktopPath,
2981     IN BOOL bInherit,
2982     OUT HWINSTA* phWinSta);
2983 
2984 DWORD
2985 NTAPI
2986 NtUserResolveDesktopForWOW(
2987     DWORD Unknown0);
2988 
2989 BOOL
2990 NTAPI
2991 NtUserSBGetParms(
2992     HWND hwnd,
2993     int fnBar,
2994     PSBDATA pSBData,
2995     LPSCROLLINFO lpsi);
2996 
2997 BOOL
2998 NTAPI
2999 NtUserScrollDC(
3000     HDC hDC,
3001     int dx,
3002     int dy,
3003     CONST RECT *lprcScroll,
3004     CONST RECT *lprcClip ,
3005     HRGN hrgnUpdate,
3006     LPRECT lprcUpdate);
3007 
3008 DWORD
3009 NTAPI
3010 NtUserScrollWindowEx(
3011     HWND hWnd,
3012     INT dx,
3013     INT dy,
3014     const RECT *rect,
3015     const RECT *clipRect,
3016     HRGN hrgnUpdate,
3017     LPRECT rcUpdate,
3018     UINT flags);
3019 
3020 UINT
3021 NTAPI
3022 NtUserSendInput(
3023     UINT nInputs,
3024     LPINPUT pInput,
3025     INT cbSize);
3026 
3027 HWND
3028 NTAPI
3029 NtUserSetActiveWindow(
3030     HWND Wnd);
3031 
3032 BOOL
3033 NTAPI
3034 NtUserSetAppImeLevel(
3035     HWND hWnd,
3036     DWORD dwLevel);
3037 
3038 HWND
3039 NTAPI
3040 NtUserSetCapture(
3041     HWND Wnd);
3042 
3043 ULONG_PTR
3044 NTAPI
3045 NtUserSetClassLong(
3046     HWND hWnd,
3047     INT Offset,
3048     ULONG_PTR dwNewLong,
3049     BOOL Ansi);
3050 
3051 WORD
3052 NTAPI
3053 NtUserSetClassWord(
3054     HWND hWnd,
3055     INT nIndex,
3056     WORD wNewWord);
3057 
3058 HANDLE
3059 NTAPI
3060 NtUserSetClipboardData(
3061     UINT fmt,
3062     HANDLE hMem,
3063     PSETCLIPBDATA scd);
3064 
3065 HWND
3066 NTAPI
3067 NtUserSetClipboardViewer(
3068     HWND hWndNewViewer);
3069 
3070 HPALETTE
3071 NTAPI
3072 NtUserSelectPalette(
3073     HDC hDC,
3074     HPALETTE hpal,
3075     BOOL ForceBackground);
3076 
3077 DWORD
3078 NTAPI
3079 NtUserSetConsoleReserveKeys(
3080     DWORD Unknown0,
3081     DWORD Unknown1);
3082 
3083 HCURSOR
3084 NTAPI
3085 NtUserSetCursor(
3086     HCURSOR hCursor);
3087 
3088 BOOL
3089 NTAPI
3090 NtUserSetCursorContents(
3091     HANDLE Handle,
3092     PICONINFO IconInfo);
3093 
3094 BOOL
3095 NTAPI
3096 NtUserSetCursorIconData(
3097     _In_ HCURSOR hCursor,
3098     _In_opt_ PUNICODE_STRING pustrModule,
3099     _In_opt_ PUNICODE_STRING puSrcName,
3100     _In_ const CURSORDATA *pCursorData);
3101 
3102 typedef struct _tagFINDEXISTINGCURICONPARAM
3103 {
3104     BOOL bIcon;
3105     LONG cx;
3106     LONG cy;
3107 } FINDEXISTINGCURICONPARAM;
3108 
3109 HICON
3110 NTAPI
3111 NtUserFindExistingCursorIcon(
3112     _In_ PUNICODE_STRING pustrModule,
3113     _In_ PUNICODE_STRING pustrRsrc,
3114     _In_ FINDEXISTINGCURICONPARAM *param);
3115 
3116 LONG_PTR
3117 APIENTRY
3118 NtUserSetClassLongPtr(
3119     VOID);
3120 
3121 DWORD
3122 NTAPI
3123 NtUserSetDbgTag(
3124     DWORD Unknown0,
3125     DWORD Unknown1);
3126 
3127 DWORD
3128 APIENTRY
3129 NtUserSetDbgTagCount(
3130     DWORD Unknown0);
3131 
3132 HWND
3133 NTAPI
3134 NtUserSetFocus(
3135     HWND hWnd);
3136 
3137 BOOL
3138 NTAPI
3139 NtUserSetImeHotKey(
3140     DWORD dwHotKeyId,
3141     UINT uModifiers,
3142     UINT uVirtualKey,
3143     HKL hKL,
3144     DWORD dwAction);
3145 
3146 BOOL
3147 NTAPI
3148 NtUserSetImeInfoEx(
3149     PIMEINFOEX pImeInfoEx);
3150 
3151 BOOL
3152 NTAPI
3153 NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus);
3154 
3155 DWORD
3156 NTAPI
3157 NtUserSetInformationProcess(
3158     DWORD dwUnknown1,
3159     DWORD dwUnknown2,
3160     DWORD dwUnknown3,
3161     DWORD dwUnknown4);
3162 
3163 NTSTATUS
3164 NTAPI
3165 NtUserSetInformationThread(
3166     IN HANDLE ThreadHandle,
3167     IN USERTHREADINFOCLASS ThreadInformationClass,
3168     IN PVOID ThreadInformation,
3169     IN ULONG ThreadInformationLength);
3170 
3171 DWORD
3172 NTAPI
3173 NtUserSetInternalWindowPos(
3174     HWND hwnd,
3175     UINT showCmd,
3176     LPRECT rect,
3177     LPPOINT pt);
3178 
3179 BOOL
3180 NTAPI
3181 NtUserSetKeyboardState(
3182     LPBYTE lpKeyState);
3183 
3184 BOOL
3185 NTAPI
3186 NtUserSetLayeredWindowAttributes(
3187     HWND hwnd,
3188     COLORREF crKey,
3189     BYTE bAlpha,
3190     DWORD dwFlags);
3191 
3192 BOOL
3193 NTAPI
3194 NtUserSetLogonNotifyWindow(
3195     HWND hWnd);
3196 
3197 BOOL
3198 NTAPI
3199 NtUserSetObjectInformation(
3200     HANDLE hObject,
3201     DWORD nIndex,
3202     PVOID pvInformation,
3203     DWORD nLength);
3204 
3205 HWND
3206 NTAPI
3207 NtUserSetParent(
3208     HWND hWndChild,
3209     HWND hWndNewParent);
3210 
3211 BOOL
3212 NTAPI
3213 NtUserSetProcessWindowStation(
3214     HWINSTA hWindowStation);
3215 
3216 BOOL
3217 NTAPI
3218 NtUserSetProp(
3219     HWND hWnd,
3220     ATOM Atom,
3221     HANDLE Data);
3222 
3223 DWORD
3224 NTAPI
3225 NtUserSetRipFlags(
3226     DWORD Unknown0);
3227 
3228 DWORD
3229 NTAPI
3230 NtUserSetScrollInfo(
3231     HWND hwnd,
3232     int fnBar,
3233     LPCSCROLLINFO lpsi,
3234     BOOL bRedraw);
3235 
3236 BOOL
3237 NTAPI
3238 NtUserSetShellWindowEx(
3239     HWND hwndShell,
3240     HWND hwndShellListView);
3241 
3242 BOOL
3243 NTAPI
3244 NtUserSetSysColors(
3245     int cElements,
3246     IN CONST INT *lpaElements,
3247     IN CONST COLORREF *lpaRgbValues,
3248     FLONG Flags);
3249 
3250 BOOL
3251 NTAPI
3252 NtUserSetSystemCursor(
3253     HCURSOR hcur,
3254     DWORD id);
3255 
3256 BOOL
3257 NTAPI
3258 NtUserSetThreadDesktop(
3259     HDESK hDesktop);
3260 
3261 DWORD
3262 NTAPI
3263 NtUserSetThreadState(
3264     DWORD Unknown0,
3265     DWORD Unknown1);
3266 
3267 UINT_PTR
3268 NTAPI
3269 NtUserSetSystemTimer(
3270     HWND hWnd,
3271     UINT_PTR nIDEvent,
3272     UINT uElapse,
3273     TIMERPROC lpTimerFunc);
3274 
3275 DWORD
3276 NTAPI
3277 NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL);
3278 
3279 UINT_PTR
3280 NTAPI
3281 NtUserSetTimer(
3282     HWND hWnd,
3283     UINT_PTR nIDEvent,
3284     UINT uElapse,
3285     TIMERPROC lpTimerFunc);
3286 
3287 BOOL
3288 NTAPI
3289 NtUserSetWindowFNID(
3290     HWND hWnd,
3291     WORD fnID);
3292 
3293 LONG
3294 NTAPI
3295 NtUserSetWindowLong(
3296     HWND hWnd,
3297     DWORD Index,
3298     LONG NewValue,
3299     BOOL Ansi);
3300 
3301 #ifdef _WIN64
3302 LONG_PTR
3303 NTAPI
3304 NtUserSetWindowLongPtr(
3305     HWND hWnd,
3306     DWORD Index,
3307     LONG_PTR NewValue,
3308     BOOL Ansi);
3309 #else
3310 #define NtUserSetWindowLongPtr NtUserSetWindowLong
3311 #endif // _WIN64
3312 
3313 BOOL
3314 NTAPI
3315 NtUserSetWindowPlacement(
3316     HWND hWnd,
3317     WINDOWPLACEMENT *lpwndpl);
3318 
3319 BOOL
3320 NTAPI
3321 NtUserSetWindowPos(
3322     HWND hWnd,
3323     HWND hWndInsertAfter,
3324     int X,
3325     int Y,
3326     int cx,
3327     int cy,
3328     UINT uFlags);
3329 
3330 INT
3331 NTAPI
3332 NtUserSetWindowRgn(
3333     HWND hWnd,
3334     HRGN hRgn,
3335     BOOL bRedraw);
3336 
3337 HHOOK
3338 NTAPI
3339 NtUserSetWindowsHookAW(
3340     int idHook,
3341     HOOKPROC lpfn,
3342     BOOL Ansi);
3343 
3344 HHOOK
3345 NTAPI
3346 NtUserSetWindowsHookEx(
3347     HINSTANCE Mod,
3348     PUNICODE_STRING ModuleName,
3349     DWORD ThreadId,
3350     int HookId,
3351     HOOKPROC HookProc,
3352     BOOL Ansi);
3353 
3354 BOOL
3355 NTAPI
3356 NtUserSetWindowStationUser(
3357     IN HWINSTA hWindowStation,
3358     IN PLUID pluid,
3359     IN PSID psid OPTIONAL,
3360     IN DWORD size);
3361 
3362 WORD
3363 NTAPI
3364 NtUserSetWindowWord(
3365     HWND hWnd,
3366     INT Index,
3367     WORD NewVal);
3368 
3369 HWINEVENTHOOK
3370 NTAPI
3371 NtUserSetWinEventHook(
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 
3381 BOOL
3382 NTAPI
3383 NtUserShowCaret(
3384     HWND hWnd);
3385 
3386 BOOL
3387 NTAPI
3388 NtUserHideCaret(
3389     HWND hWnd);
3390 
3391 DWORD
3392 NTAPI
3393 NtUserShowScrollBar(
3394     HWND hWnd,
3395     int wBar,
3396     DWORD bShow);
3397 
3398 BOOL
3399 NTAPI
3400 NtUserShowWindow(
3401     HWND hWnd,
3402     LONG nCmdShow);
3403 
3404 BOOL
3405 NTAPI
3406 NtUserShowWindowAsync(
3407     HWND hWnd,
3408     LONG nCmdShow);
3409 
3410 BOOL
3411 NTAPI
3412 NtUserSoundSentry(VOID);
3413 
3414 BOOL
3415 NTAPI
3416 NtUserSwitchDesktop(
3417     HDESK hDesktop);
3418 
3419 BOOL
3420 NTAPI
3421 NtUserSystemParametersInfo(
3422     UINT uiAction,
3423     UINT uiParam,
3424     PVOID pvParam,
3425     UINT fWinIni);
3426 
3427 DWORD
3428 NTAPI
3429 NtUserTestForInteractiveUser(
3430     DWORD dwUnknown1);
3431 
3432 INT
3433 NTAPI
3434 NtUserToUnicodeEx(
3435     UINT wVirtKey,
3436     UINT wScanCode,
3437     PBYTE lpKeyState,
3438     LPWSTR pwszBuff,
3439     int cchBuff,
3440     UINT wFlags,
3441     HKL dwhkl);
3442 
3443 BOOL
3444 NTAPI
3445 NtUserTrackMouseEvent(
3446     LPTRACKMOUSEEVENT lpEventTrack);
3447 
3448 int
3449 NTAPI
3450 NtUserTranslateAccelerator(
3451     HWND Window,
3452     HACCEL Table,
3453     LPMSG Message);
3454 
3455 BOOL
3456 NTAPI
3457 NtUserTranslateMessage(
3458     LPMSG lpMsg,
3459     UINT flags );
3460 
3461 BOOL
3462 NTAPI
3463 NtUserUnhookWindowsHookEx(
3464     HHOOK Hook);
3465 
3466 BOOL
3467 NTAPI
3468 NtUserUnhookWinEvent(
3469     HWINEVENTHOOK hWinEventHook);
3470 
3471 BOOL
3472 NTAPI
3473 NtUserUnloadKeyboardLayout(
3474     HKL hKl);
3475 
3476 BOOL
3477 NTAPI
3478 NtUserUnlockWindowStation(
3479     HWINSTA hWindowStation);
3480 
3481 BOOL
3482 NTAPI
3483 NtUserUnregisterClass(
3484     PUNICODE_STRING ClassNameOrAtom,
3485     HINSTANCE hInstance,
3486     PCLSMENUNAME pClassMenuName);
3487 
3488 BOOL
3489 NTAPI
3490 NtUserUnregisterHotKey(
3491     HWND hWnd,
3492     int id);
3493 
3494 BOOL
3495 NTAPI
3496 NtUserUnregisterUserApiHook(VOID);
3497 
3498 BOOL
3499 NTAPI
3500 NtUserUpdateInputContext(
3501     HIMC hIMC,
3502     DWORD dwType,
3503     DWORD_PTR dwValue);
3504 
3505 DWORD
3506 NTAPI
3507 NtUserUpdateInstance(
3508     DWORD Unknown0,
3509     DWORD Unknown1,
3510     DWORD Unknown2);
3511 
3512 BOOL
3513 NTAPI
3514 NtUserUpdateLayeredWindow(
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 
3526 BOOL
3527 NTAPI
3528 NtUserUpdatePerUserSystemParameters(
3529     DWORD dwReserved,
3530     BOOL bEnable);
3531 
3532 BOOL
3533 NTAPI
3534 NtUserUserHandleGrantAccess(
3535     IN HANDLE hUserHandle,
3536     IN HANDLE hJob,
3537     IN BOOL bGrant);
3538 
3539 BOOL
3540 NTAPI
3541 NtUserValidateHandleSecure(
3542     HANDLE hHdl);
3543 
3544 BOOL
3545 NTAPI
3546 NtUserValidateRect(
3547     HWND hWnd,
3548     CONST RECT *lpRect);
3549 
3550 BOOL
3551 APIENTRY
3552 NtUserValidateTimerCallback(
3553     LPARAM lParam);
3554 
3555 DWORD
3556 NTAPI
3557 NtUserVkKeyScanEx(
3558     WCHAR wChar,
3559     HKL KeyboardLayout,
3560     BOOL bUsehHK);
3561 
3562 DWORD
3563 NTAPI
3564 NtUserWaitForInputIdle(
3565     IN HANDLE hProcess,
3566     IN DWORD dwMilliseconds,
3567     IN BOOL bSharedWow); /* Always FALSE */
3568 
3569 DWORD
3570 NTAPI
3571 NtUserWaitForMsgAndEvent(
3572     DWORD Unknown0);
3573 
3574 BOOL
3575 NTAPI
3576 NtUserWaitMessage(VOID);
3577 
3578 DWORD
3579 NTAPI
3580 NtUserWin32PoolAllocationStats(
3581     DWORD Unknown0,
3582     DWORD Unknown1,
3583     DWORD Unknown2,
3584     DWORD Unknown3,
3585     DWORD Unknown4,
3586     DWORD Unknown5);
3587 
3588 HWND
3589 NTAPI
3590 NtUserWindowFromPoint(
3591     LONG X,
3592     LONG Y);
3593 
3594 DWORD
3595 NTAPI
3596 NtUserYieldTask(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 
3619 BOOL
3620 NTAPI
3621 NtUserGetMonitorInfo(
3622     IN HMONITOR hMonitor,
3623     OUT LPMONITORINFO pMonitorInfo);
3624 
3625 /* Should be done in usermode */
3626 
3627 HMONITOR
3628 NTAPI
3629 NtUserMonitorFromPoint(
3630     IN POINT point,
3631     IN DWORD dwFlags);
3632 
3633 HMONITOR
3634 NTAPI
3635 NtUserMonitorFromRect(
3636     IN LPCRECT pRect,
3637     IN DWORD dwFlags);
3638 
3639 HMONITOR
3640 NTAPI
3641 NtUserMonitorFromWindow(
3642     IN HWND hWnd,
3643     IN DWORD dwFlags);
3644 
3645 typedef struct _SETSCROLLBARINFO
3646 {
3647     int nTrackPos;
3648     int reserved;
3649     DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
3650 } SETSCROLLBARINFO, *PSETSCROLLBARINFO;
3651 
3652 BOOL
3653 NTAPI
3654 NtUserSetScrollBarInfo(
3655     HWND hwnd,
3656     LONG idObject,
3657     SETSCROLLBARINFO *info);
3658 
3659 #endif /* __WIN32K_NTUSER_H */
3660 
3661 /* EOF */
3662