1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
13 #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
14 #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
16 #define HANDLEENTRY_INDESTROY 1
18 typedef struct _USER_HANDLE_ENTRY
20 void *ptr
; /* pointer to object */
24 struct _THREADINFO
*pti
; /* pointer to Win32ThreadInfo */
25 struct _PROCESSINFO
*ppi
; /* pointer to W32ProcessInfo */
27 unsigned char type
; /* object type (0 if free) */
29 unsigned short generation
; /* generation counter */
30 } USER_HANDLE_ENTRY
, *PUSER_HANDLE_ENTRY
;
32 typedef struct _USER_HANDLE_TABLE
34 PUSER_HANDLE_ENTRY handles
;
35 PUSER_HANDLE_ENTRY freelist
;
37 int allocated_handles
;
38 } USER_HANDLE_TABLE
, *PUSER_HANDLE_TABLE
;
40 typedef enum _HANDLE_TYPE
46 TYPE_SETWINDOWPOS
= 4,
57 TYPE_WINEVENTHOOK
= 15,
59 TYPE_INPUTCONTEXT
= 17,
62 TYPE_TOUCHINPUTINFO
= 20,
63 TYPE_GESTUREINFOOBJ
= 21,
66 } HANDLE_TYPE
, *PHANDLE_TYPE
;
68 typedef enum _USERTHREADINFOCLASS
70 UserThreadShutdownInformation
,
73 UserThreadWOWInformation
,
75 UserThreadInitiateShutdown
,
76 UserThreadEndShutdown
,
77 UserThreadUseActiveDesktop
,
79 UserThreadRestoreDesktop
,
81 } USERTHREADINFOCLASS
;
83 typedef struct _LARGE_UNICODE_STRING
86 ULONG MaximumLength
:31;
89 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
91 typedef struct _LARGE_STRING
94 ULONG MaximumLength
:31;
97 } LARGE_STRING
, *PLARGE_STRING
;
100 /* Based on ANSI_STRING */
101 typedef struct _LARGE_ANSI_STRING
104 ULONG MaximumLength
:31;
107 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
111 RtlInitLargeAnsiString(
112 IN OUT PLARGE_ANSI_STRING
,
118 RtlInitLargeUnicodeString(
119 IN OUT PLARGE_UNICODE_STRING
,
125 RtlLargeStringToUnicodeString(
129 #define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1)
131 typedef struct _DESKTOPINFO
134 PVOID pvDesktopLimit
;
137 LIST_ENTRY aphkStart
[NB_HOOKS
];
142 struct _WND
*spwndShell
;
143 struct _WND
*spwndBkGnd
;
145 struct _PROCESSINFO
*ppiShellProcess
;
152 UINT LastInputWasKbd
:1;
156 WCHAR szDesktopName
[1];
157 } DESKTOPINFO
, *PDESKTOPINFO
;
159 #define CTI_THREADSYSLOCK 0x0001
160 #define CTI_INSENDMESSAGE 0x0002
162 typedef struct _CLIENTTHREADINFO
167 WORD fsWakeBitsJournal
;
169 ULONG tickLastMsgChecked
;
171 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
179 typedef struct _THROBJHEAD
182 struct _THREADINFO
*pti
;
183 } THROBJHEAD
, *PTHROBJHEAD
;
185 typedef struct _THRDESKHEAD
188 struct _DESKTOP
*rpdesk
;
190 } THRDESKHEAD
, *PTHRDESKHEAD
;
192 typedef struct _PROCDESKHEAD
196 struct _DESKTOP
*rpdesk
;
198 } PROCDESKHEAD
, *PPROCDESKHEAD
;
200 typedef struct _PROCMARKHEAD
204 struct _PROCESSINFO
*ppi
;
205 } PROCMARKHEAD
, *PPROCMARKHEAD
;
207 #define UserHMGetHandle(obj) ((obj)->head.h)
209 /* Window Client Information structure */
212 #define WEF_SETBYWNDPTI 0x0001
214 typedef struct tagHOOK
217 struct tagHOOK
*phkNext
; /* This is for user space. */
218 int HookId
; /* Hook table index */
220 ULONG flags
; /* Some internal flags */
222 struct _THREADINFO
*ptiHooked
;
223 struct _DESKTOP
*rpdesk
;
225 LIST_ENTRY Chain
; /* Hook chain entry */
226 HOOKPROC Proc
; /* Hook function */
227 BOOLEAN Ansi
; /* Is it an Ansi hook? */
228 UNICODE_STRING ModuleName
; /* Module name for global hooks */
231 typedef struct tagCLIPBOARDDATA
236 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
238 /* THREADINFO Flags */
239 #define TIF_INCLEANUP 0x00000001
240 #define TIF_16BIT 0x00000002
241 #define TIF_SYSTEMTHREAD 0x00000004
242 #define TIF_CSRSSTHREAD 0x00000008
243 #define TIF_TRACKRECTVISIBLE 0x00000010
244 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
245 #define TIF_DONTATTACHQUEUE 0x00000040
246 #define TIF_DONTJOURNALATTACH 0x00000080
247 #define TIF_WOW64 0x00000100
248 #define TIF_INACTIVATEAPPMSG 0x00000200
249 #define TIF_SPINNING 0x00000400
250 #define TIF_PALETTEAWARE 0x00000800
251 #define TIF_SHAREDWOW 0x00001000
252 #define TIF_FIRSTIDLE 0x00002000
253 #define TIF_WAITFORINPUTIDLE 0x00004000
254 #define TIF_MOVESIZETRACKING 0x00008000
255 #define TIF_VDMAPP 0x00010000
256 #define TIF_DOSEMULATOR 0x00020000
257 #define TIF_GLOBALHOOKER 0x00040000
258 #define TIF_DELAYEDEVENT 0x00080000
259 #define TIF_MSGPOSCHANGED 0x00100000
260 #define TIF_SHUTDOWNCOMPLETE 0x00200000
261 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
262 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
263 #define TIF_GUITHREADINITIALIZED 0x02000000
264 #define TIF_DISABLEIME 0x04000000
265 #define TIF_INGETTEXTLENGTH 0x08000000
266 #define TIF_ANSILENGTH 0x10000000
267 #define TIF_DISABLEHOOKS 0x20000000
269 typedef struct _CALLBACKWND
274 } CALLBACKWND
, *PCALLBACKWND
;
276 #define CI_TRANSACTION 0x00000001
277 #define CI_QUEUEMSG 0x00000002
278 #define CI_WOW 0x00000004
279 #define CI_INITTHREAD 0x00000008
280 #define CI_CURTHPRHOOK 0x00000010
281 #define CI_CLASSESREGISTERED 0x00000020
282 #define CI_IMMACTIVATE 0x00000040
284 typedef struct _CLIENTINFO
290 DWORD dwCompatFlags2
;
291 DWORD dwTIFlags
; /* ThreadInfo TIF_Xxx flags for User space. */
292 PDESKTOPINFO pDeskInfo
;
293 ULONG_PTR ulClientDelta
;
296 CALLBACKWND CallbackWnd
;
298 INT cInDDEMLCallback
;
299 PCLIENTTHREADINFO pClientThreadInfo
;
300 ULONG_PTR dwHookData
;
303 DWORD dwAsyncKeyCache
;
304 BYTE afAsyncKeyState
[8];
305 BYTE afAsyncKeyStateRecentDow
[8];
310 LPDWORD lpdwRegisteredClasses
;
311 ULONG Win32ClientInfo3
[26];
312 /* It's just a pointer reference not to be used w the structure in user space. */
313 struct _PROCESSINFO
*ppi
;
314 } CLIENTINFO
, *PCLIENTINFO
;
316 /* Make sure it fits into the TEB */
317 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
319 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
321 typedef struct tagDDEPACK
325 } DDEPACK
, *PDDEPACK
;
327 #define HRGN_NULL ((HRGN)0) /* NULL empty region */
328 #define HRGN_WINDOW ((HRGN)1) /* region from window rcWindow */
329 #define HRGN_MONITOR ((HRGN)2) /* region from monitor region. */
331 /* Menu Item fType. */
332 #define MFT_RTOL 0x6000
334 /* Menu Item fState. */
335 #define MFS_HBMMENUBMP 0x20000000
337 typedef struct tagITEM
342 struct tagMENU
*spSubMenu
; /* Pop-up menu. */
344 HANDLE hbmpUnchecked
;
345 USHORT
*Xlpstr
; /* Item text pointer. */
347 DWORD_PTR dwItemData
;
348 ULONG xItem
; /* Item position. left */
349 ULONG yItem
; /* " top */
350 ULONG cxItem
; /* Item Size Width */
351 ULONG cyItem
; /* " Height */
352 ULONG dxTab
; /* X position of text after Tab */
353 ULONG ulX
; /* underline.. start position */
354 ULONG ulWidth
; /* underline.. width */
355 HBITMAP hbmp
; /* bitmap */
356 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
357 INT cyBmp
; /* Height " */
359 UNICODE_STRING lpstr
;
362 typedef struct tagMENULIST
364 struct tagMENULIST
*pNext
;
365 struct tagMENU
*pMenu
;
366 } MENULIST
, *PMENULIST
;
368 /* Menu fFlags, upper byte is MNS_X style flags. */
369 #define MNF_POPUP 0x0001
370 #define MNF_UNDERLINE 0x0004
371 #define MNF_INACTIVE 0x0010
372 #define MNF_RTOL 0x0020
373 #define MNF_DESKTOPMN 0x0040
374 #define MNF_SYSDESKMN 0x0080
375 #define MNF_SYSSUBMENU 0x0100
377 #define MNF_SYSMENU 0x0200
379 /* (other FocusedItem values give the position of the focused item) */
380 #define NO_SELECTED_ITEM 0xffff
382 typedef struct tagMENU
385 ULONG fFlags
; /* [Style flags | Menu flags] */
386 INT iItem
; /* nPos of selected item, if -1 not selected. AKA focused item */
387 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
388 UINT cItems
; /* Number of items in the menu */
389 ULONG cxMenu
; /* Width of the whole menu */
390 ULONG cyMenu
; /* Height of the whole menu */
391 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
392 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
393 PITEM rgItems
; /* Array of menu items */
394 struct tagMENULIST
*pParentMenus
; /* If this is SubMenu, list of parents. */
395 DWORD dwContextHelpId
;
396 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
397 DWORD_PTR dwMenuData
; /* application defined value */
398 HBRUSH hbrBack
; /* brush for menu background */
399 INT iTop
; /* Current scroll position Top */
400 INT iMaxTop
; /* Current scroll position Max Top */
401 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
403 LIST_ENTRY ListEntry
;
404 HWND hWnd
; /* Window containing the menu, use POPUPMENU */
408 typedef struct tagPOPUPMENU
413 ULONG fIsTrackPopup
:1;
414 ULONG fDroppedLeft
:1;
415 ULONG fHierarchyDropped
:1;
416 ULONG fRightButton
:1;
418 ULONG fSynchronous
:1;
420 ULONG fDropNextPopup
:1;
422 ULONG fAboutToHide
:1;
426 ULONG fDelayedFree
:1;
427 ULONG fFlushDelayedFree
:1;
430 ULONG fTrackMouseEvent
:1;
433 // ULONG fDesktopMenu:1;
435 ULONG fUseMonitorRect
:1;
436 struct _WND
*spwndNotify
;
437 struct _WND
*spwndPopupMenu
;
438 struct _WND
*spwndNextPopup
;
439 struct _WND
*spwndPrevPopup
;
441 PMENU spmenuAlternate
;
442 struct _WND
*spwndActivePopup
;
443 struct tagPOPUPMENU
*ppopupmenuRoot
;
444 struct tagPOPUPMENU
*ppmDelayedFree
;
445 UINT posSelectedItem
;
447 } POPUPMENU
, *PPOPUPMENU
;
449 typedef struct _REGISTER_SYSCLASS
451 /* This is a reactos specific class used to initialize the
452 system window classes during user32 initialization */
461 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
463 typedef struct _CLSMENUNAME
465 LPSTR pszClientAnsiMenuName
;
466 LPWSTR pwszClientUnicodeMenuName
;
467 PUNICODE_STRING pusMenuName
;
468 } CLSMENUNAME
, *PCLSMENUNAME
;
470 typedef struct tagSBDATA
478 typedef struct tagSBINFO
485 typedef struct tagSBCALC
507 UserGetCPDA2U
= 0x01, /* " Unicode " */
508 UserGetCPDU2A
= 0X02, /* " Ansi " */
509 UserGetCPDClass
= 0X10,
510 UserGetCPDWindow
= 0X20,
511 UserGetCPDDialog
= 0X40,
512 UserGetCPDWndtoCls
= 0X80
515 typedef struct _CALLPROCDATA
518 struct _CALLPROCDATA
*spcpdNext
;
519 WNDPROC pfnClientPrevious
;
521 } CALLPROCDATA
, *PCALLPROCDATA
;
523 #define CSF_SERVERSIDEPROC 0x0001
524 #define CSF_ANSIPROC 0x0002
525 #define CSF_WOWDEFERDESTROY 0x0004
526 #define CSF_SYSTEMCLASS 0x0008
527 #define CSF_WOWCLASS 0x0010
528 #define CSF_WOWEXTRA 0x0020
529 #define CSF_CACHEDSMICON 0x0040
530 #define CSF_WIN40COMPAT 0x0080
534 struct _CLS
*pclsNext
;
535 RTL_ATOM atomClassName
;
536 ATOM atomNVClassName
;
538 struct _DESKTOP
*rpdeskParent
;
541 PSTR lpszClientAnsiMenuName
; /* For client use */
542 PWSTR lpszClientUnicodeMenuName
; /* " " " */
543 PCALLPROCDATA spcpdFirst
;
544 struct _CLS
*pclsBase
;
545 struct _CLS
*pclsClone
;
546 ULONG cWndReferenceCount
;
552 struct _CURICON_OBJECT
*spicn
;
553 struct _CURICON_OBJECT
*spcur
;
554 HBRUSH hbrBackground
;
555 PWSTR lpszMenuName
; /* kernel use */
556 PSTR lpszAnsiClassName
; /* " */
557 struct _CURICON_OBJECT
*spicnSm
;
559 UINT Unicode
:1; // !CSF_ANSIPROC
560 UINT Global
:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
561 UINT MenuNameIsString
:1;
565 typedef struct _SBINFOEX
567 SCROLLBARINFO ScrollBarInfo
;
568 SCROLLINFO ScrollInfo
;
569 } SBINFOEX
, *PSBINFOEX
;
571 /* State Flags !Not Implemented! */
572 #define WNDS_HASMENU 0X00000001
573 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
574 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
575 #define WNDS_HASCAPTION 0X00000008
576 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
577 #define WNDS_MSGBOX 0X00000020
578 #define WNDS_ACTIVEFRAME 0X00000040
579 #define WNDS_HASSPB 0X00000080
580 #define WNDS_NONCPAINT 0X00000100
581 #define WNDS_SENDERASEBACKGROUND 0X00000200
582 #define WNDS_ERASEBACKGROUND 0X00000400
583 #define WNDS_SENDNCPAINT 0X00000800
584 #define WNDS_INTERNALPAINT 0X00001000
585 #define WNDS_UPDATEDIRTY 0X00002000
586 #define WNDS_HIDDENPOPUP 0X00004000
587 #define WNDS_FORCEMENUDRAW 0X00008000
588 #define WNDS_DIALOGWINDOW 0X00010000
589 #define WNDS_HASCREATESTRUCTNAME 0X00020000
590 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 /* Call proc inside win32k. */
591 #define WNDS_ANSIWINDOWPROC 0x00080000
592 #define WNDS_BEINGACTIVATED 0x00100000
593 #define WNDS_HASPALETTE 0x00200000
594 #define WNDS_PAINTNOTPROCESSED 0x00400000
595 #define WNDS_SYNCPAINTPENDING 0x00800000
596 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
597 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
598 #define WNDS_TOGGLETOPMOST 0x04000000
599 #define WNDS_REDRAWIFHUNG 0x08000000
600 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
601 #define WNDS_ANSICREATOR 0x20000000
602 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
603 #define WNDS_DESTROYED 0x80000000
605 #define WNDSACTIVEFRAME 0x00000006
607 /* State2 Flags !Not Implemented! */
608 #define WNDS2_WMPAINTSENT 0X00000001
609 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
610 #define WNDS2_STARTPAINT 0X00000004
611 #define WNDS2_OLDUI 0X00000008
612 #define WNDS2_HASCLIENTEDGE 0X00000010
613 #define WNDS2_BOTTOMMOST 0X00000020
614 #define WNDS2_FULLSCREEN 0X00000040
615 #define WNDS2_INDESTROY 0X00000080
616 #define WNDS2_WIN31COMPAT 0X00000100
617 #define WNDS2_WIN40COMPAT 0X00000200
618 #define WNDS2_WIN50COMPAT 0X00000400
619 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
620 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
621 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
622 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
623 #define WNDS2_HELPBUTTONDOWN 0X00008000
624 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
625 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
626 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
627 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
628 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
629 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
630 #define WNDS2_FORCENCPAINT 0X00400000
631 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
632 #define WNDS2_FULLSCREENMODE 0X01000000
633 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
634 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
635 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
636 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
637 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
640 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
641 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
642 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
643 #define WS_EX2_LINKED 0X00000008
644 #define WS_EX2_LAYEREDFORDWM 0X00000010
645 #define WS_EX2_LAYEREDLIMBO 0X00000020
646 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
647 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
648 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
649 #define WS_EX2_HASOVERLAY 0X00000200
650 #define WS_EX2_CONSOLEWINDOW 0X00000400
651 #define WS_EX2_CHILDNOACTIVATE 0X00000800
653 #define WPF_MININIT 0x0008
654 #define WPF_MAXINIT 0x0010
661 /* Extended style. */
665 /* Handle of the module that created the window. */
668 struct _WND
*spwndNext
;
669 struct _WND
*spwndPrev
;
670 struct _WND
*spwndParent
;
671 struct _WND
*spwndChild
;
672 struct _WND
*spwndOwner
;
676 /* Pointer to the window class. */
679 /* Property list head.*/
680 LIST_ENTRY PropListHead
;
684 /* system menu handle. */
687 /* Window menu handle or window id */
688 UINT IDMenu
; // Use spmenu
693 LARGE_UNICODE_STRING strName
;
694 /* Size of the extra data associated with the window. */
696 struct _WND
*spwndLastActive
;
697 HIMC hImc
; // Input context associated with this window.
700 //PD3DMATRIX pTransForm;
701 struct _WND
*spwndClipboardListener
;
710 UINT flags
; /* WPF_ flags. */
713 UINT Unicode
:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */
714 UINT InternalPosInitialized
:1;
715 UINT HideFocus
:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */
716 UINT HideAccel
:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */
719 PSBINFOEX pSBInfoex
; // convert to PSBINFO
720 /* Entry in the list of thread windows. */
721 LIST_ENTRY ThreadListEntry
;
724 #define PWND_BOTTOM ((PWND)1)
726 typedef struct _SBWND
734 typedef struct _MDIWND
741 #define GWLP_MDIWND 4
743 typedef struct _MENUWND
746 PPOPUPMENU ppopupmenu
;
747 } MENUWND
, *PMENUWND
;
749 typedef struct _PFNCLIENT
751 WNDPROC pfnScrollBarWndProc
;
752 WNDPROC pfnTitleWndProc
;
753 WNDPROC pfnMenuWndProc
;
754 WNDPROC pfnDesktopWndProc
;
755 WNDPROC pfnDefWindowProc
;
756 WNDPROC pfnMessageWindowProc
;
757 WNDPROC pfnSwitchWindowProc
;
758 WNDPROC pfnButtonWndProc
;
759 WNDPROC pfnComboBoxWndProc
;
760 WNDPROC pfnComboListBoxProc
;
761 WNDPROC pfnDialogWndProc
;
762 WNDPROC pfnEditWndProc
;
763 WNDPROC pfnListBoxWndProc
;
764 WNDPROC pfnMDIClientWndProc
;
765 WNDPROC pfnStaticWndProc
;
766 WNDPROC pfnImeWndProc
;
767 WNDPROC pfnGhostWndProc
;
768 WNDPROC pfnHkINLPCWPSTRUCT
;
769 WNDPROC pfnHkINLPCWPRETSTRUCT
;
770 WNDPROC pfnDispatchHook
;
771 WNDPROC pfnDispatchDefWindowProc
;
772 WNDPROC pfnDispatchMessage
;
773 WNDPROC pfnMDIActivateDlgProc
;
774 } PFNCLIENT
, *PPFNCLIENT
;
777 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
778 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
782 (CALLBACK
*WNDPROC_EX
)(
789 typedef struct _PFNCLIENTWORKER
791 WNDPROC_EX pfnButtonWndProc
;
792 WNDPROC_EX pfnComboBoxWndProc
;
793 WNDPROC_EX pfnComboListBoxProc
;
794 WNDPROC_EX pfnDialogWndProc
;
795 WNDPROC_EX pfnEditWndProc
;
796 WNDPROC_EX pfnListBoxWndProc
;
797 WNDPROC_EX pfnMDIClientWndProc
;
798 WNDPROC_EX pfnStaticWndProc
;
799 WNDPROC_EX pfnImeWndProc
;
800 WNDPROC_EX pfnGhostWndProc
;
801 WNDPROC_EX pfnCtfHookProc
;
802 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
812 /* FNID's for NtUserSetWindowFNID, NtUserMessageCall */
813 #define FNID_FIRST 0x029A
814 #define FNID_SCROLLBAR 0x029A
815 #define FNID_ICONTITLE 0x029B
816 #define FNID_MENU 0x029C
817 #define FNID_DESKTOP 0x029D
818 #define FNID_DEFWINDOWPROC 0x029E
819 #define FNID_MESSAGEWND 0x029F
820 #define FNID_SWITCH 0x02A0
821 #define FNID_BUTTON 0x02A1
822 #define FNID_COMBOBOX 0x02A2
823 #define FNID_COMBOLBOX 0x02A3
824 #define FNID_DIALOG 0x02A4
825 #define FNID_EDIT 0x02A5
826 #define FNID_LISTBOX 0x02A6
827 #define FNID_MDICLIENT 0x02A7
828 #define FNID_STATIC 0x02A8
829 #define FNID_IME 0x02A9
830 #define FNID_GHOST 0x02AA
831 #define FNID_CALLWNDPROC 0x02AB
832 #define FNID_CALLWNDPROCRET 0x02AC
833 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
834 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
835 #define FNID_MB_DLGPROC 0x02AF
836 #define FNID_MDIACTIVATEDLGPROC 0x02B0
837 #define FNID_SENDMESSAGE 0x02B1
838 #define FNID_SENDMESSAGEFF 0x02B2
839 /* Kernel has option to use TimeOut or normal msg send, based on type of msg. */
840 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
841 #define FNID_SENDMESSAGECALLPROC 0x02B4
842 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
843 #define FNID_TOOLTIPS 0x02B6
844 #define FNID_SENDNOTIFYMESSAGE 0x02B7
845 #define FNID_SENDMESSAGECALLBACK 0x02B8
846 #define FNID_LAST 0x02B9
848 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
849 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
851 #define FNID_DDEML 0x2000 /* Registers DDEML */
852 #define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */
853 /* Seen during WM_CREATE on error exit too. */
854 #define FNID_FREED 0x8000 /* Window being Freed... */
856 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
858 #define GETPFNCLIENTA(fnid) \
859 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
860 #define GETPFNCLIENTW(fnid) \
861 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
863 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
865 /* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */
866 #define ICLS_BUTTON 0
868 #define ICLS_STATIC 2
869 #define ICLS_LISTBOX 3
870 #define ICLS_SCROLLBAR 4
871 #define ICLS_COMBOBOX 5
872 #define ICLS_MDICLIENT 6
873 #define ICLS_COMBOLBOX 7
874 #define ICLS_DDEMLEVENT 8
875 #define ICLS_DDEMLMOTHER 9
876 #define ICLS_DDEML16BIT 10
877 #define ICLS_DDEMLCLIENTA 11
878 #define ICLS_DDEMLCLIENTW 12
879 #define ICLS_DDEMLSERVERA 13
880 #define ICLS_DDEMLSERVERW 14
882 #define ICLS_GHOST 16
883 #define ICLS_DESKTOP 17
884 #define ICLS_DIALOG 18
886 #define ICLS_SWITCH 20
887 #define ICLS_ICONTITLE 21
888 #define ICLS_TOOLTIPS 22
889 #if (_WIN32_WINNT <= 0x0501)
890 #define ICLS_UNKNOWN 22
891 #define ICLS_NOTUSED 23
893 #define ICLS_SYSSHADOW 23
894 #define ICLS_HWNDMESSAGE 24
895 #define ICLS_NOTUSED 25
899 #define COLOR_LAST COLOR_MENUBAR
900 #define MAX_MB_STRINGS 11
902 #define SRVINFO_DBCSENABLED 0x0002
903 #define SRVINFO_IMM32 0x0004
904 #define SRVINFO_APIHOOK 0x0010
905 #define SRVINFO_METRICS 0x0020
906 #define SRVINFO_KBDPREF 0x0080
908 #define NUM_SYSCOLORS 31
910 typedef struct tagOEMBITMAPINFO
916 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
918 typedef enum _OBI_TYPES
929 typedef struct tagMBSTRING
934 } MBSTRING
, *PMBSTRING
;
936 typedef struct tagDPISERVERINFO
938 INT gclBorder
; /* 000 */
939 HFONT hCaptionFont
; /* 004 */
940 HFONT hMsgFont
; /* 008 */
941 INT cxMsgFontChar
; /* 00C */
942 INT cyMsgFontChar
; /* 010 */
943 UINT wMaxBtnSize
; /* 014 */
944 } DPISERVERINFO
, *PDPISERVERINFO
;
947 #define PUSIF_PALETTEDISPLAY 0x01
948 #define PUSIF_SNAPTO 0x02
949 #define PUSIF_COMBOBOXANIMATION 0x04
950 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
951 #define PUSIF_KEYBOARDCUES 0x20
953 typedef struct _PERUSERSERVERINFO
955 INT aiSysMet
[SM_CMETRICS
];
956 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
957 COLORREF argbSystem
[NUM_SYSCOLORS
];
958 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
962 DWORD dwLastRITEventTickCount
;
967 UINT ucWheelScrollLines
;
968 UINT ucWheelScrollChars
;
969 INT wMaxLeftOverlapChars
;
970 INT wMaxRightOverlapChars
;
973 TEXTMETRICW tmSysFont
;
974 DPISERVERINFO dpiSystem
;
975 HICON hIconSmWindows
;
978 DWORD dwAsyncKeyCache
;
980 OEMBITMAPINFO oembmi
[OBI_CTYPES
];
989 DWORD dwLastSystemRITEventTickCountUpdate
;
990 ULONG adwDBGTAGFlags
[35];
993 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
995 typedef struct tagSERVERINFO
998 ULONG_PTR cHandleEntries
;
999 PFN_FNID mpFnidPfn
[FNID_NUM
];
1000 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
1001 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
1002 PFNCLIENT apfnClientA
;
1003 PFNCLIENT apfnClientW
;
1004 PFNCLIENTWORKER apfnClientWorker
;
1005 ULONG cbHandleTable
;
1006 ATOM atomSysClass
[ICLS_NOTUSED
+1];
1007 DWORD dwDefaultHeapBase
;
1008 DWORD dwDefaultHeapSize
;
1010 MBSTRING MBStrings
[MAX_MB_STRINGS
];
1011 ATOM atomIconSmProp
;
1013 ATOM atomContextHelpIdProp
;
1014 ATOM atomFrostedWindowProp
;
1015 CHAR acOemToAnsi
[256];
1016 CHAR acAnsiToOem
[256];
1017 DWORD dwInstalledEventHooks
;
1019 } SERVERINFO
, *PSERVERINFO
;
1022 C_ASSERT(sizeof(SERVERINFO
) <= PAGE_SIZE
);
1026 /* Server event activity bits. */
1027 #define SRV_EVENT_MENU 0x0001
1028 #define SRV_EVENT_END_APPLICATION 0x0002
1029 #define SRV_EVENT_RUNNING 0x0004
1030 #define SRV_EVENT_NAMECHANGE 0x0008
1031 #define SRV_EVENT_VALUECHANGE 0x0010
1032 #define SRV_EVENT_STATECHANGE 0x0020
1033 #define SRV_EVENT_LOCATIONCHANGE 0x0040
1034 #define SRV_EVENT_CREATE 0x8000
1036 typedef struct _PROPLISTITEM
1040 } PROPLISTITEM
, *PPROPLISTITEM
;
1042 #define PROPERTY_FLAG_SYSTEM 1
1044 typedef struct _PROPERTY
1046 LIST_ENTRY PropListEntry
;
1050 } PROPERTY
, *PPROPERTY
;
1052 typedef struct _BROADCASTPARM
1059 } BROADCASTPARM
, *PBROADCASTPARM
;
1061 struct _THREADINFO
*GetW32ThreadInfo(VOID
);
1062 struct _PROCESSINFO
*GetW32ProcessInfo(VOID
);
1064 typedef struct _WNDMSG
1070 typedef struct _SHAREDINFO
1072 PSERVERINFO psi
; /* global Server Info */
1073 PVOID aheList
; /* Handle Entry List */
1074 PVOID pDispInfo
; /* global PDISPLAYINFO pointer */
1075 ULONG_PTR ulSharedDelta
; /* Heap delta */
1076 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
1077 WNDMSG DefWindowMsgs
;
1078 WNDMSG DefWindowSpecMsgs
;
1079 } SHAREDINFO
, *PSHAREDINFO
;
1081 /* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */
1082 typedef struct _USERCONNECT
1085 ULONG ulCurrentVersion
;
1086 DWORD dwDispatchCount
;
1087 SHAREDINFO siClient
;
1088 } USERCONNECT
, *PUSERCONNECT
;
1090 /* WinNT 5.0 compatible user32 / win32k */
1091 #define USER_VERSION MAKELONG(0x0000, 0x0005)
1093 #if defined(_M_IX86)
1094 C_ASSERT(sizeof(USERCONNECT
) == 0x124);
1097 typedef struct tagGETCLIPBDATA
1106 } GETCLIPBDATA
, *PGETCLIPBDATA
;
1108 typedef struct tagSETCLIPBDATA
1111 BOOL fIncSerialNumber
;
1112 } SETCLIPBDATA
, *PSETCLIPBDATA
;
1114 /* Used with NtUserSetCursorIconData, last parameter. */
1115 typedef struct tagCURSORDATA
1121 ULONG CURSORF_flags
;
1128 HBITMAP hbmUserAlpha
; /* Could be in W7U, not in W2k */
1134 struct tagCURSORDATA
*aspcur
;
1138 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1140 /* CURSORF_flags: */
1141 #define CURSORF_FROMRESOURCE 0x0001
1142 #define CURSORF_GLOBAL 0x0002
1143 #define CURSORF_LRSHARED 0x0004
1144 #define CURSORF_ACON 0x0008
1145 #define CURSORF_WOWCLEANUP 0x0010
1146 #define CURSORF_ACONFRAME 0x0040
1147 #define CURSORF_SECRET 0x0080
1148 #define CURSORF_LINKED 0x0100
1149 #define CURSORF_CURRENT 0x0200
1151 typedef struct tagIMEINFOEX
1155 WCHAR wszUIClass
[16];
1156 ULONG fdwInitConvMode
;
1159 DWORD dwProdVersion
;
1160 DWORD dwImeWinVersion
;
1161 WCHAR wszImeDescription
[50];
1162 WCHAR wszImeFile
[80];
1165 INT fSysWow64Only
:1;
1168 } IMEINFOEX
, *PIMEINFOEX
;
1170 typedef struct tagIMEUI
1183 UINT fChildThreadDef
:1;
1184 UINT fCtrlShowStatus
:1;
1185 UINT fFreeActiveEvent
:1;
1189 /* Window Extra data container. */
1190 typedef struct _IMEWND
1198 NtUserAssociateInputContext(
1205 NtUserBuildHimcList(
1222 NtUserCheckMenuItem(
1229 NtUserCtxDisplayIOCtl(
1236 NtUserDbgWin32HeapFail(
1242 NtUserDbgWin32HeapStat(
1260 NtUserDrawMenuBarTemp(
1269 NtUserEnableMenuItem(
1276 NtUserEndMenu(VOID
);
1280 NtUserGetMenuBarInfo(
1294 NtUserGetMenuItemRect(
1302 NtUserGetSystemMenu(
1308 NtUserHiliteMenuItem(
1316 NtUserMenuItemFromPoint(
1338 NtUserSetMenuContextHelpId(
1340 DWORD dwContextHelpId
);
1344 NtUserSetMenuDefaultItem(
1351 NtUserSetMenuFlagRtoL(
1356 NtUserSetSystemMenu(
1362 NtUserThunkedMenuInfo(
1368 NtUserThunkedMenuItemInfo(
1373 LPMENUITEMINFOW lpmii
,
1374 PUNICODE_STRING lpszCaption
);
1378 NtUserTrackPopupMenuEx(
1388 NtUserActivateKeyboardLayout(
1394 NtUserAlterWindowStyle(
1401 NtUserAttachThreadInput(
1403 IN DWORD idAttachTo
,
1430 NtUserBuildHwndList(
1441 NtUserBuildNameList(
1445 PULONG pRequiredSize
);
1449 NtUserBuildPropList(
1455 /* apfnSimpleCall indices from Windows XP SP 2 */
1456 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1457 #define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */
1459 enum SimpleCallRoutines
1461 NOPARAM_ROUTINE_CREATEMENU
,
1462 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1463 #if (WIN32K_VERSION >= NTDDI_VISTA)
1464 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1465 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1466 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1467 NOPARAM_ROUTINE_DESTROY_CARET
,
1469 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1470 #if (WIN32K_VERSION < NTDDI_VISTA)
1471 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1472 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1473 NOPARAM_ROUTINE_DESTROY_CARET
,
1475 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1476 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1477 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1478 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1479 #if (WIN32K_VERSION >= NTDDI_VISTA)
1480 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1482 NOPARAM_ROUTINE_GETREMOTEPROCESSID
,
1484 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1485 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1486 #if (WIN32K_VERSION >= NTDDI_VISTA)
1487 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1488 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1490 NOPARAM_ROUTINE_RELEASECAPTURE
,
1491 NOPARAM_ROUTINE_RESETDBLCLICK
,
1492 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1493 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1494 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1495 NOPARAM_ROUTINE_REMOTELOGOFF
,
1496 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1497 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1498 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1499 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1500 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1501 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1502 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1503 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1504 #if (WIN32K_VERSION >= NTDDI_VISTA)
1505 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1507 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1508 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1509 #if (WIN32K_VERSION < NTDDI_VISTA)
1510 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1512 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1513 #if (WIN32K_VERSION >= NTDDI_VISTA)
1514 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1516 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1517 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1518 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1519 #if (WIN32K_VERSION < NTDDI_VISTA)
1520 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1522 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1523 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1524 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1525 #if (WIN32K_VERSION < NTDDI_VISTA)
1526 ONEPARAM_ROUTINE_GETCURSORPOS
,
1528 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1529 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1530 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1531 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1532 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1533 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1534 #if (WIN32K_VERSION < NTDDI_VISTA)
1535 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1537 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1538 ONEPARAM_ROUTINE_LOADFONTS
,
1539 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1540 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1541 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1542 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1543 #if (WIN32K_VERSION < NTDDI_VISTA)
1544 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1546 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1547 ONEPARAM_ROUTINE_REGISTERLPK
,
1548 #if (WIN32K_VERSION >= NTDDI_VISTA)
1549 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1551 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1552 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1553 ONEPARAM_ROUTINE_RELEASEDC
,
1554 #if (WIN32K_VERSION >= NTDDI_VISTA)
1555 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1557 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1558 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1559 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1560 #if (WIN32K_VERSION < NTDDI_VISTA)
1561 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1563 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1564 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1565 #if (WIN32K_VERSION >= NTDDI_VISTA)
1566 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1568 ONEPARAM_ROUTINE_SHOWCURSOR
,
1569 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1570 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1571 X_ROUTINE_WOWMODULEUNLOAD
,
1572 #if (WIN32K_VERSION < NTDDI_VISTA)
1573 X_ROUTINE_REMOTENOTIFY
,
1575 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1576 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1577 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1578 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1579 HWND_ROUTINE_SETMSGBOX
,
1580 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1581 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1582 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1583 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1584 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1585 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1586 HWNDPARAM_ROUTINE_SETVISIBLE
,
1587 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1588 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1589 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1590 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1591 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1592 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1593 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1594 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1595 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1596 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1597 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1598 HWNDLOCK_ROUTINE_SETSYSMENU
,
1599 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1600 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1601 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1602 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1603 TWOPARAM_ROUTINE_REDRAWTITLE
,
1604 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1605 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1606 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1607 TWOPARAM_ROUTINE_VALIDATERGN
,
1608 #if (WIN32K_VERSION >= NTDDI_VISTA)
1609 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1610 TWOPARAM_ROUTINE_GETCURSORPOS
,
1612 TWOPARAM_ROUTINE_GETHDEVNAME
,
1613 TWOPARAM_ROUTINE_INITANSIOEM
,
1614 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1615 #if (WIN32K_VERSION >= NTDDI_VISTA)
1616 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1618 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1619 #if (WIN32K_VERSION >= NTDDI_VISTA)
1620 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1622 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1624 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1625 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1626 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1627 TWOPARAM_ROUTINE_SETCARETPOS
,
1628 TWOPARAM_ROUTINE_SETCURSORPOS
,
1629 #if (WIN32K_VERSION >= NTDDI_VISTA)
1630 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1632 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1633 TWOPARAM_ROUTINE_WOWCLEANUP
1656 NtUserCallHwndParam(
1663 NtUserCallHwndParamLock(
1670 NtUserCallMsgFilter(
1676 NtUserCallNextHookEx(
1702 NtUserChangeClipboardChain(
1708 NtUserChangeDisplaySettings(
1709 PUNICODE_STRING lpszDeviceName
,
1710 LPDEVMODEW lpDevMode
,
1716 NtUserCheckDesktopByThreadId(
1721 NtUserCheckWindowThreadDesktop(
1728 NtUserCheckImeHotKey(
1733 NtUserChildWindowFromPointEx(
1746 NtUserCloseClipboard(VOID
);
1755 NtUserCloseWindowStation(
1758 /* Console commands for NtUserConsoleControl */
1759 typedef enum _CONSOLECONTROL
1761 ConsoleCtrlDesktopConsoleThread
= 0,
1762 GuiConsoleWndClassAtom
= 1,
1763 ConsoleMakePalettePublic
= 5,
1764 ConsoleAcquireDisplayOwnership
,
1765 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1767 typedef struct _DESKTOP_CONSOLE_THREAD
1769 HDESK DesktopHandle
;
1771 } DESKTOP_CONSOLE_THREAD
, *PDESKTOP_CONSOLE_THREAD
;
1775 NtUserConsoleControl(
1776 IN CONSOLECONTROL ConsoleCtrl
,
1777 IN PVOID ConsoleCtrlInfo
,
1778 IN ULONG ConsoleCtrlInfoLength
);
1782 NtUserConvertMemHandle(
1788 NtUserCopyAcceleratorTable(
1791 ULONG EntriesCount
);
1795 NtUserCountClipboardFormats(VOID
);
1799 NtUserCreateAcceleratorTable(
1801 ULONG EntriesCount
);
1813 NtUserCreateDesktop(
1814 POBJECT_ATTRIBUTES poa
,
1815 PUNICODE_STRING lpszDesktopDevice
,
1818 ACCESS_MASK dwDesiredAccess
);
1822 NtUserCreateInputContext(
1827 NtUserCreateLocalMemHandle(
1835 NtUserCreateWindowEx(
1837 PLARGE_STRING plstrClassName
,
1838 PLARGE_STRING plstrClsVersion
,
1839 PLARGE_STRING plstrWindowName
,
1847 HINSTANCE hInstance
,
1854 NtUserCreateWindowStation(
1855 POBJECT_ATTRIBUTES ObjectAttributes
,
1856 ACCESS_MASK dwDesiredAccess
,
1865 NtUserDdeGetQualityOfService(
1868 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1872 NtUserDdeInitialize(
1881 NtUserDdeSetQualityOfService(
1883 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1884 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1888 NtUserDeferWindowPos(
1891 HWND WndInsertAfter
,
1902 PLARGE_STRING WindowText
);
1906 NtUserDestroyAcceleratorTable(
1911 NtUserDestroyCursor(
1917 NtUserDestroyInputContext(
1922 NtUserDestroyWindow(
1927 NtUserDisableThreadIme(
1932 NtUserDispatchMessage(
1952 NtUserDrawAnimatedRects(
1968 NtUserDrawCaptionTemp(
1974 const PUNICODE_STRING str
,
1977 /* Used with NtUserDrawIconEx, last parameter. */
1978 typedef struct _DRAWICONEXDATA
1984 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1996 HBRUSH hbrFlickerFreeDraw
,
2003 NtUserEmptyClipboard(VOID
);
2007 NtUserEnableScrollBar(
2014 NtUserEndDeferWindowPosEx(
2022 CONST PAINTSTRUCT
*lPs
);
2026 NtUserEnumDisplayDevices(
2027 PUNICODE_STRING lpDevice
, /* device name */
2028 DWORD iDevNum
, /* display device */
2029 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
2030 DWORD dwFlags
); /* reserved */
2035 NtUserEnumDisplayMonitors(
2038 MONITORENUMPROC lpfnEnum,
2041 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
2044 NtUserEnumDisplayMonitors(
2045 OPTIONAL IN HDC hDC
,
2046 OPTIONAL IN LPCRECT pRect
,
2047 OPTIONAL OUT HMONITOR
*hMonitorList
,
2048 OPTIONAL OUT LPRECT monitorRectList
,
2049 OPTIONAL IN DWORD listSize
);
2054 NtUserEnumDisplaySettings(
2055 PUNICODE_STRING lpszDeviceName
,
2057 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
2067 NtUserExcludeUpdateRgn(
2083 HWND hwndChildAfter
,
2084 PUNICODE_STRING ucClassName
,
2085 PUNICODE_STRING ucWindowName
,
2090 NtUserFlashWindowEx(
2091 IN PFLASHWINFO pfwi
);
2095 NtUserGetAltTabInfo(
2111 NtUserGetAppImeLevel(
2116 NtUserGetAsyncKeyState(
2119 _Success_(return != 0)
2120 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return * 2 + 2))
2125 _Inout_ PUNICODE_STRING pustrName
);
2129 NtUserGetCaretBlinkTime(VOID
);
2139 HINSTANCE hInstance
,
2140 PUNICODE_STRING ClassName
,
2142 LPWSTR
*ppszMenuName
,
2149 BOOL Real
, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2150 PUNICODE_STRING ClassName
);
2154 NtUserGetClipboardData(
2156 PGETCLIPBDATA pgcd
);
2160 NtUserGetClipboardFormatName(
2162 LPWSTR lpszFormatName
,
2167 NtUserGetClipboardOwner(VOID
);
2171 NtUserGetClipboardSequenceNumber(VOID
);
2175 NtUserGetClipboardViewer(VOID
);
2179 NtUserGetClipCursor(
2184 NtUserGetComboBoxInfo(
2186 PCOMBOBOXINFO pcbi
);
2190 NtUserGetControlBrush(
2197 NtUserGetControlColor(
2212 NtUserGetCursorFrameInfo(
2220 NtUserGetCursorInfo(
2237 NtUserGetDoubleClickTime(VOID
);
2241 NtUserGetForegroundWindow(VOID
);
2245 NtUserGetGuiResources(
2251 NtUserGetGUIThreadInfo(
2253 LPGUITHREADINFO lpgui
);
2255 _Success_(return != FALSE
)
2259 _In_ HANDLE hCurIcon
,
2260 _Out_opt_ PICONINFO IconInfo
,
2261 _Inout_opt_ PUNICODE_STRING lpInstName
,
2262 _Inout_opt_ PUNICODE_STRING lpResName
,
2263 _Out_opt_ LPDWORD pbpp
,
2264 _In_ BOOL bInternal
);
2285 PIMEINFOEX pImeInfoEx
,
2290 NtUserGetInternalWindowPos(
2297 NtUserGetKeyboardLayout(
2302 NtUserGetKeyboardLayoutList(
2308 NtUserGetKeyboardLayoutName(
2313 NtUserGetKeyboardState(
2318 NtUserGetKeyboardType(
2323 NtUserGetKeyNameText(
2335 NtUserGetLayeredWindowAttributes(
2343 NtUserGetListBoxInfo(
2356 NtUserGetMouseMovePointsEx(
2358 LPMOUSEMOVEPOINT lppt
,
2359 LPMOUSEMOVEPOINT lpptBuf
,
2365 NtUserGetObjectInformation(
2368 PVOID pvInformation
,
2370 PDWORD nLengthNeeded
);
2374 NtUserGetOpenClipboardWindow(VOID
);
2378 NtUserGetPriorityClipboardFormat(
2379 UINT
*paFormatPriorityList
,
2384 NtUserGetProcessWindowStation(VOID
);
2388 NtUserGetRawInputBuffer(
2395 NtUserGetRawInputData(
2396 HRAWINPUT hRawInput
,
2404 NtUserGetRawInputDeviceInfo(
2412 NtUserGetRawInputDeviceList(
2413 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2414 PUINT puiNumDevices
,
2419 NtUserGetRegisteredRawInputDevices(
2420 PRAWINPUTDEVICE pRawInputDevices
,
2421 PUINT puiNumDevices
,
2426 NtUserGetScrollBarInfo(
2429 PSCROLLBARINFO psbi
);
2433 NtUserGetThreadDesktop(
2437 enum ThreadStateRoutines
2439 THREADSTATE_GETTHREADINFO
,
2440 THREADSTATE_INSENDMESSAGE
,
2441 THREADSTATE_FOCUSWINDOW
,
2442 THREADSTATE_ACTIVEWINDOW
,
2443 THREADSTATE_CAPTUREWINDOW
,
2444 THREADSTATE_PROGMANWINDOW
,
2445 THREADSTATE_TASKMANWINDOW
,
2446 THREADSTATE_GETMESSAGETIME
,
2447 THREADSTATE_GETINPUTSTATE
,
2448 THREADSTATE_UPTIMELASTREAD
,
2449 THREADSTATE_FOREGROUNDTHREAD
,
2450 THREADSTATE_GETCURSOR
,
2451 THREADSTATE_GETMESSAGEEXTRAINFO
2456 NtUserGetThreadState(
2461 NtUserGetTitleBarInfo(
2467 NtUserGetUpdateRect(
2486 NtUserGetWindowPlacement(
2488 WINDOWPLACEMENT
*lpwndpl
);
2493 HINSTANCE hInstance
,
2494 PUNICODE_STRING ClassName
);
2498 NtUserHardErrorControl(
2505 NtUserImpersonateDdeClientWindow(
2513 HANDLE hPowerRequestEvent
,
2514 HANDLE hMediaRequestEvent
);
2518 NtUserInitializeClientPfnArrays(
2519 PPFNCLIENT pfnClientA
,
2520 PPFNCLIENT pfnClientW
,
2521 PPFNCLIENTWORKER pfnClientWorker
,
2522 HINSTANCE hmodUser
);
2542 NtUserInternalGetWindowText(
2549 NtUserInvalidateRect(
2556 NtUserInvalidateRgn(
2563 NtUserIsClipboardFormatAvailable(
2574 NtUserLoadKeyboardLayoutEx(
2577 IN PUNICODE_STRING puszKeyboardName
,
2579 IN PUNICODE_STRING puszKLID
,
2585 NtUserLockWindowStation(
2586 HWINSTA hWindowStation
);
2590 NtUserLockWindowUpdate(
2595 NtUserLockWorkStation(VOID
);
2599 NtUserMapVirtualKeyEx(
2605 typedef struct tagDOSENDMESSAGE
2611 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2620 ULONG_PTR ResultInfo
,
2621 DWORD dwType
, /* FNID_XX types */
2628 UINT cmd
, /* Wine SW_ commands */
2633 NtUserMNDragLeave(VOID
);
2643 NtUserModifyUserStartupInfoFlags(
2660 NtUserNotifyIMEStatus(
2667 NtUserNotifyProcessCreate(
2668 HANDLE NewProcessId
,
2669 HANDLE ParentThreadId
,
2675 NtUserNotifyWinEvent(
2683 NtUserOpenClipboard(
2690 POBJECT_ATTRIBUTES ObjectAttributes
,
2692 ACCESS_MASK dwDesiredAccess
);
2696 NtUserOpenInputDesktop(
2699 ACCESS_MASK dwDesiredAccess
);
2703 NtUserOpenWindowStation(
2704 POBJECT_ATTRIBUTES ObjectAttributes
,
2705 ACCESS_MASK dwDesiredAccess
);
2741 NtUserPostThreadMessage(
2756 NtUserProcessConnect(
2757 IN HANDLE ProcessHandle
,
2758 OUT PUSERCONNECT pUserConnect
,
2759 IN ULONG Size
); /* sizeof(USERCONNECT) */
2763 NtUserQueryInformationThread(
2764 IN HANDLE ThreadHandle
,
2765 IN USERTHREADINFOCLASS ThreadInformationClass
,
2766 OUT PVOID ThreadInformation
,
2767 IN ULONG ThreadInformationLength
);
2771 NtUserQueryInputContext(
2777 NtUserQuerySendMessage(
2782 NtUserQueryUserCounters(
2789 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2790 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2791 #define QUERY_WINDOW_ACTIVE 0x02
2792 #define QUERY_WINDOW_FOCUS 0x03
2793 #define QUERY_WINDOW_ISHUNG 0x04
2794 #define QUERY_WINDOW_REAL_ID 0x05
2795 #define QUERY_WINDOW_FOREGROUND 0x06
2805 NtUserRealInternalGetMessage(
2815 NtUserRealChildWindowFromPoint(
2822 NtUserRealWaitMessageEx(
2830 CONST RECT
*lprcUpdate
,
2836 NtUserRegisterClassExWOW(
2838 PUNICODE_STRING pustrClassName
,
2839 PUNICODE_STRING pustrCNVersion
,
2840 PCLSMENUNAME pClassMenuName
,
2847 NtUserRegisterRawInputDevices(
2848 IN PCRAWINPUTDEVICE pRawInputDevices
,
2849 IN UINT uiNumDevices
,
2854 NtUserRegisterUserApiHook(
2855 PUNICODE_STRING m_dllname1
,
2856 PUNICODE_STRING m_funname1
,
2862 NtUserRegisterHotKey(
2870 NtUserRegisterTasklist(
2875 NtUserRegisterWindowMessage(
2876 PUNICODE_STRING MessageName
);
2880 NtUserRemoteConnect(
2887 NtUserRemoteRedrawRectangle(
2895 NtUserRemoteRedrawScreen(VOID
);
2899 NtUserRemoteStopScreenUpdates(VOID
);
2909 NtUserResolveDesktop(
2910 IN HANDLE ProcessHandle
,
2911 IN PUNICODE_STRING DesktopPath
,
2913 OUT HWINSTA
* phWinSta
);
2917 NtUserResolveDesktopForWOW(
2934 CONST RECT
*lprcScroll
,
2935 CONST RECT
*lprcClip
,
2941 NtUserScrollWindowEx(
2946 const RECT
*clipRect
,
2960 NtUserSetActiveWindow(
2965 NtUserSetAppImeLevel(
2979 ULONG_PTR dwNewLong
,
2991 NtUserSetClipboardData(
2998 NtUserSetClipboardViewer(
2999 HWND hWndNewViewer
);
3003 NtUserSelectPalette(
3006 BOOL ForceBackground
);
3010 NtUserSetConsoleReserveKeys(
3021 NtUserSetCursorContents(
3023 PICONINFO IconInfo
);
3027 NtUserSetCursorIconData(
3028 _In_ HCURSOR hCursor
,
3029 _In_opt_ PUNICODE_STRING pustrModule
,
3030 _In_opt_ PUNICODE_STRING puSrcName
,
3031 _In_
const CURSORDATA
*pCursorData
);
3033 typedef struct _tagFINDEXISTINGCURICONPARAM
3038 } FINDEXISTINGCURICONPARAM
;
3042 NtUserFindExistingCursorIcon(
3043 _In_ PUNICODE_STRING pustrModule
,
3044 _In_ PUNICODE_STRING pustrRsrc
,
3045 _In_ FINDEXISTINGCURICONPARAM
*param
);
3055 NtUserSetDbgTagCount(
3075 PIMEINFOEX pImeInfoEx
);
3079 NtUserSetImeOwnerWindow(
3085 NtUserSetInformationProcess(
3093 NtUserSetInformationThread(
3094 IN HANDLE ThreadHandle
,
3095 IN USERTHREADINFOCLASS ThreadInformationClass
,
3096 IN PVOID ThreadInformation
,
3097 IN ULONG ThreadInformationLength
);
3101 NtUserSetInternalWindowPos(
3109 NtUserSetKeyboardState(
3114 NtUserSetLayeredWindowAttributes(
3122 NtUserSetLogonNotifyWindow(
3127 NtUserSetObjectInformation(
3130 PVOID pvInformation
,
3137 HWND hWndNewParent
);
3141 NtUserSetProcessWindowStation(
3142 HWINSTA hWindowStation
);
3158 NtUserSetScrollInfo(
3166 NtUserSetShellWindowEx(
3168 HWND hwndShellListView
);
3174 IN CONST INT
*lpaElements
,
3175 IN CONST COLORREF
*lpaRgbValues
,
3180 NtUserSetSystemCursor(
3186 NtUserSetThreadDesktop(
3191 NtUserSetThreadState(
3197 NtUserSetSystemTimer(
3201 TIMERPROC lpTimerFunc
);
3205 NtUserSetThreadLayoutHandles(
3215 TIMERPROC lpTimerFunc
);
3219 NtUserSetWindowFNID(
3225 NtUserSetWindowLong(
3233 NtUserSetWindowPlacement(
3235 WINDOWPLACEMENT
*lpwndpl
);
3241 HWND hWndInsertAfter
,
3257 NtUserSetWindowsHookAW(
3264 NtUserSetWindowsHookEx(
3266 PUNICODE_STRING ModuleName
,
3274 NtUserSetWindowStationUser(
3275 HWINSTA hWindowStation
,
3282 NtUserSetWindowWord(
3289 NtUserSetWinEventHook(
3292 HMODULE hmodWinEventProc
,
3293 PUNICODE_STRING puString
,
3294 WINEVENTPROC lpfnWinEventProc
,
3311 NtUserShowScrollBar(
3324 NtUserShowWindowAsync(
3330 NtUserSoundSentry(VOID
);
3334 NtUserSwitchDesktop(
3339 NtUserSystemParametersInfo(
3347 NtUserTestForInteractiveUser(
3363 NtUserTrackMouseEvent(
3364 LPTRACKMOUSEEVENT lpEventTrack
);
3368 NtUserTranslateAccelerator(
3375 NtUserTranslateMessage(
3381 NtUserUnhookWindowsHookEx(
3386 NtUserUnhookWinEvent(
3387 HWINEVENTHOOK hWinEventHook
);
3391 NtUserUnloadKeyboardLayout(
3396 NtUserUnlockWindowStation(
3397 HWINSTA hWindowStation
);
3401 NtUserUnregisterClass(
3402 PUNICODE_STRING ClassNameOrAtom
,
3403 HINSTANCE hInstance
,
3404 PCLSMENUNAME pClassMenuName
);
3408 NtUserUnregisterHotKey(
3414 NtUserUnregisterUserApiHook(VOID
);
3418 NtUserUpdateInputContext(
3425 NtUserUpdateInstance(
3432 NtUserUpdateLayeredWindow(
3440 BLENDFUNCTION
*pblend
,
3446 NtUserUpdatePerUserSystemParameters(
3452 NtUserUserHandleGrantAccess(
3453 IN HANDLE hUserHandle
,
3459 NtUserValidateHandleSecure(
3466 CONST RECT
*lpRect
);
3470 NtUserValidateTimerCallback(
3482 NtUserWaitForInputIdle(
3484 IN DWORD dwMilliseconds
,
3485 IN BOOL Unknown2
); /* Always FALSE */
3489 NtUserWaitForMsgAndEvent(
3494 NtUserWaitMessage(VOID
);
3498 NtUserWin32PoolAllocationStats(
3508 NtUserWindowFromPoint(
3514 NtUserYieldTask(VOID
);
3517 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3520 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3521 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3522 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3523 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3524 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051
3525 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052
3527 #define MSQ_STATE_CAPTURE 0x1
3528 #define MSQ_STATE_ACTIVE 0x2
3529 #define MSQ_STATE_FOCUS 0x3
3530 #define MSQ_STATE_MENUOWNER 0x4
3531 #define MSQ_STATE_MOVESIZE 0x5
3532 #define MSQ_STATE_CARET 0x6
3534 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3535 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3539 NtUserGetMonitorInfo(
3540 IN HMONITOR hMonitor
,
3541 OUT LPMONITORINFO pMonitorInfo
);
3543 /* Should be done in usermode */
3547 NtUserMonitorFromPoint(
3553 NtUserMonitorFromRect(
3559 NtUserMonitorFromWindow(
3563 typedef struct _SETSCROLLBARINFO
3567 DWORD rgstate
[CCHILDREN_SCROLLBAR
+ 1];
3568 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3572 NtUserSetScrollBarInfo(
3575 SETSCROLLBARINFO
*info
);
3577 #endif /* __WIN32K_NTUSER_H */