1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
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 PTHREADINFO pti
; /* pointer to Win32ThreadInfo */
25 PPROCESSINFO 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
;
144 PPROCESSINFO ppiShellProcess
;
151 UINT LastInputWasKbd
:1;
155 WCHAR szDesktopName
[1];
156 } DESKTOPINFO
, *PDESKTOPINFO
;
158 #define CTI_THREADSYSLOCK 0x0001
159 #define CTI_INSENDMESSAGE 0x0002
161 typedef struct _CLIENTTHREADINFO
166 WORD fsWakeBitsJournal
;
168 ULONG tickLastMsgChecked
;
170 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
178 typedef struct _THROBJHEAD
182 } THROBJHEAD
, *PTHROBJHEAD
;
184 typedef struct _THRDESKHEAD
187 struct _DESKTOP
*rpdesk
;
189 } THRDESKHEAD
, *PTHRDESKHEAD
;
191 typedef struct _PROCDESKHEAD
195 struct _DESKTOP
*rpdesk
;
197 } PROCDESKHEAD
, *PPROCDESKHEAD
;
199 typedef struct _PROCMARKHEAD
204 } PROCMARKHEAD
, *PPROCMARKHEAD
;
206 #define UserHMGetHandle(obj) ((obj)->head.h)
208 /* Window Client Information structure */
211 #define WEF_SETBYWNDPTI 0x0001
213 typedef struct tagHOOK
216 struct tagHOOK
*phkNext
; /* This is for user space. */
217 int HookId
; /* Hook table index */
219 ULONG flags
; /* Some internal flags */
221 PTHREADINFO ptiHooked
;
222 struct _DESKTOP
*rpdesk
;
224 LIST_ENTRY Chain
; /* Hook chain entry */
225 HOOKPROC Proc
; /* Hook function */
226 BOOLEAN Ansi
; /* Is it an Ansi hook? */
227 UNICODE_STRING ModuleName
; /* Module name for global hooks */
230 typedef struct tagCLIPBOARDDATA
235 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
237 /* THREADINFO Flags */
238 #define TIF_INCLEANUP 0x00000001
239 #define TIF_16BIT 0x00000002
240 #define TIF_SYSTEMTHREAD 0x00000004
241 #define TIF_CSRSSTHREAD 0x00000008
242 #define TIF_TRACKRECTVISIBLE 0x00000010
243 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
244 #define TIF_DONTATTACHQUEUE 0x00000040
245 #define TIF_DONTJOURNALATTACH 0x00000080
246 #define TIF_WOW64 0x00000100
247 #define TIF_INACTIVATEAPPMSG 0x00000200
248 #define TIF_SPINNING 0x00000400
249 #define TIF_PALETTEAWARE 0x00000800
250 #define TIF_SHAREDWOW 0x00001000
251 #define TIF_FIRSTIDLE 0x00002000
252 #define TIF_WAITFORINPUTIDLE 0x00004000
253 #define TIF_MOVESIZETRACKING 0x00008000
254 #define TIF_VDMAPP 0x00010000
255 #define TIF_DOSEMULATOR 0x00020000
256 #define TIF_GLOBALHOOKER 0x00040000
257 #define TIF_DELAYEDEVENT 0x00080000
258 #define TIF_MSGPOSCHANGED 0x00100000
259 #define TIF_SHUTDOWNCOMPLETE 0x00200000
260 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
261 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
262 #define TIF_GUITHREADINITIALIZED 0x02000000
263 #define TIF_DISABLEIME 0x04000000
264 #define TIF_INGETTEXTLENGTH 0x08000000
265 #define TIF_ANSILENGTH 0x10000000
266 #define TIF_DISABLEHOOKS 0x20000000
268 typedef struct _CALLBACKWND
273 } CALLBACKWND
, *PCALLBACKWND
;
275 #define CI_TRANSACTION 0x00000001
276 #define CI_QUEUEMSG 0x00000002
277 #define CI_WOW 0x00000004
278 #define CI_INITTHREAD 0x00000008
279 #define CI_CURTHPRHOOK 0x00000010
280 #define CI_CLASSESREGISTERED 0x00000020
281 #define CI_IMMACTIVATE 0x00000040
283 typedef struct _CLIENTINFO
289 DWORD dwCompatFlags2
;
290 DWORD dwTIFlags
; /* ThreadInfo TIF_Xxx flags for User space. */
291 PDESKTOPINFO pDeskInfo
;
292 ULONG_PTR ulClientDelta
;
295 CALLBACKWND CallbackWnd
;
297 INT cInDDEMLCallback
;
298 PCLIENTTHREADINFO pClientThreadInfo
;
299 ULONG_PTR dwHookData
;
302 DWORD dwAsyncKeyCache
;
303 BYTE afAsyncKeyState
[8];
304 BYTE afAsyncKeyStateRecentDow
[8];
309 LPDWORD lpdwRegisteredClasses
;
310 ULONG Win32ClientInfo3
[26];
311 /* It's just a pointer reference not to be used w the structure in user space. */
313 } CLIENTINFO
, *PCLIENTINFO
;
315 /* Make sure it fits into the TEB */
316 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
318 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
320 typedef struct tagDDEPACK
324 } DDEPACK
, *PDDEPACK
;
326 #define HRGN_NULL ((HRGN)0) /* NULL empty region */
327 #define HRGN_WINDOW ((HRGN)1) /* region from window rcWindow */
328 #define HRGN_MONITOR ((HRGN)2) /* region from monitor region. */
330 /* Menu Item fType. */
331 #define MFT_RTOL 0x6000
333 /* Menu Item fState. */
334 #define MFS_HBMMENUBMP 0x20000000
336 typedef struct tagITEM
341 struct tagMENU
*spSubMenu
; /* Pop-up menu. */
343 HANDLE hbmpUnchecked
;
344 USHORT
*Xlpstr
; /* Item text pointer. */
346 DWORD_PTR dwItemData
;
347 ULONG xItem
; /* Item position. left */
348 ULONG yItem
; /* " top */
349 ULONG cxItem
; /* Item Size Width */
350 ULONG cyItem
; /* " Height */
351 ULONG dxTab
; /* X position of text after Tab */
352 ULONG ulX
; /* underline.. start position */
353 ULONG ulWidth
; /* underline.. width */
354 HBITMAP hbmp
; /* bitmap */
355 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
356 INT cyBmp
; /* Height " */
358 UNICODE_STRING lpstr
;
361 typedef struct tagMENULIST
363 struct tagMENULIST
*pNext
;
364 struct tagMENU
*pMenu
;
365 } MENULIST
, *PMENULIST
;
367 /* Menu fFlags, upper byte is MNS_X style flags. */
368 #define MNF_POPUP 0x0001
369 #define MNF_UNDERLINE 0x0004
370 #define MNF_INACTIVE 0x0010
371 #define MNF_RTOL 0x0020
372 #define MNF_DESKTOPMN 0x0040
373 #define MNF_SYSDESKMN 0x0080
374 #define MNF_SYSSUBMENU 0x0100
376 #define MNF_SYSMENU 0x0200
378 typedef struct tagMENU
381 ULONG fFlags
; /* [Style flags | Menu flags] */
382 INT iItem
; /* nPos of selected item, if -1 not selected. AKA focused item */
383 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
384 UINT cItems
; /* Number of items in the menu */
385 ULONG cxMenu
; /* Width of the whole menu */
386 ULONG cyMenu
; /* Height of the whole menu */
387 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
388 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
389 PITEM rgItems
; /* Array of menu items */
390 struct tagMENULIST
*pParentMenus
; /* If this is SubMenu, list of parents. */
391 DWORD dwContextHelpId
;
392 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
393 DWORD_PTR dwMenuData
; /* application defined value */
394 HBRUSH hbrBack
; /* brush for menu background */
395 INT iTop
; /* Current scroll position Top */
396 INT iMaxTop
; /* Current scroll position Max Top */
397 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
399 LIST_ENTRY ListEntry
;
400 HWND hWnd
; /* Window containing the menu, use POPUPMENU */
404 typedef struct tagPOPUPMENU
409 ULONG fIsTrackPopup
:1;
410 ULONG fDroppedLeft
:1;
411 ULONG fHierarchyDropped
:1;
412 ULONG fRightButton
:1;
414 ULONG fSynchronous
:1;
416 ULONG fDropNextPopup
:1;
418 ULONG fAboutToHide
:1;
422 ULONG fDelayedFree
:1;
423 ULONG fFlushDelayedFree
:1;
426 ULONG fTrackMouseEvent
:1;
429 // ULONG fDesktopMenu:1;
431 ULONG fUseMonitorRect
:1;
432 struct _WND
*spwndNotify
;
433 struct _WND
*spwndPopupMenu
;
434 struct _WND
*spwndNextPopup
;
435 struct _WND
*spwndPrevPopup
;
437 PMENU spmenuAlternate
;
438 struct _WND
*spwndActivePopup
;
439 struct tagPOPUPMENU
*ppopupmenuRoot
;
440 struct tagPOPUPMENU
*ppmDelayedFree
;
441 UINT posSelectedItem
;
443 } POPUPMENU
, *PPOPUPMENU
;
445 typedef struct _REGISTER_SYSCLASS
447 /* This is a reactos specific class used to initialize the
448 system window classes during user32 initialization */
457 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
459 typedef struct _CLSMENUNAME
461 LPSTR pszClientAnsiMenuName
;
462 LPWSTR pwszClientUnicodeMenuName
;
463 PUNICODE_STRING pusMenuName
;
464 } CLSMENUNAME
, *PCLSMENUNAME
;
466 typedef struct tagSBDATA
474 typedef struct tagSBINFO
481 typedef struct tagSBCALC
503 UserGetCPDA2U
= 0x01, /* " Unicode " */
504 UserGetCPDU2A
= 0X02, /* " Ansi " */
505 UserGetCPDClass
= 0X10,
506 UserGetCPDWindow
= 0X20,
507 UserGetCPDDialog
= 0X40,
508 UserGetCPDWndtoCls
= 0X80
511 typedef struct _CALLPROCDATA
514 struct _CALLPROCDATA
*spcpdNext
;
515 WNDPROC pfnClientPrevious
;
517 } CALLPROCDATA
, *PCALLPROCDATA
;
519 #define CSF_SERVERSIDEPROC 0x0001
520 #define CSF_ANSIPROC 0x0002
521 #define CSF_WOWDEFERDESTROY 0x0004
522 #define CSF_SYSTEMCLASS 0x0008
523 #define CSF_WOWCLASS 0x0010
524 #define CSF_WOWEXTRA 0x0020
525 #define CSF_CACHEDSMICON 0x0040
526 #define CSF_WIN40COMPAT 0x0080
530 struct _CLS
*pclsNext
;
531 RTL_ATOM atomClassName
;
532 ATOM atomNVClassName
;
534 struct _DESKTOP
*rpdeskParent
;
537 PSTR lpszClientAnsiMenuName
; /* For client use */
538 PWSTR lpszClientUnicodeMenuName
; /* " " " */
539 PCALLPROCDATA spcpdFirst
;
540 struct _CLS
*pclsBase
;
541 struct _CLS
*pclsClone
;
542 ULONG cWndReferenceCount
;
548 struct _CURICON_OBJECT
*spicn
;
549 struct _CURICON_OBJECT
*spcur
;
550 HBRUSH hbrBackground
;
551 PWSTR lpszMenuName
; /* kernel use */
552 PSTR lpszAnsiClassName
; /* " */
553 struct _CURICON_OBJECT
*spicnSm
;
555 UINT Unicode
:1; // !CSF_ANSIPROC
556 UINT Global
:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
557 UINT MenuNameIsString
:1;
561 typedef struct _SBINFOEX
563 SCROLLBARINFO ScrollBarInfo
;
564 SCROLLINFO ScrollInfo
;
565 } SBINFOEX
, *PSBINFOEX
;
567 /* State Flags !Not Implemented! */
568 #define WNDS_HASMENU 0X00000001
569 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
570 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
571 #define WNDS_HASCAPTION 0X00000008
572 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
573 #define WNDS_MSGBOX 0X00000020
574 #define WNDS_ACTIVEFRAME 0X00000040
575 #define WNDS_HASSPB 0X00000080
576 #define WNDS_NONCPAINT 0X00000100
577 #define WNDS_SENDERASEBACKGROUND 0X00000200
578 #define WNDS_ERASEBACKGROUND 0X00000400
579 #define WNDS_SENDNCPAINT 0X00000800
580 #define WNDS_INTERNALPAINT 0X00001000
581 #define WNDS_UPDATEDIRTY 0X00002000
582 #define WNDS_HIDDENPOPUP 0X00004000
583 #define WNDS_FORCEMENUDRAW 0X00008000
584 #define WNDS_DIALOGWINDOW 0X00010000
585 #define WNDS_HASCREATESTRUCTNAME 0X00020000
586 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 /* Call proc inside win32k. */
587 #define WNDS_ANSIWINDOWPROC 0x00080000
588 #define WNDS_BEINGACTIVATED 0x00100000
589 #define WNDS_HASPALETTE 0x00200000
590 #define WNDS_PAINTNOTPROCESSED 0x00400000
591 #define WNDS_SYNCPAINTPENDING 0x00800000
592 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
593 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
594 #define WNDS_TOGGLETOPMOST 0x04000000
595 #define WNDS_REDRAWIFHUNG 0x08000000
596 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
597 #define WNDS_ANSICREATOR 0x20000000
598 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
599 #define WNDS_DESTROYED 0x80000000
601 #define WNDSACTIVEFRAME 0x00000006
603 /* State2 Flags !Not Implemented! */
604 #define WNDS2_WMPAINTSENT 0X00000001
605 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
606 #define WNDS2_STARTPAINT 0X00000004
607 #define WNDS2_OLDUI 0X00000008
608 #define WNDS2_HASCLIENTEDGE 0X00000010
609 #define WNDS2_BOTTOMMOST 0X00000020
610 #define WNDS2_FULLSCREEN 0X00000040
611 #define WNDS2_INDESTROY 0X00000080
612 #define WNDS2_WIN31COMPAT 0X00000100
613 #define WNDS2_WIN40COMPAT 0X00000200
614 #define WNDS2_WIN50COMPAT 0X00000400
615 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
616 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
617 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
618 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
619 #define WNDS2_HELPBUTTONDOWN 0X00008000
620 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
621 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
622 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
623 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
624 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
625 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
626 #define WNDS2_FORCENCPAINT 0X00400000
627 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
628 #define WNDS2_FULLSCREENMODE 0X01000000
629 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
630 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
631 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
632 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
633 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
636 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
637 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
638 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
639 #define WS_EX2_LINKED 0X00000008
640 #define WS_EX2_LAYEREDFORDWM 0X00000010
641 #define WS_EX2_LAYEREDLIMBO 0X00000020
642 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
643 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
644 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
645 #define WS_EX2_HASOVERLAY 0X00000200
646 #define WS_EX2_CONSOLEWINDOW 0X00000400
647 #define WS_EX2_CHILDNOACTIVATE 0X00000800
649 #define WPF_MININIT 0x0008
650 #define WPF_MAXINIT 0x0010
657 /* Extended style. */
661 /* Handle of the module that created the window. */
664 struct _WND
*spwndNext
;
665 struct _WND
*spwndPrev
;
666 struct _WND
*spwndParent
;
667 struct _WND
*spwndChild
;
668 struct _WND
*spwndOwner
;
672 /* Pointer to the window class. */
675 /* Property list head.*/
676 LIST_ENTRY PropListHead
;
680 /* system menu handle. */
683 /* Window menu handle or window id */
684 UINT IDMenu
; // Use spmenu
689 LARGE_UNICODE_STRING strName
;
690 /* Size of the extra data associated with the window. */
692 struct _WND
*spwndLastActive
;
693 HIMC hImc
; // Input context associated with this window.
696 //PD3DMATRIX pTransForm;
697 struct _WND
*spwndClipboardListener
;
706 UINT flags
; /* WPF_ flags. */
709 UINT Unicode
:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */
710 UINT InternalPosInitialized
:1;
711 UINT HideFocus
:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */
712 UINT HideAccel
:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */
715 PSBINFOEX pSBInfoex
; // convert to PSBINFO
716 /* Entry in the list of thread windows. */
717 LIST_ENTRY ThreadListEntry
;
720 #define PWND_BOTTOM ((PWND)1)
722 typedef struct _SBWND
730 typedef struct _MENUWND
733 PPOPUPMENU ppopupmenu
;
734 } MENUWND
, *PMENUWND
;
736 typedef struct _PFNCLIENT
738 WNDPROC pfnScrollBarWndProc
;
739 WNDPROC pfnTitleWndProc
;
740 WNDPROC pfnMenuWndProc
;
741 WNDPROC pfnDesktopWndProc
;
742 WNDPROC pfnDefWindowProc
;
743 WNDPROC pfnMessageWindowProc
;
744 WNDPROC pfnSwitchWindowProc
;
745 WNDPROC pfnButtonWndProc
;
746 WNDPROC pfnComboBoxWndProc
;
747 WNDPROC pfnComboListBoxProc
;
748 WNDPROC pfnDialogWndProc
;
749 WNDPROC pfnEditWndProc
;
750 WNDPROC pfnListBoxWndProc
;
751 WNDPROC pfnMDIClientWndProc
;
752 WNDPROC pfnStaticWndProc
;
753 WNDPROC pfnImeWndProc
;
754 WNDPROC pfnGhostWndProc
;
755 WNDPROC pfnHkINLPCWPSTRUCT
;
756 WNDPROC pfnHkINLPCWPRETSTRUCT
;
757 WNDPROC pfnDispatchHook
;
758 WNDPROC pfnDispatchDefWindowProc
;
759 WNDPROC pfnDispatchMessage
;
760 WNDPROC pfnMDIActivateDlgProc
;
761 } PFNCLIENT
, *PPFNCLIENT
;
764 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
765 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
769 (CALLBACK
*WNDPROC_EX
)(
776 typedef struct _PFNCLIENTWORKER
778 WNDPROC_EX pfnButtonWndProc
;
779 WNDPROC_EX pfnComboBoxWndProc
;
780 WNDPROC_EX pfnComboListBoxProc
;
781 WNDPROC_EX pfnDialogWndProc
;
782 WNDPROC_EX pfnEditWndProc
;
783 WNDPROC_EX pfnListBoxWndProc
;
784 WNDPROC_EX pfnMDIClientWndProc
;
785 WNDPROC_EX pfnStaticWndProc
;
786 WNDPROC_EX pfnImeWndProc
;
787 WNDPROC_EX pfnGhostWndProc
;
788 WNDPROC_EX pfnCtfHookProc
;
789 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
799 /* FNID's for NtUserSetWindowFNID, NtUserMessageCall */
800 #define FNID_FIRST 0x029A
801 #define FNID_SCROLLBAR 0x029A
802 #define FNID_ICONTITLE 0x029B
803 #define FNID_MENU 0x029C
804 #define FNID_DESKTOP 0x029D
805 #define FNID_DEFWINDOWPROC 0x029E
806 #define FNID_MESSAGEWND 0x029F
807 #define FNID_SWITCH 0x02A0
808 #define FNID_BUTTON 0x02A1
809 #define FNID_COMBOBOX 0x02A2
810 #define FNID_COMBOLBOX 0x02A3
811 #define FNID_DIALOG 0x02A4
812 #define FNID_EDIT 0x02A5
813 #define FNID_LISTBOX 0x02A6
814 #define FNID_MDICLIENT 0x02A7
815 #define FNID_STATIC 0x02A8
816 #define FNID_IME 0x02A9
817 #define FNID_GHOST 0x02AA
818 #define FNID_CALLWNDPROC 0x02AB
819 #define FNID_CALLWNDPROCRET 0x02AC
820 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
821 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
822 #define FNID_MB_DLGPROC 0x02AF
823 #define FNID_MDIACTIVATEDLGPROC 0x02B0
824 #define FNID_SENDMESSAGE 0x02B1
825 #define FNID_SENDMESSAGEFF 0x02B2
826 /* Kernel has option to use TimeOut or normal msg send, based on type of msg. */
827 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
828 #define FNID_SENDMESSAGECALLPROC 0x02B4
829 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
830 #define FNID_TOOLTIPS 0x02B6
831 #define FNID_SENDNOTIFYMESSAGE 0x02B7
832 #define FNID_SENDMESSAGECALLBACK 0x02B8
833 #define FNID_LAST 0x02B9
835 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
836 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
838 #define FNID_DDEML 0x2000 /* Registers DDEML */
839 #define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */
840 /* Seen during WM_CREATE on error exit too. */
841 #define FNID_FREED 0x8000 /* Window being Freed... */
843 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
845 #define GETPFNCLIENTA(fnid) \
846 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
847 #define GETPFNCLIENTW(fnid) \
848 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
850 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
852 /* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */
853 #define ICLS_BUTTON 0
855 #define ICLS_STATIC 2
856 #define ICLS_LISTBOX 3
857 #define ICLS_SCROLLBAR 4
858 #define ICLS_COMBOBOX 5
859 #define ICLS_MDICLIENT 6
860 #define ICLS_COMBOLBOX 7
861 #define ICLS_DDEMLEVENT 8
862 #define ICLS_DDEMLMOTHER 9
863 #define ICLS_DDEML16BIT 10
864 #define ICLS_DDEMLCLIENTA 11
865 #define ICLS_DDEMLCLIENTW 12
866 #define ICLS_DDEMLSERVERA 13
867 #define ICLS_DDEMLSERVERW 14
869 #define ICLS_GHOST 16
870 #define ICLS_DESKTOP 17
871 #define ICLS_DIALOG 18
873 #define ICLS_SWITCH 20
874 #define ICLS_ICONTITLE 21
875 #define ICLS_TOOLTIPS 22
876 #if (_WIN32_WINNT <= 0x0501)
877 #define ICLS_UNKNOWN 22
878 #define ICLS_NOTUSED 23
880 #define ICLS_SYSSHADOW 23
881 #define ICLS_HWNDMESSAGE 24
882 #define ICLS_NOTUSED 25
886 #define COLOR_LAST COLOR_MENUBAR
887 #define MAX_MB_STRINGS 11
889 #define SRVINFO_DBCSENABLED 0x0002
890 #define SRVINFO_IMM32 0x0004
891 #define SRVINFO_APIHOOK 0x0010
892 #define SRVINFO_METRICS 0x0020
893 #define SRVINFO_KBDPREF 0x0080
895 #define NUM_SYSCOLORS 31
897 typedef struct tagOEMBITMAPINFO
903 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
905 typedef struct tagMBSTRING
910 } MBSTRING
, *PMBSTRING
;
912 typedef struct tagDPISERVERINFO
914 INT gclBorder
; /* 000 */
915 HFONT hCaptionFont
; /* 004 */
916 HFONT hMsgFont
; /* 008 */
917 INT cxMsgFontChar
; /* 00C */
918 INT cyMsgFontChar
; /* 010 */
919 UINT wMaxBtnSize
; /* 014 */
920 } DPISERVERINFO
, *PDPISERVERINFO
;
923 #define PUSIF_PALETTEDISPLAY 0x01
924 #define PUSIF_SNAPTO 0x02
925 #define PUSIF_COMBOBOXANIMATION 0x04
926 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
927 #define PUSIF_KEYBOARDCUES 0x20
929 typedef struct _PERUSERSERVERINFO
931 INT aiSysMet
[SM_CMETRICS
];
932 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
933 COLORREF argbSystem
[NUM_SYSCOLORS
];
934 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
938 DWORD dwLastRITEventTickCount
;
943 UINT ucWheelScrollLines
;
944 UINT ucWheelScrollChars
;
945 INT wMaxLeftOverlapChars
;
946 INT wMaxRightOverlapChars
;
949 TEXTMETRICW tmSysFont
;
950 DPISERVERINFO dpiSystem
;
951 HICON hIconSmWindows
;
954 DWORD dwAsyncKeyCache
;
956 OEMBITMAPINFO oembmi
[93];
965 DWORD dwLastSystemRITEventTickCountUpdate
;
966 ULONG adwDBGTAGFlags
[35];
969 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
971 typedef struct tagSERVERINFO
974 ULONG_PTR cHandleEntries
;
975 PFN_FNID mpFnidPfn
[FNID_NUM
];
976 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
977 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
978 PFNCLIENT apfnClientA
;
979 PFNCLIENT apfnClientW
;
980 PFNCLIENTWORKER apfnClientWorker
;
982 ATOM atomSysClass
[ICLS_NOTUSED
+1];
983 DWORD dwDefaultHeapBase
;
984 DWORD dwDefaultHeapSize
;
986 MBSTRING MBStrings
[MAX_MB_STRINGS
];
989 ATOM atomContextHelpIdProp
;
990 ATOM atomFrostedWindowProp
;
991 CHAR acOemToAnsi
[256];
992 CHAR acAnsiToOem
[256];
993 DWORD dwInstalledEventHooks
;
995 } SERVERINFO
, *PSERVERINFO
;
998 C_ASSERT(sizeof(SERVERINFO
) <= PAGE_SIZE
);
1002 /* Server event activity bits. */
1003 #define SRV_EVENT_MENU 0x0001
1004 #define SRV_EVENT_END_APPLICATION 0x0002
1005 #define SRV_EVENT_RUNNING 0x0004
1006 #define SRV_EVENT_NAMECHANGE 0x0008
1007 #define SRV_EVENT_VALUECHANGE 0x0010
1008 #define SRV_EVENT_STATECHANGE 0x0020
1009 #define SRV_EVENT_LOCATIONCHANGE 0x0040
1010 #define SRV_EVENT_CREATE 0x8000
1012 typedef struct _PROPLISTITEM
1016 } PROPLISTITEM
, *PPROPLISTITEM
;
1018 typedef struct _PROPERTY
1020 LIST_ENTRY PropListEntry
;
1024 } PROPERTY
, *PPROPERTY
;
1026 typedef struct _BROADCASTPARM
1033 } BROADCASTPARM
, *PBROADCASTPARM
;
1035 PTHREADINFO
GetW32ThreadInfo(VOID
);
1036 PPROCESSINFO
GetW32ProcessInfo(VOID
);
1038 typedef struct _WNDMSG
1044 typedef struct _SHAREDINFO
1046 PSERVERINFO psi
; /* global Server Info */
1047 PVOID aheList
; /* Handle Entry List */
1048 PVOID pDispInfo
; /* global PDISPLAYINFO pointer */
1049 ULONG_PTR ulSharedDelta
; /* Heap delta */
1050 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
1051 WNDMSG DefWindowMsgs
;
1052 WNDMSG DefWindowSpecMsgs
;
1053 } SHAREDINFO
, *PSHAREDINFO
;
1055 /* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */
1056 typedef struct _USERCONNECT
1059 ULONG ulCurrentVersion
;
1060 DWORD dwDispatchCount
;
1061 SHAREDINFO siClient
;
1062 } USERCONNECT
, *PUSERCONNECT
;
1064 /* WinNT 5.0 compatible user32 / win32k */
1065 #define USER_VERSION MAKELONG(0x0000, 0x0005)
1067 #if defined(_M_IX86)
1068 C_ASSERT(sizeof(USERCONNECT
) == 0x124);
1071 typedef struct tagGETCLIPBDATA
1080 } GETCLIPBDATA
, *PGETCLIPBDATA
;
1082 typedef struct tagSETCLIPBDATA
1085 BOOL fIncSerialNumber
;
1086 } SETCLIPBDATA
, *PSETCLIPBDATA
;
1088 /* Used with NtUserSetCursorIconData, last parameter. */
1089 typedef struct tagCURSORDATA
1095 ULONG CURSORF_flags
;
1102 HBITMAP hbmUserAlpha
; /* Could be in W7U, not in W2k */
1108 struct tagCURSORDATA
*aspcur
;
1112 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1114 /* CURSORF_flags: */
1115 #define CURSORF_FROMRESOURCE 0x0001
1116 #define CURSORF_GLOBAL 0x0002
1117 #define CURSORF_LRSHARED 0x0004
1118 #define CURSORF_ACON 0x0008
1119 #define CURSORF_WOWCLEANUP 0x0010
1120 #define CURSORF_ACONFRAME 0x0040
1121 #define CURSORF_SECRET 0x0080
1122 #define CURSORF_LINKED 0x0100
1123 #define CURSORF_CURRENT 0x0200
1125 typedef struct tagIMEINFOEX
1129 WCHAR wszUIClass
[16];
1130 ULONG fdwInitConvMode
;
1133 DWORD dwProdVersion
;
1134 DWORD dwImeWinVersion
;
1135 WCHAR wszImeDescription
[50];
1136 WCHAR wszImeFile
[80];
1139 INT fSysWow64Only
:1;
1142 } IMEINFOEX
, *PIMEINFOEX
;
1144 typedef struct tagIMEUI
1157 UINT fChildThreadDef
:1;
1158 UINT fCtrlShowStatus
:1;
1159 UINT fFreeActiveEvent
:1;
1163 /* Window Extra data container. */
1164 typedef struct _IMEWND
1172 NtUserAssociateInputContext(
1179 NtUserBuildHimcList(
1196 NtUserCheckMenuItem(
1203 NtUserCtxDisplayIOCtl(
1222 NtUserDrawMenuBarTemp(
1231 NtUserEnableMenuItem(
1238 NtUserEndMenu(VOID
);
1242 NtUserGetMenuBarInfo(
1256 NtUserGetMenuItemRect(
1264 NtUserGetSystemMenu(
1270 NtUserHiliteMenuItem(
1278 NtUserMenuItemFromPoint(
1300 NtUserSetMenuContextHelpId(
1302 DWORD dwContextHelpId
);
1306 NtUserSetMenuDefaultItem(
1313 NtUserSetMenuFlagRtoL(
1318 NtUserSetSystemMenu(
1324 NtUserThunkedMenuInfo(
1330 NtUserThunkedMenuItemInfo(
1335 LPMENUITEMINFOW lpmii
,
1336 PUNICODE_STRING lpszCaption
);
1340 NtUserTrackPopupMenuEx(
1350 NtUserActivateKeyboardLayout(
1356 NtUserAlterWindowStyle(
1363 NtUserAttachThreadInput(
1365 IN DWORD idAttachTo
,
1392 NtUserBuildHwndList(
1403 NtUserBuildNameList(
1407 PULONG pRequiredSize
);
1411 NtUserBuildPropList(
1417 /* apfnSimpleCall indices from Windows XP SP 2 */
1418 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1419 #define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */
1421 enum SimpleCallRoutines
1423 NOPARAM_ROUTINE_CREATEMENU
,
1424 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1425 #if (WIN32K_VERSION >= NTDDI_VISTA)
1426 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1427 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1428 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1429 NOPARAM_ROUTINE_DESTROY_CARET
,
1431 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1432 #if (WIN32K_VERSION < NTDDI_VISTA)
1433 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1434 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1435 NOPARAM_ROUTINE_DESTROY_CARET
,
1437 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1438 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1439 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1440 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1441 #if (WIN32K_VERSION >= NTDDI_VISTA)
1442 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1444 NOPARAM_ROUTINE_GETREMOTEPROCESSID
,
1446 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1447 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1448 #if (WIN32K_VERSION >= NTDDI_VISTA)
1449 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1450 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1452 NOPARAM_ROUTINE_RELEASECAPTURE
,
1453 NOPARAM_ROUTINE_RESETDBLCLICK
,
1454 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1455 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1456 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1457 NOPARAM_ROUTINE_REMOTELOGOFF
,
1458 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1459 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1460 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1461 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1462 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1463 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1464 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1465 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1466 #if (WIN32K_VERSION >= NTDDI_VISTA)
1467 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1469 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1470 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1471 #if (WIN32K_VERSION < NTDDI_VISTA)
1472 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1474 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1475 #if (WIN32K_VERSION >= NTDDI_VISTA)
1476 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1478 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1479 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1480 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1481 #if (WIN32K_VERSION < NTDDI_VISTA)
1482 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1484 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1485 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1486 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1487 #if (WIN32K_VERSION < NTDDI_VISTA)
1488 ONEPARAM_ROUTINE_GETCURSORPOS
,
1490 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1491 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1492 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1493 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1494 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1495 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1496 #if (WIN32K_VERSION < NTDDI_VISTA)
1497 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1499 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1500 ONEPARAM_ROUTINE_LOADFONTS
,
1501 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1502 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1503 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1504 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1505 #if (WIN32K_VERSION < NTDDI_VISTA)
1506 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1508 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1509 ONEPARAM_ROUTINE_REGISTERLPK
,
1510 #if (WIN32K_VERSION >= NTDDI_VISTA)
1511 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1513 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1514 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1515 ONEPARAM_ROUTINE_RELEASEDC
,
1516 #if (WIN32K_VERSION >= NTDDI_VISTA)
1517 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1519 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1520 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1521 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1522 #if (WIN32K_VERSION < NTDDI_VISTA)
1523 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1525 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1526 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1527 #if (WIN32K_VERSION >= NTDDI_VISTA)
1528 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1530 ONEPARAM_ROUTINE_SHOWCURSOR
,
1531 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1532 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1533 X_ROUTINE_WOWMODULEUNLOAD
,
1534 #if (WIN32K_VERSION < NTDDI_VISTA)
1535 X_ROUTINE_REMOTENOTIFY
,
1537 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1538 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1539 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1540 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1541 HWND_ROUTINE_SETMSGBOX
,
1542 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1543 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1544 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1545 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1546 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1547 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1548 HWNDPARAM_ROUTINE_SETVISIBLE
,
1549 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1550 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1551 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1552 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1553 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1554 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1555 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1556 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1557 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1558 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1559 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1560 HWNDLOCK_ROUTINE_SETSYSMENU
,
1561 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1562 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1563 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1564 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1565 TWOPARAM_ROUTINE_REDRAWTITLE
,
1566 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1567 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1568 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1569 TWOPARAM_ROUTINE_VALIDATERGN
,
1570 #if (WIN32K_VERSION >= NTDDI_VISTA)
1571 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1572 TWOPARAM_ROUTINE_GETCURSORPOS
,
1574 TWOPARAM_ROUTINE_GETHDEVNAME
,
1575 TWOPARAM_ROUTINE_INITANSIOEM
,
1576 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1577 #if (WIN32K_VERSION >= NTDDI_VISTA)
1578 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1580 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1581 #if (WIN32K_VERSION >= NTDDI_VISTA)
1582 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1584 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1586 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1587 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1588 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1589 TWOPARAM_ROUTINE_SETCARETPOS
,
1590 TWOPARAM_ROUTINE_SETCURSORPOS
,
1591 #if (WIN32K_VERSION >= NTDDI_VISTA)
1592 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1594 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1595 TWOPARAM_ROUTINE_WOWCLEANUP
1618 NtUserCallHwndParam(
1625 NtUserCallHwndParamLock(
1632 NtUserCallMsgFilter(
1638 NtUserCallNextHookEx(
1664 NtUserChangeClipboardChain(
1670 NtUserChangeDisplaySettings(
1671 PUNICODE_STRING lpszDeviceName
,
1672 LPDEVMODEW lpDevMode
,
1679 NtUserCheckDesktopByThreadId(
1684 NtUserCheckWindowThreadDesktop(
1691 NtUserCheckImeHotKey(
1696 NtUserChildWindowFromPointEx(
1709 NtUserCloseClipboard(VOID
);
1718 NtUserCloseWindowStation(
1721 /* Console commands for NtUserConsoleControl */
1722 typedef enum _CONSOLECONTROL
1724 GuiConsoleWndClassAtom
,
1725 ConsoleMakePalettePublic
= 5,
1726 ConsoleAcquireDisplayOwnership
,
1727 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1731 NtUserConsoleControl(
1732 IN CONSOLECONTROL ConsoleCtrl
,
1733 IN PVOID ConsoleCtrlInfo
,
1734 IN ULONG ConsoleCtrlInfoLength
);
1738 NtUserConvertMemHandle(
1744 NtUserCopyAcceleratorTable(
1747 ULONG EntriesCount
);
1751 NtUserCountClipboardFormats(VOID
);
1755 NtUserCreateAcceleratorTable(
1757 ULONG EntriesCount
);
1769 NtUserCreateDesktop(
1770 POBJECT_ATTRIBUTES poa
,
1771 PUNICODE_STRING lpszDesktopDevice
,
1774 ACCESS_MASK dwDesiredAccess
);
1778 NtUserCreateInputContext(
1783 NtUserCreateLocalMemHandle(
1791 NtUserCreateWindowEx(
1793 PLARGE_STRING plstrClassName
,
1794 PLARGE_STRING plstrClsVersion
,
1795 PLARGE_STRING plstrWindowName
,
1803 HINSTANCE hInstance
,
1810 NtUserCreateWindowStation(
1811 POBJECT_ATTRIBUTES ObjectAttributes
,
1812 ACCESS_MASK dwDesiredAccess
,
1821 NtUserDdeGetQualityOfService(
1824 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1828 NtUserDdeInitialize(
1837 NtUserDdeSetQualityOfService(
1839 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1840 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1844 NtUserDeferWindowPos(
1847 HWND WndInsertAfter
,
1858 PLARGE_STRING WindowText
);
1862 NtUserDestroyAcceleratorTable(
1867 NtUserDestroyCursor(
1873 NtUserDestroyInputContext(
1878 NtUserDestroyWindow(
1883 NtUserDisableThreadIme(
1888 NtUserDispatchMessage(
1908 NtUserDrawAnimatedRects(
1924 NtUserDrawCaptionTemp(
1930 const PUNICODE_STRING str
,
1933 /* Used with NtUserDrawIconEx, last parameter. */
1934 typedef struct _DRAWICONEXDATA
1940 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1952 HBRUSH hbrFlickerFreeDraw
,
1959 NtUserEmptyClipboard(VOID
);
1963 NtUserEnableScrollBar(
1970 NtUserEndDeferWindowPosEx(
1978 CONST PAINTSTRUCT
*lPs
);
1982 NtUserEnumDisplayDevices(
1983 PUNICODE_STRING lpDevice
, /* device name */
1984 DWORD iDevNum
, /* display device */
1985 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1986 DWORD dwFlags
); /* reserved */
1991 NtUserEnumDisplayMonitors(
1994 MONITORENUMPROC lpfnEnum,
1997 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
2000 NtUserEnumDisplayMonitors(
2001 OPTIONAL IN HDC hDC
,
2002 OPTIONAL IN LPCRECT pRect
,
2003 OPTIONAL OUT HMONITOR
*hMonitorList
,
2004 OPTIONAL OUT LPRECT monitorRectList
,
2005 OPTIONAL IN DWORD listSize
);
2010 NtUserEnumDisplaySettings(
2011 PUNICODE_STRING lpszDeviceName
,
2013 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
2023 NtUserExcludeUpdateRgn(
2039 HWND hwndChildAfter
,
2040 PUNICODE_STRING ucClassName
,
2041 PUNICODE_STRING ucWindowName
,
2046 NtUserFlashWindowEx(
2047 IN PFLASHWINFO pfwi
);
2051 NtUserGetAltTabInfo(
2067 NtUserGetAppImeLevel(
2072 NtUserGetAsyncKeyState(
2075 _Success_(return != 0)
2076 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return * 2 + 2))
2081 _Inout_ PUNICODE_STRING pustrName
);
2085 NtUserGetCaretBlinkTime(VOID
);
2095 HINSTANCE hInstance
,
2096 PUNICODE_STRING ClassName
,
2098 LPWSTR
*ppszMenuName
,
2105 BOOL Real
, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2106 PUNICODE_STRING ClassName
);
2110 NtUserGetClipboardData(
2112 PGETCLIPBDATA pgcd
);
2116 NtUserGetClipboardFormatName(
2118 LPWSTR lpszFormatName
,
2123 NtUserGetClipboardOwner(VOID
);
2127 NtUserGetClipboardSequenceNumber(VOID
);
2131 NtUserGetClipboardViewer(VOID
);
2135 NtUserGetClipCursor(
2140 NtUserGetComboBoxInfo(
2142 PCOMBOBOXINFO pcbi
);
2146 NtUserGetControlBrush(
2153 NtUserGetControlColor(
2168 NtUserGetCursorFrameInfo(
2176 NtUserGetCursorInfo(
2193 NtUserGetDoubleClickTime(VOID
);
2197 NtUserGetForegroundWindow(VOID
);
2201 NtUserGetGuiResources(
2207 NtUserGetGUIThreadInfo(
2209 LPGUITHREADINFO lpgui
);
2211 _Success_(return != FALSE
)
2215 _In_ HANDLE hCurIcon
,
2216 _Out_opt_ PICONINFO IconInfo
,
2217 _Inout_opt_ PUNICODE_STRING lpInstName
,
2218 _Inout_opt_ PUNICODE_STRING lpResName
,
2219 _Out_opt_ LPDWORD pbpp
,
2220 _In_ BOOL bInternal
);
2241 PIMEINFOEX pImeInfoEx
,
2246 NtUserGetInternalWindowPos(
2253 NtUserGetKeyboardLayout(
2258 NtUserGetKeyboardLayoutList(
2264 NtUserGetKeyboardLayoutName(
2269 NtUserGetKeyboardState(
2274 NtUserGetKeyboardType(
2279 NtUserGetKeyNameText(
2291 NtUserGetLayeredWindowAttributes(
2299 NtUserGetListBoxInfo(
2312 NtUserGetMouseMovePointsEx(
2314 LPMOUSEMOVEPOINT lppt
,
2315 LPMOUSEMOVEPOINT lpptBuf
,
2321 NtUserGetObjectInformation(
2324 PVOID pvInformation
,
2326 PDWORD nLengthNeeded
);
2330 NtUserGetOpenClipboardWindow(VOID
);
2334 NtUserGetPriorityClipboardFormat(
2335 UINT
*paFormatPriorityList
,
2340 NtUserGetProcessWindowStation(VOID
);
2344 NtUserGetRawInputBuffer(
2351 NtUserGetRawInputData(
2352 HRAWINPUT hRawInput
,
2360 NtUserGetRawInputDeviceInfo(
2368 NtUserGetRawInputDeviceList(
2369 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2370 PUINT puiNumDevices
,
2375 NtUserGetRegisteredRawInputDevices(
2376 PRAWINPUTDEVICE pRawInputDevices
,
2377 PUINT puiNumDevices
,
2382 NtUserGetScrollBarInfo(
2385 PSCROLLBARINFO psbi
);
2389 NtUserGetThreadDesktop(
2393 enum ThreadStateRoutines
2395 THREADSTATE_GETTHREADINFO
,
2396 THREADSTATE_INSENDMESSAGE
,
2397 THREADSTATE_FOCUSWINDOW
,
2398 THREADSTATE_ACTIVEWINDOW
,
2399 THREADSTATE_CAPTUREWINDOW
,
2400 THREADSTATE_PROGMANWINDOW
,
2401 THREADSTATE_TASKMANWINDOW
,
2402 THREADSTATE_GETMESSAGETIME
,
2403 THREADSTATE_GETINPUTSTATE
,
2404 THREADSTATE_UPTIMELASTREAD
,
2405 THREADSTATE_FOREGROUNDTHREAD
,
2406 THREADSTATE_GETCURSOR
,
2407 THREADSTATE_GETMESSAGEEXTRAINFO
2412 NtUserGetThreadState(
2417 NtUserGetTitleBarInfo(
2423 NtUserGetUpdateRect(
2442 NtUserGetWindowPlacement(
2444 WINDOWPLACEMENT
*lpwndpl
);
2449 HINSTANCE hInstance
,
2450 PUNICODE_STRING ClassName
);
2454 NtUserHardErrorControl(
2461 NtUserImpersonateDdeClientWindow(
2469 HANDLE hPowerRequestEvent
,
2470 HANDLE hMediaRequestEvent
);
2474 NtUserInitializeClientPfnArrays(
2475 PPFNCLIENT pfnClientA
,
2476 PPFNCLIENT pfnClientW
,
2477 PPFNCLIENTWORKER pfnClientWorker
,
2478 HINSTANCE hmodUser
);
2498 NtUserInternalGetWindowText(
2505 NtUserInvalidateRect(
2512 NtUserInvalidateRgn(
2519 NtUserIsClipboardFormatAvailable(
2530 NtUserLoadKeyboardLayoutEx(
2533 IN PUNICODE_STRING puszKeyboardName
,
2535 IN PUNICODE_STRING puszKLID
,
2541 NtUserLockWindowStation(
2542 HWINSTA hWindowStation
);
2546 NtUserLockWindowUpdate(
2551 NtUserLockWorkStation(VOID
);
2555 NtUserMapVirtualKeyEx(
2561 typedef struct tagDOSENDMESSAGE
2567 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2576 ULONG_PTR ResultInfo
,
2577 DWORD dwType
, /* FNID_XX types */
2584 UINT cmd
, /* Wine SW_ commands */
2589 NtUserMNDragLeave(VOID
);
2599 NtUserModifyUserStartupInfoFlags(
2616 NtUserNotifyIMEStatus(
2623 NtUserNotifyProcessCreate(
2624 HANDLE NewProcessId
,
2625 HANDLE ParentThreadId
,
2631 NtUserNotifyWinEvent(
2639 NtUserOpenClipboard(
2646 POBJECT_ATTRIBUTES ObjectAttributes
,
2648 ACCESS_MASK dwDesiredAccess
);
2652 NtUserOpenInputDesktop(
2655 ACCESS_MASK dwDesiredAccess
);
2659 NtUserOpenWindowStation(
2660 POBJECT_ATTRIBUTES ObjectAttributes
,
2661 ACCESS_MASK dwDesiredAccess
);
2697 NtUserPostThreadMessage(
2712 NtUserProcessConnect(
2713 IN HANDLE ProcessHandle
,
2714 OUT PUSERCONNECT pUserConnect
,
2715 IN ULONG Size
); /* sizeof(USERCONNECT) */
2719 NtUserQueryInformationThread(
2720 IN HANDLE ThreadHandle
,
2721 IN USERTHREADINFOCLASS ThreadInformationClass
,
2722 OUT PVOID ThreadInformation
,
2723 IN ULONG ThreadInformationLength
);
2727 NtUserQueryInputContext(
2733 NtUserQuerySendMessage(
2738 NtUserQueryUserCounters(
2745 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2746 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2747 #define QUERY_WINDOW_ACTIVE 0x02
2748 #define QUERY_WINDOW_FOCUS 0x03
2749 #define QUERY_WINDOW_ISHUNG 0x04
2750 #define QUERY_WINDOW_REAL_ID 0x05
2751 #define QUERY_WINDOW_FOREGROUND 0x06
2761 NtUserRealInternalGetMessage(
2771 NtUserRealChildWindowFromPoint(
2778 NtUserRealWaitMessageEx(
2786 CONST RECT
*lprcUpdate
,
2792 NtUserRegisterClassExWOW(
2794 PUNICODE_STRING pustrClassName
,
2795 PUNICODE_STRING pustrCNVersion
,
2796 PCLSMENUNAME pClassMenuName
,
2803 NtUserRegisterRawInputDevices(
2804 IN PCRAWINPUTDEVICE pRawInputDevices
,
2805 IN UINT uiNumDevices
,
2810 NtUserRegisterUserApiHook(
2811 PUNICODE_STRING m_dllname1
,
2812 PUNICODE_STRING m_funname1
,
2818 NtUserRegisterHotKey(
2826 NtUserRegisterTasklist(
2831 NtUserRegisterWindowMessage(
2832 PUNICODE_STRING MessageName
);
2836 NtUserRemoteConnect(
2843 NtUserRemoteRedrawRectangle(
2851 NtUserRemoteRedrawScreen(VOID
);
2855 NtUserRemoteStopScreenUpdates(VOID
);
2865 NtUserResolveDesktop(
2873 NtUserResolveDesktopForWOW(
2890 CONST RECT
*lprcScroll
,
2891 CONST RECT
*lprcClip
,
2897 NtUserScrollWindowEx(
2902 const RECT
*clipRect
,
2916 NtUserSetActiveWindow(
2921 NtUserSetAppImeLevel(
2935 ULONG_PTR dwNewLong
,
2947 NtUserSetClipboardData(
2954 NtUserSetClipboardViewer(
2955 HWND hWndNewViewer
);
2959 NtUserSelectPalette(
2962 BOOL ForceBackground
);
2966 NtUserSetConsoleReserveKeys(
2977 NtUserSetCursorContents(
2979 PICONINFO IconInfo
);
2983 NtUserSetCursorIconData(
2984 _In_ HCURSOR hCursor
,
2985 _In_ PUNICODE_STRING pustrModule
,
2986 _In_ PUNICODE_STRING puSrcName
,
2987 _In_
const CURSORDATA
*pCursorData
);
2989 typedef struct _tagFINDEXISTINGCURICONPARAM
2994 } FINDEXISTINGCURICONPARAM
;
2998 NtUserFindExistingCursorIcon(
2999 _In_ PUNICODE_STRING pustrModule
,
3000 _In_ PUNICODE_STRING pustrRsrc
,
3001 _In_ FINDEXISTINGCURICONPARAM
*param
);
3026 PIMEINFOEX pImeInfoEx
);
3030 NtUserSetImeOwnerWindow(
3036 NtUserSetInformationProcess(
3044 NtUserSetInformationThread(
3045 IN HANDLE ThreadHandle
,
3046 IN USERTHREADINFOCLASS ThreadInformationClass
,
3047 IN PVOID ThreadInformation
,
3048 IN ULONG ThreadInformationLength
);
3052 NtUserSetInternalWindowPos(
3060 NtUserSetKeyboardState(
3065 NtUserSetLayeredWindowAttributes(
3073 NtUserSetLogonNotifyWindow(
3078 NtUserSetObjectInformation(
3081 PVOID pvInformation
,
3088 HWND hWndNewParent
);
3092 NtUserSetProcessWindowStation(
3093 HWINSTA hWindowStation
);
3110 NtUserSetScrollInfo(
3118 NtUserSetShellWindowEx(
3120 HWND hwndShellListView
);
3126 IN CONST INT
*lpaElements
,
3127 IN CONST COLORREF
*lpaRgbValues
,
3132 NtUserSetSystemCursor(
3138 NtUserSetThreadDesktop(
3143 NtUserSetThreadState(
3149 NtUserSetSystemTimer(
3153 TIMERPROC lpTimerFunc
);
3157 NtUserSetThreadLayoutHandles(
3167 TIMERPROC lpTimerFunc
);
3171 NtUserSetWindowFNID(
3177 NtUserSetWindowLong(
3185 NtUserSetWindowPlacement(
3187 WINDOWPLACEMENT
*lpwndpl
);
3193 HWND hWndInsertAfter
,
3209 NtUserSetWindowsHookAW(
3216 NtUserSetWindowsHookEx(
3218 PUNICODE_STRING ModuleName
,
3226 NtUserSetWindowStationUser(
3227 HWINSTA hWindowStation
,
3234 NtUserSetWindowWord(
3241 NtUserSetWinEventHook(
3244 HMODULE hmodWinEventProc
,
3245 PUNICODE_STRING puString
,
3246 WINEVENTPROC lpfnWinEventProc
,
3263 NtUserShowScrollBar(
3276 NtUserShowWindowAsync(
3282 NtUserSoundSentry(VOID
);
3286 NtUserSwitchDesktop(
3291 NtUserSystemParametersInfo(
3299 NtUserTestForInteractiveUser(
3315 NtUserTrackMouseEvent(
3316 LPTRACKMOUSEEVENT lpEventTrack
);
3320 NtUserTranslateAccelerator(
3327 NtUserTranslateMessage(
3333 NtUserUnhookWindowsHookEx(
3338 NtUserUnhookWinEvent(
3339 HWINEVENTHOOK hWinEventHook
);
3343 NtUserUnloadKeyboardLayout(
3348 NtUserUnlockWindowStation(
3349 HWINSTA hWindowStation
);
3353 NtUserUnregisterClass(
3354 PUNICODE_STRING ClassNameOrAtom
,
3355 HINSTANCE hInstance
,
3356 PCLSMENUNAME pClassMenuName
);
3360 NtUserUnregisterHotKey(
3366 NtUserUnregisterUserApiHook(VOID
);
3370 NtUserUpdateInputContext(
3377 NtUserUpdateInstance(
3384 NtUserUpdateLayeredWindow(
3392 BLENDFUNCTION
*pblend
,
3398 NtUserUpdatePerUserSystemParameters(
3404 NtUserUserHandleGrantAccess(
3405 IN HANDLE hUserHandle
,
3411 NtUserValidateHandleSecure(
3419 CONST RECT
*lpRect
);
3423 NtUserValidateTimerCallback(
3437 NtUserWaitForInputIdle(
3439 IN DWORD dwMilliseconds
,
3440 IN BOOL Unknown2
); /* Always FALSE */
3444 NtUserWaitForMsgAndEvent(
3449 NtUserWaitMessage(VOID
);
3453 NtUserWin32PoolAllocationStats(
3463 NtUserWindowFromPoint(
3469 NtUserYieldTask(VOID
);
3472 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3475 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3476 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3477 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3478 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3479 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051
3480 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052
3482 #define MSQ_STATE_CAPTURE 0x1
3483 #define MSQ_STATE_ACTIVE 0x2
3484 #define MSQ_STATE_FOCUS 0x3
3485 #define MSQ_STATE_MENUOWNER 0x4
3486 #define MSQ_STATE_MOVESIZE 0x5
3487 #define MSQ_STATE_CARET 0x6
3489 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3490 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3494 NtUserGetMonitorInfo(
3495 IN HMONITOR hMonitor
,
3496 OUT LPMONITORINFO pMonitorInfo
);
3498 /* Should be done in usermode */
3500 /* (other FocusedItem values give the position of the focused item) */
3501 #define NO_SELECTED_ITEM 0xffff
3503 typedef struct tagROSMENUINFO
3505 /* ----------- MENUINFO ----------- */
3511 DWORD dwContextHelpID
;
3512 ULONG_PTR dwMenuData
;
3513 /* ----------- Extra ----------- */
3514 ULONG fFlags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3515 UINT iItem
; /* Currently focused item */
3516 UINT cItems
; /* Number of items in the menu */
3517 WORD cxMenu
; /* Width of the whole menu */
3518 WORD cyMenu
; /* Height of the whole menu */
3520 PWND spwndNotify
; /* window receiving the messages for ownerdraw */
3525 HMENU Self
; /* Handle of this menu */
3526 HWND Wnd
; /* Window containing the menu */
3527 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3528 } ROSMENUINFO
, *PROSMENUINFO
;
3530 typedef struct tagROSMENUITEMINFO
3532 /* ----------- MENUITEMINFOW ----------- */
3539 HBITMAP hbmpChecked
;
3540 HBITMAP hbmpUnchecked
;
3545 /* ----------- Extra ----------- */
3546 RECT Rect
; /* Item area (relative to menu window) */
3547 UINT dxTab
; /* X position of text after Tab */
3548 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3549 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3550 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3554 NtUserMonitorFromPoint(
3560 NtUserMonitorFromRect(
3566 NtUserMonitorFromWindow(
3570 typedef struct _SETSCROLLBARINFO
3574 DWORD rgstate
[CCHILDREN_SCROLLBAR
+ 1];
3575 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3579 NtUserSetScrollBarInfo(
3582 SETSCROLLBARINFO
*info
);
3584 #endif /* __WIN32K_NTUSER_H */