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