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