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 _USER_OBJECT_TYPE
60 USER_HANDLE_TYPE_COUNT
63 typedef enum _USERTHREADINFOCLASS
65 UserThreadShutdownInformation
,
68 UserThreadWOWInformation
,
70 UserThreadInitiateShutdown
,
71 UserThreadEndShutdown
,
72 UserThreadUseActiveDesktop
,
74 UserThreadRestoreDesktop
,
76 } USERTHREADINFOCLASS
;
78 typedef struct _LARGE_UNICODE_STRING
81 ULONG MaximumLength
:31;
84 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
86 typedef struct _LARGE_STRING
89 ULONG MaximumLength
:31;
92 } LARGE_STRING
, *PLARGE_STRING
;
94 // Based on ANSI_STRING
96 typedef struct _LARGE_ANSI_STRING
99 ULONG MaximumLength
:31;
102 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
104 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
105 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
106 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
108 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
110 typedef struct _DESKTOPINFO
113 PVOID pvDesktopLimit
;
116 LIST_ENTRY aphkStart
[NB_HOOKS
];
122 PPROCESSINFO ppiShellProcess
;
129 UINT LastInputWasKbd
: 1;
133 WCHAR szDesktopName
[1];
134 } DESKTOPINFO
, *PDESKTOPINFO
;
136 #define CTI_THREADSYSLOCK 0x0001
137 #define CTI_INSENDMESSAGE 0x0002
139 typedef struct _CLIENTTHREADINFO
144 WORD fsWakeBitsJournal
;
146 ULONG tickLastMsgChecked
;
148 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
156 typedef struct _THROBJHEAD
160 } THROBJHEAD
, *PTHROBJHEAD
;
162 typedef struct _THRDESKHEAD
165 struct _DESKTOP
*rpdesk
;
167 } THRDESKHEAD
, *PTHRDESKHEAD
;
169 typedef struct _PROCDESKHEAD
173 struct _DESKTOP
*rpdesk
;
175 } PROCDESKHEAD
, *PPROCDESKHEAD
;
177 typedef struct _PROCMARKHEAD
182 } PROCMARKHEAD
, *PPROCMARKHEAD
;
184 #define UserHMGetHandle(obj) ((obj)->head.h)
186 /* Window Client Information structure */
189 #define WEF_SETBYWNDPTI 0x0001
191 typedef struct tagHOOK
194 struct tagHOOK
*phkNext
; /* This is for user space. */
195 int HookId
; /* Hook table index */
197 ULONG flags
; /* Some internal flags */
199 PTHREADINFO ptiHooked
;
200 struct _DESKTOP
*rpdesk
;
202 LIST_ENTRY Chain
; /* Hook chain entry */
203 HOOKPROC Proc
; /* Hook function */
204 BOOLEAN Ansi
; /* Is it an Ansi hook? */
205 UNICODE_STRING ModuleName
; /* Module name for global hooks */
208 typedef struct tagCLIPBOARDDATA
213 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
215 /* THREADINFO Flags */
216 #define TIF_INCLEANUP 0x00000001
217 #define TIF_16BIT 0x00000002
218 #define TIF_SYSTEMTHREAD 0x00000004
219 #define TIF_CSRSSTHREAD 0x00000008
220 #define TIF_TRACKRECTVISIBLE 0x00000010
221 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
222 #define TIF_DONTATTACHQUEUE 0x00000040
223 #define TIF_DONTJOURNALATTACH 0x00000080
224 #define TIF_WOW64 0x00000100
225 #define TIF_INACTIVATEAPPMSG 0x00000200
226 #define TIF_SPINNING 0x00000400
227 #define TIF_PALETTEAWARE 0x00000800
228 #define TIF_SHAREDWOW 0x00001000
229 #define TIF_FIRSTIDLE 0x00002000
230 #define TIF_WAITFORINPUTIDLE 0x00004000
231 #define TIF_MOVESIZETRACKING 0x00008000
232 #define TIF_VDMAPP 0x00010000
233 #define TIF_DOSEMULATOR 0x00020000
234 #define TIF_GLOBALHOOKER 0x00040000
235 #define TIF_DELAYEDEVENT 0x00080000
236 #define TIF_MSGPOSCHANGED 0x00100000
237 #define TIF_SHUTDOWNCOMPLETE 0x00200000
238 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
239 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
240 #define TIF_GUITHREADINITIALIZED 0x02000000
241 #define TIF_DISABLEIME 0x04000000
242 #define TIF_INGETTEXTLENGTH 0x08000000
243 #define TIF_ANSILENGTH 0x10000000
244 #define TIF_DISABLEHOOKS 0x20000000
246 typedef struct _CALLBACKWND
251 } CALLBACKWND
, *PCALLBACKWND
;
253 #define CI_TRANSACTION 0x00000001
254 #define CI_QUEUEMSG 0x00000002
255 #define CI_WOW 0x00000004
256 #define CI_INITTHREAD 0x00000008
257 #define CI_CURTHPRHOOK 0x00000010
258 #define CI_CLASSESREGISTERED 0x00000020
259 #define CI_IMMACTIVATE 0x00000040
261 typedef struct _CLIENTINFO
267 DWORD dwCompatFlags2
;
268 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
269 PDESKTOPINFO pDeskInfo
;
270 ULONG_PTR ulClientDelta
;
273 CALLBACKWND CallbackWnd
;
275 INT cInDDEMLCallback
;
276 PCLIENTTHREADINFO pClientThreadInfo
;
277 ULONG_PTR dwHookData
;
280 DWORD dwAsyncKeyCache
;
281 BYTE afAsyncKeyState
[8];
282 BYTE afAsyncKeyStateRecentDow
[8];
287 LPDWORD lpdwRegisteredClasses
;
288 ULONG Win32ClientInfo3
[26];
289 /* It's just a pointer reference not to be used w the structure in user space. */
291 } CLIENTINFO
, *PCLIENTINFO
;
293 /* Make sure it fits into the TEB */
294 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
296 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
298 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
299 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
300 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
302 /* Menu Item fType. */
303 #define MFT_RTOL 0x6000
305 typedef struct tagITEM
310 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
312 HANDLE hbmpUnchecked
;
313 USHORT
* lpstr
; /* Item text pointer. */
315 DWORD_PTR dwItemData
;
316 ULONG xItem
; /* Item position. left */
317 ULONG yItem
; /* " top */
318 ULONG cxItem
; /* Item Size Width */
319 ULONG cyItem
; /* " Height */
320 ULONG dxTab
; /* X position of text after Tab */
321 ULONG ulX
; /* underline.. start position */
322 ULONG ulWidth
; /* underline.. width */
323 HBITMAP hbmp
; /* bitmap */
324 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
325 INT cyBmp
; /* Height " */
328 typedef struct tagMENULIST
330 struct tagMENULIST
* pNext
;
331 struct tagMENU
* pMenu
;
332 } MENULIST
, *PMENULIST
;
334 /* Menu fFlags, upper byte is MNS_X style flags. */
335 #define MNF_POPUP 0x0001
336 #define MNF_UNDERLINE 0x0004
337 #define MNF_INACTIVE 0x0010
338 #define MNF_RTOL 0x0020
339 #define MNF_DESKTOPMN 0x0040
340 #define MNF_SYSDESKMN 0x0080
341 #define MNF_SYSSUBMENU 0x0100
343 typedef struct tagMENU
346 ULONG fFlags
; /* [Style flags | Menu flags] */
347 INT iItem
; /* nPos of selected item, if -1 not selected. */
348 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
349 UINT cItems
; /* Number of items in the menu */
350 ULONG cxMenu
; /* Width of the whole menu */
351 ULONG cyMenu
; /* Height of the whole menu */
352 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
353 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
354 PITEM rgItems
; /* Array of menu items */
355 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
356 DWORD dwContextHelpId
;
357 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
358 DWORD_PTR dwMenuData
; /* application defined value */
359 HBRUSH hbrBack
; /* brush for menu background */
360 INT iTop
; /* Current scroll position Top */
361 INT iMaxTop
; /* Current scroll position Max Top */
362 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
365 typedef struct _REGISTER_SYSCLASS
367 /* This is a reactos specific class used to initialize the
368 system window classes during user32 initialization */
377 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
379 typedef struct _CLSMENUNAME
381 LPSTR pszClientAnsiMenuName
;
382 LPWSTR pwszClientUnicodeMenuName
;
383 PUNICODE_STRING pusMenuName
;
384 } CLSMENUNAME
, *PCLSMENUNAME
;
386 typedef struct tagSBDATA
394 typedef struct tagSBINFO
401 typedef struct tagSBCALC
423 UserGetCPDA2U
= 0x01, // " Unicode "
424 UserGetCPDU2A
= 0X02, // " Ansi "
425 UserGetCPDClass
= 0X10,
426 UserGetCPDWindow
= 0X20,
427 UserGetCPDDialog
= 0X40,
428 UserGetCPDWndtoCls
= 0X80
431 typedef struct _CALLPROCDATA
434 struct _CALLPROCDATA
*spcpdNext
;
435 WNDPROC pfnClientPrevious
;
437 } CALLPROCDATA
, *PCALLPROCDATA
;
439 #define CSF_SERVERSIDEPROC 0x0001
440 #define CSF_ANSIPROC 0x0002
441 #define CSF_WOWDEFERDESTROY 0x0004
442 #define CSF_SYSTEMCLASS 0x0008
443 #define CSF_WOWCLASS 0x0010
444 #define CSF_WOWEXTRA 0x0020
445 #define CSF_CACHEDSMICON 0x0040
446 #define CSF_WIN40COMPAT 0x0080
450 struct _CLS
*pclsNext
;
451 RTL_ATOM atomClassName
;
452 ATOM atomNVClassName
;
454 struct _DESKTOP
*rpdeskParent
;
457 PSTR lpszClientAnsiMenuName
; // For client use
458 PWSTR lpszClientUnicodeMenuName
; // " " "
459 PCALLPROCDATA spcpdFirst
;
460 struct _CLS
*pclsBase
;
461 struct _CLS
*pclsClone
;
462 ULONG cWndReferenceCount
;
468 HANDLE hIcon
; /* FIXME - Use pointer! */
470 HANDLE hCursor
; /* FIXME - Use pointer! */
472 HBRUSH hbrBackground
;
473 PWSTR lpszMenuName
; // kernel use
474 PSTR lpszAnsiClassName
; // "
475 HANDLE hIconSm
; /* FIXME - Use pointer! */
478 UINT Unicode
: 1; // !CSF_ANSIPROC
479 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
480 UINT MenuNameIsString
: 1;
485 typedef struct _SBINFOEX
487 SCROLLBARINFO ScrollBarInfo
;
488 SCROLLINFO ScrollInfo
;
489 } SBINFOEX
, *PSBINFOEX
;
491 // State Flags !Not Implemented!
492 #define WNDS_HASMENU 0X00000001
493 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
494 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
495 #define WNDS_HASCAPTION 0X00000008
496 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
497 #define WNDS_MSGBOX 0X00000020
498 #define WNDS_ACTIVEFRAME 0X00000040
499 #define WNDS_HASSPB 0X00000080
500 #define WNDS_NONCPAINT 0X00000100
501 #define WNDS_SENDERASEBACKGROUND 0X00000200
502 #define WNDS_ERASEBACKGROUND 0X00000400
503 #define WNDS_SENDNCPAINT 0X00000800
504 #define WNDS_INTERNALPAINT 0X00001000
505 #define WNDS_UPDATEDIRTY 0X00002000
506 #define WNDS_HIDDENPOPUP 0X00004000
507 #define WNDS_FORCEMENUDRAW 0X00008000
508 #define WNDS_DIALOGWINDOW 0X00010000
509 #define WNDS_HASCREATESTRUCTNAME 0X00020000
510 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
511 #define WNDS_ANSIWINDOWPROC 0x00080000
512 #define WNDS_BEINGACTIVATED 0x00100000
513 #define WNDS_HASPALETTE 0x00200000
514 #define WNDS_PAINTNOTPROCESSED 0x00400000
515 #define WNDS_SYNCPAINTPENDING 0x00800000
516 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
517 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
518 #define WNDS_TOGGLETOPMOST 0x04000000
519 #define WNDS_REDRAWIFHUNG 0x08000000
520 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
521 #define WNDS_ANSICREATOR 0x20000000
522 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
523 #define WNDS_DESTROYED 0x80000000
525 #define WNDSACTIVEFRAME 0x00000006
527 // State2 Flags !Not Implemented!
528 #define WNDS2_WMPAINTSENT 0X00000001
529 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
530 #define WNDS2_STARTPAINT 0X00000004
531 #define WNDS2_OLDUI 0X00000008
532 #define WNDS2_HASCLIENTEDGE 0X00000010
533 #define WNDS2_BOTTOMMOST 0X00000020
534 #define WNDS2_FULLSCREEN 0X00000040
535 #define WNDS2_INDESTROY 0X00000080
536 #define WNDS2_WIN31COMPAT 0X00000100
537 #define WNDS2_WIN40COMPAT 0X00000200
538 #define WNDS2_WIN50COMPAT 0X00000400
539 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
540 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
541 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
542 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
543 #define WNDS2_HELPBUTTONDOWN 0X00008000
544 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
545 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
546 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
547 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
548 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
549 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
550 #define WNDS2_FORCENCPAINT 0X00400000
551 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
552 #define WNDS2_FULLSCREENMODE 0X01000000
553 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
554 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
555 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
556 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
557 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
560 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
561 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
562 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
563 #define WS_EX2_LINKED 0X00000008
564 #define WS_EX2_LAYEREDFORDWM 0X00000010
565 #define WS_EX2_LAYEREDLIMBO 0X00000020
566 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
567 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
568 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
569 #define WS_EX2_HASOVERLAY 0X00000200
570 #define WS_EX2_CONSOLEWINDOW 0X00000400
571 #define WS_EX2_CHILDNOACTIVATE 0X00000800
573 #define WPF_MININIT 0x0008
574 #define WPF_MAXINIT 0x0010
581 /* Extended style. */
585 /* Handle of the module that created the window. */
588 struct _WND
*spwndNext
;
589 struct _WND
*spwndPrev
;
590 struct _WND
*spwndParent
;
591 struct _WND
*spwndChild
;
592 struct _WND
*spwndOwner
;
596 /* Pointer to the window class. */
599 /* Property list head.*/
600 LIST_ENTRY PropListHead
;
604 /* system menu handle. */
607 /* Window menu handle or window id */
608 UINT IDMenu
; // Use spmenu
613 LARGE_UNICODE_STRING strName
;
614 /* Size of the extra data associated with the window. */
616 struct _WND
*spwndLastActive
;
617 //HIMC hImc; // Input context associated with this window.
620 //PD3DMATRIX pTransForm;
621 struct _WND
*spwndClipboardListener
;
630 UINT flags
; // WPF_ flags.
633 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
634 UINT InternalPosInitialized
: 1;
635 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
636 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
639 PSBINFOEX pSBInfoex
; // convert to PSBINFO
640 /* Entry in the list of thread windows. */
641 LIST_ENTRY ThreadListEntry
;
644 #define PWND_BOTTOM ((PWND)1)
646 typedef struct _SBWND
654 typedef struct _PFNCLIENT
656 WNDPROC pfnScrollBarWndProc
;
657 WNDPROC pfnTitleWndProc
;
658 WNDPROC pfnMenuWndProc
;
659 WNDPROC pfnDesktopWndProc
;
660 WNDPROC pfnDefWindowProc
;
661 WNDPROC pfnMessageWindowProc
;
662 WNDPROC pfnSwitchWindowProc
;
663 WNDPROC pfnButtonWndProc
;
664 WNDPROC pfnComboBoxWndProc
;
665 WNDPROC pfnComboListBoxProc
;
666 WNDPROC pfnDialogWndProc
;
667 WNDPROC pfnEditWndProc
;
668 WNDPROC pfnListBoxWndProc
;
669 WNDPROC pfnMDIClientWndProc
;
670 WNDPROC pfnStaticWndProc
;
671 WNDPROC pfnImeWndProc
;
672 WNDPROC pfnGhostWndProc
;
673 WNDPROC pfnHkINLPCWPSTRUCT
;
674 WNDPROC pfnHkINLPCWPRETSTRUCT
;
675 WNDPROC pfnDispatchHook
;
676 WNDPROC pfnDispatchDefWindowProc
;
677 WNDPROC pfnDispatchMessage
;
678 WNDPROC pfnMDIActivateDlgProc
;
679 } PFNCLIENT
, *PPFNCLIENT
;
682 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
683 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
686 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
688 typedef struct _PFNCLIENTWORKER
690 WNDPROC_EX pfnButtonWndProc
;
691 WNDPROC_EX pfnComboBoxWndProc
;
692 WNDPROC_EX pfnComboListBoxProc
;
693 WNDPROC_EX pfnDialogWndProc
;
694 WNDPROC_EX pfnEditWndProc
;
695 WNDPROC_EX pfnListBoxWndProc
;
696 WNDPROC_EX pfnMDIClientWndProc
;
697 WNDPROC_EX pfnStaticWndProc
;
698 WNDPROC_EX pfnImeWndProc
;
699 WNDPROC_EX pfnGhostWndProc
;
700 WNDPROC_EX pfnCtfHookProc
;
701 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
703 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
705 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
706 #define FNID_FIRST 0x029A
707 #define FNID_SCROLLBAR 0x029A
708 #define FNID_ICONTITLE 0x029B
709 #define FNID_MENU 0x029C
710 #define FNID_DESKTOP 0x029D
711 #define FNID_DEFWINDOWPROC 0x029E
712 #define FNID_MESSAGEWND 0x029F
713 #define FNID_SWITCH 0x02A0
714 #define FNID_BUTTON 0x02A1
715 #define FNID_COMBOBOX 0x02A2
716 #define FNID_COMBOLBOX 0x02A3
717 #define FNID_DIALOG 0x02A4
718 #define FNID_EDIT 0x02A5
719 #define FNID_LISTBOX 0x02A6
720 #define FNID_MDICLIENT 0x02A7
721 #define FNID_STATIC 0x02A8
722 #define FNID_IME 0x02A9
723 #define FNID_GHOST 0x02AA
724 #define FNID_CALLWNDPROC 0x02AB
725 #define FNID_CALLWNDPROCRET 0x02AC
726 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
727 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
728 #define FNID_MB_DLGPROC 0x02AF
729 #define FNID_MDIACTIVATEDLGPROC 0x02B0
730 #define FNID_SENDMESSAGE 0x02B1
731 #define FNID_SENDMESSAGEFF 0x02B2
732 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
733 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
734 #define FNID_SENDMESSAGECALLPROC 0x02B4
735 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
736 #define FNID_TOOLTIPS 0x02B6
737 #define FNID_SENDNOTIFYMESSAGE 0x02B7
738 #define FNID_SENDMESSAGECALLBACK 0x02B8
739 #define FNID_LAST 0x02B9
741 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
742 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
744 #define FNID_DDEML 0x2000 // Registers DDEML
745 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
746 // Seen during WM_CREATE on error exit too.
747 #define FNID_FREED 0x8000 // Window being Freed...
749 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
751 #define GETPFNCLIENTA(fnid)\
752 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
753 #define GETPFNCLIENTW(fnid)\
754 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
756 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
758 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
759 #define ICLS_BUTTON 0
761 #define ICLS_STATIC 2
762 #define ICLS_LISTBOX 3
763 #define ICLS_SCROLLBAR 4
764 #define ICLS_COMBOBOX 5
765 #define ICLS_MDICLIENT 6
766 #define ICLS_COMBOLBOX 7
767 #define ICLS_DDEMLEVENT 8
768 #define ICLS_DDEMLMOTHER 9
769 #define ICLS_DDEML16BIT 10
770 #define ICLS_DDEMLCLIENTA 11
771 #define ICLS_DDEMLCLIENTW 12
772 #define ICLS_DDEMLSERVERA 13
773 #define ICLS_DDEMLSERVERW 14
775 #define ICLS_GHOST 16
776 #define ICLS_DESKTOP 17
777 #define ICLS_DIALOG 18
779 #define ICLS_SWITCH 20
780 #define ICLS_ICONTITLE 21
781 #define ICLS_TOOLTIPS 22
782 #if (_WIN32_WINNT <= 0x0501)
783 #define ICLS_UNKNOWN 22
784 #define ICLS_NOTUSED 23
786 #define ICLS_SYSSHADOW 23
787 #define ICLS_HWNDMESSAGE 24
788 #define ICLS_NOTUSED 25
792 #define COLOR_LAST COLOR_MENUBAR
793 #define MAX_MB_STRINGS 11
795 #define SRVINFO_APIHOOK 0x0010
796 #define SRVINFO_METRICS 0x0020
797 #define SRVINFO_KBDPREF 0x0080
799 #define NUM_SYSCOLORS 31
801 typedef struct tagOEMBITMAPINFO
807 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
809 typedef struct tagMBSTRING
814 } MBSTRING
, *PMBSTRING
;
816 typedef struct tagDPISERVERINFO
818 INT gclBorder
; /* 000 */
819 HFONT hCaptionFont
; /* 004 */
820 HFONT hMsgFont
; /* 008 */
821 INT cxMsgFontChar
; /* 00C */
822 INT cyMsgFontChar
; /* 010 */
823 UINT wMaxBtnSize
; /* 014 */
824 } DPISERVERINFO
, *PDPISERVERINFO
;
827 #define PUSIF_PALETTEDISPLAY 0x01
828 #define PUSIF_SNAPTO 0x02
829 #define PUSIF_COMBOBOXANIMATION 0x04
830 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
831 #define PUSIF_KEYBOARDCUES 0x20
833 typedef struct _PERUSERSERVERINFO
835 INT aiSysMet
[SM_CMETRICS
];
836 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
837 COLORREF argbSystem
[NUM_SYSCOLORS
];
838 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
842 DWORD dwLastRITEventTickCount
;
847 UINT ucWheelScrollLines
;
848 UINT ucWheelScrollChars
;
849 INT wMaxLeftOverlapChars
;
850 INT wMaxRightOverlapChars
;
853 TEXTMETRICW tmSysFont
;
854 DPISERVERINFO dpiSystem
;
855 HICON hIconSmWindows
;
858 DWORD dwAsyncKeyCache
;
860 OEMBITMAPINFO oembmi
[93];
869 DWORD dwLastSystemRITEventTickCountUpdate
;
870 ULONG adwDBGTAGFlags
[35];
873 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
875 typedef struct tagSERVERINFO
878 ULONG_PTR cHandleEntries
;
879 PFN_FNID mpFnidPfn
[FNID_NUM
];
880 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
881 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
882 PFNCLIENT apfnClientA
;
883 PFNCLIENT apfnClientW
;
884 PFNCLIENTWORKER apfnClientWorker
;
886 ATOM atomSysClass
[ICLS_NOTUSED
+1];
887 DWORD dwDefaultHeapBase
;
888 DWORD dwDefaultHeapSize
;
890 MBSTRING MBStrings
[MAX_MB_STRINGS
];
893 ATOM atomContextHelpIdProp
;
894 ATOM atomFrostedWindowProp
;
895 CHAR acOemToAnsi
[256];
896 CHAR acAnsiToOem
[256];
897 DWORD dwInstalledEventHooks
;
899 } SERVERINFO
, *PSERVERINFO
;
902 // Server event activity bits.
903 #define SRV_EVENT_MENU 0x0001
904 #define SRV_EVENT_END_APPLICATION 0x0002
905 #define SRV_EVENT_RUNNING 0x0004
906 #define SRV_EVENT_NAMECHANGE 0x0008
907 #define SRV_EVENT_VALUECHANGE 0x0010
908 #define SRV_EVENT_STATECHANGE 0x0020
909 #define SRV_EVENT_LOCATIONCHANGE 0x0040
910 #define SRV_EVENT_CREATE 0x8000
912 typedef struct _PROPLISTITEM
916 } PROPLISTITEM
, *PPROPLISTITEM
;
918 typedef struct _PROPERTY
920 LIST_ENTRY PropListEntry
;
923 } PROPERTY
, *PPROPERTY
;
925 typedef struct _BROADCASTPARM
932 } BROADCASTPARM
, *PBROADCASTPARM
;
934 PTHREADINFO
GetW32ThreadInfo(VOID
);
935 PPROCESSINFO
GetW32ProcessInfo(VOID
);
937 typedef struct _WNDMSG
943 typedef struct _SHAREDINFO
945 PSERVERINFO psi
; // global Server Info
946 PVOID aheList
; // Handle Entry List
947 PVOID pDispInfo
; // global PDISPLAYINFO pointer
948 ULONG_PTR ulSharedDelta
; // Heap delta
949 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
950 WNDMSG DefWindowMsgs
;
951 WNDMSG DefWindowSpecMsgs
;
952 } SHAREDINFO
, *PSHAREDINFO
;
954 typedef struct _USERCONNECT
957 ULONG ulCurrentVersion
;
958 DWORD dwDispatchCount
;
960 } USERCONNECT
, *PUSERCONNECT
;
962 typedef struct tagGETCLIPBDATA
971 } GETCLIPBDATA
, *PGETCLIPBDATA
;
973 typedef struct tagSETCLIPBDATA
976 BOOL fIncSerialNumber
;
977 } SETCLIPBDATA
, *PSETCLIPBDATA
;
979 // Used with NtUserSetCursorIconData, last parameter.
980 typedef struct tagCURSORDATA
993 HBITMAP hbmUserAlpha
; // Could be in W7U, not in W2k
999 struct tagCURSORDATA
* aspcur
;
1003 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1006 #define CURSORF_FROMRESOURCE 0x0001
1007 #define CURSORF_GLOBAL 0x0002
1008 #define CURSORF_LRSHARED 0x0004
1009 #define CURSORF_ACON 0x0008
1010 #define CURSORF_WOWCLEANUP 0x0010
1011 #define CURSORF_ACONFRAME 0x0040
1012 #define CURSORF_SECRET 0x0080
1013 #define CURSORF_LINKED 0x0100
1014 #define CURSORF_CURRENT 0x0200
1018 NtUserAssociateInputContext(
1025 NtUserBuildHimcList(
1042 NtUserCheckMenuItem(
1049 NtUserCtxDisplayIOCtl(
1068 NtUserDrawMenuBarTemp(
1077 NtUserEnableMenuItem(
1084 NtUserEndMenu(VOID
);
1088 NtUserGetMenuBarInfo(
1102 NtUserGetMenuItemRect(
1110 NtUserGetSystemMenu(
1116 NtUserHiliteMenuItem(
1124 NtUserMenuItemFromPoint(
1146 NtUserSetMenuContextHelpId(
1148 DWORD dwContextHelpId
);
1152 NtUserSetMenuDefaultItem(
1159 NtUserSetMenuFlagRtoL(
1164 NtUserSetSystemMenu(
1170 NtUserThunkedMenuInfo(
1176 NtUserThunkedMenuItemInfo(
1181 LPMENUITEMINFOW lpmii
,
1182 PUNICODE_STRING lpszCaption
);
1186 NtUserTrackPopupMenuEx(
1196 NtUserActivateKeyboardLayout(
1202 NtUserAlterWindowStyle(
1209 NtUserAttachThreadInput(
1211 IN DWORD idAttachTo
,
1215 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1236 NtUserBuildHwndList(
1246 NtUserBuildNameList(
1250 PULONG pRequiredSize
);
1254 NtUserBuildPropList(
1260 /* apfnSimpleCall indices from Windows XP SP 2 */
1261 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1262 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1264 enum SimpleCallRoutines
1266 NOPARAM_ROUTINE_CREATEMENU
,
1267 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1268 #if (WIN32K_VERSION >= NTDDI_VISTA)
1269 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1270 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1271 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1272 NOPARAM_ROUTINE_DESTROY_CARET
,
1274 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1275 #if (WIN32K_VERSION < NTDDI_VISTA)
1276 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1277 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1278 NOPARAM_ROUTINE_DESTROY_CARET
,
1280 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1281 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1282 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1283 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1284 #if (WIN32K_VERSION >= NTDDI_VISTA)
1285 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1287 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1289 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1290 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1291 #if (WIN32K_VERSION >= NTDDI_VISTA)
1292 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1293 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1295 NOPARAM_ROUTINE_RELEASECAPTURE
,
1296 NOPARAM_ROUTINE_RESETDBLCLICK
,
1297 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1298 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1299 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1300 NOPARAM_ROUTINE_REMOTELOGOFF
,
1301 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1302 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1303 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1304 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1305 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1306 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1307 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1308 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1309 #if (WIN32K_VERSION >= NTDDI_VISTA)
1310 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1312 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1313 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1314 #if (WIN32K_VERSION < NTDDI_VISTA)
1315 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1317 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1318 #if (WIN32K_VERSION >= NTDDI_VISTA)
1319 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1321 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1322 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1323 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1324 #if (WIN32K_VERSION < NTDDI_VISTA)
1325 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1327 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1328 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1329 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1330 #if (WIN32K_VERSION < NTDDI_VISTA)
1331 ONEPARAM_ROUTINE_GETCURSORPOS
,
1333 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1334 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1335 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1336 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1337 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1338 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1339 #if (WIN32K_VERSION < NTDDI_VISTA)
1340 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1342 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1343 ONEPARAM_ROUTINE_LOADFONTS
,
1344 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1345 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1346 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1347 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1348 #if (WIN32K_VERSION < NTDDI_VISTA)
1349 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1351 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1352 ONEPARAM_ROUTINE_REGISTERLPK
,
1353 #if (WIN32K_VERSION >= NTDDI_VISTA)
1354 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1356 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1357 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1358 ONEPARAM_ROUTINE_RELEASEDC
,
1359 #if (WIN32K_VERSION >= NTDDI_VISTA)
1360 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1362 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1363 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1364 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1365 #if (WIN32K_VERSION < NTDDI_VISTA)
1366 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1368 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1369 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1370 #if (WIN32K_VERSION >= NTDDI_VISTA)
1371 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1373 ONEPARAM_ROUTINE_SHOWCURSOR
,
1374 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1375 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1376 X_ROUTINE_WOWMODULEUNLOAD
,
1377 #if (WIN32K_VERSION < NTDDI_VISTA)
1378 X_ROUTINE_REMOTENOTIFY
,
1380 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1381 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1382 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1383 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1384 HWND_ROUTINE_SETMSGBOX
,
1385 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1386 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1387 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1388 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1389 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1390 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1391 HWNDPARAM_ROUTINE_SETVISIBLE
,
1392 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1393 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1394 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1395 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1396 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1397 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1398 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1399 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1400 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1401 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1402 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1403 HWNDLOCK_ROUTINE_SETSYSMENU
,
1404 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1405 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1406 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1407 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1408 TWOPARAM_ROUTINE_REDRAWTITLE
,
1409 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1410 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1411 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1412 TWOPARAM_ROUTINE_VALIDATERGN
,
1413 #if (WIN32K_VERSION >= NTDDI_VISTA)
1414 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1415 TWOPARAM_ROUTINE_GETCURSORPOS
,
1417 TWOPARAM_ROUTINE_GETHDEVNAME
,
1418 TWOPARAM_ROUTINE_INITANSIOEM
,
1419 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1420 #if (WIN32K_VERSION >= NTDDI_VISTA)
1421 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1423 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1424 #if (WIN32K_VERSION >= NTDDI_VISTA)
1425 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1427 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1429 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1430 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1431 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1432 TWOPARAM_ROUTINE_SETCARETPOS
,
1433 TWOPARAM_ROUTINE_SETCURSORPOS
,
1434 #if (WIN32K_VERSION >= NTDDI_VISTA)
1435 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1437 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1438 TWOPARAM_ROUTINE_WOWCLEANUP
1461 NtUserCallHwndParam(
1468 NtUserCallHwndParamLock(
1475 NtUserCallMsgFilter(
1481 NtUserCallNextHookEx(
1507 NtUserChangeClipboardChain(
1513 NtUserChangeDisplaySettings(
1514 PUNICODE_STRING lpszDeviceName
,
1515 LPDEVMODEW lpDevMode
,
1522 NtUserCheckDesktopByThreadId(
1527 NtUserCheckWindowThreadDesktop(
1534 NtUserCheckImeHotKey(
1539 NtUserChildWindowFromPointEx(
1552 NtUserCloseClipboard(VOID
);
1561 NtUserCloseWindowStation(
1566 NtUserConsoleControl(
1573 NtUserConvertMemHandle(
1579 NtUserCopyAcceleratorTable(
1582 ULONG EntriesCount
);
1586 NtUserCountClipboardFormats(VOID
);
1590 NtUserCreateAcceleratorTable(
1592 ULONG EntriesCount
);
1604 NtUserCreateDesktop(
1605 POBJECT_ATTRIBUTES poa
,
1606 PUNICODE_STRING lpszDesktopDevice
,
1609 ACCESS_MASK dwDesiredAccess
);
1613 NtUserCreateInputContext(
1618 NtUserCreateLocalMemHandle(
1626 NtUserCreateWindowEx(
1628 PLARGE_STRING plstrClassName
,
1629 PLARGE_STRING plstrClsVersion
,
1630 PLARGE_STRING plstrWindowName
,
1638 HINSTANCE hInstance
,
1645 NtUserCreateWindowStation(
1646 POBJECT_ATTRIBUTES ObjectAttributes
,
1647 ACCESS_MASK dwDesiredAccess
,
1656 NtUserDdeGetQualityOfService(
1659 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1663 NtUserDdeInitialize(
1672 NtUserDdeSetQualityOfService(
1674 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1675 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1678 NtUserDeferWindowPos(
1681 HWND WndInsertAfter
,
1689 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1693 NtUserDestroyAcceleratorTable(
1698 NtUserDestroyCursor(
1704 NtUserDestroyInputContext(
1708 NtUserDestroyWindow(HWND Wnd
);
1712 NtUserDisableThreadIme(
1717 NtUserDispatchMessage(PMSG pMsg
);
1736 NtUserDrawAnimatedRects(
1752 NtUserDrawCaptionTemp(
1758 const PUNICODE_STRING str
,
1761 // Used with NtUserDrawIconEx, last parameter.
1762 typedef struct _DRAWICONEXDATA
1768 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1780 HBRUSH hbrFlickerFreeDraw
,
1787 NtUserEmptyClipboard(VOID
);
1791 NtUserEnableScrollBar(
1798 NtUserEndDeferWindowPosEx(
1803 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1807 NtUserEnumDisplayDevices (
1808 PUNICODE_STRING lpDevice
, /* device name */
1809 DWORD iDevNum
, /* display device */
1810 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1811 DWORD dwFlags
); /* reserved */
1815 NtUserEnumDisplayMonitors (
1818 MONITORENUMPROC lpfnEnum,
1820 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1823 NtUserEnumDisplayMonitors(
1824 OPTIONAL IN HDC hDC
,
1825 OPTIONAL IN LPCRECT pRect
,
1826 OPTIONAL OUT HMONITOR
*hMonitorList
,
1827 OPTIONAL OUT LPRECT monitorRectList
,
1828 OPTIONAL IN DWORD listSize
);
1833 NtUserEnumDisplaySettings(
1834 PUNICODE_STRING lpszDeviceName
,
1836 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1846 NtUserExcludeUpdateRgn(
1862 HWND hwndChildAfter
,
1863 PUNICODE_STRING ucClassName
,
1864 PUNICODE_STRING ucWindowName
,
1870 NtUserFlashWindowEx(
1871 IN PFLASHWINFO pfwi
);
1875 NtUserGetAltTabInfo(
1884 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1888 NtUserGetAppImeLevel(
1893 NtUserGetAsyncKeyState(
1900 PUNICODE_STRING pBuffer
);
1904 NtUserGetCaretBlinkTime(VOID
);
1912 NtUserGetClassInfo(HINSTANCE hInstance
,
1913 PUNICODE_STRING ClassName
,
1915 LPWSTR
*ppszMenuName
,
1920 NtUserGetClassName(HWND hWnd
,
1921 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1922 PUNICODE_STRING ClassName
);
1926 NtUserGetClipboardData(
1928 PGETCLIPBDATA pgcd
);
1932 NtUserGetClipboardFormatName(
1934 LPWSTR lpszFormatName
,
1939 NtUserGetClipboardOwner(VOID
);
1943 NtUserGetClipboardSequenceNumber(VOID
);
1947 NtUserGetClipboardViewer(VOID
);
1951 NtUserGetClipCursor(
1956 NtUserGetComboBoxInfo(
1958 PCOMBOBOXINFO pcbi
);
1962 NtUserGetControlBrush(
1969 NtUserGetControlColor(
1984 NtUserGetCursorFrameInfo(
1987 PDWORD rate_jiffies
,
1992 NtUserGetCursorInfo(
2009 NtUserGetDoubleClickTime(VOID
);
2013 NtUserGetForegroundWindow(VOID
);
2017 NtUserGetGuiResources(
2023 NtUserGetGUIThreadInfo(
2025 LPGUITHREADINFO lpgui
);
2027 _Success_(return!=FALSE
)
2031 _In_ HANDLE hCurIcon
,
2032 _Out_opt_ PICONINFO IconInfo
,
2033 _Inout_opt_ PUNICODE_STRING lpInstName
,
2034 _Inout_opt_ PUNICODE_STRING lpResName
,
2035 _Out_opt_ LPDWORD pbpp
,
2036 _In_ BOOL bInternal
);
2062 NtUserGetInternalWindowPos(
2069 NtUserGetKeyboardLayout(
2074 NtUserGetKeyboardLayoutList(
2080 NtUserGetKeyboardLayoutName(
2085 NtUserGetKeyboardState(
2090 NtUserGetKeyboardType(
2095 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
2104 NtUserGetLayeredWindowAttributes(
2112 NtUserGetListBoxInfo(
2116 NtUserGetMessage(PMSG pMsg
,
2123 NtUserGetMouseMovePointsEx(
2125 LPMOUSEMOVEPOINT lppt
,
2126 LPMOUSEMOVEPOINT lpptBuf
,
2132 NtUserGetObjectInformation(
2135 PVOID pvInformation
,
2137 PDWORD nLengthNeeded
);
2141 NtUserGetOpenClipboardWindow(VOID
);
2145 NtUserGetPriorityClipboardFormat(
2146 UINT
*paFormatPriorityList
,
2151 NtUserGetProcessWindowStation(VOID
);
2155 NtUserGetRawInputBuffer(
2162 NtUserGetRawInputData(
2163 HRAWINPUT hRawInput
,
2171 NtUserGetRawInputDeviceInfo(
2179 NtUserGetRawInputDeviceList(
2180 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2181 PUINT puiNumDevices
,
2186 NtUserGetRegisteredRawInputDevices(
2187 PRAWINPUTDEVICE pRawInputDevices
,
2188 PUINT puiNumDevices
,
2193 NtUserGetScrollBarInfo(
2196 PSCROLLBARINFO psbi
);
2200 NtUserGetThreadDesktop(
2205 enum ThreadStateRoutines
2207 THREADSTATE_GETTHREADINFO
,
2208 THREADSTATE_INSENDMESSAGE
,
2209 THREADSTATE_FOCUSWINDOW
,
2210 THREADSTATE_ACTIVEWINDOW
,
2211 THREADSTATE_CAPTUREWINDOW
,
2212 THREADSTATE_PROGMANWINDOW
,
2213 THREADSTATE_TASKMANWINDOW
,
2214 THREADSTATE_GETMESSAGETIME
,
2215 THREADSTATE_GETINPUTSTATE
,
2216 THREADSTATE_UPTIMELASTREAD
,
2217 THREADSTATE_FOREGROUNDTHREAD
,
2218 THREADSTATE_GETCURSOR
2223 NtUserGetThreadState(
2228 NtUserGetTitleBarInfo(
2233 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2249 NtUserGetWindowPlacement(
2251 WINDOWPLACEMENT
*lpwndpl
);
2256 HINSTANCE hInstance
,
2257 PUNICODE_STRING ClassName
);
2261 NtUserHardErrorControl(
2268 NtUserImpersonateDdeClientWindow(
2276 HANDLE hPowerRequestEvent
,
2277 HANDLE hMediaRequestEvent
);
2281 NtUserInitializeClientPfnArrays(
2282 PPFNCLIENT pfnClientA
,
2283 PPFNCLIENT pfnClientW
,
2284 PPFNCLIENTWORKER pfnClientWorker
,
2285 HINSTANCE hmodUser
);
2305 NtUserInternalGetWindowText(
2312 NtUserInvalidateRect(
2319 NtUserInvalidateRgn(
2326 NtUserIsClipboardFormatAvailable(
2339 NtUserLoadKeyboardLayoutEx(
2342 IN PUNICODE_STRING puszKeyboardName
,
2344 IN PUNICODE_STRING puszKLID
,
2350 NtUserLockWindowStation(
2351 HWINSTA hWindowStation
);
2355 NtUserLockWindowUpdate(
2360 NtUserLockWorkStation(VOID
);
2364 NtUserMapVirtualKeyEx( UINT keyCode
,
2369 typedef struct tagDOSENDMESSAGE
2375 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2384 ULONG_PTR ResultInfo
,
2385 DWORD dwType
, // FNID_XX types
2392 UINT cmd
, // Wine SW_ commands
2397 NtUserMNDragLeave(VOID
);
2407 NtUserModifyUserStartupInfoFlags(
2424 NtUserNotifyIMEStatus(
2431 NtUserNotifyProcessCreate(
2439 NtUserNotifyWinEvent(
2447 NtUserOpenClipboard(
2454 POBJECT_ATTRIBUTES ObjectAttributes
,
2456 ACCESS_MASK dwDesiredAccess
);
2460 NtUserOpenInputDesktop(
2463 ACCESS_MASK dwDesiredAccess
);
2467 NtUserOpenWindowStation(
2468 POBJECT_ATTRIBUTES ObjectAttributes
,
2469 ACCESS_MASK dwDesiredAccess
);
2487 NtUserPeekMessage( PMSG pMsg
,
2503 NtUserPostThreadMessage(
2518 NtUserProcessConnect(
2520 OUT PUSERCONNECT pUserConnect
,
2521 IN DWORD dwSize
); // sizeof(USERCONNECT)
2525 NtUserQueryInformationThread(
2534 NtUserQueryInputContext(
2540 NtUserQuerySendMessage(
2545 NtUserQueryUserCounters(
2552 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2553 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2554 #define QUERY_WINDOW_ACTIVE 0x02
2555 #define QUERY_WINDOW_FOCUS 0x03
2556 #define QUERY_WINDOW_ISHUNG 0x04
2557 #define QUERY_WINDOW_REAL_ID 0x05
2558 #define QUERY_WINDOW_FOREGROUND 0x06
2567 NtUserRealInternalGetMessage(
2577 NtUserRealChildWindowFromPoint(
2584 NtUserRealWaitMessageEx(
2593 CONST RECT
*lprcUpdate
,
2600 NtUserRegisterClassExWOW(
2602 PUNICODE_STRING pustrClassName
,
2603 PUNICODE_STRING pustrCNVersion
,
2604 PCLSMENUNAME pClassMenuName
,
2611 NtUserRegisterRawInputDevices(
2612 IN PCRAWINPUTDEVICE pRawInputDevices
,
2613 IN UINT uiNumDevices
,
2618 NtUserRegisterUserApiHook(
2619 PUNICODE_STRING m_dllname1
,
2620 PUNICODE_STRING m_funname1
,
2626 NtUserRegisterHotKey(HWND hWnd
,
2633 NtUserRegisterTasklist(
2637 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2641 NtUserRemoteConnect(
2648 NtUserRemoteRedrawRectangle(
2656 NtUserRemoteRedrawScreen(VOID
);
2660 NtUserRemoteStopScreenUpdates(VOID
);
2663 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2667 NtUserResolveDesktop(
2675 NtUserResolveDesktopForWOW(
2692 CONST RECT
*lprcScroll
,
2693 CONST RECT
*lprcClip
,
2698 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2699 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2709 NtUserSetActiveWindow(HWND Wnd
);
2713 NtUserSetAppImeLevel(
2718 NtUserSetCapture(HWND Wnd
);
2724 ULONG_PTR dwNewLong
,
2736 NtUserSetClipboardData(
2743 NtUserSetClipboardViewer(
2744 HWND hWndNewViewer
);
2748 NtUserSelectPalette(
2751 BOOL ForceBackground
2756 NtUserSetConsoleReserveKeys(
2767 NtUserSetCursorContents(
2769 PICONINFO IconInfo
);
2771 #ifdef NEW_CURSORICON
2774 NtUserSetCursorIconData(
2775 _In_ HCURSOR hCursor
,
2776 _In_ PUNICODE_STRING pustrModule
,
2777 _In_ PUNICODE_STRING puSrcName
,
2778 _In_ PCURSORDATA pCursorData
);
2780 typedef struct _tagFINDEXISTINGCURICONPARAM
2785 } FINDEXISTINGCURICONPARAM
;
2789 NtUserFindExistingCursorIcon(
2790 _In_ PUNICODE_STRING pustrModule
,
2791 _In_ PUNICODE_STRING pustrRsrc
,
2792 _In_ FINDEXISTINGCURICONPARAM
* param
);
2796 NtUserSetCursorIconData(
2806 NtUserFindExistingCursorIcon(
2840 NtUserSetImeOwnerWindow(
2846 NtUserSetInformationProcess(
2854 NtUserSetInformationThread(
2855 IN HANDLE ThreadHandle
,
2856 IN USERTHREADINFOCLASS ThreadInformationClass
,
2857 IN PVOID ThreadInformation
,
2858 IN ULONG ThreadInformationLength
2863 NtUserSetInternalWindowPos(
2871 NtUserSetKeyboardState(
2876 NtUserSetLayeredWindowAttributes(
2884 NtUserSetLogonNotifyWindow(
2889 NtUserSetObjectInformation(
2892 PVOID pvInformation
,
2899 HWND hWndNewParent
);
2903 NtUserSetProcessWindowStation(
2904 HWINSTA hWindowStation
);
2907 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2917 NtUserSetScrollInfo(
2925 NtUserSetShellWindowEx(
2927 HWND hwndShellListView
);
2933 IN CONST INT
*lpaElements
,
2934 IN CONST COLORREF
*lpaRgbValues
,
2939 NtUserSetSystemCursor(
2945 NtUserSetThreadDesktop(
2950 NtUserSetThreadState(
2956 NtUserSetSystemTimer
2961 TIMERPROC lpTimerFunc
2966 NtUserSetThreadLayoutHandles(
2977 TIMERPROC lpTimerFunc
2982 NtUserSetWindowFNID(
2988 NtUserSetWindowLong(
2996 NtUserSetWindowPlacement(
2998 WINDOWPLACEMENT
*lpwndpl
);
3001 NTAPI
NtUserSetWindowPos(
3003 HWND hWndInsertAfter
,
3020 NtUserSetWindowsHookAW(
3027 NtUserSetWindowsHookEx(
3029 PUNICODE_STRING ModuleName
,
3037 NtUserSetWindowStationUser(
3044 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
3048 NtUserSetWinEventHook(
3051 HMODULE hmodWinEventProc
,
3052 PUNICODE_STRING puString
,
3053 WINEVENTPROC lpfnWinEventProc
,
3070 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
3080 NtUserShowWindowAsync(
3086 NtUserSoundSentry(VOID
);
3090 NtUserSwitchDesktop(
3095 NtUserSystemParametersInfo(
3103 NtUserTestForInteractiveUser(
3119 NtUserTrackMouseEvent(
3120 LPTRACKMOUSEEVENT lpEventTrack
);
3124 NtUserTranslateAccelerator(
3131 NtUserTranslateMessage(
3137 NtUserUnhookWindowsHookEx(
3142 NtUserUnhookWinEvent(
3143 HWINEVENTHOOK hWinEventHook
);
3147 NtUserUnloadKeyboardLayout(
3152 NtUserUnlockWindowStation(
3153 HWINSTA hWindowStation
);
3157 NtUserUnregisterClass(
3158 PUNICODE_STRING ClassNameOrAtom
,
3159 HINSTANCE hInstance
,
3160 PCLSMENUNAME pClassMenuName
);
3164 NtUserUnregisterHotKey(HWND hWnd
,
3169 NtUserUnregisterUserApiHook(VOID
);
3173 NtUserUpdateInputContext(
3180 NtUserUpdateInstance(
3187 NtUserUpdateLayeredWindow(
3195 BLENDFUNCTION
*pblend
,
3201 NtUserUpdatePerUserSystemParameters(
3207 NtUserUserHandleGrantAccess(
3208 IN HANDLE hUserHandle
,
3214 NtUserValidateHandleSecure(
3222 CONST RECT
*lpRect
);
3226 NtUserValidateTimerCallback(
3240 NtUserWaitForInputIdle(
3242 IN DWORD dwMilliseconds
,
3243 IN BOOL Unknown2
); // Always FALSE
3247 NtUserWaitForMsgAndEvent(
3252 NtUserWaitMessage(VOID
);
3256 NtUserWin32PoolAllocationStats(
3266 NtUserWindowFromPhysicalPoint(
3271 NtUserWindowFromPoint(
3277 NtUserYieldTask(VOID
);
3279 /* lParam of DDE messages */
3280 typedef struct tagKMDDEEXECUTEDATA
3284 /* BYTE Data[DataSize] */
3285 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3287 typedef struct tagKMDDELPARAM
3291 } KMDDELPARAM
, *PKMDDELPARAM
;
3298 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3301 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3302 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3303 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3304 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3305 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3306 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3307 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3308 #define MSQ_STATE_CAPTURE 0x1
3309 #define MSQ_STATE_ACTIVE 0x2
3310 #define MSQ_STATE_FOCUS 0x3
3311 #define MSQ_STATE_MENUOWNER 0x4
3312 #define MSQ_STATE_MOVESIZE 0x5
3313 #define MSQ_STATE_CARET 0x6
3314 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3315 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3316 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3320 NtUserBuildMenuItemList(
3328 NtUserGetMenuDefaultItem(
3335 NtUserGetMonitorInfo(
3336 IN HMONITOR hMonitor
,
3337 OUT LPMONITORINFO pMonitorInfo
);
3339 /* Should be done in usermode */
3341 /* (other FocusedItem values give the position of the focused item) */
3342 #define NO_SELECTED_ITEM 0xffff
3344 typedef struct tagROSMENUINFO
3346 /* ----------- MENUINFO ----------- */
3352 DWORD dwContextHelpID
;
3353 ULONG_PTR dwMenuData
;
3354 /* ----------- Extra ----------- */
3355 HMENU Self
; /* Handle of this menu */
3356 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3357 UINT FocusedItem
; /* Currently focused item */
3358 UINT MenuItemCount
; /* Number of items in the menu */
3359 HWND Wnd
; /* Window containing the menu */
3360 WORD Width
; /* Width of the whole menu */
3361 WORD Height
; /* Height of the whole menu */
3362 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3363 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3364 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3365 } ROSMENUINFO
, *PROSMENUINFO
;
3375 typedef struct tagROSMENUITEMINFO
3377 /* ----------- MENUITEMINFOW ----------- */
3384 HBITMAP hbmpChecked
;
3385 HBITMAP hbmpUnchecked
;
3390 /* ----------- Extra ----------- */
3391 RECT Rect
; /* Item area (relative to menu window) */
3392 UINT dxTab
; /* X position of text after Tab */
3393 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3394 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3402 PROSMENUITEMINFO lpmii
,
3408 NtUserMonitorFromPoint(
3414 NtUserMonitorFromRect(
3420 NtUserMonitorFromWindow(
3424 typedef struct _SETSCROLLBARINFO
3428 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3429 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3433 NtUserSetScrollBarInfo(
3436 SETSCROLLBARINFO
*info
);
3440 #endif /* __WIN32K_NTUSER_H */