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