1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
9 typedef enum _USERTHREADINFOCLASS
11 UserThreadShutdownInformation
,
14 UserThreadWOWInformation
,
16 UserThreadInitiateShutdown
,
17 UserThreadEndShutdown
,
18 UserThreadUseActiveDesktop
,
20 UserThreadRestoreDesktop
,
22 } USERTHREADINFOCLASS
;
24 typedef struct _LARGE_UNICODE_STRING
27 ULONG MaximumLength
:31;
30 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
32 typedef struct _LARGE_STRING
35 ULONG MaximumLength
:31;
38 } LARGE_STRING
, *PLARGE_STRING
;
40 // Based on ANSI_STRING
42 typedef struct _LARGE_ANSI_STRING
45 ULONG MaximumLength
:31;
48 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
50 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
51 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
52 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
54 typedef struct _DESKTOPINFO
60 struct tagHOOK
* aphkStart
[16];
71 UINT LastInputWasKbd
: 1;
75 WCHAR szDesktopName
[1];
76 } DESKTOPINFO
, *PDESKTOPINFO
;
78 #define CTI_INSENDMESSAGE 0x0002
80 typedef struct _CLIENTTHREADINFO
85 WORD fsWakeBitsJournal
;
87 ULONG tickLastMsgChecked
;
89 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
97 typedef struct _THROBJHEAD
101 } THROBJHEAD
, *PTHROBJHEAD
;
103 typedef struct _THRDESKHEAD
106 struct _DESKTOP
*rpdesk
;
108 } THRDESKHEAD
, *PTHRDESKHEAD
;
110 typedef struct _PROCDESKHEAD
114 struct _DESKTOP
*rpdesk
;
116 } PROCDESKHEAD
, *PPROCDESKHEAD
;
118 typedef struct _PROCMARKHEAD
123 } PROCMARKHEAD
, *PPROCMARKHEAD
;
125 #define UserHMGetHandle(obj) ((obj)->head.h)
127 /* Window Client Information structure */
130 typedef struct tagHOOK
133 LIST_ENTRY Chain
; /* Hook chain entry */
134 struct _ETHREAD
* Thread
; /* Thread owning the hook */
135 int HookId
; /* Hook table index */
136 HOOKPROC Proc
; /* Hook function */
137 BOOLEAN Ansi
; /* Is it an Ansi hook? */
138 ULONG Flags
; /* Some internal flags */
139 UNICODE_STRING ModuleName
; /* Module name for global hooks */
142 /* THREADINFO Flags */
143 #define TIF_INCLEANUP 0x00000001
144 #define TIF_16BIT 0x00000002
145 #define TIF_SYSTEMTHREAD 0x00000004
146 #define TIF_CSRSSTHREAD 0x00000008
147 #define TIF_TRACKRECTVISIBLE 0x00000010
148 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
149 #define TIF_DONTATTACHQUEUE 0x00000040
150 #define TIF_DONTJOURNALATTACH 0x00000080
151 #define TIF_WOW64 0x00000100
152 #define TIF_INACTIVATEAPPMSG 0x00000200
153 #define TIF_SPINNING 0x00000400
154 #define TIF_PALETTEAWARE 0x00000800
155 #define TIF_SHAREDWOW 0x00001000
156 #define TIF_FIRSTIDLE 0x00002000
157 #define TIF_WAITFORINPUTIDLE 0x00004000
158 #define TIF_MOVESIZETRACKING 0x00008000
159 #define TIF_VDMAPP 0x00010000
160 #define TIF_DOSEMULATOR 0x00020000
161 #define TIF_GLOBALHOOKER 0x00040000
162 #define TIF_DELAYEDEVENT 0x00080000
163 #define TIF_MSGPOSCHANGED 0x00100000
164 #define TIF_SHUTDOWNCOMPLETE 0x00200000
165 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
166 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
167 #define TIF_GUITHREADINITIALIZED 0x02000000
168 #define TIF_DISABLEIME 0x04000000
169 #define TIF_INGETTEXTLENGTH 0x08000000
170 #define TIF_ANSILENGTH 0x10000000
171 #define TIF_DISABLEHOOKS 0x20000000
173 typedef struct _CALLBACKWND
177 } CALLBACKWND
, *PCALLBACKWND
;
179 #define CI_TRANSACTION 0x00000001
180 #define CI_QUEUEMSG 0x00000002
181 #define CI_WOW 0x00000004
182 #define CI_INITTHREAD 0x00000008
183 #define CI_CURTHPRHOOK 0x00000010
184 #define CI_CLASSESREGISTERED 0x00000020
185 #define CI_IMMACTIVATE 0x00000040
187 typedef struct _CLIENTINFO
193 DWORD dwCompatFlags2
;
194 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
195 PDESKTOPINFO pDeskInfo
;
196 ULONG_PTR ulClientDelta
;
199 CALLBACKWND CallbackWnd
;
201 INT cInDDEMLCallback
;
202 PCLIENTTHREADINFO pClientThreadInfo
;
203 ULONG_PTR dwHookData
;
206 DWORD dwAsyncKeyCache
;
207 BYTE afAsyncKeyState
[8];
208 BYTE afAsyncKeyStateRecentDow
[8];
213 LPDWORD lpdwRegisteredClasses
;
214 ULONG Win32ClientInfo3
[27];
215 /* It's just a pointer reference not to be used w the structure in user space. */
217 } CLIENTINFO
, *PCLIENTINFO
;
219 /* Make sure it fits into the TEB */
220 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
222 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
224 /* Menu Item fType. */
225 #define MFT_RTOL 0x6000
227 typedef struct tagITEM
232 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
234 HANDLE hbmpUnchecked
;
235 USHORT
* lpstr
; /* Item text pointer. */
237 DWORD_PTR dwItemData
;
238 ULONG xItem
; /* Item position. left */
239 ULONG yItem
; /* " top */
240 ULONG cxItem
; /* Item Size Width */
241 ULONG cyItem
; /* " Height */
242 ULONG dxTab
; /* X position of text after Tab */
243 ULONG ulX
; /* underline.. start position */
244 ULONG ulWidth
; /* underline.. width */
245 HBITMAP hbmp
; /* bitmap */
246 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
247 INT cyBmp
; /* Height " */
250 typedef struct tagMENULIST
252 struct tagMENULIST
* pNext
;
253 struct tagMENU
* pMenu
;
254 } MENULIST
, *PMENULIST
;
256 /* Menu fFlags, upper byte is MNS_X style flags. */
257 #define MNF_POPUP 0x0001
258 #define MNF_UNDERLINE 0x0004
259 #define MNF_INACTIVE 0x0010
260 #define MNF_RTOL 0x0020
261 #define MNF_DESKTOPMN 0x0040
262 #define MNF_SYSDESKMN 0x0080
263 #define MNF_SYSSUBMENU 0x0100
265 typedef struct tagMENU
268 ULONG fFlags
; /* [Style flags | Menu flags] */
269 INT iItem
; /* nPos of selected item, if -1 not selected. */
270 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
271 UINT cItems
; /* Number of items in the menu */
272 ULONG cxMenu
; /* Width of the whole menu */
273 ULONG cyMenu
; /* Height of the whole menu */
274 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
275 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
276 PITEM rgItems
; /* Array of menu items */
277 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
278 DWORD dwContextHelpId
;
279 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
280 DWORD_PTR dwMenuData
; /* application defined value */
281 HBRUSH hbrBack
; /* brush for menu background */
282 INT iTop
; /* Current scroll position Top */
283 INT iMaxTop
; /* Current scroll position Max Top */
284 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
287 typedef struct _REGISTER_SYSCLASS
289 /* This is a reactos specific class used to initialize the
290 system window classes during user32 initialization */
299 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
301 typedef struct _CLSMENUNAME
303 LPSTR pszClientAnsiMenuName
;
304 LPWSTR pwszClientUnicodeMenuName
;
305 PUNICODE_STRING pusMenuName
;
306 } CLSMENUNAME
, *PCLSMENUNAME
;
308 typedef struct tagSBDATA
316 typedef struct tagSBINFO
325 UserGetCPDA2U
= 0x01, // " Unicode "
326 UserGetCPDU2A
= 0X02, // " Ansi "
327 UserGetCPDClass
= 0X10,
328 UserGetCPDWindow
= 0X20,
329 UserGetCPDDialog
= 0X40,
330 UserGetCPDWndtoCls
= 0X80
333 typedef struct _CALLPROCDATA
336 struct _CALLPROCDATA
*spcpdNext
;
337 WNDPROC pfnClientPrevious
;
339 } CALLPROCDATA
, *PCALLPROCDATA
;
341 #define CSF_SERVERSIDEPROC 0x0001
342 #define CSF_ANSIPROC 0x0002
343 #define CSF_WOWDEFERDESTROY 0x0004
344 #define CSF_SYSTEMCLASS 0x0008
345 #define CSF_WOWCLASS 0x0010
346 #define CSF_WOWEXTRA 0x0020
347 #define CSF_CACHEDSMICON 0x0040
348 #define CSF_WIN40COMPAT 0x0080
352 struct _CLS
*pclsNext
;
353 RTL_ATOM atomClassName
;
354 ATOM atomNVClassName
;
356 struct _DESKTOP
*rpdeskParent
;
359 PSTR lpszClientAnsiMenuName
; // For client use
360 PWSTR lpszClientUnicodeMenuName
; // " " "
361 PCALLPROCDATA spcpdFirst
;
362 struct _CLS
*pclsBase
;
363 struct _CLS
*pclsClone
;
364 ULONG cWndReferenceCount
;
370 HANDLE hIcon
; /* FIXME - Use pointer! */
372 HANDLE hCursor
; /* FIXME - Use pointer! */
374 HBRUSH hbrBackground
;
375 PWSTR lpszMenuName
; // kernel use
376 PSTR lpszAnsiClassName
; // "
377 HANDLE hIconSm
; /* FIXME - Use pointer! */
380 UINT Unicode
: 1; // !CSF_ANSIPROC
381 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
382 UINT MenuNameIsString
: 1;
387 typedef struct _SBINFOEX
389 SCROLLBARINFO ScrollBarInfo
;
390 SCROLLINFO ScrollInfo
;
391 } SBINFOEX
, *PSBINFOEX
;
393 // State Flags !Not Implemented!
394 #define WNDS_HASMENU 0X00000001
395 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
396 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
397 #define WNDS_HASCAPTION 0X00000008
398 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
399 #define WNDS_MSGBOX 0X00000020
400 #define WNDS_ACTIVEFRAME 0X00000040
401 #define WNDS_HASSPB 0X00000080
402 #define WNDS_NONCPAINT 0X00000100
403 #define WNDS_SENDERASEBACKGROUND 0X00000200
404 #define WNDS_ERASEBACKGROUND 0X00000400
405 #define WNDS_SENDNCPAINT 0X00000800
406 #define WNDS_INTERNALPAINT 0X00001000
407 #define WNDS_UPDATEDIRTY 0X00002000
408 #define WNDS_HIDDENPOPUP 0X00004000
409 #define WNDS_FORCEMENUDRAW 0X00008000
410 #define WNDS_DIALOGWINDOW 0X00010000
411 #define WNDS_HASCREATESTRUCTNAME 0X00020000
412 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
413 #define WNDS_ANSIWINDOWPROC 0x00080000
414 #define WNDS_BEGINGACTIVATED 0x00100000
415 #define WNDS_HASPALETTE 0x00200000
416 #define WNDS_PAINTNOTPROCESSED 0x00400000
417 #define WNDS_SYNCPAINTPENDING 0x00800000
418 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
419 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
420 #define WNDS_TOGGLETOPMOST 0x04000000
421 #define WNDS_REDRAWIFHUNG 0x08000000
422 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
423 #define WNDS_ANSICREATOR 0x20000000
424 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
425 #define WNDS_DESTROYED 0x80000000
427 // State2 Flags !Not Implemented!
428 #define WNDS2_WMPAINTSENT 0X00000001
429 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
430 #define WNDS2_STARTPAINT 0X00000004
431 #define WNDS2_OLDUI 0X00000008
432 #define WNDS2_HASCLIENTEDGE 0X00000010
433 #define WNDS2_BOTTOMMOST 0X00000020
434 #define WNDS2_FULLSCREEN 0X00000040
435 #define WNDS2_INDESTROY 0X00000080
436 #define WNDS2_WIN31COMPAT 0X00000100
437 #define WNDS2_WIN40COMPAT 0X00000200
438 #define WNDS2_WIN50COMPAT 0X00000400
439 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
440 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
441 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
442 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
443 #define WNDS2_HELPBUTTONDOWN 0X00008000
444 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
445 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
446 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
447 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
448 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
449 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
450 #define WNDS2_FORCENCPAINT 0X00400000
451 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
452 #define WNDS2_FULLSCREENMODE 0X01000000
453 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
454 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
455 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
456 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
457 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
459 /* Non SDK ExStyles */
460 #define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
461 #define WS_EX_FORCELEGACYRESIZENCMETR 0x00800000
462 #define WS_EX_UISTATEACTIVE 0x04000000
463 #define WS_EX_REDIRECTED 0X20000000
464 #define WS_EX_UISTATEKBACCELHIDDEN 0X40000000
465 #define WS_EX_UISTATEFOCUSRECTHIDDEN 0X80000000
466 #define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
469 #define WS_MAXIMIZED WS_MAXIMIZE
470 #define WS_MINIMIZED WS_MINIMIZE
473 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
474 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
475 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
476 #define WS_EX2_LINKED 0X00000008
477 #define WS_EX2_LAYEREDFORDWM 0X00000010
478 #define WS_EX2_LAYEREDLIMBO 0X00000020
479 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
480 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
481 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
482 #define WS_EX2_HASOVERLAY 0X00000200
483 #define WS_EX2_CONSOLEWINDOW 0X00000400
484 #define WS_EX2_CHILDNOACTIVATE 0X00000800
491 /* Extended style. */
495 /* Handle of the module that created the window. */
498 struct _WND
*spwndNext
;
499 struct _WND
*spwndPrev
;
500 struct _WND
*spwndParent
;
501 struct _WND
*spwndChild
;
502 struct _WND
*spwndOwner
;
506 /* Pointer to the window class. */
509 /* Property list head.*/
510 LIST_ENTRY PropListHead
;
514 /* system menu handle. */
517 /* Window menu handle or window id */
518 UINT IDMenu
; // Use spmenu
523 LARGE_UNICODE_STRING strName
;
524 /* Size of the extra data associated with the window. */
527 struct _WND
*spwndLastActive
;
528 //HIMC hImc; // Input context associated with this window.
530 //PACTIVATION_CONTEXT pActCtx;
531 //PD3DMATRIX pTransForm;
532 struct _WND
*spwndClipboardListener
;
543 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
544 /* Indicates whether the window is derived from a system class */
545 UINT InternalPosInitialized
: 1;
546 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
547 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
550 PSBINFOEX pSBInfoex
; // convert to PSBINFO
551 /* Entry in the list of thread windows. */
552 LIST_ENTRY ThreadListEntry
;
555 typedef struct _PFNCLIENT
557 WNDPROC pfnScrollBarWndProc
;
558 WNDPROC pfnTitleWndProc
;
559 WNDPROC pfnMenuWndProc
;
560 WNDPROC pfnDesktopWndProc
;
561 WNDPROC pfnDefWindowProc
;
562 WNDPROC pfnMessageWindowProc
;
563 WNDPROC pfnSwitchWindowProc
;
564 WNDPROC pfnButtonWndProc
;
565 WNDPROC pfnComboBoxWndProc
;
566 WNDPROC pfnComboListBoxProc
;
567 WNDPROC pfnDialogWndProc
;
568 WNDPROC pfnEditWndProc
;
569 WNDPROC pfnListBoxWndProc
;
570 WNDPROC pfnMDIClientWndProc
;
571 WNDPROC pfnStaticWndProc
;
572 WNDPROC pfnImeWndProc
;
573 WNDPROC pfnGhostWndProc
;
574 WNDPROC pfnHkINLPCWPSTRUCT
;
575 WNDPROC pfnHkINLPCWPRETSTRUCT
;
576 WNDPROC pfnDispatchHook
;
577 WNDPROC pfnDispatchDefWindowProc
;
578 WNDPROC pfnDispatchMessage
;
579 WNDPROC pfnMDIActivateDlgProc
;
580 } PFNCLIENT
, *PPFNCLIENT
;
583 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
584 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
587 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
589 typedef struct _PFNCLIENTWORKER
591 WNDPROC_EX pfnButtonWndProc
;
592 WNDPROC_EX pfnComboBoxWndProc
;
593 WNDPROC_EX pfnComboListBoxProc
;
594 WNDPROC_EX pfnDialogWndProc
;
595 WNDPROC_EX pfnEditWndProc
;
596 WNDPROC_EX pfnListBoxWndProc
;
597 WNDPROC_EX pfnMDIClientWndProc
;
598 WNDPROC_EX pfnStaticWndProc
;
599 WNDPROC_EX pfnImeWndProc
;
600 WNDPROC_EX pfnGhostWndProc
;
601 WNDPROC_EX pfnCtfHookProc
;
602 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
604 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
606 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
607 #define FNID_FIRST 0x029A
608 #define FNID_SCROLLBAR 0x029A
609 #define FNID_ICONTITLE 0x029B
610 #define FNID_MENU 0x029C
611 #define FNID_DESKTOP 0x029D
612 #define FNID_DEFWINDOWPROC 0x029E
613 #define FNID_MESSAGEWND 0x029F
614 #define FNID_SWITCH 0x02A0
615 #define FNID_BUTTON 0x02A1
616 #define FNID_COMBOBOX 0x02A2
617 #define FNID_COMBOLBOX 0x02A3
618 #define FNID_DIALOG 0x02A4
619 #define FNID_EDIT 0x02A5
620 #define FNID_LISTBOX 0x02A6
621 #define FNID_MDICLIENT 0x02A7
622 #define FNID_STATIC 0x02A8
623 #define FNID_IME 0x02A9
624 #define FNID_GHOST 0x02AA
625 #define FNID_CALLWNDPROC 0x02AB
626 #define FNID_CALLWNDPROCRET 0x02AC
627 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
628 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
629 #define FNID_MB_DLGPROC 0x02AF
630 #define FNID_MDIACTIVATEDLGPROC 0x02B0
631 #define FNID_SENDMESSAGE 0x02B1
632 #define FNID_SENDMESSAGEFF 0x02B2
633 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
634 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
635 #define FNID_SENDMESSAGETIMEOUT 0x02B4
636 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
637 #define FNID_TOOLTIPS 0x02B6
638 #define FNID_SENDNOTIFYMESSAGE 0x02B7
639 #define FNID_SENDMESSAGECALLBACK 0x02B8
640 #define FNID_LAST 0x02B9
642 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
643 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
645 #define FNID_DDEML 0x2000 // Registers DDEML
646 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
647 // Seen during WM_CREATE on error exit too.
648 #define FNID_FREED 0x8000 // Window being Freed...
650 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
652 #define GETPFNCLIENTA(fnid)\
653 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
654 #define GETPFNCLIENTW(fnid)\
655 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
657 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
659 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
660 #define ICLS_BUTTON 0
662 #define ICLS_STATIC 2
663 #define ICLS_LISTBOX 3
664 #define ICLS_SCROLLBAR 4
665 #define ICLS_COMBOBOX 5
666 #define ICLS_MDICLIENT 6
667 #define ICLS_COMBOLBOX 7
668 #define ICLS_DDEMLEVENT 8
669 #define ICLS_DDEMLMOTHER 9
670 #define ICLS_DDEML16BIT 10
671 #define ICLS_DDEMLCLIENTA 11
672 #define ICLS_DDEMLCLIENTW 12
673 #define ICLS_DDEMLSERVERA 13
674 #define ICLS_DDEMLSERVERW 14
676 #define ICLS_GHOST 16
677 #define ICLS_DESKTOP 17
678 #define ICLS_DIALOG 18
680 #define ICLS_SWITCH 20
681 #define ICLS_ICONTITLE 21
682 #define ICLS_TOOLTIPS 22
683 #if (_WIN32_WINNT <= 0x0501)
684 #define ICLS_UNKNOWN 22
685 #define ICLS_NOTUSED 23
687 #define ICLS_SYSSHADOW 23
688 #define ICLS_HWNDMESSAGE 24
689 #define ICLS_NOTUSED 25
693 #define COLOR_LAST COLOR_MENUBAR
694 #define MAX_MB_STRINGS 11
696 #define SRVINFO_APIHOOK 0x0010
697 #define SRVINFO_METRICS 0x0020
699 typedef struct tagOEMBITMAPINFO
705 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
707 typedef struct tagMBSTRING
712 } MBSTRING
, *PMBSTRING
;
714 typedef struct tagDPISERVERINFO
716 INT gclBorder
; /* 000 */
717 HFONT hCaptionFont
; /* 004 */
718 HFONT hMsgFont
; /* 008 */
719 INT cxMsgFontChar
; /* 00C */
720 INT cyMsgFontChar
; /* 010 */
721 UINT wMaxBtnSize
; /* 014 */
722 } DPISERVERINFO
, *PDPISERVERINFO
;
724 typedef struct _PERUSERSERVERINFO
726 INT aiSysMet
[SM_CMETRICS
];
727 ULONG argbSystemUnmatched
[COLOR_LAST
+1];
728 COLORREF argbSystem
[COLOR_LAST
+1];
729 HBRUSH ahbrSystem
[COLOR_LAST
+1];
733 DWORD dwLastRITEventTickCount
;
738 UINT ucWheelScrollLines
;
739 UINT ucWheelScrollChars
;
740 INT wMaxLeftOverlapChars
;
741 INT wMaxRightOverlapChars
;
744 TEXTMETRICW tmSysFont
;
745 DPISERVERINFO dpiSystem
;
746 HICON hIconSmWindows
;
749 DWORD dwAsyncKeyCache
;
751 OEMBITMAPINFO oembmi
[93];
760 DWORD dwLastSystemRITEventTickCountUpdate
;
761 ULONG adwDBGTAGFlags
[35];
764 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
766 typedef struct tagSERVERINFO
769 ULONG_PTR cHandleEntries
;
770 PFN_FNID mpFnidPfn
[FNID_NUM
];
771 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
772 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
773 PFNCLIENT apfnClientA
;
774 PFNCLIENT apfnClientW
;
775 PFNCLIENTWORKER apfnClientWorker
;
777 ATOM atomSysClass
[ICLS_NOTUSED
+1];
778 DWORD dwDefaultHeapBase
;
779 DWORD dwDefaultHeapSize
;
781 MBSTRING MBStrings
[MAX_MB_STRINGS
];
784 ATOM atomContextHelpIdProp
;
785 ATOM atomFrostedWindowProp
;
786 CHAR acOemToAnsi
[256];
787 CHAR acAnsiToOem
[256];
788 DWORD dwInstalledEventHooks
;
790 } SERVERINFO
, *PSERVERINFO
;
793 // Server event activity bits.
794 #define SRV_EVENT_MENU 0x0001
795 #define SRV_EVENT_END_APPLICATION 0x0002
796 #define SRV_EVENT_RUNNING 0x0004
797 #define SRV_EVENT_NAMECHANGE 0x0008
798 #define SRV_EVENT_VALUECHANGE 0x0010
799 #define SRV_EVENT_STATECHANGE 0x0020
800 #define SRV_EVENT_LOCATIONCHANGE 0x0040
801 #define SRV_EVENT_CREATE 0x8000
803 typedef struct _PROPLISTITEM
807 } PROPLISTITEM
, *PPROPLISTITEM
;
809 typedef struct _PROPERTY
811 LIST_ENTRY PropListEntry
;
814 } PROPERTY
, *PPROPERTY
;
816 typedef struct _BROADCASTPARM
823 } BROADCASTPARM
, *PBROADCASTPARM
;
825 PTHREADINFO
GetW32ThreadInfo(VOID
);
826 PPROCESSINFO
GetW32ProcessInfo(VOID
);
828 typedef struct _WNDMSG
834 typedef struct _SHAREDINFO
836 PSERVERINFO psi
; // global Server Info
837 PVOID aheList
; // Handle Entry List
838 PVOID pDispInfo
; // global PDISPLAYINFO pointer
839 ULONG_PTR ulSharedDelta
; // Heap delta
840 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
841 WNDMSG DefWindowMsgs
;
842 WNDMSG DefWindowSpecMsgs
;
843 } SHAREDINFO
, *PSHAREDINFO
;
845 typedef struct _USERCONNECT
848 ULONG ulCurrentVersion
;
849 DWORD dwDispatchCount
;
851 } USERCONNECT
, *PUSERCONNECT
;
854 // Non SDK Window Message types.
856 #define WM_CLIENTSHUTDOWN 59
857 #define WM_COPYGLOBALDATA 73
858 #define WM_SYSTIMER 280
859 #define WM_POPUPSYSTEMMENU 787
860 #define WM_CBT 1023 // ReactOS only.
861 #define WM_MAXIMUM 0x0001FFFF
864 // Non SDK DCE types.
866 #define DCX_USESTYLE 0x00010000
867 #define DCX_KEEPCLIPRGN 0x00040000
868 #define DCX_KEEPLAYOUT 0x40000000
869 #define DCX_PROCESSOWNED 0x80000000
872 // Non SDK Queue message types.
874 #define QS_SMRESULT 0x8000
878 NtUserAssociateInputContext(
909 NtUserCtxDisplayIOCtl(
928 NtUserDrawMenuBarTemp(
937 NtUserEnableMenuItem(
948 NtUserGetMenuBarInfo(
962 NtUserGetMenuItemRect(
976 NtUserHiliteMenuItem(
984 NtUserMenuItemFromPoint(
1006 NtUserSetMenuContextHelpId(
1008 DWORD dwContextHelpId
);
1012 NtUserSetMenuDefaultItem(
1019 NtUserSetMenuFlagRtoL(
1024 NtUserSetSystemMenu(
1030 NtUserThunkedMenuInfo(
1036 NtUserThunkedMenuItemInfo(
1041 LPMENUITEMINFOW lpmii
,
1042 PUNICODE_STRING lpszCaption
);
1046 NtUserTrackPopupMenuEx(
1056 NtUserActivateKeyboardLayout(
1062 NtUserAlterWindowStyle(
1069 NtUserAttachThreadInput(
1071 IN DWORD idAttachTo
,
1075 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1096 NtUserBuildHwndList(
1106 NtUserBuildNameList(
1110 PULONG pRequiredSize
);
1114 NtUserBuildPropList(
1120 /* apfnSimpleCall indices from Windows XP SP 2 */
1121 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1122 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1124 enum SimpleCallRoutines
1126 NOPARAM_ROUTINE_CREATEMENU
,
1127 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1128 #if (WIN32K_VERSION >= NTDDI_VISTA)
1129 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1130 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1131 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1132 NOPARAM_ROUTINE_DESTROY_CARET
,
1134 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1135 #if (WIN32K_VERSION < NTDDI_VISTA)
1136 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1137 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1138 NOPARAM_ROUTINE_DESTROY_CARET
,
1140 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1141 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1142 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1143 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1144 #if (WIN32K_VERSION >= NTDDI_VISTA)
1145 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1147 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1149 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1150 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1151 #if (WIN32K_VERSION >= NTDDI_VISTA)
1152 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1153 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1155 NOPARAM_ROUTINE_RELEASECAPTURE
,
1156 NOPARAM_ROUTINE_RESETDBLCLICK
,
1157 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1158 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1159 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1160 NOPARAM_ROUTINE_REMOTELOGOFF
,
1161 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1162 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1163 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1164 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1165 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1166 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1167 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1168 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1169 #if (WIN32K_VERSION >= NTDDI_VISTA)
1170 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1172 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1173 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1174 #if (WIN32K_VERSION < NTDDI_VISTA)
1175 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1177 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1178 #if (WIN32K_VERSION >= NTDDI_VISTA)
1179 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1181 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1182 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1183 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1184 #if (WIN32K_VERSION < NTDDI_VISTA)
1185 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1187 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1188 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1189 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1190 #if (WIN32K_VERSION < NTDDI_VISTA)
1191 ONEPARAM_ROUTINE_GETCURSORPOS
,
1193 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1194 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1195 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1196 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1197 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1198 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1199 #if (WIN32K_VERSION < NTDDI_VISTA)
1200 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1202 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1203 ONEPARAM_ROUTINE_LOADFONTS
,
1204 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1205 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1206 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1207 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1208 #if (WIN32K_VERSION < NTDDI_VISTA)
1209 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1211 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1212 ONEPARAM_ROUTINE_REGISTERLPK
,
1213 #if (WIN32K_VERSION >= NTDDI_VISTA)
1214 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1216 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1217 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1218 ONEPARAM_ROUTINE_RELEASEDC
,
1219 #if (WIN32K_VERSION >= NTDDI_VISTA)
1220 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1222 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1223 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1224 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1225 #if (WIN32K_VERSION < NTDDI_VISTA)
1226 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1228 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1229 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1230 #if (WIN32K_VERSION >= NTDDI_VISTA)
1231 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1233 ONEPARAM_ROUTINE_SHOWCURSOR
,
1234 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1235 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1236 X_ROUTINE_WOWMODULEUNLOAD
,
1237 #if (WIN32K_VERSION < NTDDI_VISTA)
1238 X_ROUTINE_REMOTENOTIFY
,
1240 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1241 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1242 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1243 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1244 HWND_ROUTINE_SETMSGBOX
,
1245 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1246 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1247 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1248 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1249 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1250 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1251 HWNDPARAM_ROUTINE_SETVISIBLE
,
1252 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1253 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1254 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1255 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1256 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1257 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1258 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1259 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1260 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1261 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1262 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1263 HWNDLOCK_ROUTINE_SETSYSMENU
,
1264 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1265 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1266 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1267 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1268 TWOPARAM_ROUTINE_REDRAWTITLE
,
1269 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1270 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1271 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1272 TWOPARAM_ROUTINE_VALIDATERGN
,
1273 #if (WIN32K_VERSION >= NTDDI_VISTA)
1274 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1275 TWOPARAM_ROUTINE_GETCURSORPOS
,
1277 TWOPARAM_ROUTINE_GETHDEVNAME
,
1278 TWOPARAM_ROUTINE_INITANSIOEM
,
1279 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1280 #if (WIN32K_VERSION >= NTDDI_VISTA)
1281 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1283 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1284 #if (WIN32K_VERSION >= NTDDI_VISTA)
1285 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1287 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1289 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1290 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1291 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1292 TWOPARAM_ROUTINE_SETCARETPOS
,
1293 TWOPARAM_ROUTINE_SETCURSORPOS
,
1294 #if (WIN32K_VERSION >= NTDDI_VISTA)
1295 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1297 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1298 TWOPARAM_ROUTINE_WOWCLEANUP
1321 NtUserCallHwndParam(
1328 NtUserCallHwndParamLock(
1335 NtUserCallMsgFilter(
1341 NtUserCallNextHookEx(
1367 NtUserChangeClipboardChain(
1373 NtUserChangeDisplaySettings(
1374 PUNICODE_STRING lpszDeviceName
,
1375 LPDEVMODEW lpDevMode
,
1382 NtUserCheckDesktopByThreadId(
1387 NtUserCheckWindowThreadDesktop(
1394 NtUserCheckImeHotKey(
1399 NtUserChildWindowFromPointEx(
1412 NtUserCloseClipboard(VOID
);
1421 NtUserCloseWindowStation(
1426 NtUserConsoleControl(
1433 NtUserConvertMemHandle(
1439 NtUserCopyAcceleratorTable(
1446 NtUserCountClipboardFormats(VOID
);
1450 NtUserCreateAcceleratorTable(
1452 SIZE_T EntriesCount
);
1464 NtUserCreateDesktop(
1465 POBJECT_ATTRIBUTES poa
,
1466 PUNICODE_STRING lpszDesktopDevice
,
1469 ACCESS_MASK dwDesiredAccess
);
1473 NtUserCreateInputContext(
1478 NtUserCreateLocalMemHandle(
1486 NtUserCreateWindowEx(
1487 DWORD dwExStyle
, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
1488 PLARGE_STRING plstrClassName
,
1489 PLARGE_STRING plstrClsVersion
,
1490 PLARGE_STRING plstrWindowName
,
1498 HINSTANCE hInstance
,
1505 NtUserCreateWindowStation(
1506 PUNICODE_STRING lpszWindowStationName
,
1507 ACCESS_MASK dwDesiredAccess
,
1508 LPSECURITY_ATTRIBUTES lpSecurity
,
1516 NtUserDdeGetQualityOfService(
1519 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1523 NtUserDdeInitialize(
1532 NtUserDdeSetQualityOfService(
1534 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1535 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1538 NtUserDeferWindowPos(
1541 HWND WndInsertAfter
,
1549 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1553 NtUserDestroyAcceleratorTable(
1558 NtUserDestroyCursor(
1564 NtUserDestroyInputContext(
1568 NtUserDestroyWindow(HWND Wnd
);
1572 NtUserDisableThreadIme(
1577 NtUserDispatchMessage(PMSG pMsg
);
1596 NtUserDrawAnimatedRects(
1612 NtUserDrawCaptionTemp(
1618 const PUNICODE_STRING str
,
1621 // Used with NtUserDrawIconEx, last parameter.
1622 typedef struct _DRAWICONEXDATA
1628 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1640 HBRUSH hbrFlickerFreeDraw
,
1647 NtUserEmptyClipboard(VOID
);
1651 NtUserEnableScrollBar(
1658 NtUserEndDeferWindowPosEx(
1663 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1667 NtUserEnumDisplayDevices (
1668 PUNICODE_STRING lpDevice
, /* device name */
1669 DWORD iDevNum
, /* display device */
1670 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1671 DWORD dwFlags
); /* reserved */
1675 NtUserEnumDisplayMonitors (
1678 MONITORENUMPROC lpfnEnum,
1680 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1683 NtUserEnumDisplayMonitors(
1684 OPTIONAL IN HDC hDC
,
1685 OPTIONAL IN LPCRECT pRect
,
1686 OPTIONAL OUT HMONITOR
*hMonitorList
,
1687 OPTIONAL OUT LPRECT monitorRectList
,
1688 OPTIONAL IN DWORD listSize
);
1693 NtUserEnumDisplaySettings(
1694 PUNICODE_STRING lpszDeviceName
,
1696 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1706 NtUserExcludeUpdateRgn(
1720 NtUserFindExistingCursorIcon(
1730 HWND hwndChildAfter
,
1731 PUNICODE_STRING ucClassName
,
1732 PUNICODE_STRING ucWindowName
,
1738 NtUserFlashWindowEx(
1739 IN PFLASHWINFO pfwi
);
1743 NtUserGetAltTabInfo(
1752 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1756 NtUserGetAppImeLevel(
1761 NtUserGetAsyncKeyState(
1772 NtUserGetCaretBlinkTime(VOID
);
1780 NtUserGetClassInfo(HINSTANCE hInstance
,
1781 PUNICODE_STRING ClassName
,
1783 LPWSTR
*ppszMenuName
,
1788 NtUserGetClassName(HWND hWnd
,
1789 PUNICODE_STRING ClassName
,
1791 #if 0 // Real NtUserGetClassName
1794 NtUserGetClassName(HWND hWnd
,
1795 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1796 PUNICODE_STRING ClassName
);
1801 NtUserGetClipboardData(
1807 NtUserGetClipboardFormatName(
1809 PUNICODE_STRING FormatName
,
1814 NtUserGetClipboardOwner(VOID
);
1818 NtUserGetClipboardSequenceNumber(VOID
);
1822 NtUserGetClipboardViewer(VOID
);
1826 NtUserGetClipCursor(
1831 NtUserGetComboBoxInfo(
1833 PCOMBOBOXINFO pcbi
);
1837 NtUserGetControlBrush(
1844 NtUserGetControlColor(
1859 NtUserGetCursorFrameInfo(
1867 NtUserGetCursorInfo(
1884 NtUserGetDoubleClickTime(VOID
);
1888 NtUserGetForegroundWindow(VOID
);
1892 NtUserGetGuiResources(
1898 NtUserGetGUIThreadInfo(
1900 LPGUITHREADINFO lpgui
);
1907 PUNICODE_STRING lpInstName
,
1908 PUNICODE_STRING lpResName
,
1936 NtUserGetInternalWindowPos(
1943 NtUserGetKeyboardLayout(
1948 NtUserGetKeyboardLayoutList(
1954 NtUserGetKeyboardLayoutName(
1959 NtUserGetKeyboardState(
1964 NtUserGetKeyboardType(
1969 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
1978 NtUserGetLayeredWindowAttributes(
1986 NtUserGetListBoxInfo(
1989 typedef struct tagNTUSERGETMESSAGEINFO
1993 } NTUSERGETMESSAGEINFO
, *PNTUSERGETMESSAGEINFO
;
1998 PNTUSERGETMESSAGEINFO MsgInfo
,
2001 UINT wMsgFilterMax
);
2005 NtUserGetMouseMovePointsEx(
2007 LPMOUSEMOVEPOINT lppt
,
2008 LPMOUSEMOVEPOINT lpptBuf
,
2014 NtUserGetObjectInformation(
2017 PVOID pvInformation
,
2019 PDWORD nLengthNeeded
);
2023 NtUserGetOpenClipboardWindow(VOID
);
2027 NtUserGetPriorityClipboardFormat(
2028 UINT
*paFormatPriorityList
,
2033 NtUserGetProcessWindowStation(VOID
);
2037 NtUserGetRawInputBuffer(
2044 NtUserGetRawInputData(
2045 HRAWINPUT hRawInput
,
2053 NtUserGetRawInputDeviceInfo(
2061 NtUserGetRawInputDeviceList(
2062 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2063 PUINT puiNumDevices
,
2068 NtUserGetRegisteredRawInputDevices(
2069 PRAWINPUTDEVICE pRawInputDevices
,
2070 PUINT puiNumDevices
,
2075 NtUserGetScrollBarInfo(
2078 PSCROLLBARINFO psbi
);
2082 NtUserGetThreadDesktop(
2087 enum ThreadStateRoutines
2089 THREADSTATE_GETTHREADINFO
,
2090 THREADSTATE_INSENDMESSAGE
,
2091 THREADSTATE_FOCUSWINDOW
,
2092 THREADSTATE_ACTIVEWINDOW
,
2093 THREADSTATE_CAPTUREWINDOW
,
2094 THREADSTATE_PROGMANWINDOW
,
2095 THREADSTATE_TASKMANWINDOW
,
2096 THREADSTATE_GETMESSAGETIME
,
2097 THREADSTATE_GETINPUTSTATE
2102 NtUserGetThreadState(
2107 NtUserGetTitleBarInfo(
2112 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2128 NtUserGetWindowPlacement(
2130 WINDOWPLACEMENT
*lpwndpl
);
2135 HINSTANCE hInstance
,
2136 PUNICODE_STRING ClassName
);
2140 NtUserHardErrorControl(
2147 NtUserImpersonateDdeClientWindow(
2155 HANDLE hPowerRequestEvent
,
2156 HANDLE hMediaRequestEvent
);
2160 NtUserInitializeClientPfnArrays(
2161 PPFNCLIENT pfnClientA
,
2162 PPFNCLIENT pfnClientW
,
2163 PPFNCLIENTWORKER pfnClientWorker
,
2164 HINSTANCE hmodUser
);
2184 NtUserInternalGetWindowText(
2191 NtUserInvalidateRect(
2198 NtUserInvalidateRgn(
2205 NtUserIsClipboardFormatAvailable(
2218 NtUserLoadKeyboardLayoutEx(
2221 IN PUNICODE_STRING puszKeyboardName
,
2223 IN PUNICODE_STRING puszKLID
,
2229 NtUserLockWindowStation(
2230 HWINSTA hWindowStation
);
2234 NtUserLockWindowUpdate(
2239 NtUserLockWorkStation(VOID
);
2243 NtUserMapVirtualKeyEx( UINT keyCode
,
2254 ULONG_PTR ResultInfo
,
2255 DWORD dwType
, // FNID_XX types
2262 UINT cmd
, // Wine SW_ commands
2267 NtUserMNDragLeave(VOID
);
2277 NtUserModifyUserStartupInfoFlags(
2294 NtUserNotifyIMEStatus(
2301 NtUserNotifyProcessCreate(
2309 NtUserNotifyWinEvent(
2317 NtUserOpenClipboard(
2324 PUNICODE_STRING lpszDesktopName
,
2326 ACCESS_MASK dwDesiredAccess
);
2330 NtUserOpenInputDesktop(
2333 ACCESS_MASK dwDesiredAccess
);
2337 NtUserOpenWindowStation(
2338 PUNICODE_STRING lpszWindowStationName
,
2339 ACCESS_MASK dwDesiredAccess
);
2359 PNTUSERGETMESSAGEINFO MsgInfo
,
2375 NtUserPostThreadMessage(
2390 NtUserProcessConnect(
2392 OUT PUSERCONNECT pUserConnect
,
2393 IN DWORD dwSize
); // sizeof(USERCONNECT)
2397 NtUserQueryInformationThread(
2406 NtUserQueryInputContext(
2412 NtUserQuerySendMessage(
2417 NtUserQueryUserCounters(
2424 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2425 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2426 #define QUERY_WINDOW_ACTIVE 0x02
2427 #define QUERY_WINDOW_FOCUS 0x03
2428 #define QUERY_WINDOW_ISHUNG 0x04
2429 #define QUERY_WINDOW_REAL_ID 0x05
2438 NtUserRealInternalGetMessage(
2448 NtUserRealChildWindowFromPoint(
2455 NtUserRealWaitMessageEx(
2464 CONST RECT
*lprcUpdate
,
2471 NtUserRegisterClassExWOW(
2473 PUNICODE_STRING pustrClassName
,
2474 PUNICODE_STRING pustrCNVersion
,
2475 PCLSMENUNAME pClassMenuName
,
2482 NtUserRegisterRawInputDevices(
2483 IN PCRAWINPUTDEVICE pRawInputDevices
,
2484 IN UINT uiNumDevices
,
2489 NtUserRegisterUserApiHook(
2490 PUNICODE_STRING m_dllname1
,
2491 PUNICODE_STRING m_funname1
,
2497 NtUserRegisterHotKey(HWND hWnd
,
2504 NtUserRegisterTasklist(
2508 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2512 NtUserRemoteConnect(
2519 NtUserRemoteRedrawRectangle(
2527 NtUserRemoteRedrawScreen(VOID
);
2531 NtUserRemoteStopScreenUpdates(VOID
);
2534 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2538 NtUserResolveDesktop(
2546 NtUserResolveDesktopForWOW(
2563 CONST RECT
*lprcScroll
,
2564 CONST RECT
*lprcClip
,
2569 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2570 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2580 NtUserSetActiveWindow(HWND Wnd
);
2584 NtUserSetAppImeLevel(
2589 NtUserSetCapture(HWND Wnd
);
2595 ULONG_PTR dwNewLong
,
2607 NtUserSetClipboardData(
2614 NtUserSetClipboardViewer(
2615 HWND hWndNewViewer
);
2619 NtUserSelectPalette(
2622 BOOL ForceBackground
2627 NtUserSetConsoleReserveKeys(
2638 NtUserSetCursorContents(
2640 PICONINFO IconInfo
);
2644 NtUserSetCursorIconData(
2679 NtUserSetImeOwnerWindow(
2685 NtUserSetInformationProcess(
2693 NtUserSetInformationThread(
2694 IN HANDLE ThreadHandle
,
2695 IN USERTHREADINFOCLASS ThreadInformationClass
,
2696 IN PVOID ThreadInformation
,
2697 IN ULONG ThreadInformationLength
2702 NtUserSetInternalWindowPos(
2710 NtUserSetKeyboardState(
2715 NtUserSetLayeredWindowAttributes(
2723 NtUserSetLogonNotifyWindow(
2728 NtUserSetObjectInformation(
2731 PVOID pvInformation
,
2738 HWND hWndNewParent
);
2742 NtUserSetProcessWindowStation(
2743 HWINSTA hWindowStation
);
2746 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2756 NtUserSetScrollInfo(
2764 NtUserSetShellWindowEx(
2766 HWND hwndShellListView
);
2772 IN CONST INT
*lpaElements
,
2773 IN CONST COLORREF
*lpaRgbValues
,
2778 NtUserSetSystemCursor(
2784 NtUserSetThreadDesktop(
2789 NtUserSetThreadState(
2795 NtUserSetSystemTimer
2800 TIMERPROC lpTimerFunc
2805 NtUserSetThreadLayoutHandles(
2816 TIMERPROC lpTimerFunc
2821 NtUserSetWindowFNID(
2827 NtUserSetWindowLong(
2835 NtUserSetWindowPlacement(
2837 WINDOWPLACEMENT
*lpwndpl
);
2840 NTAPI
NtUserSetWindowPos(
2842 HWND hWndInsertAfter
,
2859 NtUserSetWindowsHookAW(
2866 NtUserSetWindowsHookEx(
2868 PUNICODE_STRING ModuleName
,
2876 NtUserSetWindowStationUser(
2883 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
2887 NtUserSetWinEventHook(
2890 HMODULE hmodWinEventProc
,
2891 PUNICODE_STRING puString
,
2892 WINEVENTPROC lpfnWinEventProc
,
2909 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
2919 NtUserShowWindowAsync(
2925 NtUserSoundSentry(VOID
);
2929 NtUserSwitchDesktop(
2934 NtUserSystemParametersInfo(
2942 NtUserTestForInteractiveUser(
2958 NtUserTrackMouseEvent(
2959 LPTRACKMOUSEEVENT lpEventTrack
);
2963 NtUserTranslateAccelerator(
2970 NtUserTranslateMessage(
2976 NtUserUnhookWindowsHookEx(
2981 NtUserUnhookWinEvent(
2982 HWINEVENTHOOK hWinEventHook
);
2986 NtUserUnloadKeyboardLayout(
2991 NtUserUnlockWindowStation(
2992 HWINSTA hWindowStation
);
2996 NtUserUnregisterClass(
2997 PUNICODE_STRING ClassNameOrAtom
,
2998 HINSTANCE hInstance
,
2999 PCLSMENUNAME pClassMenuName
);
3003 NtUserUnregisterHotKey(HWND hWnd
,
3008 NtUserUnregisterUserApiHook(VOID
);
3012 NtUserUpdateInputContext(
3019 NtUserUpdateInstance(
3026 NtUserUpdateLayeredWindow(
3034 BLENDFUNCTION
*pblend
,
3040 NtUserUpdatePerUserSystemParameters(
3046 NtUserUserHandleGrantAccess(
3047 IN HANDLE hUserHandle
,
3053 NtUserValidateHandleSecure(
3061 CONST RECT
*lpRect
);
3065 NtUserValidateTimerCallback(
3079 NtUserWaitForInputIdle(
3081 IN DWORD dwMilliseconds
,
3082 IN BOOL Unknown2
); // Always FALSE
3086 NtUserWaitForMsgAndEvent(
3091 NtUserWaitMessage(VOID
);
3095 NtUserWin32PoolAllocationStats(
3105 NtUserWindowFromPhysicalPoint(
3110 NtUserWindowFromPoint(
3116 NtUserYieldTask(VOID
);
3118 /* lParam of DDE messages */
3119 typedef struct tagKMDDEEXECUTEDATA
3123 /* BYTE Data[DataSize] */
3124 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3126 typedef struct tagKMDDELPARAM
3138 } KMDDELPARAM
, *PKMDDELPARAM
;
3145 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3148 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3149 #define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
3150 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3151 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3152 #define ONEPARAM_ROUTINE_ISWINDOWINDESTROY 0xfffe000c
3153 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3154 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3155 #define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0xfffe0027
3156 #define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
3157 #define TWOPARAM_ROUTINE_GETWINDOWRGNBOX 0xfffd0048 // user mode
3158 #define TWOPARAM_ROUTINE_GETWINDOWRGN 0xfffd0049 // user mode
3159 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3160 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3161 #define MSQ_STATE_CAPTURE 0x1
3162 #define MSQ_STATE_ACTIVE 0x2
3163 #define MSQ_STATE_FOCUS 0x3
3164 #define MSQ_STATE_MENUOWNER 0x4
3165 #define MSQ_STATE_MOVESIZE 0x5
3166 #define MSQ_STATE_CARET 0x6
3167 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3168 #define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
3169 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3173 NtUserBuildMenuItemList(
3180 /* Should be done in usermode and use NtUserGetCPD. */
3183 NtUserGetClassLong(HWND hWnd
, INT Offset
, BOOL Ansi
);
3187 NtUserGetMenuDefaultItem(
3194 NtUserGetLastInputInfo(
3195 PLASTINPUTINFO plii
);
3199 NtUserGetMinMaxInfo(
3201 MINMAXINFO
*MinMaxInfo
,
3206 NtUserGetMonitorInfo(
3207 IN HMONITOR hMonitor
,
3208 OUT LPMONITORINFO pMonitorInfo
);
3210 /* Should be done in usermode */
3212 /* (other FocusedItem values give the position of the focused item) */
3213 #define NO_SELECTED_ITEM 0xffff
3215 typedef struct tagROSMENUINFO
3217 /* ----------- MENUINFO ----------- */
3223 DWORD dwContextHelpID
;
3224 ULONG_PTR dwMenuData
;
3225 /* ----------- Extra ----------- */
3226 HMENU Self
; /* Handle of this menu */
3227 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3228 UINT FocusedItem
; /* Currently focused item */
3229 UINT MenuItemCount
; /* Number of items in the menu */
3230 HWND Wnd
; /* Window containing the menu */
3231 WORD Width
; /* Width of the whole menu */
3232 WORD Height
; /* Height of the whole menu */
3233 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3234 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3235 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3236 } ROSMENUINFO
, *PROSMENUINFO
;
3246 typedef struct tagROSMENUITEMINFO
3248 /* ----------- MENUITEMINFOW ----------- */
3255 HBITMAP hbmpChecked
;
3256 HBITMAP hbmpUnchecked
;
3261 /* ----------- Extra ----------- */
3262 RECT Rect
; /* Item area (relative to menu window) */
3263 UINT dxTab
; /* X position of text after Tab */
3264 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3265 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3273 PROSMENUITEMINFO lpmii
,
3279 NtUserMonitorFromPoint(
3285 NtUserMonitorFromRect(
3291 NtUserMonitorFromWindow(
3296 typedef struct tagNTUSERSENDMESSAGEINFO
3298 BOOL HandledByKernel
;
3301 } NTUSERSENDMESSAGEINFO
, *PNTUSERSENDMESSAGEINFO
;
3303 /* use NtUserMessageCall */
3305 NtUserSendMessage(HWND hWnd
,
3309 PNTUSERSENDMESSAGEINFO Info
);
3311 /* use NtUserMessageCall */
3313 NtUserSendMessageTimeout(HWND hWnd
,
3320 PNTUSERSENDMESSAGEINFO Info
);
3322 typedef struct _SETSCROLLBARINFO
3326 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3327 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3331 NtUserSetScrollBarInfo(
3334 SETSCROLLBARINFO
*info
);
3338 #endif /* __WIN32K_NTUSER_H */