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
,
72 UserThreadEndShutdown
,
73 UserThreadUseActiveDesktop
,
75 UserThreadRestoreDesktop
,
77 } USERTHREADINFOCLASS
;
79 typedef struct _LARGE_UNICODE_STRING
82 ULONG MaximumLength
:31;
85 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
87 typedef struct _LARGE_STRING
90 ULONG MaximumLength
:31;
93 } LARGE_STRING
, *PLARGE_STRING
;
95 // Based on ANSI_STRING
97 typedef struct _LARGE_ANSI_STRING
100 ULONG MaximumLength
:31;
103 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
105 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
106 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
107 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
109 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
111 typedef struct _DESKTOPINFO
114 PVOID pvDesktopLimit
;
117 LIST_ENTRY aphkStart
[NB_HOOKS
];
123 PPROCESSINFO ppiShellProcess
;
130 UINT LastInputWasKbd
: 1;
134 WCHAR szDesktopName
[1];
135 } DESKTOPINFO
, *PDESKTOPINFO
;
137 #define CTI_THREADSYSLOCK 0x0001
138 #define CTI_INSENDMESSAGE 0x0002
140 typedef struct _CLIENTTHREADINFO
145 WORD fsWakeBitsJournal
;
147 ULONG tickLastMsgChecked
;
149 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
157 typedef struct _THROBJHEAD
161 } THROBJHEAD
, *PTHROBJHEAD
;
163 typedef struct _THRDESKHEAD
166 struct _DESKTOP
*rpdesk
;
168 } THRDESKHEAD
, *PTHRDESKHEAD
;
170 typedef struct _PROCDESKHEAD
174 struct _DESKTOP
*rpdesk
;
176 } PROCDESKHEAD
, *PPROCDESKHEAD
;
178 typedef struct _PROCMARKHEAD
183 } PROCMARKHEAD
, *PPROCMARKHEAD
;
185 #define UserHMGetHandle(obj) ((obj)->head.h)
187 /* Window Client Information structure */
190 #define WEF_SETBYWNDPTI 0x0001
192 typedef struct tagHOOK
195 struct tagHOOK
*phkNext
; /* This is for user space. */
196 int HookId
; /* Hook table index */
198 ULONG flags
; /* Some internal flags */
200 PTHREADINFO ptiHooked
;
201 struct _DESKTOP
*rpdesk
;
203 LIST_ENTRY Chain
; /* Hook chain entry */
204 HOOKPROC Proc
; /* Hook function */
205 BOOLEAN Ansi
; /* Is it an Ansi hook? */
206 UNICODE_STRING ModuleName
; /* Module name for global hooks */
209 typedef struct tagCLIPBOARDDATA
214 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
216 /* THREADINFO Flags */
217 #define TIF_INCLEANUP 0x00000001
218 #define TIF_16BIT 0x00000002
219 #define TIF_SYSTEMTHREAD 0x00000004
220 #define TIF_CSRSSTHREAD 0x00000008
221 #define TIF_TRACKRECTVISIBLE 0x00000010
222 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
223 #define TIF_DONTATTACHQUEUE 0x00000040
224 #define TIF_DONTJOURNALATTACH 0x00000080
225 #define TIF_WOW64 0x00000100
226 #define TIF_INACTIVATEAPPMSG 0x00000200
227 #define TIF_SPINNING 0x00000400
228 #define TIF_PALETTEAWARE 0x00000800
229 #define TIF_SHAREDWOW 0x00001000
230 #define TIF_FIRSTIDLE 0x00002000
231 #define TIF_WAITFORINPUTIDLE 0x00004000
232 #define TIF_MOVESIZETRACKING 0x00008000
233 #define TIF_VDMAPP 0x00010000
234 #define TIF_DOSEMULATOR 0x00020000
235 #define TIF_GLOBALHOOKER 0x00040000
236 #define TIF_DELAYEDEVENT 0x00080000
237 #define TIF_MSGPOSCHANGED 0x00100000
238 #define TIF_SHUTDOWNCOMPLETE 0x00200000
239 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
240 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
241 #define TIF_GUITHREADINITIALIZED 0x02000000
242 #define TIF_DISABLEIME 0x04000000
243 #define TIF_INGETTEXTLENGTH 0x08000000
244 #define TIF_ANSILENGTH 0x10000000
245 #define TIF_DISABLEHOOKS 0x20000000
247 typedef struct _CALLBACKWND
252 } CALLBACKWND
, *PCALLBACKWND
;
254 #define CI_TRANSACTION 0x00000001
255 #define CI_QUEUEMSG 0x00000002
256 #define CI_WOW 0x00000004
257 #define CI_INITTHREAD 0x00000008
258 #define CI_CURTHPRHOOK 0x00000010
259 #define CI_CLASSESREGISTERED 0x00000020
260 #define CI_IMMACTIVATE 0x00000040
262 typedef struct _CLIENTINFO
268 DWORD dwCompatFlags2
;
269 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
270 PDESKTOPINFO pDeskInfo
;
271 ULONG_PTR ulClientDelta
;
274 CALLBACKWND CallbackWnd
;
276 INT cInDDEMLCallback
;
277 PCLIENTTHREADINFO pClientThreadInfo
;
278 ULONG_PTR dwHookData
;
281 DWORD dwAsyncKeyCache
;
282 BYTE afAsyncKeyState
[8];
283 BYTE afAsyncKeyStateRecentDow
[8];
288 LPDWORD lpdwRegisteredClasses
;
289 ULONG Win32ClientInfo3
[26];
290 /* It's just a pointer reference not to be used w the structure in user space. */
292 } CLIENTINFO
, *PCLIENTINFO
;
294 /* Make sure it fits into the TEB */
295 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
297 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
299 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
300 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
301 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
303 /* Menu Item fType. */
304 #define MFT_RTOL 0x6000
306 typedef struct tagITEM
311 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
313 HANDLE hbmpUnchecked
;
314 USHORT
* lpstr
; /* Item text pointer. */
316 DWORD_PTR dwItemData
;
317 ULONG xItem
; /* Item position. left */
318 ULONG yItem
; /* " top */
319 ULONG cxItem
; /* Item Size Width */
320 ULONG cyItem
; /* " Height */
321 ULONG dxTab
; /* X position of text after Tab */
322 ULONG ulX
; /* underline.. start position */
323 ULONG ulWidth
; /* underline.. width */
324 HBITMAP hbmp
; /* bitmap */
325 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
326 INT cyBmp
; /* Height " */
329 typedef struct tagMENULIST
331 struct tagMENULIST
* pNext
;
332 struct tagMENU
* pMenu
;
333 } MENULIST
, *PMENULIST
;
335 /* Menu fFlags, upper byte is MNS_X style flags. */
336 #define MNF_POPUP 0x0001
337 #define MNF_UNDERLINE 0x0004
338 #define MNF_INACTIVE 0x0010
339 #define MNF_RTOL 0x0020
340 #define MNF_DESKTOPMN 0x0040
341 #define MNF_SYSDESKMN 0x0080
342 #define MNF_SYSSUBMENU 0x0100
344 typedef struct tagMENU
347 ULONG fFlags
; /* [Style flags | Menu flags] */
348 INT iItem
; /* nPos of selected item, if -1 not selected. */
349 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
350 UINT cItems
; /* Number of items in the menu */
351 ULONG cxMenu
; /* Width of the whole menu */
352 ULONG cyMenu
; /* Height of the whole menu */
353 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
354 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
355 PITEM rgItems
; /* Array of menu items */
356 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
357 DWORD dwContextHelpId
;
358 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
359 DWORD_PTR dwMenuData
; /* application defined value */
360 HBRUSH hbrBack
; /* brush for menu background */
361 INT iTop
; /* Current scroll position Top */
362 INT iMaxTop
; /* Current scroll position Max Top */
363 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
366 typedef struct _REGISTER_SYSCLASS
368 /* This is a reactos specific class used to initialize the
369 system window classes during user32 initialization */
378 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
380 typedef struct _CLSMENUNAME
382 LPSTR pszClientAnsiMenuName
;
383 LPWSTR pwszClientUnicodeMenuName
;
384 PUNICODE_STRING pusMenuName
;
385 } CLSMENUNAME
, *PCLSMENUNAME
;
387 typedef struct tagSBDATA
395 typedef struct tagSBINFO
402 typedef struct tagSBCALC
424 UserGetCPDA2U
= 0x01, // " Unicode "
425 UserGetCPDU2A
= 0X02, // " Ansi "
426 UserGetCPDClass
= 0X10,
427 UserGetCPDWindow
= 0X20,
428 UserGetCPDDialog
= 0X40,
429 UserGetCPDWndtoCls
= 0X80
432 typedef struct _CALLPROCDATA
435 struct _CALLPROCDATA
*spcpdNext
;
436 WNDPROC pfnClientPrevious
;
438 } CALLPROCDATA
, *PCALLPROCDATA
;
440 #define CSF_SERVERSIDEPROC 0x0001
441 #define CSF_ANSIPROC 0x0002
442 #define CSF_WOWDEFERDESTROY 0x0004
443 #define CSF_SYSTEMCLASS 0x0008
444 #define CSF_WOWCLASS 0x0010
445 #define CSF_WOWEXTRA 0x0020
446 #define CSF_CACHEDSMICON 0x0040
447 #define CSF_WIN40COMPAT 0x0080
451 struct _CLS
*pclsNext
;
452 RTL_ATOM atomClassName
;
453 ATOM atomNVClassName
;
455 struct _DESKTOP
*rpdeskParent
;
458 PSTR lpszClientAnsiMenuName
; // For client use
459 PWSTR lpszClientUnicodeMenuName
; // " " "
460 PCALLPROCDATA spcpdFirst
;
461 struct _CLS
*pclsBase
;
462 struct _CLS
*pclsClone
;
463 ULONG cWndReferenceCount
;
469 HANDLE hIcon
; /* FIXME - Use pointer! */
471 HANDLE hCursor
; /* FIXME - Use pointer! */
473 HBRUSH hbrBackground
;
474 PWSTR lpszMenuName
; // kernel use
475 PSTR lpszAnsiClassName
; // "
476 HANDLE hIconSm
; /* FIXME - Use pointer! */
479 //// ReactOS dosn't suppot cache icons.
480 HICON hIconSmIntern
; /* Internal small icon, derived from hIcon */
482 UINT Unicode
: 1; // !CSF_ANSIPROC
483 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
484 UINT MenuNameIsString
: 1;
489 typedef struct _SBINFOEX
491 SCROLLBARINFO ScrollBarInfo
;
492 SCROLLINFO ScrollInfo
;
493 } SBINFOEX
, *PSBINFOEX
;
495 // State Flags !Not Implemented!
496 #define WNDS_HASMENU 0X00000001
497 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
498 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
499 #define WNDS_HASCAPTION 0X00000008
500 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
501 #define WNDS_MSGBOX 0X00000020
502 #define WNDS_ACTIVEFRAME 0X00000040
503 #define WNDS_HASSPB 0X00000080
504 #define WNDS_NONCPAINT 0X00000100
505 #define WNDS_SENDERASEBACKGROUND 0X00000200
506 #define WNDS_ERASEBACKGROUND 0X00000400
507 #define WNDS_SENDNCPAINT 0X00000800
508 #define WNDS_INTERNALPAINT 0X00001000
509 #define WNDS_UPDATEDIRTY 0X00002000
510 #define WNDS_HIDDENPOPUP 0X00004000
511 #define WNDS_FORCEMENUDRAW 0X00008000
512 #define WNDS_DIALOGWINDOW 0X00010000
513 #define WNDS_HASCREATESTRUCTNAME 0X00020000
514 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
515 #define WNDS_ANSIWINDOWPROC 0x00080000
516 #define WNDS_BEINGACTIVATED 0x00100000
517 #define WNDS_HASPALETTE 0x00200000
518 #define WNDS_PAINTNOTPROCESSED 0x00400000
519 #define WNDS_SYNCPAINTPENDING 0x00800000
520 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
521 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
522 #define WNDS_TOGGLETOPMOST 0x04000000
523 #define WNDS_REDRAWIFHUNG 0x08000000
524 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
525 #define WNDS_ANSICREATOR 0x20000000
526 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
527 #define WNDS_DESTROYED 0x80000000
529 #define WNDSACTIVEFRAME 0x00000006
531 // State2 Flags !Not Implemented!
532 #define WNDS2_WMPAINTSENT 0X00000001
533 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
534 #define WNDS2_STARTPAINT 0X00000004
535 #define WNDS2_OLDUI 0X00000008
536 #define WNDS2_HASCLIENTEDGE 0X00000010
537 #define WNDS2_BOTTOMMOST 0X00000020
538 #define WNDS2_FULLSCREEN 0X00000040
539 #define WNDS2_INDESTROY 0X00000080
540 #define WNDS2_WIN31COMPAT 0X00000100
541 #define WNDS2_WIN40COMPAT 0X00000200
542 #define WNDS2_WIN50COMPAT 0X00000400
543 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
544 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
545 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
546 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
547 #define WNDS2_HELPBUTTONDOWN 0X00008000
548 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
549 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
550 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
551 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
552 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
553 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
554 #define WNDS2_FORCENCPAINT 0X00400000
555 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
556 #define WNDS2_FULLSCREENMODE 0X01000000
557 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
558 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
559 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
560 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
561 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
564 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
565 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
566 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
567 #define WS_EX2_LINKED 0X00000008
568 #define WS_EX2_LAYEREDFORDWM 0X00000010
569 #define WS_EX2_LAYEREDLIMBO 0X00000020
570 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
571 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
572 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
573 #define WS_EX2_HASOVERLAY 0X00000200
574 #define WS_EX2_CONSOLEWINDOW 0X00000400
575 #define WS_EX2_CHILDNOACTIVATE 0X00000800
577 #define WPF_MININIT 0x0008
578 #define WPF_MAXINIT 0x0010
585 /* Extended style. */
589 /* Handle of the module that created the window. */
592 struct _WND
*spwndNext
;
593 struct _WND
*spwndPrev
;
594 struct _WND
*spwndParent
;
595 struct _WND
*spwndChild
;
596 struct _WND
*spwndOwner
;
600 /* Pointer to the window class. */
603 /* Property list head.*/
604 LIST_ENTRY PropListHead
;
608 /* system menu handle. */
611 /* Window menu handle or window id */
612 UINT IDMenu
; // Use spmenu
617 LARGE_UNICODE_STRING strName
;
618 /* Size of the extra data associated with the window. */
620 struct _WND
*spwndLastActive
;
621 //HIMC hImc; // Input context associated with this window.
624 //PD3DMATRIX pTransForm;
625 struct _WND
*spwndClipboardListener
;
634 UINT flags
; // WPF_ flags.
637 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
638 UINT InternalPosInitialized
: 1;
639 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
640 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
643 PSBINFOEX pSBInfoex
; // convert to PSBINFO
644 /* Entry in the list of thread windows. */
645 LIST_ENTRY ThreadListEntry
;
648 #define PWND_BOTTOM ((PWND)1)
650 typedef struct _SBWND
658 typedef struct _PFNCLIENT
660 WNDPROC pfnScrollBarWndProc
;
661 WNDPROC pfnTitleWndProc
;
662 WNDPROC pfnMenuWndProc
;
663 WNDPROC pfnDesktopWndProc
;
664 WNDPROC pfnDefWindowProc
;
665 WNDPROC pfnMessageWindowProc
;
666 WNDPROC pfnSwitchWindowProc
;
667 WNDPROC pfnButtonWndProc
;
668 WNDPROC pfnComboBoxWndProc
;
669 WNDPROC pfnComboListBoxProc
;
670 WNDPROC pfnDialogWndProc
;
671 WNDPROC pfnEditWndProc
;
672 WNDPROC pfnListBoxWndProc
;
673 WNDPROC pfnMDIClientWndProc
;
674 WNDPROC pfnStaticWndProc
;
675 WNDPROC pfnImeWndProc
;
676 WNDPROC pfnGhostWndProc
;
677 WNDPROC pfnHkINLPCWPSTRUCT
;
678 WNDPROC pfnHkINLPCWPRETSTRUCT
;
679 WNDPROC pfnDispatchHook
;
680 WNDPROC pfnDispatchDefWindowProc
;
681 WNDPROC pfnDispatchMessage
;
682 WNDPROC pfnMDIActivateDlgProc
;
683 } PFNCLIENT
, *PPFNCLIENT
;
686 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
687 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
690 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
692 typedef struct _PFNCLIENTWORKER
694 WNDPROC_EX pfnButtonWndProc
;
695 WNDPROC_EX pfnComboBoxWndProc
;
696 WNDPROC_EX pfnComboListBoxProc
;
697 WNDPROC_EX pfnDialogWndProc
;
698 WNDPROC_EX pfnEditWndProc
;
699 WNDPROC_EX pfnListBoxWndProc
;
700 WNDPROC_EX pfnMDIClientWndProc
;
701 WNDPROC_EX pfnStaticWndProc
;
702 WNDPROC_EX pfnImeWndProc
;
703 WNDPROC_EX pfnGhostWndProc
;
704 WNDPROC_EX pfnCtfHookProc
;
705 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
707 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
709 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
710 #define FNID_FIRST 0x029A
711 #define FNID_SCROLLBAR 0x029A
712 #define FNID_ICONTITLE 0x029B
713 #define FNID_MENU 0x029C
714 #define FNID_DESKTOP 0x029D
715 #define FNID_DEFWINDOWPROC 0x029E
716 #define FNID_MESSAGEWND 0x029F
717 #define FNID_SWITCH 0x02A0
718 #define FNID_BUTTON 0x02A1
719 #define FNID_COMBOBOX 0x02A2
720 #define FNID_COMBOLBOX 0x02A3
721 #define FNID_DIALOG 0x02A4
722 #define FNID_EDIT 0x02A5
723 #define FNID_LISTBOX 0x02A6
724 #define FNID_MDICLIENT 0x02A7
725 #define FNID_STATIC 0x02A8
726 #define FNID_IME 0x02A9
727 #define FNID_GHOST 0x02AA
728 #define FNID_CALLWNDPROC 0x02AB
729 #define FNID_CALLWNDPROCRET 0x02AC
730 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
731 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
732 #define FNID_MB_DLGPROC 0x02AF
733 #define FNID_MDIACTIVATEDLGPROC 0x02B0
734 #define FNID_SENDMESSAGE 0x02B1
735 #define FNID_SENDMESSAGEFF 0x02B2
736 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
737 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
738 #define FNID_SENDMESSAGECALLPROC 0x02B4
739 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
740 #define FNID_TOOLTIPS 0x02B6
741 #define FNID_SENDNOTIFYMESSAGE 0x02B7
742 #define FNID_SENDMESSAGECALLBACK 0x02B8
743 #define FNID_LAST 0x02B9
745 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
746 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
748 #define FNID_DDEML 0x2000 // Registers DDEML
749 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
750 // Seen during WM_CREATE on error exit too.
751 #define FNID_FREED 0x8000 // Window being Freed...
753 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
755 #define GETPFNCLIENTA(fnid)\
756 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
757 #define GETPFNCLIENTW(fnid)\
758 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
760 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
762 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
763 #define ICLS_BUTTON 0
765 #define ICLS_STATIC 2
766 #define ICLS_LISTBOX 3
767 #define ICLS_SCROLLBAR 4
768 #define ICLS_COMBOBOX 5
769 #define ICLS_MDICLIENT 6
770 #define ICLS_COMBOLBOX 7
771 #define ICLS_DDEMLEVENT 8
772 #define ICLS_DDEMLMOTHER 9
773 #define ICLS_DDEML16BIT 10
774 #define ICLS_DDEMLCLIENTA 11
775 #define ICLS_DDEMLCLIENTW 12
776 #define ICLS_DDEMLSERVERA 13
777 #define ICLS_DDEMLSERVERW 14
779 #define ICLS_GHOST 16
780 #define ICLS_DESKTOP 17
781 #define ICLS_DIALOG 18
783 #define ICLS_SWITCH 20
784 #define ICLS_ICONTITLE 21
785 #define ICLS_TOOLTIPS 22
786 #if (_WIN32_WINNT <= 0x0501)
787 #define ICLS_UNKNOWN 22
788 #define ICLS_NOTUSED 23
790 #define ICLS_SYSSHADOW 23
791 #define ICLS_HWNDMESSAGE 24
792 #define ICLS_NOTUSED 25
796 #define COLOR_LAST COLOR_MENUBAR
797 #define MAX_MB_STRINGS 11
799 #define SRVINFO_APIHOOK 0x0010
800 #define SRVINFO_METRICS 0x0020
801 #define SRVINFO_KBDPREF 0x0080
803 #define NUM_SYSCOLORS 31
805 typedef struct tagOEMBITMAPINFO
811 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
813 typedef struct tagMBSTRING
818 } MBSTRING
, *PMBSTRING
;
820 typedef struct tagDPISERVERINFO
822 INT gclBorder
; /* 000 */
823 HFONT hCaptionFont
; /* 004 */
824 HFONT hMsgFont
; /* 008 */
825 INT cxMsgFontChar
; /* 00C */
826 INT cyMsgFontChar
; /* 010 */
827 UINT wMaxBtnSize
; /* 014 */
828 } DPISERVERINFO
, *PDPISERVERINFO
;
831 #define PUSIF_PALETTEDISPLAY 0x01
832 #define PUSIF_SNAPTO 0x02
833 #define PUSIF_COMBOBOXANIMATION 0x04
834 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
835 #define PUSIF_KEYBOARDCUES 0x20
837 typedef struct _PERUSERSERVERINFO
839 INT aiSysMet
[SM_CMETRICS
];
840 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
841 COLORREF argbSystem
[NUM_SYSCOLORS
];
842 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
846 DWORD dwLastRITEventTickCount
;
851 UINT ucWheelScrollLines
;
852 UINT ucWheelScrollChars
;
853 INT wMaxLeftOverlapChars
;
854 INT wMaxRightOverlapChars
;
857 TEXTMETRICW tmSysFont
;
858 DPISERVERINFO dpiSystem
;
859 HICON hIconSmWindows
;
862 DWORD dwAsyncKeyCache
;
864 OEMBITMAPINFO oembmi
[93];
873 DWORD dwLastSystemRITEventTickCountUpdate
;
874 ULONG adwDBGTAGFlags
[35];
877 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
879 typedef struct tagSERVERINFO
882 ULONG_PTR cHandleEntries
;
883 PFN_FNID mpFnidPfn
[FNID_NUM
];
884 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
885 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
886 PFNCLIENT apfnClientA
;
887 PFNCLIENT apfnClientW
;
888 PFNCLIENTWORKER apfnClientWorker
;
890 ATOM atomSysClass
[ICLS_NOTUSED
+1];
891 DWORD dwDefaultHeapBase
;
892 DWORD dwDefaultHeapSize
;
894 MBSTRING MBStrings
[MAX_MB_STRINGS
];
897 ATOM atomContextHelpIdProp
;
898 ATOM atomFrostedWindowProp
;
899 CHAR acOemToAnsi
[256];
900 CHAR acAnsiToOem
[256];
901 DWORD dwInstalledEventHooks
;
903 } SERVERINFO
, *PSERVERINFO
;
906 // Server event activity bits.
907 #define SRV_EVENT_MENU 0x0001
908 #define SRV_EVENT_END_APPLICATION 0x0002
909 #define SRV_EVENT_RUNNING 0x0004
910 #define SRV_EVENT_NAMECHANGE 0x0008
911 #define SRV_EVENT_VALUECHANGE 0x0010
912 #define SRV_EVENT_STATECHANGE 0x0020
913 #define SRV_EVENT_LOCATIONCHANGE 0x0040
914 #define SRV_EVENT_CREATE 0x8000
916 typedef struct _PROPLISTITEM
920 } PROPLISTITEM
, *PPROPLISTITEM
;
922 typedef struct _PROPERTY
924 LIST_ENTRY PropListEntry
;
927 } PROPERTY
, *PPROPERTY
;
929 typedef struct _BROADCASTPARM
936 } BROADCASTPARM
, *PBROADCASTPARM
;
938 PTHREADINFO
GetW32ThreadInfo(VOID
);
939 PPROCESSINFO
GetW32ProcessInfo(VOID
);
941 typedef struct _WNDMSG
947 typedef struct _SHAREDINFO
949 PSERVERINFO psi
; // global Server Info
950 PVOID aheList
; // Handle Entry List
951 PVOID pDispInfo
; // global PDISPLAYINFO pointer
952 ULONG_PTR ulSharedDelta
; // Heap delta
953 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
954 WNDMSG DefWindowMsgs
;
955 WNDMSG DefWindowSpecMsgs
;
956 } SHAREDINFO
, *PSHAREDINFO
;
958 typedef struct _USERCONNECT
961 ULONG ulCurrentVersion
;
962 DWORD dwDispatchCount
;
964 } USERCONNECT
, *PUSERCONNECT
;
966 typedef struct tagGETCLIPBDATA
975 } GETCLIPBDATA
, *PGETCLIPBDATA
;
977 typedef struct tagSETCLIPBDATA
980 BOOL fIncSerialNumber
;
981 } SETCLIPBDATA
, *PSETCLIPBDATA
;
983 // Used with NtUserSetCursorIconData, last parameter.
984 typedef struct tagCURSORDATA
997 HBITMAP hbmUserAlpha
; // Could be in W7U, not in W2k
1003 struct tagCURSORDATA
* aspcur
;
1007 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1010 #define CURSORF_FROMRESOURCE 0x0001
1011 #define CURSORF_GLOBAL 0x0002
1012 #define CURSORF_LRSHARED 0x0004
1013 #define CURSORF_ACON 0x0008
1014 #define CURSORF_WOWCLEANUP 0x0010
1015 #define CURSORF_ACONFRAME 0x0040
1016 #define CURSORF_SECRET 0x0080
1017 #define CURSORF_LINKED 0x0100
1018 #define CURSORF_CURRENT 0x0200
1022 NtUserAssociateInputContext(
1029 NtUserBuildHimcList(
1046 NtUserCheckMenuItem(
1053 NtUserCtxDisplayIOCtl(
1072 NtUserDrawMenuBarTemp(
1081 NtUserEnableMenuItem(
1088 NtUserEndMenu(VOID
);
1092 NtUserGetMenuBarInfo(
1106 NtUserGetMenuItemRect(
1114 NtUserGetSystemMenu(
1120 NtUserHiliteMenuItem(
1128 NtUserMenuItemFromPoint(
1150 NtUserSetMenuContextHelpId(
1152 DWORD dwContextHelpId
);
1156 NtUserSetMenuDefaultItem(
1163 NtUserSetMenuFlagRtoL(
1168 NtUserSetSystemMenu(
1174 NtUserThunkedMenuInfo(
1180 NtUserThunkedMenuItemInfo(
1185 LPMENUITEMINFOW lpmii
,
1186 PUNICODE_STRING lpszCaption
);
1190 NtUserTrackPopupMenuEx(
1200 NtUserActivateKeyboardLayout(
1206 NtUserAlterWindowStyle(
1213 NtUserAttachThreadInput(
1215 IN DWORD idAttachTo
,
1219 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1240 NtUserBuildHwndList(
1250 NtUserBuildNameList(
1254 PULONG pRequiredSize
);
1258 NtUserBuildPropList(
1264 /* apfnSimpleCall indices from Windows XP SP 2 */
1265 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1266 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1268 enum SimpleCallRoutines
1270 NOPARAM_ROUTINE_CREATEMENU
,
1271 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1272 #if (WIN32K_VERSION >= NTDDI_VISTA)
1273 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1274 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1275 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1276 NOPARAM_ROUTINE_DESTROY_CARET
,
1278 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1279 #if (WIN32K_VERSION < NTDDI_VISTA)
1280 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1281 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1282 NOPARAM_ROUTINE_DESTROY_CARET
,
1284 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1285 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1286 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1287 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1288 #if (WIN32K_VERSION >= NTDDI_VISTA)
1289 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1291 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1293 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1294 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1295 #if (WIN32K_VERSION >= NTDDI_VISTA)
1296 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1297 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1299 NOPARAM_ROUTINE_RELEASECAPTURE
,
1300 NOPARAM_ROUTINE_RESETDBLCLICK
,
1301 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1302 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1303 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1304 NOPARAM_ROUTINE_REMOTELOGOFF
,
1305 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1306 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1307 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1308 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1309 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1310 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1311 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1312 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1313 #if (WIN32K_VERSION >= NTDDI_VISTA)
1314 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1316 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1317 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1318 #if (WIN32K_VERSION < NTDDI_VISTA)
1319 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1321 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1322 #if (WIN32K_VERSION >= NTDDI_VISTA)
1323 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1325 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1326 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1327 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1328 #if (WIN32K_VERSION < NTDDI_VISTA)
1329 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1331 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1332 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1333 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1334 #if (WIN32K_VERSION < NTDDI_VISTA)
1335 ONEPARAM_ROUTINE_GETCURSORPOS
,
1337 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1338 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1339 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1340 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1341 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1342 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1343 #if (WIN32K_VERSION < NTDDI_VISTA)
1344 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1346 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1347 ONEPARAM_ROUTINE_LOADFONTS
,
1348 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1349 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1350 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1351 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1352 #if (WIN32K_VERSION < NTDDI_VISTA)
1353 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1355 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1356 ONEPARAM_ROUTINE_REGISTERLPK
,
1357 #if (WIN32K_VERSION >= NTDDI_VISTA)
1358 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1360 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1361 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1362 ONEPARAM_ROUTINE_RELEASEDC
,
1363 #if (WIN32K_VERSION >= NTDDI_VISTA)
1364 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1366 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1367 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1368 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1369 #if (WIN32K_VERSION < NTDDI_VISTA)
1370 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1372 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1373 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1374 #if (WIN32K_VERSION >= NTDDI_VISTA)
1375 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1377 ONEPARAM_ROUTINE_SHOWCURSOR
,
1378 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1379 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1380 X_ROUTINE_WOWMODULEUNLOAD
,
1381 #if (WIN32K_VERSION < NTDDI_VISTA)
1382 X_ROUTINE_REMOTENOTIFY
,
1384 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1385 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1386 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1387 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1388 HWND_ROUTINE_SETMSGBOX
,
1389 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1390 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1391 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1392 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1393 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1394 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1395 HWNDPARAM_ROUTINE_SETVISIBLE
,
1396 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1397 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1398 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1399 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1400 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1401 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1402 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1403 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1404 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1405 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1406 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1407 HWNDLOCK_ROUTINE_SETSYSMENU
,
1408 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1409 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1410 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1411 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1412 TWOPARAM_ROUTINE_REDRAWTITLE
,
1413 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1414 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1415 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1416 TWOPARAM_ROUTINE_VALIDATERGN
,
1417 #if (WIN32K_VERSION >= NTDDI_VISTA)
1418 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1419 TWOPARAM_ROUTINE_GETCURSORPOS
,
1421 TWOPARAM_ROUTINE_GETHDEVNAME
,
1422 TWOPARAM_ROUTINE_INITANSIOEM
,
1423 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1424 #if (WIN32K_VERSION >= NTDDI_VISTA)
1425 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1427 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1428 #if (WIN32K_VERSION >= NTDDI_VISTA)
1429 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1431 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1433 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1434 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1435 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1436 TWOPARAM_ROUTINE_SETCARETPOS
,
1437 TWOPARAM_ROUTINE_SETCURSORPOS
,
1438 #if (WIN32K_VERSION >= NTDDI_VISTA)
1439 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1441 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1442 TWOPARAM_ROUTINE_WOWCLEANUP
1465 NtUserCallHwndParam(
1472 NtUserCallHwndParamLock(
1479 NtUserCallMsgFilter(
1485 NtUserCallNextHookEx(
1511 NtUserChangeClipboardChain(
1517 NtUserChangeDisplaySettings(
1518 PUNICODE_STRING lpszDeviceName
,
1519 LPDEVMODEW lpDevMode
,
1526 NtUserCheckDesktopByThreadId(
1531 NtUserCheckWindowThreadDesktop(
1538 NtUserCheckImeHotKey(
1543 NtUserChildWindowFromPointEx(
1556 NtUserCloseClipboard(VOID
);
1565 NtUserCloseWindowStation(
1568 /* Console commands for NtUserConsoleControl */
1569 typedef enum _CONSOLECONTROL
1571 GuiConsoleWndClassAtom
,
1572 ConsoleAcquireDisplayOwnership
,
1573 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1577 NtUserConsoleControl(
1578 IN CONSOLECONTROL ConsoleCtrl
,
1579 IN PVOID ConsoleCtrlInfo
,
1580 IN DWORD ConsoleCtrlInfoLength
);
1584 NtUserConvertMemHandle(
1590 NtUserCopyAcceleratorTable(
1593 ULONG EntriesCount
);
1597 NtUserCountClipboardFormats(VOID
);
1601 NtUserCreateAcceleratorTable(
1603 ULONG EntriesCount
);
1615 NtUserCreateDesktop(
1616 POBJECT_ATTRIBUTES poa
,
1617 PUNICODE_STRING lpszDesktopDevice
,
1620 ACCESS_MASK dwDesiredAccess
);
1624 NtUserCreateInputContext(
1629 NtUserCreateLocalMemHandle(
1637 NtUserCreateWindowEx(
1639 PLARGE_STRING plstrClassName
,
1640 PLARGE_STRING plstrClsVersion
,
1641 PLARGE_STRING plstrWindowName
,
1649 HINSTANCE hInstance
,
1656 NtUserCreateWindowStation(
1657 POBJECT_ATTRIBUTES ObjectAttributes
,
1658 ACCESS_MASK dwDesiredAccess
,
1667 NtUserDdeGetQualityOfService(
1670 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1674 NtUserDdeInitialize(
1683 NtUserDdeSetQualityOfService(
1685 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1686 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1689 NtUserDeferWindowPos(
1692 HWND WndInsertAfter
,
1700 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1704 NtUserDestroyAcceleratorTable(
1709 NtUserDestroyCursor(
1715 NtUserDestroyInputContext(
1719 NtUserDestroyWindow(HWND Wnd
);
1723 NtUserDisableThreadIme(
1728 NtUserDispatchMessage(PMSG pMsg
);
1747 NtUserDrawAnimatedRects(
1763 NtUserDrawCaptionTemp(
1769 const PUNICODE_STRING str
,
1772 // Used with NtUserDrawIconEx, last parameter.
1773 typedef struct _DRAWICONEXDATA
1779 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1791 HBRUSH hbrFlickerFreeDraw
,
1798 NtUserEmptyClipboard(VOID
);
1802 NtUserEnableScrollBar(
1809 NtUserEndDeferWindowPosEx(
1814 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1818 NtUserEnumDisplayDevices (
1819 PUNICODE_STRING lpDevice
, /* device name */
1820 DWORD iDevNum
, /* display device */
1821 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1822 DWORD dwFlags
); /* reserved */
1826 NtUserEnumDisplayMonitors (
1829 MONITORENUMPROC lpfnEnum,
1831 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1834 NtUserEnumDisplayMonitors(
1835 OPTIONAL IN HDC hDC
,
1836 OPTIONAL IN LPCRECT pRect
,
1837 OPTIONAL OUT HMONITOR
*hMonitorList
,
1838 OPTIONAL OUT LPRECT monitorRectList
,
1839 OPTIONAL IN DWORD listSize
);
1844 NtUserEnumDisplaySettings(
1845 PUNICODE_STRING lpszDeviceName
,
1847 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1857 NtUserExcludeUpdateRgn(
1873 HWND hwndChildAfter
,
1874 PUNICODE_STRING ucClassName
,
1875 PUNICODE_STRING ucWindowName
,
1881 NtUserFlashWindowEx(
1882 IN PFLASHWINFO pfwi
);
1886 NtUserGetAltTabInfo(
1895 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1899 NtUserGetAppImeLevel(
1904 NtUserGetAsyncKeyState(
1907 _Success_(return!=0)
1908 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return*2+2))
1913 _Inout_ PUNICODE_STRING pustrName
);
1917 NtUserGetCaretBlinkTime(VOID
);
1925 NtUserGetClassInfo(HINSTANCE hInstance
,
1926 PUNICODE_STRING ClassName
,
1928 LPWSTR
*ppszMenuName
,
1933 NtUserGetClassName(HWND hWnd
,
1934 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1935 PUNICODE_STRING ClassName
);
1939 NtUserGetClipboardData(
1941 PGETCLIPBDATA pgcd
);
1945 NtUserGetClipboardFormatName(
1947 LPWSTR lpszFormatName
,
1952 NtUserGetClipboardOwner(VOID
);
1956 NtUserGetClipboardSequenceNumber(VOID
);
1960 NtUserGetClipboardViewer(VOID
);
1964 NtUserGetClipCursor(
1969 NtUserGetComboBoxInfo(
1971 PCOMBOBOXINFO pcbi
);
1975 NtUserGetControlBrush(
1982 NtUserGetControlColor(
1997 NtUserGetCursorFrameInfo(
2000 PDWORD rate_jiffies
,
2005 NtUserGetCursorInfo(
2022 NtUserGetDoubleClickTime(VOID
);
2026 NtUserGetForegroundWindow(VOID
);
2030 NtUserGetGuiResources(
2036 NtUserGetGUIThreadInfo(
2038 LPGUITHREADINFO lpgui
);
2040 _Success_(return!=FALSE
)
2044 _In_ HANDLE hCurIcon
,
2045 _Out_opt_ PICONINFO IconInfo
,
2046 _Inout_opt_ PUNICODE_STRING lpInstName
,
2047 _Inout_opt_ PUNICODE_STRING lpResName
,
2048 _Out_opt_ LPDWORD pbpp
,
2049 _In_ BOOL bInternal
);
2075 NtUserGetInternalWindowPos(
2082 NtUserGetKeyboardLayout(
2087 NtUserGetKeyboardLayoutList(
2093 NtUserGetKeyboardLayoutName(
2098 NtUserGetKeyboardState(
2103 NtUserGetKeyboardType(
2108 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
2117 NtUserGetLayeredWindowAttributes(
2125 NtUserGetListBoxInfo(
2129 NtUserGetMessage(PMSG pMsg
,
2136 NtUserGetMouseMovePointsEx(
2138 LPMOUSEMOVEPOINT lppt
,
2139 LPMOUSEMOVEPOINT lpptBuf
,
2145 NtUserGetObjectInformation(
2148 PVOID pvInformation
,
2150 PDWORD nLengthNeeded
);
2154 NtUserGetOpenClipboardWindow(VOID
);
2158 NtUserGetPriorityClipboardFormat(
2159 UINT
*paFormatPriorityList
,
2164 NtUserGetProcessWindowStation(VOID
);
2168 NtUserGetRawInputBuffer(
2175 NtUserGetRawInputData(
2176 HRAWINPUT hRawInput
,
2184 NtUserGetRawInputDeviceInfo(
2192 NtUserGetRawInputDeviceList(
2193 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2194 PUINT puiNumDevices
,
2199 NtUserGetRegisteredRawInputDevices(
2200 PRAWINPUTDEVICE pRawInputDevices
,
2201 PUINT puiNumDevices
,
2206 NtUserGetScrollBarInfo(
2209 PSCROLLBARINFO psbi
);
2213 NtUserGetThreadDesktop(
2218 enum ThreadStateRoutines
2220 THREADSTATE_GETTHREADINFO
,
2221 THREADSTATE_INSENDMESSAGE
,
2222 THREADSTATE_FOCUSWINDOW
,
2223 THREADSTATE_ACTIVEWINDOW
,
2224 THREADSTATE_CAPTUREWINDOW
,
2225 THREADSTATE_PROGMANWINDOW
,
2226 THREADSTATE_TASKMANWINDOW
,
2227 THREADSTATE_GETMESSAGETIME
,
2228 THREADSTATE_GETINPUTSTATE
,
2229 THREADSTATE_UPTIMELASTREAD
,
2230 THREADSTATE_FOREGROUNDTHREAD
,
2231 THREADSTATE_GETCURSOR
2236 NtUserGetThreadState(
2241 NtUserGetTitleBarInfo(
2246 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2262 NtUserGetWindowPlacement(
2264 WINDOWPLACEMENT
*lpwndpl
);
2269 HINSTANCE hInstance
,
2270 PUNICODE_STRING ClassName
);
2274 NtUserHardErrorControl(
2281 NtUserImpersonateDdeClientWindow(
2289 HANDLE hPowerRequestEvent
,
2290 HANDLE hMediaRequestEvent
);
2294 NtUserInitializeClientPfnArrays(
2295 PPFNCLIENT pfnClientA
,
2296 PPFNCLIENT pfnClientW
,
2297 PPFNCLIENTWORKER pfnClientWorker
,
2298 HINSTANCE hmodUser
);
2318 NtUserInternalGetWindowText(
2325 NtUserInvalidateRect(
2332 NtUserInvalidateRgn(
2339 NtUserIsClipboardFormatAvailable(
2352 NtUserLoadKeyboardLayoutEx(
2355 IN PUNICODE_STRING puszKeyboardName
,
2357 IN PUNICODE_STRING puszKLID
,
2363 NtUserLockWindowStation(
2364 HWINSTA hWindowStation
);
2368 NtUserLockWindowUpdate(
2373 NtUserLockWorkStation(VOID
);
2377 NtUserMapVirtualKeyEx( UINT keyCode
,
2382 typedef struct tagDOSENDMESSAGE
2388 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2397 ULONG_PTR ResultInfo
,
2398 DWORD dwType
, // FNID_XX types
2405 UINT cmd
, // Wine SW_ commands
2410 NtUserMNDragLeave(VOID
);
2420 NtUserModifyUserStartupInfoFlags(
2437 NtUserNotifyIMEStatus(
2444 NtUserNotifyProcessCreate(
2445 HANDLE NewProcessId
,
2446 HANDLE SourceThreadId
,
2452 NtUserNotifyWinEvent(
2460 NtUserOpenClipboard(
2467 POBJECT_ATTRIBUTES ObjectAttributes
,
2469 ACCESS_MASK dwDesiredAccess
);
2473 NtUserOpenInputDesktop(
2476 ACCESS_MASK dwDesiredAccess
);
2480 NtUserOpenWindowStation(
2481 POBJECT_ATTRIBUTES ObjectAttributes
,
2482 ACCESS_MASK dwDesiredAccess
);
2500 NtUserPeekMessage( PMSG pMsg
,
2516 NtUserPostThreadMessage(
2531 NtUserProcessConnect(
2533 OUT PUSERCONNECT pUserConnect
,
2534 IN DWORD dwSize
); // sizeof(USERCONNECT)
2538 NtUserQueryInformationThread(
2547 NtUserQueryInputContext(
2553 NtUserQuerySendMessage(
2558 NtUserQueryUserCounters(
2565 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2566 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2567 #define QUERY_WINDOW_ACTIVE 0x02
2568 #define QUERY_WINDOW_FOCUS 0x03
2569 #define QUERY_WINDOW_ISHUNG 0x04
2570 #define QUERY_WINDOW_REAL_ID 0x05
2571 #define QUERY_WINDOW_FOREGROUND 0x06
2580 NtUserRealInternalGetMessage(
2590 NtUserRealChildWindowFromPoint(
2597 NtUserRealWaitMessageEx(
2606 CONST RECT
*lprcUpdate
,
2613 NtUserRegisterClassExWOW(
2615 PUNICODE_STRING pustrClassName
,
2616 PUNICODE_STRING pustrCNVersion
,
2617 PCLSMENUNAME pClassMenuName
,
2624 NtUserRegisterRawInputDevices(
2625 IN PCRAWINPUTDEVICE pRawInputDevices
,
2626 IN UINT uiNumDevices
,
2631 NtUserRegisterUserApiHook(
2632 PUNICODE_STRING m_dllname1
,
2633 PUNICODE_STRING m_funname1
,
2639 NtUserRegisterHotKey(HWND hWnd
,
2646 NtUserRegisterTasklist(
2650 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2654 NtUserRemoteConnect(
2661 NtUserRemoteRedrawRectangle(
2669 NtUserRemoteRedrawScreen(VOID
);
2673 NtUserRemoteStopScreenUpdates(VOID
);
2676 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2680 NtUserResolveDesktop(
2688 NtUserResolveDesktopForWOW(
2705 CONST RECT
*lprcScroll
,
2706 CONST RECT
*lprcClip
,
2711 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2712 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2722 NtUserSetActiveWindow(HWND Wnd
);
2726 NtUserSetAppImeLevel(
2731 NtUserSetCapture(HWND Wnd
);
2737 ULONG_PTR dwNewLong
,
2749 NtUserSetClipboardData(
2756 NtUserSetClipboardViewer(
2757 HWND hWndNewViewer
);
2761 NtUserSelectPalette(
2764 BOOL ForceBackground
2769 NtUserSetConsoleReserveKeys(
2780 NtUserSetCursorContents(
2782 PICONINFO IconInfo
);
2784 #ifdef NEW_CURSORICON
2787 NtUserSetCursorIconData(
2788 _In_ HCURSOR hCursor
,
2789 _In_ PUNICODE_STRING pustrModule
,
2790 _In_ PUNICODE_STRING puSrcName
,
2791 _In_ PCURSORDATA pCursorData
);
2793 typedef struct _tagFINDEXISTINGCURICONPARAM
2798 } FINDEXISTINGCURICONPARAM
;
2802 NtUserFindExistingCursorIcon(
2803 _In_ PUNICODE_STRING pustrModule
,
2804 _In_ PUNICODE_STRING pustrRsrc
,
2805 _In_ FINDEXISTINGCURICONPARAM
* param
);
2809 NtUserSetCursorIconData(
2819 NtUserFindExistingCursorIcon(
2853 NtUserSetImeOwnerWindow(
2859 NtUserSetInformationProcess(
2867 NtUserSetInformationThread(
2868 IN HANDLE ThreadHandle
,
2869 IN USERTHREADINFOCLASS ThreadInformationClass
,
2870 IN PVOID ThreadInformation
,
2871 IN ULONG ThreadInformationLength
2876 NtUserSetInternalWindowPos(
2884 NtUserSetKeyboardState(
2889 NtUserSetLayeredWindowAttributes(
2897 NtUserSetLogonNotifyWindow(
2902 NtUserSetObjectInformation(
2905 PVOID pvInformation
,
2912 HWND hWndNewParent
);
2916 NtUserSetProcessWindowStation(
2917 HWINSTA hWindowStation
);
2920 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2930 NtUserSetScrollInfo(
2938 NtUserSetShellWindowEx(
2940 HWND hwndShellListView
);
2946 IN CONST INT
*lpaElements
,
2947 IN CONST COLORREF
*lpaRgbValues
,
2952 NtUserSetSystemCursor(
2958 NtUserSetThreadDesktop(
2963 NtUserSetThreadState(
2969 NtUserSetSystemTimer
2974 TIMERPROC lpTimerFunc
2979 NtUserSetThreadLayoutHandles(
2990 TIMERPROC lpTimerFunc
2995 NtUserSetWindowFNID(
3001 NtUserSetWindowLong(
3009 NtUserSetWindowPlacement(
3011 WINDOWPLACEMENT
*lpwndpl
);
3014 NTAPI
NtUserSetWindowPos(
3016 HWND hWndInsertAfter
,
3033 NtUserSetWindowsHookAW(
3040 NtUserSetWindowsHookEx(
3042 PUNICODE_STRING ModuleName
,
3050 NtUserSetWindowStationUser(
3057 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
3061 NtUserSetWinEventHook(
3064 HMODULE hmodWinEventProc
,
3065 PUNICODE_STRING puString
,
3066 WINEVENTPROC lpfnWinEventProc
,
3083 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
3093 NtUserShowWindowAsync(
3099 NtUserSoundSentry(VOID
);
3103 NtUserSwitchDesktop(
3108 NtUserSystemParametersInfo(
3116 NtUserTestForInteractiveUser(
3132 NtUserTrackMouseEvent(
3133 LPTRACKMOUSEEVENT lpEventTrack
);
3137 NtUserTranslateAccelerator(
3144 NtUserTranslateMessage(
3150 NtUserUnhookWindowsHookEx(
3155 NtUserUnhookWinEvent(
3156 HWINEVENTHOOK hWinEventHook
);
3160 NtUserUnloadKeyboardLayout(
3165 NtUserUnlockWindowStation(
3166 HWINSTA hWindowStation
);
3170 NtUserUnregisterClass(
3171 PUNICODE_STRING ClassNameOrAtom
,
3172 HINSTANCE hInstance
,
3173 PCLSMENUNAME pClassMenuName
);
3177 NtUserUnregisterHotKey(HWND hWnd
,
3182 NtUserUnregisterUserApiHook(VOID
);
3186 NtUserUpdateInputContext(
3193 NtUserUpdateInstance(
3200 NtUserUpdateLayeredWindow(
3208 BLENDFUNCTION
*pblend
,
3214 NtUserUpdatePerUserSystemParameters(
3220 NtUserUserHandleGrantAccess(
3221 IN HANDLE hUserHandle
,
3227 NtUserValidateHandleSecure(
3235 CONST RECT
*lpRect
);
3239 NtUserValidateTimerCallback(
3253 NtUserWaitForInputIdle(
3255 IN DWORD dwMilliseconds
,
3256 IN BOOL Unknown2
); // Always FALSE
3260 NtUserWaitForMsgAndEvent(
3265 NtUserWaitMessage(VOID
);
3269 NtUserWin32PoolAllocationStats(
3279 NtUserWindowFromPhysicalPoint(
3284 NtUserWindowFromPoint(
3290 NtUserYieldTask(VOID
);
3292 /* lParam of DDE messages */
3293 typedef struct tagKMDDEEXECUTEDATA
3297 /* BYTE Data[DataSize] */
3298 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3300 typedef struct tagKMDDELPARAM
3304 } KMDDELPARAM
, *PKMDDELPARAM
;
3311 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3314 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3315 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3316 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3317 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3318 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3319 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3320 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3321 #define TWOPARAM_ROUTINE_EXITREACTOS 0xfffd0051
3322 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3323 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0053
3324 #define MSQ_STATE_CAPTURE 0x1
3325 #define MSQ_STATE_ACTIVE 0x2
3326 #define MSQ_STATE_FOCUS 0x3
3327 #define MSQ_STATE_MENUOWNER 0x4
3328 #define MSQ_STATE_MOVESIZE 0x5
3329 #define MSQ_STATE_CARET 0x6
3330 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3331 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3332 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3336 NtUserBuildMenuItemList(
3344 NtUserGetMenuDefaultItem(
3351 NtUserGetMonitorInfo(
3352 IN HMONITOR hMonitor
,
3353 OUT LPMONITORINFO pMonitorInfo
);
3355 /* Should be done in usermode */
3357 /* (other FocusedItem values give the position of the focused item) */
3358 #define NO_SELECTED_ITEM 0xffff
3360 typedef struct tagROSMENUINFO
3362 /* ----------- MENUINFO ----------- */
3368 DWORD dwContextHelpID
;
3369 ULONG_PTR dwMenuData
;
3370 /* ----------- Extra ----------- */
3371 HMENU Self
; /* Handle of this menu */
3372 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3373 UINT FocusedItem
; /* Currently focused item */
3374 UINT MenuItemCount
; /* Number of items in the menu */
3375 HWND Wnd
; /* Window containing the menu */
3376 WORD Width
; /* Width of the whole menu */
3377 WORD Height
; /* Height of the whole menu */
3378 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3379 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3380 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3381 } ROSMENUINFO
, *PROSMENUINFO
;
3391 typedef struct tagROSMENUITEMINFO
3393 /* ----------- MENUITEMINFOW ----------- */
3400 HBITMAP hbmpChecked
;
3401 HBITMAP hbmpUnchecked
;
3406 /* ----------- Extra ----------- */
3407 RECT Rect
; /* Item area (relative to menu window) */
3408 UINT dxTab
; /* X position of text after Tab */
3409 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3410 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3418 PROSMENUITEMINFO lpmii
,
3424 NtUserMonitorFromPoint(
3430 NtUserMonitorFromRect(
3436 NtUserMonitorFromWindow(
3440 typedef struct _SETSCROLLBARINFO
3444 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3445 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3449 NtUserSetScrollBarInfo(
3452 SETSCROLLBARINFO
*info
);
3456 #endif /* __WIN32K_NTUSER_H */