1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
9 #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
10 #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
12 #define HANDLEENTRY_INDESTROY 1
14 typedef struct _USER_HANDLE_ENTRY
16 void *ptr
; /* pointer to object */
20 PTHREADINFO pti
; // pointer to Win32ThreadInfo
21 PPROCESSINFO ppi
; // pointer to W32ProcessInfo
23 unsigned char type
; /* object type (0 if free) */
25 unsigned short generation
; /* generation counter */
26 } USER_HANDLE_ENTRY
, * PUSER_HANDLE_ENTRY
;
28 typedef struct _USER_HANDLE_TABLE
30 PUSER_HANDLE_ENTRY handles
;
31 PUSER_HANDLE_ENTRY freelist
;
33 int allocated_handles
;
34 } USER_HANDLE_TABLE
, * PUSER_HANDLE_TABLE
;
36 typedef enum _HANDLE_TYPE
42 TYPE_SETWINDOWPOS
= 4,
53 TYPE_WINEVENTHOOK
= 15,
55 TYPE_INPUTCONTEXT
= 17,
58 TYPE_TOUCHINPUTINFO
= 20,
59 TYPE_GESTUREINFOOBJ
= 21,
62 } HANDLE_TYPE
, *PHANDLE_TYPE
;
64 typedef enum _USERTHREADINFOCLASS
66 UserThreadShutdownInformation
,
69 UserThreadWOWInformation
,
71 UserThreadInitiateShutdown
,
73 UserThreadEndShutdown
,
74 UserThreadUseActiveDesktop
,
76 UserThreadRestoreDesktop
,
78 } USERTHREADINFOCLASS
;
80 typedef struct _LARGE_UNICODE_STRING
83 ULONG MaximumLength
:31;
86 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
88 typedef struct _LARGE_STRING
91 ULONG MaximumLength
:31;
94 } LARGE_STRING
, *PLARGE_STRING
;
96 // Based on ANSI_STRING
98 typedef struct _LARGE_ANSI_STRING
101 ULONG MaximumLength
:31;
104 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
106 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
107 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
108 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
110 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
112 typedef struct _DESKTOPINFO
115 PVOID pvDesktopLimit
;
118 LIST_ENTRY aphkStart
[NB_HOOKS
];
123 struct _WND
* spwndShell
;
125 PPROCESSINFO ppiShellProcess
;
132 UINT LastInputWasKbd
: 1;
136 WCHAR szDesktopName
[1];
137 } DESKTOPINFO
, *PDESKTOPINFO
;
139 #define CTI_THREADSYSLOCK 0x0001
140 #define CTI_INSENDMESSAGE 0x0002
142 typedef struct _CLIENTTHREADINFO
147 WORD fsWakeBitsJournal
;
149 ULONG tickLastMsgChecked
;
151 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
159 typedef struct _THROBJHEAD
163 } THROBJHEAD
, *PTHROBJHEAD
;
165 typedef struct _THRDESKHEAD
168 struct _DESKTOP
*rpdesk
;
170 } THRDESKHEAD
, *PTHRDESKHEAD
;
172 typedef struct _PROCDESKHEAD
176 struct _DESKTOP
*rpdesk
;
178 } PROCDESKHEAD
, *PPROCDESKHEAD
;
180 typedef struct _PROCMARKHEAD
185 } PROCMARKHEAD
, *PPROCMARKHEAD
;
187 #define UserHMGetHandle(obj) ((obj)->head.h)
189 /* Window Client Information structure */
192 #define WEF_SETBYWNDPTI 0x0001
194 typedef struct tagHOOK
197 struct tagHOOK
*phkNext
; /* This is for user space. */
198 int HookId
; /* Hook table index */
200 ULONG flags
; /* Some internal flags */
202 PTHREADINFO ptiHooked
;
203 struct _DESKTOP
*rpdesk
;
205 LIST_ENTRY Chain
; /* Hook chain entry */
206 HOOKPROC Proc
; /* Hook function */
207 BOOLEAN Ansi
; /* Is it an Ansi hook? */
208 UNICODE_STRING ModuleName
; /* Module name for global hooks */
211 typedef struct tagCLIPBOARDDATA
216 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
218 /* THREADINFO Flags */
219 #define TIF_INCLEANUP 0x00000001
220 #define TIF_16BIT 0x00000002
221 #define TIF_SYSTEMTHREAD 0x00000004
222 #define TIF_CSRSSTHREAD 0x00000008
223 #define TIF_TRACKRECTVISIBLE 0x00000010
224 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
225 #define TIF_DONTATTACHQUEUE 0x00000040
226 #define TIF_DONTJOURNALATTACH 0x00000080
227 #define TIF_WOW64 0x00000100
228 #define TIF_INACTIVATEAPPMSG 0x00000200
229 #define TIF_SPINNING 0x00000400
230 #define TIF_PALETTEAWARE 0x00000800
231 #define TIF_SHAREDWOW 0x00001000
232 #define TIF_FIRSTIDLE 0x00002000
233 #define TIF_WAITFORINPUTIDLE 0x00004000
234 #define TIF_MOVESIZETRACKING 0x00008000
235 #define TIF_VDMAPP 0x00010000
236 #define TIF_DOSEMULATOR 0x00020000
237 #define TIF_GLOBALHOOKER 0x00040000
238 #define TIF_DELAYEDEVENT 0x00080000
239 #define TIF_MSGPOSCHANGED 0x00100000
240 #define TIF_SHUTDOWNCOMPLETE 0x00200000
241 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
242 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
243 #define TIF_GUITHREADINITIALIZED 0x02000000
244 #define TIF_DISABLEIME 0x04000000
245 #define TIF_INGETTEXTLENGTH 0x08000000
246 #define TIF_ANSILENGTH 0x10000000
247 #define TIF_DISABLEHOOKS 0x20000000
249 typedef struct _CALLBACKWND
254 } CALLBACKWND
, *PCALLBACKWND
;
256 #define CI_TRANSACTION 0x00000001
257 #define CI_QUEUEMSG 0x00000002
258 #define CI_WOW 0x00000004
259 #define CI_INITTHREAD 0x00000008
260 #define CI_CURTHPRHOOK 0x00000010
261 #define CI_CLASSESREGISTERED 0x00000020
262 #define CI_IMMACTIVATE 0x00000040
264 typedef struct _CLIENTINFO
270 DWORD dwCompatFlags2
;
271 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
272 PDESKTOPINFO pDeskInfo
;
273 ULONG_PTR ulClientDelta
;
276 CALLBACKWND CallbackWnd
;
278 INT cInDDEMLCallback
;
279 PCLIENTTHREADINFO pClientThreadInfo
;
280 ULONG_PTR dwHookData
;
283 DWORD dwAsyncKeyCache
;
284 BYTE afAsyncKeyState
[8];
285 BYTE afAsyncKeyStateRecentDow
[8];
290 LPDWORD lpdwRegisteredClasses
;
291 ULONG Win32ClientInfo3
[26];
292 /* It's just a pointer reference not to be used w the structure in user space. */
294 } CLIENTINFO
, *PCLIENTINFO
;
296 /* Make sure it fits into the TEB */
297 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
299 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
301 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
302 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
303 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
305 /* Menu Item fType. */
306 #define MFT_RTOL 0x6000
308 typedef struct tagITEM
313 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
315 HANDLE hbmpUnchecked
;
316 USHORT
* lpstr
; /* Item text pointer. */
318 DWORD_PTR dwItemData
;
319 ULONG xItem
; /* Item position. left */
320 ULONG yItem
; /* " top */
321 ULONG cxItem
; /* Item Size Width */
322 ULONG cyItem
; /* " Height */
323 ULONG dxTab
; /* X position of text after Tab */
324 ULONG ulX
; /* underline.. start position */
325 ULONG ulWidth
; /* underline.. width */
326 HBITMAP hbmp
; /* bitmap */
327 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
328 INT cyBmp
; /* Height " */
331 typedef struct tagMENULIST
333 struct tagMENULIST
* pNext
;
334 struct tagMENU
* pMenu
;
335 } MENULIST
, *PMENULIST
;
337 /* Menu fFlags, upper byte is MNS_X style flags. */
338 #define MNF_POPUP 0x0001
339 #define MNF_UNDERLINE 0x0004
340 #define MNF_INACTIVE 0x0010
341 #define MNF_RTOL 0x0020
342 #define MNF_DESKTOPMN 0x0040
343 #define MNF_SYSDESKMN 0x0080
344 #define MNF_SYSSUBMENU 0x0100
346 typedef struct tagMENU
349 ULONG fFlags
; /* [Style flags | Menu flags] */
350 INT iItem
; /* nPos of selected item, if -1 not selected. */
351 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
352 UINT cItems
; /* Number of items in the menu */
353 ULONG cxMenu
; /* Width of the whole menu */
354 ULONG cyMenu
; /* Height of the whole menu */
355 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
356 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
357 PITEM rgItems
; /* Array of menu items */
358 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
359 DWORD dwContextHelpId
;
360 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
361 DWORD_PTR dwMenuData
; /* application defined value */
362 HBRUSH hbrBack
; /* brush for menu background */
363 INT iTop
; /* Current scroll position Top */
364 INT iMaxTop
; /* Current scroll position Max Top */
365 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
368 typedef struct _REGISTER_SYSCLASS
370 /* This is a reactos specific class used to initialize the
371 system window classes during user32 initialization */
380 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
382 typedef struct _CLSMENUNAME
384 LPSTR pszClientAnsiMenuName
;
385 LPWSTR pwszClientUnicodeMenuName
;
386 PUNICODE_STRING pusMenuName
;
387 } CLSMENUNAME
, *PCLSMENUNAME
;
389 typedef struct tagSBDATA
397 typedef struct tagSBINFO
404 typedef struct tagSBCALC
426 UserGetCPDA2U
= 0x01, // " Unicode "
427 UserGetCPDU2A
= 0X02, // " Ansi "
428 UserGetCPDClass
= 0X10,
429 UserGetCPDWindow
= 0X20,
430 UserGetCPDDialog
= 0X40,
431 UserGetCPDWndtoCls
= 0X80
434 typedef struct _CALLPROCDATA
437 struct _CALLPROCDATA
*spcpdNext
;
438 WNDPROC pfnClientPrevious
;
440 } CALLPROCDATA
, *PCALLPROCDATA
;
442 #define CSF_SERVERSIDEPROC 0x0001
443 #define CSF_ANSIPROC 0x0002
444 #define CSF_WOWDEFERDESTROY 0x0004
445 #define CSF_SYSTEMCLASS 0x0008
446 #define CSF_WOWCLASS 0x0010
447 #define CSF_WOWEXTRA 0x0020
448 #define CSF_CACHEDSMICON 0x0040
449 #define CSF_WIN40COMPAT 0x0080
453 struct _CLS
*pclsNext
;
454 RTL_ATOM atomClassName
;
455 ATOM atomNVClassName
;
457 struct _DESKTOP
*rpdeskParent
;
460 PSTR lpszClientAnsiMenuName
; // For client use
461 PWSTR lpszClientUnicodeMenuName
; // " " "
462 PCALLPROCDATA spcpdFirst
;
463 struct _CLS
*pclsBase
;
464 struct _CLS
*pclsClone
;
465 ULONG cWndReferenceCount
;
471 HANDLE hIcon
; /* FIXME - Use pointer! */
473 HANDLE hCursor
; /* FIXME - Use pointer! */
475 HBRUSH hbrBackground
;
476 PWSTR lpszMenuName
; // kernel use
477 PSTR lpszAnsiClassName
; // "
478 HANDLE hIconSm
; /* FIXME - Use pointer! */
481 //// ReactOS dosn't suppot cache icons.
482 HICON hIconSmIntern
; /* Internal small icon, derived from hIcon */
484 UINT Unicode
: 1; // !CSF_ANSIPROC
485 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
486 UINT MenuNameIsString
: 1;
491 typedef struct _SBINFOEX
493 SCROLLBARINFO ScrollBarInfo
;
494 SCROLLINFO ScrollInfo
;
495 } SBINFOEX
, *PSBINFOEX
;
497 // State Flags !Not Implemented!
498 #define WNDS_HASMENU 0X00000001
499 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
500 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
501 #define WNDS_HASCAPTION 0X00000008
502 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
503 #define WNDS_MSGBOX 0X00000020
504 #define WNDS_ACTIVEFRAME 0X00000040
505 #define WNDS_HASSPB 0X00000080
506 #define WNDS_NONCPAINT 0X00000100
507 #define WNDS_SENDERASEBACKGROUND 0X00000200
508 #define WNDS_ERASEBACKGROUND 0X00000400
509 #define WNDS_SENDNCPAINT 0X00000800
510 #define WNDS_INTERNALPAINT 0X00001000
511 #define WNDS_UPDATEDIRTY 0X00002000
512 #define WNDS_HIDDENPOPUP 0X00004000
513 #define WNDS_FORCEMENUDRAW 0X00008000
514 #define WNDS_DIALOGWINDOW 0X00010000
515 #define WNDS_HASCREATESTRUCTNAME 0X00020000
516 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
517 #define WNDS_ANSIWINDOWPROC 0x00080000
518 #define WNDS_BEINGACTIVATED 0x00100000
519 #define WNDS_HASPALETTE 0x00200000
520 #define WNDS_PAINTNOTPROCESSED 0x00400000
521 #define WNDS_SYNCPAINTPENDING 0x00800000
522 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
523 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
524 #define WNDS_TOGGLETOPMOST 0x04000000
525 #define WNDS_REDRAWIFHUNG 0x08000000
526 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
527 #define WNDS_ANSICREATOR 0x20000000
528 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
529 #define WNDS_DESTROYED 0x80000000
531 #define WNDSACTIVEFRAME 0x00000006
533 // State2 Flags !Not Implemented!
534 #define WNDS2_WMPAINTSENT 0X00000001
535 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
536 #define WNDS2_STARTPAINT 0X00000004
537 #define WNDS2_OLDUI 0X00000008
538 #define WNDS2_HASCLIENTEDGE 0X00000010
539 #define WNDS2_BOTTOMMOST 0X00000020
540 #define WNDS2_FULLSCREEN 0X00000040
541 #define WNDS2_INDESTROY 0X00000080
542 #define WNDS2_WIN31COMPAT 0X00000100
543 #define WNDS2_WIN40COMPAT 0X00000200
544 #define WNDS2_WIN50COMPAT 0X00000400
545 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
546 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
547 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
548 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
549 #define WNDS2_HELPBUTTONDOWN 0X00008000
550 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
551 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
552 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
553 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
554 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
555 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
556 #define WNDS2_FORCENCPAINT 0X00400000
557 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
558 #define WNDS2_FULLSCREENMODE 0X01000000
559 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
560 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
561 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
562 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
563 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
566 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
567 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
568 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
569 #define WS_EX2_LINKED 0X00000008
570 #define WS_EX2_LAYEREDFORDWM 0X00000010
571 #define WS_EX2_LAYEREDLIMBO 0X00000020
572 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
573 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
574 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
575 #define WS_EX2_HASOVERLAY 0X00000200
576 #define WS_EX2_CONSOLEWINDOW 0X00000400
577 #define WS_EX2_CHILDNOACTIVATE 0X00000800
579 #define WPF_MININIT 0x0008
580 #define WPF_MAXINIT 0x0010
587 /* Extended style. */
591 /* Handle of the module that created the window. */
594 struct _WND
*spwndNext
;
595 struct _WND
*spwndPrev
;
596 struct _WND
*spwndParent
;
597 struct _WND
*spwndChild
;
598 struct _WND
*spwndOwner
;
602 /* Pointer to the window class. */
605 /* Property list head.*/
606 LIST_ENTRY PropListHead
;
610 /* system menu handle. */
613 /* Window menu handle or window id */
614 UINT IDMenu
; // Use spmenu
619 LARGE_UNICODE_STRING strName
;
620 /* Size of the extra data associated with the window. */
622 struct _WND
*spwndLastActive
;
623 //HIMC hImc; // Input context associated with this window.
626 //PD3DMATRIX pTransForm;
627 struct _WND
*spwndClipboardListener
;
636 UINT flags
; // WPF_ flags.
639 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
640 UINT InternalPosInitialized
: 1;
641 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
642 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
645 PSBINFOEX pSBInfoex
; // convert to PSBINFO
646 /* Entry in the list of thread windows. */
647 LIST_ENTRY ThreadListEntry
;
650 #define PWND_BOTTOM ((PWND)1)
652 typedef struct _SBWND
660 typedef struct _PFNCLIENT
662 WNDPROC pfnScrollBarWndProc
;
663 WNDPROC pfnTitleWndProc
;
664 WNDPROC pfnMenuWndProc
;
665 WNDPROC pfnDesktopWndProc
;
666 WNDPROC pfnDefWindowProc
;
667 WNDPROC pfnMessageWindowProc
;
668 WNDPROC pfnSwitchWindowProc
;
669 WNDPROC pfnButtonWndProc
;
670 WNDPROC pfnComboBoxWndProc
;
671 WNDPROC pfnComboListBoxProc
;
672 WNDPROC pfnDialogWndProc
;
673 WNDPROC pfnEditWndProc
;
674 WNDPROC pfnListBoxWndProc
;
675 WNDPROC pfnMDIClientWndProc
;
676 WNDPROC pfnStaticWndProc
;
677 WNDPROC pfnImeWndProc
;
678 WNDPROC pfnGhostWndProc
;
679 WNDPROC pfnHkINLPCWPSTRUCT
;
680 WNDPROC pfnHkINLPCWPRETSTRUCT
;
681 WNDPROC pfnDispatchHook
;
682 WNDPROC pfnDispatchDefWindowProc
;
683 WNDPROC pfnDispatchMessage
;
684 WNDPROC pfnMDIActivateDlgProc
;
685 } PFNCLIENT
, *PPFNCLIENT
;
688 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
689 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
692 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
694 typedef struct _PFNCLIENTWORKER
696 WNDPROC_EX pfnButtonWndProc
;
697 WNDPROC_EX pfnComboBoxWndProc
;
698 WNDPROC_EX pfnComboListBoxProc
;
699 WNDPROC_EX pfnDialogWndProc
;
700 WNDPROC_EX pfnEditWndProc
;
701 WNDPROC_EX pfnListBoxWndProc
;
702 WNDPROC_EX pfnMDIClientWndProc
;
703 WNDPROC_EX pfnStaticWndProc
;
704 WNDPROC_EX pfnImeWndProc
;
705 WNDPROC_EX pfnGhostWndProc
;
706 WNDPROC_EX pfnCtfHookProc
;
707 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
709 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
711 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
712 #define FNID_FIRST 0x029A
713 #define FNID_SCROLLBAR 0x029A
714 #define FNID_ICONTITLE 0x029B
715 #define FNID_MENU 0x029C
716 #define FNID_DESKTOP 0x029D
717 #define FNID_DEFWINDOWPROC 0x029E
718 #define FNID_MESSAGEWND 0x029F
719 #define FNID_SWITCH 0x02A0
720 #define FNID_BUTTON 0x02A1
721 #define FNID_COMBOBOX 0x02A2
722 #define FNID_COMBOLBOX 0x02A3
723 #define FNID_DIALOG 0x02A4
724 #define FNID_EDIT 0x02A5
725 #define FNID_LISTBOX 0x02A6
726 #define FNID_MDICLIENT 0x02A7
727 #define FNID_STATIC 0x02A8
728 #define FNID_IME 0x02A9
729 #define FNID_GHOST 0x02AA
730 #define FNID_CALLWNDPROC 0x02AB
731 #define FNID_CALLWNDPROCRET 0x02AC
732 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
733 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
734 #define FNID_MB_DLGPROC 0x02AF
735 #define FNID_MDIACTIVATEDLGPROC 0x02B0
736 #define FNID_SENDMESSAGE 0x02B1
737 #define FNID_SENDMESSAGEFF 0x02B2
738 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
739 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
740 #define FNID_SENDMESSAGECALLPROC 0x02B4
741 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
742 #define FNID_TOOLTIPS 0x02B6
743 #define FNID_SENDNOTIFYMESSAGE 0x02B7
744 #define FNID_SENDMESSAGECALLBACK 0x02B8
745 #define FNID_LAST 0x02B9
747 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
748 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
750 #define FNID_DDEML 0x2000 // Registers DDEML
751 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
752 // Seen during WM_CREATE on error exit too.
753 #define FNID_FREED 0x8000 // Window being Freed...
755 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
757 #define GETPFNCLIENTA(fnid)\
758 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
759 #define GETPFNCLIENTW(fnid)\
760 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
762 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
764 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
765 #define ICLS_BUTTON 0
767 #define ICLS_STATIC 2
768 #define ICLS_LISTBOX 3
769 #define ICLS_SCROLLBAR 4
770 #define ICLS_COMBOBOX 5
771 #define ICLS_MDICLIENT 6
772 #define ICLS_COMBOLBOX 7
773 #define ICLS_DDEMLEVENT 8
774 #define ICLS_DDEMLMOTHER 9
775 #define ICLS_DDEML16BIT 10
776 #define ICLS_DDEMLCLIENTA 11
777 #define ICLS_DDEMLCLIENTW 12
778 #define ICLS_DDEMLSERVERA 13
779 #define ICLS_DDEMLSERVERW 14
781 #define ICLS_GHOST 16
782 #define ICLS_DESKTOP 17
783 #define ICLS_DIALOG 18
785 #define ICLS_SWITCH 20
786 #define ICLS_ICONTITLE 21
787 #define ICLS_TOOLTIPS 22
788 #if (_WIN32_WINNT <= 0x0501)
789 #define ICLS_UNKNOWN 22
790 #define ICLS_NOTUSED 23
792 #define ICLS_SYSSHADOW 23
793 #define ICLS_HWNDMESSAGE 24
794 #define ICLS_NOTUSED 25
798 #define COLOR_LAST COLOR_MENUBAR
799 #define MAX_MB_STRINGS 11
801 #define SRVINFO_APIHOOK 0x0010
802 #define SRVINFO_METRICS 0x0020
803 #define SRVINFO_KBDPREF 0x0080
805 #define NUM_SYSCOLORS 31
807 typedef struct tagOEMBITMAPINFO
813 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
815 typedef struct tagMBSTRING
820 } MBSTRING
, *PMBSTRING
;
822 typedef struct tagDPISERVERINFO
824 INT gclBorder
; /* 000 */
825 HFONT hCaptionFont
; /* 004 */
826 HFONT hMsgFont
; /* 008 */
827 INT cxMsgFontChar
; /* 00C */
828 INT cyMsgFontChar
; /* 010 */
829 UINT wMaxBtnSize
; /* 014 */
830 } DPISERVERINFO
, *PDPISERVERINFO
;
833 #define PUSIF_PALETTEDISPLAY 0x01
834 #define PUSIF_SNAPTO 0x02
835 #define PUSIF_COMBOBOXANIMATION 0x04
836 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
837 #define PUSIF_KEYBOARDCUES 0x20
839 typedef struct _PERUSERSERVERINFO
841 INT aiSysMet
[SM_CMETRICS
];
842 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
843 COLORREF argbSystem
[NUM_SYSCOLORS
];
844 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
848 DWORD dwLastRITEventTickCount
;
853 UINT ucWheelScrollLines
;
854 UINT ucWheelScrollChars
;
855 INT wMaxLeftOverlapChars
;
856 INT wMaxRightOverlapChars
;
859 TEXTMETRICW tmSysFont
;
860 DPISERVERINFO dpiSystem
;
861 HICON hIconSmWindows
;
864 DWORD dwAsyncKeyCache
;
866 OEMBITMAPINFO oembmi
[93];
875 DWORD dwLastSystemRITEventTickCountUpdate
;
876 ULONG adwDBGTAGFlags
[35];
879 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
881 typedef struct tagSERVERINFO
884 ULONG_PTR cHandleEntries
;
885 PFN_FNID mpFnidPfn
[FNID_NUM
];
886 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
887 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
888 PFNCLIENT apfnClientA
;
889 PFNCLIENT apfnClientW
;
890 PFNCLIENTWORKER apfnClientWorker
;
892 ATOM atomSysClass
[ICLS_NOTUSED
+1];
893 DWORD dwDefaultHeapBase
;
894 DWORD dwDefaultHeapSize
;
896 MBSTRING MBStrings
[MAX_MB_STRINGS
];
899 ATOM atomContextHelpIdProp
;
900 ATOM atomFrostedWindowProp
;
901 CHAR acOemToAnsi
[256];
902 CHAR acAnsiToOem
[256];
903 DWORD dwInstalledEventHooks
;
905 } SERVERINFO
, *PSERVERINFO
;
908 // Server event activity bits.
909 #define SRV_EVENT_MENU 0x0001
910 #define SRV_EVENT_END_APPLICATION 0x0002
911 #define SRV_EVENT_RUNNING 0x0004
912 #define SRV_EVENT_NAMECHANGE 0x0008
913 #define SRV_EVENT_VALUECHANGE 0x0010
914 #define SRV_EVENT_STATECHANGE 0x0020
915 #define SRV_EVENT_LOCATIONCHANGE 0x0040
916 #define SRV_EVENT_CREATE 0x8000
918 typedef struct _PROPLISTITEM
922 } PROPLISTITEM
, *PPROPLISTITEM
;
924 typedef struct _PROPERTY
926 LIST_ENTRY PropListEntry
;
929 } PROPERTY
, *PPROPERTY
;
931 typedef struct _BROADCASTPARM
938 } BROADCASTPARM
, *PBROADCASTPARM
;
940 PTHREADINFO
GetW32ThreadInfo(VOID
);
941 PPROCESSINFO
GetW32ProcessInfo(VOID
);
943 typedef struct _WNDMSG
949 typedef struct _SHAREDINFO
951 PSERVERINFO psi
; // global Server Info
952 PVOID aheList
; // Handle Entry List
953 PVOID pDispInfo
; // global PDISPLAYINFO pointer
954 ULONG_PTR ulSharedDelta
; // Heap delta
955 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
956 WNDMSG DefWindowMsgs
;
957 WNDMSG DefWindowSpecMsgs
;
958 } SHAREDINFO
, *PSHAREDINFO
;
960 typedef struct _USERCONNECT
963 ULONG ulCurrentVersion
;
964 DWORD dwDispatchCount
;
966 } USERCONNECT
, *PUSERCONNECT
;
968 typedef struct tagGETCLIPBDATA
977 } GETCLIPBDATA
, *PGETCLIPBDATA
;
979 typedef struct tagSETCLIPBDATA
982 BOOL fIncSerialNumber
;
983 } SETCLIPBDATA
, *PSETCLIPBDATA
;
985 // Used with NtUserSetCursorIconData, last parameter.
986 typedef struct tagCURSORDATA
999 HBITMAP hbmUserAlpha
; // Could be in W7U, not in W2k
1005 struct tagCURSORDATA
* aspcur
;
1009 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1012 #define CURSORF_FROMRESOURCE 0x0001
1013 #define CURSORF_GLOBAL 0x0002
1014 #define CURSORF_LRSHARED 0x0004
1015 #define CURSORF_ACON 0x0008
1016 #define CURSORF_WOWCLEANUP 0x0010
1017 #define CURSORF_ACONFRAME 0x0040
1018 #define CURSORF_SECRET 0x0080
1019 #define CURSORF_LINKED 0x0100
1020 #define CURSORF_CURRENT 0x0200
1024 NtUserAssociateInputContext(
1031 NtUserBuildHimcList(
1048 NtUserCheckMenuItem(
1055 NtUserCtxDisplayIOCtl(
1074 NtUserDrawMenuBarTemp(
1083 NtUserEnableMenuItem(
1090 NtUserEndMenu(VOID
);
1094 NtUserGetMenuBarInfo(
1108 NtUserGetMenuItemRect(
1116 NtUserGetSystemMenu(
1122 NtUserHiliteMenuItem(
1130 NtUserMenuItemFromPoint(
1152 NtUserSetMenuContextHelpId(
1154 DWORD dwContextHelpId
);
1158 NtUserSetMenuDefaultItem(
1165 NtUserSetMenuFlagRtoL(
1170 NtUserSetSystemMenu(
1176 NtUserThunkedMenuInfo(
1182 NtUserThunkedMenuItemInfo(
1187 LPMENUITEMINFOW lpmii
,
1188 PUNICODE_STRING lpszCaption
);
1192 NtUserTrackPopupMenuEx(
1202 NtUserActivateKeyboardLayout(
1208 NtUserAlterWindowStyle(
1215 NtUserAttachThreadInput(
1217 IN DWORD idAttachTo
,
1221 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1242 NtUserBuildHwndList(
1252 NtUserBuildNameList(
1256 PULONG pRequiredSize
);
1260 NtUserBuildPropList(
1266 /* apfnSimpleCall indices from Windows XP SP 2 */
1267 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1268 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1270 enum SimpleCallRoutines
1272 NOPARAM_ROUTINE_CREATEMENU
,
1273 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1274 #if (WIN32K_VERSION >= NTDDI_VISTA)
1275 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1276 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1277 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1278 NOPARAM_ROUTINE_DESTROY_CARET
,
1280 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1281 #if (WIN32K_VERSION < NTDDI_VISTA)
1282 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1283 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1284 NOPARAM_ROUTINE_DESTROY_CARET
,
1286 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1287 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1288 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1289 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1290 #if (WIN32K_VERSION >= NTDDI_VISTA)
1291 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1293 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1295 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1296 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1297 #if (WIN32K_VERSION >= NTDDI_VISTA)
1298 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1299 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1301 NOPARAM_ROUTINE_RELEASECAPTURE
,
1302 NOPARAM_ROUTINE_RESETDBLCLICK
,
1303 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1304 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1305 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1306 NOPARAM_ROUTINE_REMOTELOGOFF
,
1307 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1308 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1309 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1310 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1311 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1312 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1313 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1314 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1315 #if (WIN32K_VERSION >= NTDDI_VISTA)
1316 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1318 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1319 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1320 #if (WIN32K_VERSION < NTDDI_VISTA)
1321 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1323 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1324 #if (WIN32K_VERSION >= NTDDI_VISTA)
1325 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1327 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1328 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1329 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1330 #if (WIN32K_VERSION < NTDDI_VISTA)
1331 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1333 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1334 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1335 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1336 #if (WIN32K_VERSION < NTDDI_VISTA)
1337 ONEPARAM_ROUTINE_GETCURSORPOS
,
1339 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1340 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1341 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1342 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1343 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1344 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1345 #if (WIN32K_VERSION < NTDDI_VISTA)
1346 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1348 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1349 ONEPARAM_ROUTINE_LOADFONTS
,
1350 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1351 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1352 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1353 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1354 #if (WIN32K_VERSION < NTDDI_VISTA)
1355 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1357 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1358 ONEPARAM_ROUTINE_REGISTERLPK
,
1359 #if (WIN32K_VERSION >= NTDDI_VISTA)
1360 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1362 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1363 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1364 ONEPARAM_ROUTINE_RELEASEDC
,
1365 #if (WIN32K_VERSION >= NTDDI_VISTA)
1366 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1368 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1369 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1370 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1371 #if (WIN32K_VERSION < NTDDI_VISTA)
1372 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1374 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1375 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1376 #if (WIN32K_VERSION >= NTDDI_VISTA)
1377 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1379 ONEPARAM_ROUTINE_SHOWCURSOR
,
1380 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1381 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1382 X_ROUTINE_WOWMODULEUNLOAD
,
1383 #if (WIN32K_VERSION < NTDDI_VISTA)
1384 X_ROUTINE_REMOTENOTIFY
,
1386 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1387 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1388 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1389 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1390 HWND_ROUTINE_SETMSGBOX
,
1391 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1392 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1393 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1394 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1395 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1396 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1397 HWNDPARAM_ROUTINE_SETVISIBLE
,
1398 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1399 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1400 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1401 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1402 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1403 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1404 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1405 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1406 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1407 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1408 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1409 HWNDLOCK_ROUTINE_SETSYSMENU
,
1410 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1411 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1412 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1413 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1414 TWOPARAM_ROUTINE_REDRAWTITLE
,
1415 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1416 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1417 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1418 TWOPARAM_ROUTINE_VALIDATERGN
,
1419 #if (WIN32K_VERSION >= NTDDI_VISTA)
1420 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1421 TWOPARAM_ROUTINE_GETCURSORPOS
,
1423 TWOPARAM_ROUTINE_GETHDEVNAME
,
1424 TWOPARAM_ROUTINE_INITANSIOEM
,
1425 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1426 #if (WIN32K_VERSION >= NTDDI_VISTA)
1427 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1429 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1430 #if (WIN32K_VERSION >= NTDDI_VISTA)
1431 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1433 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1435 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1436 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1437 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1438 TWOPARAM_ROUTINE_SETCARETPOS
,
1439 TWOPARAM_ROUTINE_SETCURSORPOS
,
1440 #if (WIN32K_VERSION >= NTDDI_VISTA)
1441 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1443 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1444 TWOPARAM_ROUTINE_WOWCLEANUP
1467 NtUserCallHwndParam(
1474 NtUserCallHwndParamLock(
1481 NtUserCallMsgFilter(
1487 NtUserCallNextHookEx(
1513 NtUserChangeClipboardChain(
1519 NtUserChangeDisplaySettings(
1520 PUNICODE_STRING lpszDeviceName
,
1521 LPDEVMODEW lpDevMode
,
1528 NtUserCheckDesktopByThreadId(
1533 NtUserCheckWindowThreadDesktop(
1540 NtUserCheckImeHotKey(
1545 NtUserChildWindowFromPointEx(
1558 NtUserCloseClipboard(VOID
);
1567 NtUserCloseWindowStation(
1570 /* Console commands for NtUserConsoleControl */
1571 typedef enum _CONSOLECONTROL
1573 GuiConsoleWndClassAtom
,
1574 ConsoleMakePalettePublic
= 5,
1575 ConsoleAcquireDisplayOwnership
,
1576 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1580 NtUserConsoleControl(
1581 IN CONSOLECONTROL ConsoleCtrl
,
1582 IN PVOID ConsoleCtrlInfo
,
1583 IN ULONG ConsoleCtrlInfoLength
);
1587 NtUserConvertMemHandle(
1593 NtUserCopyAcceleratorTable(
1596 ULONG EntriesCount
);
1600 NtUserCountClipboardFormats(VOID
);
1604 NtUserCreateAcceleratorTable(
1606 ULONG EntriesCount
);
1618 NtUserCreateDesktop(
1619 POBJECT_ATTRIBUTES poa
,
1620 PUNICODE_STRING lpszDesktopDevice
,
1623 ACCESS_MASK dwDesiredAccess
);
1627 NtUserCreateInputContext(
1632 NtUserCreateLocalMemHandle(
1640 NtUserCreateWindowEx(
1642 PLARGE_STRING plstrClassName
,
1643 PLARGE_STRING plstrClsVersion
,
1644 PLARGE_STRING plstrWindowName
,
1652 HINSTANCE hInstance
,
1659 NtUserCreateWindowStation(
1660 POBJECT_ATTRIBUTES ObjectAttributes
,
1661 ACCESS_MASK dwDesiredAccess
,
1670 NtUserDdeGetQualityOfService(
1673 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1677 NtUserDdeInitialize(
1686 NtUserDdeSetQualityOfService(
1688 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1689 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1692 NtUserDeferWindowPos(
1695 HWND WndInsertAfter
,
1703 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1707 NtUserDestroyAcceleratorTable(
1712 NtUserDestroyCursor(
1718 NtUserDestroyInputContext(
1722 NtUserDestroyWindow(HWND Wnd
);
1726 NtUserDisableThreadIme(
1731 NtUserDispatchMessage(PMSG pMsg
);
1750 NtUserDrawAnimatedRects(
1766 NtUserDrawCaptionTemp(
1772 const PUNICODE_STRING str
,
1775 // Used with NtUserDrawIconEx, last parameter.
1776 typedef struct _DRAWICONEXDATA
1782 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1794 HBRUSH hbrFlickerFreeDraw
,
1801 NtUserEmptyClipboard(VOID
);
1805 NtUserEnableScrollBar(
1812 NtUserEndDeferWindowPosEx(
1817 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1821 NtUserEnumDisplayDevices (
1822 PUNICODE_STRING lpDevice
, /* device name */
1823 DWORD iDevNum
, /* display device */
1824 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1825 DWORD dwFlags
); /* reserved */
1829 NtUserEnumDisplayMonitors (
1832 MONITORENUMPROC lpfnEnum,
1834 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1837 NtUserEnumDisplayMonitors(
1838 OPTIONAL IN HDC hDC
,
1839 OPTIONAL IN LPCRECT pRect
,
1840 OPTIONAL OUT HMONITOR
*hMonitorList
,
1841 OPTIONAL OUT LPRECT monitorRectList
,
1842 OPTIONAL IN DWORD listSize
);
1847 NtUserEnumDisplaySettings(
1848 PUNICODE_STRING lpszDeviceName
,
1850 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1860 NtUserExcludeUpdateRgn(
1876 HWND hwndChildAfter
,
1877 PUNICODE_STRING ucClassName
,
1878 PUNICODE_STRING ucWindowName
,
1884 NtUserFlashWindowEx(
1885 IN PFLASHWINFO pfwi
);
1889 NtUserGetAltTabInfo(
1898 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1902 NtUserGetAppImeLevel(
1907 NtUserGetAsyncKeyState(
1910 _Success_(return!=0)
1911 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return*2+2))
1916 _Inout_ PUNICODE_STRING pustrName
);
1920 NtUserGetCaretBlinkTime(VOID
);
1928 NtUserGetClassInfo(HINSTANCE hInstance
,
1929 PUNICODE_STRING ClassName
,
1931 LPWSTR
*ppszMenuName
,
1936 NtUserGetClassName(HWND hWnd
,
1937 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1938 PUNICODE_STRING ClassName
);
1942 NtUserGetClipboardData(
1944 PGETCLIPBDATA pgcd
);
1948 NtUserGetClipboardFormatName(
1950 LPWSTR lpszFormatName
,
1955 NtUserGetClipboardOwner(VOID
);
1959 NtUserGetClipboardSequenceNumber(VOID
);
1963 NtUserGetClipboardViewer(VOID
);
1967 NtUserGetClipCursor(
1972 NtUserGetComboBoxInfo(
1974 PCOMBOBOXINFO pcbi
);
1978 NtUserGetControlBrush(
1985 NtUserGetControlColor(
2000 NtUserGetCursorFrameInfo(
2008 NtUserGetCursorInfo(
2025 NtUserGetDoubleClickTime(VOID
);
2029 NtUserGetForegroundWindow(VOID
);
2033 NtUserGetGuiResources(
2039 NtUserGetGUIThreadInfo(
2041 LPGUITHREADINFO lpgui
);
2043 _Success_(return!=FALSE
)
2047 _In_ HANDLE hCurIcon
,
2048 _Out_opt_ PICONINFO IconInfo
,
2049 _Inout_opt_ PUNICODE_STRING lpInstName
,
2050 _Inout_opt_ PUNICODE_STRING lpResName
,
2051 _Out_opt_ LPDWORD pbpp
,
2052 _In_ BOOL bInternal
);
2078 NtUserGetInternalWindowPos(
2085 NtUserGetKeyboardLayout(
2090 NtUserGetKeyboardLayoutList(
2096 NtUserGetKeyboardLayoutName(
2101 NtUserGetKeyboardState(
2106 NtUserGetKeyboardType(
2111 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
2120 NtUserGetLayeredWindowAttributes(
2128 NtUserGetListBoxInfo(
2132 NtUserGetMessage(PMSG pMsg
,
2139 NtUserGetMouseMovePointsEx(
2141 LPMOUSEMOVEPOINT lppt
,
2142 LPMOUSEMOVEPOINT lpptBuf
,
2148 NtUserGetObjectInformation(
2151 PVOID pvInformation
,
2153 PDWORD nLengthNeeded
);
2157 NtUserGetOpenClipboardWindow(VOID
);
2161 NtUserGetPriorityClipboardFormat(
2162 UINT
*paFormatPriorityList
,
2167 NtUserGetProcessWindowStation(VOID
);
2171 NtUserGetRawInputBuffer(
2178 NtUserGetRawInputData(
2179 HRAWINPUT hRawInput
,
2187 NtUserGetRawInputDeviceInfo(
2195 NtUserGetRawInputDeviceList(
2196 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2197 PUINT puiNumDevices
,
2202 NtUserGetRegisteredRawInputDevices(
2203 PRAWINPUTDEVICE pRawInputDevices
,
2204 PUINT puiNumDevices
,
2209 NtUserGetScrollBarInfo(
2212 PSCROLLBARINFO psbi
);
2216 NtUserGetThreadDesktop(
2221 enum ThreadStateRoutines
2223 THREADSTATE_GETTHREADINFO
,
2224 THREADSTATE_INSENDMESSAGE
,
2225 THREADSTATE_FOCUSWINDOW
,
2226 THREADSTATE_ACTIVEWINDOW
,
2227 THREADSTATE_CAPTUREWINDOW
,
2228 THREADSTATE_PROGMANWINDOW
,
2229 THREADSTATE_TASKMANWINDOW
,
2230 THREADSTATE_GETMESSAGETIME
,
2231 THREADSTATE_GETINPUTSTATE
,
2232 THREADSTATE_UPTIMELASTREAD
,
2233 THREADSTATE_FOREGROUNDTHREAD
,
2234 THREADSTATE_GETCURSOR
2239 NtUserGetThreadState(
2244 NtUserGetTitleBarInfo(
2249 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2265 NtUserGetWindowPlacement(
2267 WINDOWPLACEMENT
*lpwndpl
);
2272 HINSTANCE hInstance
,
2273 PUNICODE_STRING ClassName
);
2277 NtUserHardErrorControl(
2284 NtUserImpersonateDdeClientWindow(
2292 HANDLE hPowerRequestEvent
,
2293 HANDLE hMediaRequestEvent
);
2297 NtUserInitializeClientPfnArrays(
2298 PPFNCLIENT pfnClientA
,
2299 PPFNCLIENT pfnClientW
,
2300 PPFNCLIENTWORKER pfnClientWorker
,
2301 HINSTANCE hmodUser
);
2321 NtUserInternalGetWindowText(
2328 NtUserInvalidateRect(
2335 NtUserInvalidateRgn(
2342 NtUserIsClipboardFormatAvailable(
2355 NtUserLoadKeyboardLayoutEx(
2358 IN PUNICODE_STRING puszKeyboardName
,
2360 IN PUNICODE_STRING puszKLID
,
2366 NtUserLockWindowStation(
2367 HWINSTA hWindowStation
);
2371 NtUserLockWindowUpdate(
2376 NtUserLockWorkStation(VOID
);
2380 NtUserMapVirtualKeyEx( UINT keyCode
,
2385 typedef struct tagDOSENDMESSAGE
2391 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2400 ULONG_PTR ResultInfo
,
2401 DWORD dwType
, // FNID_XX types
2408 UINT cmd
, // Wine SW_ commands
2413 NtUserMNDragLeave(VOID
);
2423 NtUserModifyUserStartupInfoFlags(
2440 NtUserNotifyIMEStatus(
2447 NtUserNotifyProcessCreate(
2448 HANDLE NewProcessId
,
2449 HANDLE SourceThreadId
,
2455 NtUserNotifyWinEvent(
2463 NtUserOpenClipboard(
2470 POBJECT_ATTRIBUTES ObjectAttributes
,
2472 ACCESS_MASK dwDesiredAccess
);
2476 NtUserOpenInputDesktop(
2479 ACCESS_MASK dwDesiredAccess
);
2483 NtUserOpenWindowStation(
2484 POBJECT_ATTRIBUTES ObjectAttributes
,
2485 ACCESS_MASK dwDesiredAccess
);
2503 NtUserPeekMessage( PMSG pMsg
,
2519 NtUserPostThreadMessage(
2534 NtUserProcessConnect(
2536 OUT PUSERCONNECT pUserConnect
,
2537 IN DWORD dwSize
); // sizeof(USERCONNECT)
2541 NtUserQueryInformationThread(
2550 NtUserQueryInputContext(
2556 NtUserQuerySendMessage(
2561 NtUserQueryUserCounters(
2568 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2569 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2570 #define QUERY_WINDOW_ACTIVE 0x02
2571 #define QUERY_WINDOW_FOCUS 0x03
2572 #define QUERY_WINDOW_ISHUNG 0x04
2573 #define QUERY_WINDOW_REAL_ID 0x05
2574 #define QUERY_WINDOW_FOREGROUND 0x06
2583 NtUserRealInternalGetMessage(
2593 NtUserRealChildWindowFromPoint(
2600 NtUserRealWaitMessageEx(
2609 CONST RECT
*lprcUpdate
,
2616 NtUserRegisterClassExWOW(
2618 PUNICODE_STRING pustrClassName
,
2619 PUNICODE_STRING pustrCNVersion
,
2620 PCLSMENUNAME pClassMenuName
,
2627 NtUserRegisterRawInputDevices(
2628 IN PCRAWINPUTDEVICE pRawInputDevices
,
2629 IN UINT uiNumDevices
,
2634 NtUserRegisterUserApiHook(
2635 PUNICODE_STRING m_dllname1
,
2636 PUNICODE_STRING m_funname1
,
2642 NtUserRegisterHotKey(HWND hWnd
,
2649 NtUserRegisterTasklist(
2653 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2657 NtUserRemoteConnect(
2664 NtUserRemoteRedrawRectangle(
2672 NtUserRemoteRedrawScreen(VOID
);
2676 NtUserRemoteStopScreenUpdates(VOID
);
2679 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2683 NtUserResolveDesktop(
2691 NtUserResolveDesktopForWOW(
2708 CONST RECT
*lprcScroll
,
2709 CONST RECT
*lprcClip
,
2714 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2715 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2725 NtUserSetActiveWindow(HWND Wnd
);
2729 NtUserSetAppImeLevel(
2734 NtUserSetCapture(HWND Wnd
);
2740 ULONG_PTR dwNewLong
,
2752 NtUserSetClipboardData(
2759 NtUserSetClipboardViewer(
2760 HWND hWndNewViewer
);
2764 NtUserSelectPalette(
2767 BOOL ForceBackground
2772 NtUserSetConsoleReserveKeys(
2783 NtUserSetCursorContents(
2785 PICONINFO IconInfo
);
2787 #ifdef NEW_CURSORICON
2790 NtUserSetCursorIconData(
2791 _In_ HCURSOR hCursor
,
2792 _In_ PUNICODE_STRING pustrModule
,
2793 _In_ PUNICODE_STRING puSrcName
,
2794 _In_
const CURSORDATA
* pCursorData
);
2796 typedef struct _tagFINDEXISTINGCURICONPARAM
2801 } FINDEXISTINGCURICONPARAM
;
2805 NtUserFindExistingCursorIcon(
2806 _In_ PUNICODE_STRING pustrModule
,
2807 _In_ PUNICODE_STRING pustrRsrc
,
2808 _In_ FINDEXISTINGCURICONPARAM
* param
);
2812 NtUserSetCursorIconData(
2822 NtUserFindExistingCursorIcon(
2856 NtUserSetImeOwnerWindow(
2862 NtUserSetInformationProcess(
2870 NtUserSetInformationThread(
2871 IN HANDLE ThreadHandle
,
2872 IN USERTHREADINFOCLASS ThreadInformationClass
,
2873 IN PVOID ThreadInformation
,
2874 IN ULONG ThreadInformationLength
2879 NtUserSetInternalWindowPos(
2887 NtUserSetKeyboardState(
2892 NtUserSetLayeredWindowAttributes(
2900 NtUserSetLogonNotifyWindow(
2905 NtUserSetObjectInformation(
2908 PVOID pvInformation
,
2915 HWND hWndNewParent
);
2919 NtUserSetProcessWindowStation(
2920 HWINSTA hWindowStation
);
2923 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2933 NtUserSetScrollInfo(
2941 NtUserSetShellWindowEx(
2943 HWND hwndShellListView
);
2949 IN CONST INT
*lpaElements
,
2950 IN CONST COLORREF
*lpaRgbValues
,
2955 NtUserSetSystemCursor(
2961 NtUserSetThreadDesktop(
2966 NtUserSetThreadState(
2972 NtUserSetSystemTimer
2977 TIMERPROC lpTimerFunc
2982 NtUserSetThreadLayoutHandles(
2993 TIMERPROC lpTimerFunc
2998 NtUserSetWindowFNID(
3004 NtUserSetWindowLong(
3012 NtUserSetWindowPlacement(
3014 WINDOWPLACEMENT
*lpwndpl
);
3017 NTAPI
NtUserSetWindowPos(
3019 HWND hWndInsertAfter
,
3036 NtUserSetWindowsHookAW(
3043 NtUserSetWindowsHookEx(
3045 PUNICODE_STRING ModuleName
,
3053 NtUserSetWindowStationUser(
3060 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
3064 NtUserSetWinEventHook(
3067 HMODULE hmodWinEventProc
,
3068 PUNICODE_STRING puString
,
3069 WINEVENTPROC lpfnWinEventProc
,
3086 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
3096 NtUserShowWindowAsync(
3102 NtUserSoundSentry(VOID
);
3106 NtUserSwitchDesktop(
3111 NtUserSystemParametersInfo(
3119 NtUserTestForInteractiveUser(
3135 NtUserTrackMouseEvent(
3136 LPTRACKMOUSEEVENT lpEventTrack
);
3140 NtUserTranslateAccelerator(
3147 NtUserTranslateMessage(
3153 NtUserUnhookWindowsHookEx(
3158 NtUserUnhookWinEvent(
3159 HWINEVENTHOOK hWinEventHook
);
3163 NtUserUnloadKeyboardLayout(
3168 NtUserUnlockWindowStation(
3169 HWINSTA hWindowStation
);
3173 NtUserUnregisterClass(
3174 PUNICODE_STRING ClassNameOrAtom
,
3175 HINSTANCE hInstance
,
3176 PCLSMENUNAME pClassMenuName
);
3180 NtUserUnregisterHotKey(HWND hWnd
,
3185 NtUserUnregisterUserApiHook(VOID
);
3189 NtUserUpdateInputContext(
3196 NtUserUpdateInstance(
3203 NtUserUpdateLayeredWindow(
3211 BLENDFUNCTION
*pblend
,
3217 NtUserUpdatePerUserSystemParameters(
3223 NtUserUserHandleGrantAccess(
3224 IN HANDLE hUserHandle
,
3230 NtUserValidateHandleSecure(
3238 CONST RECT
*lpRect
);
3242 NtUserValidateTimerCallback(
3256 NtUserWaitForInputIdle(
3258 IN DWORD dwMilliseconds
,
3259 IN BOOL Unknown2
); // Always FALSE
3263 NtUserWaitForMsgAndEvent(
3268 NtUserWaitMessage(VOID
);
3272 NtUserWin32PoolAllocationStats(
3282 NtUserWindowFromPhysicalPoint(
3287 NtUserWindowFromPoint(
3293 NtUserYieldTask(VOID
);
3295 /* lParam of DDE messages */
3296 typedef struct tagKMDDEEXECUTEDATA
3300 /* BYTE Data[DataSize] */
3301 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3303 typedef struct tagKMDDELPARAM
3307 } KMDDELPARAM
, *PKMDDELPARAM
;
3314 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3317 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3318 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3319 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3320 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3321 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3322 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3323 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3324 #define TWOPARAM_ROUTINE_EXITREACTOS 0xfffd0051
3325 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3326 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0053
3327 #define MSQ_STATE_CAPTURE 0x1
3328 #define MSQ_STATE_ACTIVE 0x2
3329 #define MSQ_STATE_FOCUS 0x3
3330 #define MSQ_STATE_MENUOWNER 0x4
3331 #define MSQ_STATE_MOVESIZE 0x5
3332 #define MSQ_STATE_CARET 0x6
3333 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3334 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3335 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3339 NtUserBuildMenuItemList(
3347 NtUserGetMenuDefaultItem(
3354 NtUserGetMonitorInfo(
3355 IN HMONITOR hMonitor
,
3356 OUT LPMONITORINFO pMonitorInfo
);
3358 /* Should be done in usermode */
3360 /* (other FocusedItem values give the position of the focused item) */
3361 #define NO_SELECTED_ITEM 0xffff
3363 typedef struct tagROSMENUINFO
3365 /* ----------- MENUINFO ----------- */
3371 DWORD dwContextHelpID
;
3372 ULONG_PTR dwMenuData
;
3373 /* ----------- Extra ----------- */
3374 HMENU Self
; /* Handle of this menu */
3375 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3376 UINT FocusedItem
; /* Currently focused item */
3377 UINT MenuItemCount
; /* Number of items in the menu */
3378 HWND Wnd
; /* Window containing the menu */
3379 WORD Width
; /* Width of the whole menu */
3380 WORD Height
; /* Height of the whole menu */
3381 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3382 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3383 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3384 } ROSMENUINFO
, *PROSMENUINFO
;
3394 typedef struct tagROSMENUITEMINFO
3396 /* ----------- MENUITEMINFOW ----------- */
3403 HBITMAP hbmpChecked
;
3404 HBITMAP hbmpUnchecked
;
3409 /* ----------- Extra ----------- */
3410 RECT Rect
; /* Item area (relative to menu window) */
3411 UINT dxTab
; /* X position of text after Tab */
3412 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3413 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3421 PROSMENUITEMINFO lpmii
,
3427 NtUserMonitorFromPoint(
3433 NtUserMonitorFromRect(
3439 NtUserMonitorFromWindow(
3443 typedef struct _SETSCROLLBARINFO
3447 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3448 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3452 NtUserSetScrollBarInfo(
3455 SETSCROLLBARINFO
*info
);
3459 #endif /* __WIN32K_NTUSER_H */