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