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