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