1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
10 #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
11 #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
13 #define HANDLEENTRY_INDESTROY 1
15 typedef struct _USER_HANDLE_ENTRY
17 void *ptr
; /* pointer to object */
21 PTHREADINFO pti
; // pointer to Win32ThreadInfo
22 PPROCESSINFO ppi
; // pointer to W32ProcessInfo
24 unsigned char type
; /* object type (0 if free) */
26 unsigned short generation
; /* generation counter */
27 } USER_HANDLE_ENTRY
, * PUSER_HANDLE_ENTRY
;
29 typedef struct _USER_HANDLE_TABLE
31 PUSER_HANDLE_ENTRY handles
;
32 PUSER_HANDLE_ENTRY freelist
;
34 int allocated_handles
;
35 } USER_HANDLE_TABLE
, * PUSER_HANDLE_TABLE
;
37 typedef enum _HANDLE_TYPE
43 TYPE_SETWINDOWPOS
= 4,
54 TYPE_WINEVENTHOOK
= 15,
56 TYPE_INPUTCONTEXT
= 17,
59 TYPE_TOUCHINPUTINFO
= 20,
60 TYPE_GESTUREINFOOBJ
= 21,
63 } HANDLE_TYPE
, *PHANDLE_TYPE
;
65 typedef enum _USERTHREADINFOCLASS
67 UserThreadShutdownInformation
,
70 UserThreadWOWInformation
,
72 UserThreadInitiateShutdown
,
74 UserThreadEndShutdown
,
75 UserThreadUseActiveDesktop
,
77 UserThreadRestoreDesktop
,
79 } USERTHREADINFOCLASS
;
81 typedef struct _LARGE_UNICODE_STRING
84 ULONG MaximumLength
:31;
87 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
89 typedef struct _LARGE_STRING
92 ULONG MaximumLength
:31;
95 } LARGE_STRING
, *PLARGE_STRING
;
97 // Based on ANSI_STRING
99 typedef struct _LARGE_ANSI_STRING
102 ULONG MaximumLength
:31;
105 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
107 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
108 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
109 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
111 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
113 typedef struct _DESKTOPINFO
116 PVOID pvDesktopLimit
;
119 LIST_ENTRY aphkStart
[NB_HOOKS
];
124 struct _WND
* spwndShell
;
126 PPROCESSINFO ppiShellProcess
;
133 UINT LastInputWasKbd
: 1;
137 WCHAR szDesktopName
[1];
138 } DESKTOPINFO
, *PDESKTOPINFO
;
140 #define CTI_THREADSYSLOCK 0x0001
141 #define CTI_INSENDMESSAGE 0x0002
143 typedef struct _CLIENTTHREADINFO
148 WORD fsWakeBitsJournal
;
150 ULONG tickLastMsgChecked
;
152 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
160 typedef struct _THROBJHEAD
164 } THROBJHEAD
, *PTHROBJHEAD
;
166 typedef struct _THRDESKHEAD
169 struct _DESKTOP
*rpdesk
;
171 } THRDESKHEAD
, *PTHRDESKHEAD
;
173 typedef struct _PROCDESKHEAD
177 struct _DESKTOP
*rpdesk
;
179 } PROCDESKHEAD
, *PPROCDESKHEAD
;
181 typedef struct _PROCMARKHEAD
186 } PROCMARKHEAD
, *PPROCMARKHEAD
;
188 #define UserHMGetHandle(obj) ((obj)->head.h)
190 /* Window Client Information structure */
193 #define WEF_SETBYWNDPTI 0x0001
195 typedef struct tagHOOK
198 struct tagHOOK
*phkNext
; /* This is for user space. */
199 int HookId
; /* Hook table index */
201 ULONG flags
; /* Some internal flags */
203 PTHREADINFO ptiHooked
;
204 struct _DESKTOP
*rpdesk
;
206 LIST_ENTRY Chain
; /* Hook chain entry */
207 HOOKPROC Proc
; /* Hook function */
208 BOOLEAN Ansi
; /* Is it an Ansi hook? */
209 UNICODE_STRING ModuleName
; /* Module name for global hooks */
212 typedef struct tagCLIPBOARDDATA
217 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
219 /* THREADINFO Flags */
220 #define TIF_INCLEANUP 0x00000001
221 #define TIF_16BIT 0x00000002
222 #define TIF_SYSTEMTHREAD 0x00000004
223 #define TIF_CSRSSTHREAD 0x00000008
224 #define TIF_TRACKRECTVISIBLE 0x00000010
225 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
226 #define TIF_DONTATTACHQUEUE 0x00000040
227 #define TIF_DONTJOURNALATTACH 0x00000080
228 #define TIF_WOW64 0x00000100
229 #define TIF_INACTIVATEAPPMSG 0x00000200
230 #define TIF_SPINNING 0x00000400
231 #define TIF_PALETTEAWARE 0x00000800
232 #define TIF_SHAREDWOW 0x00001000
233 #define TIF_FIRSTIDLE 0x00002000
234 #define TIF_WAITFORINPUTIDLE 0x00004000
235 #define TIF_MOVESIZETRACKING 0x00008000
236 #define TIF_VDMAPP 0x00010000
237 #define TIF_DOSEMULATOR 0x00020000
238 #define TIF_GLOBALHOOKER 0x00040000
239 #define TIF_DELAYEDEVENT 0x00080000
240 #define TIF_MSGPOSCHANGED 0x00100000
241 #define TIF_SHUTDOWNCOMPLETE 0x00200000
242 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
243 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
244 #define TIF_GUITHREADINITIALIZED 0x02000000
245 #define TIF_DISABLEIME 0x04000000
246 #define TIF_INGETTEXTLENGTH 0x08000000
247 #define TIF_ANSILENGTH 0x10000000
248 #define TIF_DISABLEHOOKS 0x20000000
250 typedef struct _CALLBACKWND
255 } CALLBACKWND
, *PCALLBACKWND
;
257 #define CI_TRANSACTION 0x00000001
258 #define CI_QUEUEMSG 0x00000002
259 #define CI_WOW 0x00000004
260 #define CI_INITTHREAD 0x00000008
261 #define CI_CURTHPRHOOK 0x00000010
262 #define CI_CLASSESREGISTERED 0x00000020
263 #define CI_IMMACTIVATE 0x00000040
265 typedef struct _CLIENTINFO
271 DWORD dwCompatFlags2
;
272 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
273 PDESKTOPINFO pDeskInfo
;
274 ULONG_PTR ulClientDelta
;
277 CALLBACKWND CallbackWnd
;
279 INT cInDDEMLCallback
;
280 PCLIENTTHREADINFO pClientThreadInfo
;
281 ULONG_PTR dwHookData
;
284 DWORD dwAsyncKeyCache
;
285 BYTE afAsyncKeyState
[8];
286 BYTE afAsyncKeyStateRecentDow
[8];
291 LPDWORD lpdwRegisteredClasses
;
292 ULONG Win32ClientInfo3
[26];
293 /* It's just a pointer reference not to be used w the structure in user space. */
295 } CLIENTINFO
, *PCLIENTINFO
;
297 /* Make sure it fits into the TEB */
298 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
300 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
302 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
303 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
304 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
306 /* Menu Item fType. */
307 #define MFT_RTOL 0x6000
309 typedef struct tagITEM
314 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
316 HANDLE hbmpUnchecked
;
317 USHORT
* Xlpstr
; /* Item text pointer. */
319 DWORD_PTR dwItemData
;
320 ULONG xItem
; /* Item position. left */
321 ULONG yItem
; /* " top */
322 ULONG cxItem
; /* Item Size Width */
323 ULONG cyItem
; /* " Height */
324 ULONG dxTab
; /* X position of text after Tab */
325 ULONG ulX
; /* underline.. start position */
326 ULONG ulWidth
; /* underline.. width */
327 HBITMAP hbmp
; /* bitmap */
328 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
329 INT cyBmp
; /* Height " */
331 UNICODE_STRING lpstr
;
334 typedef struct tagMENULIST
336 struct tagMENULIST
* pNext
;
337 struct tagMENU
* pMenu
;
338 } MENULIST
, *PMENULIST
;
340 /* Menu fFlags, upper byte is MNS_X style flags. */
341 #define MNF_POPUP 0x0001
342 #define MNF_UNDERLINE 0x0004
343 #define MNF_INACTIVE 0x0010
344 #define MNF_RTOL 0x0020
345 #define MNF_DESKTOPMN 0x0040
346 #define MNF_SYSDESKMN 0x0080
347 #define MNF_SYSSUBMENU 0x0100
349 typedef struct tagMENU
352 ULONG fFlags
; /* [Style flags | Menu flags] */
353 INT iItem
; /* nPos of selected item, if -1 not selected. AKA focused item */
354 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
355 UINT cItems
; /* Number of items in the menu */
356 ULONG cxMenu
; /* Width of the whole menu */
357 ULONG cyMenu
; /* Height of the whole menu */
358 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
359 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
360 PITEM rgItems
; /* Array of menu items */
361 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
362 DWORD dwContextHelpId
;
363 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
364 DWORD_PTR dwMenuData
; /* application defined value */
365 HBRUSH hbrBack
; /* brush for menu background */
366 INT iTop
; /* Current scroll position Top */
367 INT iMaxTop
; /* Current scroll position Max Top */
368 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
370 LIST_ENTRY ListEntry
;
371 HWND hWnd
; /* Window containing the menu, use POPUPMENU */
375 typedef struct tagPOPUPMENU
380 ULONG fIsTrackPopup
:1;
381 ULONG fDroppedLeft
:1;
382 ULONG fHierarchyDropped
:1;
383 ULONG fRightButton
:1;
385 ULONG fSynchronous
:1;
387 ULONG fDropNextPopup
:1;
389 ULONG fAboutToHide
:1;
393 ULONG fDelayedFree
:1;
394 ULONG fFlushDelayedFree
:1;
397 ULONG fTrackMouseEvent
:1;
400 // ULONG fDesktopMenu:1;
402 ULONG fUseMonitorRect
:1;
403 struct _WND
*spwndNotify
;
404 struct _WND
*spwndPopupMenu
;
405 struct _WND
*spwndNextPopup
;
406 struct _WND
*spwndPrevPopup
;
408 PMENU spmenuAlternate
;
409 struct _WND
*spwndActivePopup
;
410 struct tagPOPUPMENU
*ppopupmenuRoot
;
411 struct tagPOPUPMENU
*ppmDelayedFree
;
412 UINT posSelectedItem
;
414 } POPUPMENU
, *PPOPUPMENU
;
417 typedef struct _REGISTER_SYSCLASS
419 /* This is a reactos specific class used to initialize the
420 system window classes during user32 initialization */
429 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
431 typedef struct _CLSMENUNAME
433 LPSTR pszClientAnsiMenuName
;
434 LPWSTR pwszClientUnicodeMenuName
;
435 PUNICODE_STRING pusMenuName
;
436 } CLSMENUNAME
, *PCLSMENUNAME
;
438 typedef struct tagSBDATA
446 typedef struct tagSBINFO
453 typedef struct tagSBCALC
475 UserGetCPDA2U
= 0x01, // " Unicode "
476 UserGetCPDU2A
= 0X02, // " Ansi "
477 UserGetCPDClass
= 0X10,
478 UserGetCPDWindow
= 0X20,
479 UserGetCPDDialog
= 0X40,
480 UserGetCPDWndtoCls
= 0X80
483 typedef struct _CALLPROCDATA
486 struct _CALLPROCDATA
*spcpdNext
;
487 WNDPROC pfnClientPrevious
;
489 } CALLPROCDATA
, *PCALLPROCDATA
;
491 #define CSF_SERVERSIDEPROC 0x0001
492 #define CSF_ANSIPROC 0x0002
493 #define CSF_WOWDEFERDESTROY 0x0004
494 #define CSF_SYSTEMCLASS 0x0008
495 #define CSF_WOWCLASS 0x0010
496 #define CSF_WOWEXTRA 0x0020
497 #define CSF_CACHEDSMICON 0x0040
498 #define CSF_WIN40COMPAT 0x0080
502 struct _CLS
*pclsNext
;
503 RTL_ATOM atomClassName
;
504 ATOM atomNVClassName
;
506 struct _DESKTOP
*rpdeskParent
;
509 PSTR lpszClientAnsiMenuName
; // For client use
510 PWSTR lpszClientUnicodeMenuName
; // " " "
511 PCALLPROCDATA spcpdFirst
;
512 struct _CLS
*pclsBase
;
513 struct _CLS
*pclsClone
;
514 ULONG cWndReferenceCount
;
520 HANDLE hIcon
; /* FIXME - Use pointer! */
522 HANDLE hCursor
; /* FIXME - Use pointer! */
524 HBRUSH hbrBackground
;
525 PWSTR lpszMenuName
; // kernel use
526 PSTR lpszAnsiClassName
; // "
527 HANDLE hIconSm
; /* FIXME - Use pointer! */
530 //// ReactOS dosn't suppot cache icons.
531 HICON hIconSmIntern
; /* Internal small icon, derived from hIcon */
533 UINT Unicode
: 1; // !CSF_ANSIPROC
534 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
535 UINT MenuNameIsString
: 1;
540 typedef struct _SBINFOEX
542 SCROLLBARINFO ScrollBarInfo
;
543 SCROLLINFO ScrollInfo
;
544 } SBINFOEX
, *PSBINFOEX
;
546 // State Flags !Not Implemented!
547 #define WNDS_HASMENU 0X00000001
548 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
549 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
550 #define WNDS_HASCAPTION 0X00000008
551 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
552 #define WNDS_MSGBOX 0X00000020
553 #define WNDS_ACTIVEFRAME 0X00000040
554 #define WNDS_HASSPB 0X00000080
555 #define WNDS_NONCPAINT 0X00000100
556 #define WNDS_SENDERASEBACKGROUND 0X00000200
557 #define WNDS_ERASEBACKGROUND 0X00000400
558 #define WNDS_SENDNCPAINT 0X00000800
559 #define WNDS_INTERNALPAINT 0X00001000
560 #define WNDS_UPDATEDIRTY 0X00002000
561 #define WNDS_HIDDENPOPUP 0X00004000
562 #define WNDS_FORCEMENUDRAW 0X00008000
563 #define WNDS_DIALOGWINDOW 0X00010000
564 #define WNDS_HASCREATESTRUCTNAME 0X00020000
565 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
566 #define WNDS_ANSIWINDOWPROC 0x00080000
567 #define WNDS_BEINGACTIVATED 0x00100000
568 #define WNDS_HASPALETTE 0x00200000
569 #define WNDS_PAINTNOTPROCESSED 0x00400000
570 #define WNDS_SYNCPAINTPENDING 0x00800000
571 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
572 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
573 #define WNDS_TOGGLETOPMOST 0x04000000
574 #define WNDS_REDRAWIFHUNG 0x08000000
575 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
576 #define WNDS_ANSICREATOR 0x20000000
577 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
578 #define WNDS_DESTROYED 0x80000000
580 #define WNDSACTIVEFRAME 0x00000006
582 // State2 Flags !Not Implemented!
583 #define WNDS2_WMPAINTSENT 0X00000001
584 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
585 #define WNDS2_STARTPAINT 0X00000004
586 #define WNDS2_OLDUI 0X00000008
587 #define WNDS2_HASCLIENTEDGE 0X00000010
588 #define WNDS2_BOTTOMMOST 0X00000020
589 #define WNDS2_FULLSCREEN 0X00000040
590 #define WNDS2_INDESTROY 0X00000080
591 #define WNDS2_WIN31COMPAT 0X00000100
592 #define WNDS2_WIN40COMPAT 0X00000200
593 #define WNDS2_WIN50COMPAT 0X00000400
594 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
595 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
596 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
597 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
598 #define WNDS2_HELPBUTTONDOWN 0X00008000
599 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
600 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
601 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
602 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
603 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
604 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
605 #define WNDS2_FORCENCPAINT 0X00400000
606 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
607 #define WNDS2_FULLSCREENMODE 0X01000000
608 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
609 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
610 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
611 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
612 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
615 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
616 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
617 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
618 #define WS_EX2_LINKED 0X00000008
619 #define WS_EX2_LAYEREDFORDWM 0X00000010
620 #define WS_EX2_LAYEREDLIMBO 0X00000020
621 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
622 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
623 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
624 #define WS_EX2_HASOVERLAY 0X00000200
625 #define WS_EX2_CONSOLEWINDOW 0X00000400
626 #define WS_EX2_CHILDNOACTIVATE 0X00000800
628 #define WPF_MININIT 0x0008
629 #define WPF_MAXINIT 0x0010
636 /* Extended style. */
640 /* Handle of the module that created the window. */
643 struct _WND
*spwndNext
;
644 struct _WND
*spwndPrev
;
645 struct _WND
*spwndParent
;
646 struct _WND
*spwndChild
;
647 struct _WND
*spwndOwner
;
651 /* Pointer to the window class. */
654 /* Property list head.*/
655 LIST_ENTRY PropListHead
;
659 /* system menu handle. */
662 /* Window menu handle or window id */
663 UINT IDMenu
; // Use spmenu
668 LARGE_UNICODE_STRING strName
;
669 /* Size of the extra data associated with the window. */
671 struct _WND
*spwndLastActive
;
672 //HIMC hImc; // Input context associated with this window.
675 //PD3DMATRIX pTransForm;
676 struct _WND
*spwndClipboardListener
;
685 UINT flags
; // WPF_ flags.
688 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
689 UINT InternalPosInitialized
: 1;
690 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
691 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
694 PSBINFOEX pSBInfoex
; // convert to PSBINFO
695 /* Entry in the list of thread windows. */
696 LIST_ENTRY ThreadListEntry
;
699 #define PWND_BOTTOM ((PWND)1)
701 typedef struct _SBWND
709 typedef struct _MENUWND
712 PPOPUPMENU ppopupmenu
;
713 } MENUWND
, *PMENUWND
;
715 typedef struct _PFNCLIENT
717 WNDPROC pfnScrollBarWndProc
;
718 WNDPROC pfnTitleWndProc
;
719 WNDPROC pfnMenuWndProc
;
720 WNDPROC pfnDesktopWndProc
;
721 WNDPROC pfnDefWindowProc
;
722 WNDPROC pfnMessageWindowProc
;
723 WNDPROC pfnSwitchWindowProc
;
724 WNDPROC pfnButtonWndProc
;
725 WNDPROC pfnComboBoxWndProc
;
726 WNDPROC pfnComboListBoxProc
;
727 WNDPROC pfnDialogWndProc
;
728 WNDPROC pfnEditWndProc
;
729 WNDPROC pfnListBoxWndProc
;
730 WNDPROC pfnMDIClientWndProc
;
731 WNDPROC pfnStaticWndProc
;
732 WNDPROC pfnImeWndProc
;
733 WNDPROC pfnGhostWndProc
;
734 WNDPROC pfnHkINLPCWPSTRUCT
;
735 WNDPROC pfnHkINLPCWPRETSTRUCT
;
736 WNDPROC pfnDispatchHook
;
737 WNDPROC pfnDispatchDefWindowProc
;
738 WNDPROC pfnDispatchMessage
;
739 WNDPROC pfnMDIActivateDlgProc
;
740 } PFNCLIENT
, *PPFNCLIENT
;
743 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
744 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
747 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
749 typedef struct _PFNCLIENTWORKER
751 WNDPROC_EX pfnButtonWndProc
;
752 WNDPROC_EX pfnComboBoxWndProc
;
753 WNDPROC_EX pfnComboListBoxProc
;
754 WNDPROC_EX pfnDialogWndProc
;
755 WNDPROC_EX pfnEditWndProc
;
756 WNDPROC_EX pfnListBoxWndProc
;
757 WNDPROC_EX pfnMDIClientWndProc
;
758 WNDPROC_EX pfnStaticWndProc
;
759 WNDPROC_EX pfnImeWndProc
;
760 WNDPROC_EX pfnGhostWndProc
;
761 WNDPROC_EX pfnCtfHookProc
;
762 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
764 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
766 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
767 #define FNID_FIRST 0x029A
768 #define FNID_SCROLLBAR 0x029A
769 #define FNID_ICONTITLE 0x029B
770 #define FNID_MENU 0x029C
771 #define FNID_DESKTOP 0x029D
772 #define FNID_DEFWINDOWPROC 0x029E
773 #define FNID_MESSAGEWND 0x029F
774 #define FNID_SWITCH 0x02A0
775 #define FNID_BUTTON 0x02A1
776 #define FNID_COMBOBOX 0x02A2
777 #define FNID_COMBOLBOX 0x02A3
778 #define FNID_DIALOG 0x02A4
779 #define FNID_EDIT 0x02A5
780 #define FNID_LISTBOX 0x02A6
781 #define FNID_MDICLIENT 0x02A7
782 #define FNID_STATIC 0x02A8
783 #define FNID_IME 0x02A9
784 #define FNID_GHOST 0x02AA
785 #define FNID_CALLWNDPROC 0x02AB
786 #define FNID_CALLWNDPROCRET 0x02AC
787 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
788 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
789 #define FNID_MB_DLGPROC 0x02AF
790 #define FNID_MDIACTIVATEDLGPROC 0x02B0
791 #define FNID_SENDMESSAGE 0x02B1
792 #define FNID_SENDMESSAGEFF 0x02B2
793 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
794 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
795 #define FNID_SENDMESSAGECALLPROC 0x02B4
796 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
797 #define FNID_TOOLTIPS 0x02B6
798 #define FNID_SENDNOTIFYMESSAGE 0x02B7
799 #define FNID_SENDMESSAGECALLBACK 0x02B8
800 #define FNID_LAST 0x02B9
802 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
803 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
805 #define FNID_DDEML 0x2000 // Registers DDEML
806 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
807 // Seen during WM_CREATE on error exit too.
808 #define FNID_FREED 0x8000 // Window being Freed...
810 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
812 #define GETPFNCLIENTA(fnid)\
813 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
814 #define GETPFNCLIENTW(fnid)\
815 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
817 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
819 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
820 #define ICLS_BUTTON 0
822 #define ICLS_STATIC 2
823 #define ICLS_LISTBOX 3
824 #define ICLS_SCROLLBAR 4
825 #define ICLS_COMBOBOX 5
826 #define ICLS_MDICLIENT 6
827 #define ICLS_COMBOLBOX 7
828 #define ICLS_DDEMLEVENT 8
829 #define ICLS_DDEMLMOTHER 9
830 #define ICLS_DDEML16BIT 10
831 #define ICLS_DDEMLCLIENTA 11
832 #define ICLS_DDEMLCLIENTW 12
833 #define ICLS_DDEMLSERVERA 13
834 #define ICLS_DDEMLSERVERW 14
836 #define ICLS_GHOST 16
837 #define ICLS_DESKTOP 17
838 #define ICLS_DIALOG 18
840 #define ICLS_SWITCH 20
841 #define ICLS_ICONTITLE 21
842 #define ICLS_TOOLTIPS 22
843 #if (_WIN32_WINNT <= 0x0501)
844 #define ICLS_UNKNOWN 22
845 #define ICLS_NOTUSED 23
847 #define ICLS_SYSSHADOW 23
848 #define ICLS_HWNDMESSAGE 24
849 #define ICLS_NOTUSED 25
853 #define COLOR_LAST COLOR_MENUBAR
854 #define MAX_MB_STRINGS 11
856 #define SRVINFO_APIHOOK 0x0010
857 #define SRVINFO_METRICS 0x0020
858 #define SRVINFO_KBDPREF 0x0080
860 #define NUM_SYSCOLORS 31
862 typedef struct tagOEMBITMAPINFO
868 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
870 typedef struct tagMBSTRING
875 } MBSTRING
, *PMBSTRING
;
877 typedef struct tagDPISERVERINFO
879 INT gclBorder
; /* 000 */
880 HFONT hCaptionFont
; /* 004 */
881 HFONT hMsgFont
; /* 008 */
882 INT cxMsgFontChar
; /* 00C */
883 INT cyMsgFontChar
; /* 010 */
884 UINT wMaxBtnSize
; /* 014 */
885 } DPISERVERINFO
, *PDPISERVERINFO
;
888 #define PUSIF_PALETTEDISPLAY 0x01
889 #define PUSIF_SNAPTO 0x02
890 #define PUSIF_COMBOBOXANIMATION 0x04
891 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
892 #define PUSIF_KEYBOARDCUES 0x20
894 typedef struct _PERUSERSERVERINFO
896 INT aiSysMet
[SM_CMETRICS
];
897 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
898 COLORREF argbSystem
[NUM_SYSCOLORS
];
899 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
903 DWORD dwLastRITEventTickCount
;
908 UINT ucWheelScrollLines
;
909 UINT ucWheelScrollChars
;
910 INT wMaxLeftOverlapChars
;
911 INT wMaxRightOverlapChars
;
914 TEXTMETRICW tmSysFont
;
915 DPISERVERINFO dpiSystem
;
916 HICON hIconSmWindows
;
919 DWORD dwAsyncKeyCache
;
921 OEMBITMAPINFO oembmi
[93];
930 DWORD dwLastSystemRITEventTickCountUpdate
;
931 ULONG adwDBGTAGFlags
[35];
934 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
936 typedef struct tagSERVERINFO
939 ULONG_PTR cHandleEntries
;
940 PFN_FNID mpFnidPfn
[FNID_NUM
];
941 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
942 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
943 PFNCLIENT apfnClientA
;
944 PFNCLIENT apfnClientW
;
945 PFNCLIENTWORKER apfnClientWorker
;
947 ATOM atomSysClass
[ICLS_NOTUSED
+1];
948 DWORD dwDefaultHeapBase
;
949 DWORD dwDefaultHeapSize
;
951 MBSTRING MBStrings
[MAX_MB_STRINGS
];
954 ATOM atomContextHelpIdProp
;
955 ATOM atomFrostedWindowProp
;
956 CHAR acOemToAnsi
[256];
957 CHAR acAnsiToOem
[256];
958 DWORD dwInstalledEventHooks
;
960 } SERVERINFO
, *PSERVERINFO
;
963 // Server event activity bits.
964 #define SRV_EVENT_MENU 0x0001
965 #define SRV_EVENT_END_APPLICATION 0x0002
966 #define SRV_EVENT_RUNNING 0x0004
967 #define SRV_EVENT_NAMECHANGE 0x0008
968 #define SRV_EVENT_VALUECHANGE 0x0010
969 #define SRV_EVENT_STATECHANGE 0x0020
970 #define SRV_EVENT_LOCATIONCHANGE 0x0040
971 #define SRV_EVENT_CREATE 0x8000
973 typedef struct _PROPLISTITEM
977 } PROPLISTITEM
, *PPROPLISTITEM
;
979 typedef struct _PROPERTY
981 LIST_ENTRY PropListEntry
;
984 } PROPERTY
, *PPROPERTY
;
986 typedef struct _BROADCASTPARM
993 } BROADCASTPARM
, *PBROADCASTPARM
;
995 PTHREADINFO
GetW32ThreadInfo(VOID
);
996 PPROCESSINFO
GetW32ProcessInfo(VOID
);
998 typedef struct _WNDMSG
1004 typedef struct _SHAREDINFO
1006 PSERVERINFO psi
; // global Server Info
1007 PVOID aheList
; // Handle Entry List
1008 PVOID pDispInfo
; // global PDISPLAYINFO pointer
1009 ULONG_PTR ulSharedDelta
; // Heap delta
1010 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
1011 WNDMSG DefWindowMsgs
;
1012 WNDMSG DefWindowSpecMsgs
;
1013 } SHAREDINFO
, *PSHAREDINFO
;
1015 typedef struct _USERCONNECT
1018 ULONG ulCurrentVersion
;
1019 DWORD dwDispatchCount
;
1020 SHAREDINFO siClient
;
1021 } USERCONNECT
, *PUSERCONNECT
;
1023 typedef struct tagGETCLIPBDATA
1032 } GETCLIPBDATA
, *PGETCLIPBDATA
;
1034 typedef struct tagSETCLIPBDATA
1037 BOOL fIncSerialNumber
;
1038 } SETCLIPBDATA
, *PSETCLIPBDATA
;
1040 // Used with NtUserSetCursorIconData, last parameter.
1041 typedef struct tagCURSORDATA
1047 ULONG CURSORF_flags
;
1054 HBITMAP hbmUserAlpha
; // Could be in W7U, not in W2k
1060 struct tagCURSORDATA
* aspcur
;
1064 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1067 #define CURSORF_FROMRESOURCE 0x0001
1068 #define CURSORF_GLOBAL 0x0002
1069 #define CURSORF_LRSHARED 0x0004
1070 #define CURSORF_ACON 0x0008
1071 #define CURSORF_WOWCLEANUP 0x0010
1072 #define CURSORF_ACONFRAME 0x0040
1073 #define CURSORF_SECRET 0x0080
1074 #define CURSORF_LINKED 0x0100
1075 #define CURSORF_CURRENT 0x0200
1079 NtUserAssociateInputContext(
1086 NtUserBuildHimcList(
1103 NtUserCheckMenuItem(
1110 NtUserCtxDisplayIOCtl(
1129 NtUserDrawMenuBarTemp(
1138 NtUserEnableMenuItem(
1145 NtUserEndMenu(VOID
);
1149 NtUserGetMenuBarInfo(
1163 NtUserGetMenuItemRect(
1171 NtUserGetSystemMenu(
1177 NtUserHiliteMenuItem(
1185 NtUserMenuItemFromPoint(
1207 NtUserSetMenuContextHelpId(
1209 DWORD dwContextHelpId
);
1213 NtUserSetMenuDefaultItem(
1220 NtUserSetMenuFlagRtoL(
1225 NtUserSetSystemMenu(
1231 NtUserThunkedMenuInfo(
1237 NtUserThunkedMenuItemInfo(
1242 LPMENUITEMINFOW lpmii
,
1243 PUNICODE_STRING lpszCaption
);
1247 NtUserTrackPopupMenuEx(
1257 NtUserActivateKeyboardLayout(
1263 NtUserAlterWindowStyle(
1270 NtUserAttachThreadInput(
1272 IN DWORD idAttachTo
,
1276 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1297 NtUserBuildHwndList(
1307 NtUserBuildNameList(
1311 PULONG pRequiredSize
);
1315 NtUserBuildPropList(
1321 /* apfnSimpleCall indices from Windows XP SP 2 */
1322 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1323 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1325 enum SimpleCallRoutines
1327 NOPARAM_ROUTINE_CREATEMENU
,
1328 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1329 #if (WIN32K_VERSION >= NTDDI_VISTA)
1330 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1331 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1332 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1333 NOPARAM_ROUTINE_DESTROY_CARET
,
1335 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1336 #if (WIN32K_VERSION < NTDDI_VISTA)
1337 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1338 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1339 NOPARAM_ROUTINE_DESTROY_CARET
,
1341 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1342 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1343 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1344 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1345 #if (WIN32K_VERSION >= NTDDI_VISTA)
1346 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1348 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1350 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1351 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1352 #if (WIN32K_VERSION >= NTDDI_VISTA)
1353 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1354 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1356 NOPARAM_ROUTINE_RELEASECAPTURE
,
1357 NOPARAM_ROUTINE_RESETDBLCLICK
,
1358 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1359 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1360 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1361 NOPARAM_ROUTINE_REMOTELOGOFF
,
1362 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1363 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1364 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1365 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1366 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1367 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1368 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1369 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1370 #if (WIN32K_VERSION >= NTDDI_VISTA)
1371 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1373 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1374 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1375 #if (WIN32K_VERSION < NTDDI_VISTA)
1376 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1378 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1379 #if (WIN32K_VERSION >= NTDDI_VISTA)
1380 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1382 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1383 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1384 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1385 #if (WIN32K_VERSION < NTDDI_VISTA)
1386 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1388 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1389 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1390 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1391 #if (WIN32K_VERSION < NTDDI_VISTA)
1392 ONEPARAM_ROUTINE_GETCURSORPOS
,
1394 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1395 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1396 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1397 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1398 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1399 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1400 #if (WIN32K_VERSION < NTDDI_VISTA)
1401 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1403 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1404 ONEPARAM_ROUTINE_LOADFONTS
,
1405 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1406 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1407 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1408 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1409 #if (WIN32K_VERSION < NTDDI_VISTA)
1410 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1412 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1413 ONEPARAM_ROUTINE_REGISTERLPK
,
1414 #if (WIN32K_VERSION >= NTDDI_VISTA)
1415 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1417 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1418 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1419 ONEPARAM_ROUTINE_RELEASEDC
,
1420 #if (WIN32K_VERSION >= NTDDI_VISTA)
1421 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1423 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1424 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1425 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1426 #if (WIN32K_VERSION < NTDDI_VISTA)
1427 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1429 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1430 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1431 #if (WIN32K_VERSION >= NTDDI_VISTA)
1432 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1434 ONEPARAM_ROUTINE_SHOWCURSOR
,
1435 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1436 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1437 X_ROUTINE_WOWMODULEUNLOAD
,
1438 #if (WIN32K_VERSION < NTDDI_VISTA)
1439 X_ROUTINE_REMOTENOTIFY
,
1441 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1442 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1443 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1444 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1445 HWND_ROUTINE_SETMSGBOX
,
1446 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1447 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1448 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1449 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1450 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1451 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1452 HWNDPARAM_ROUTINE_SETVISIBLE
,
1453 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1454 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1455 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1456 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1457 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1458 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1459 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1460 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1461 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1462 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1463 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1464 HWNDLOCK_ROUTINE_SETSYSMENU
,
1465 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1466 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1467 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1468 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1469 TWOPARAM_ROUTINE_REDRAWTITLE
,
1470 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1471 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1472 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1473 TWOPARAM_ROUTINE_VALIDATERGN
,
1474 #if (WIN32K_VERSION >= NTDDI_VISTA)
1475 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1476 TWOPARAM_ROUTINE_GETCURSORPOS
,
1478 TWOPARAM_ROUTINE_GETHDEVNAME
,
1479 TWOPARAM_ROUTINE_INITANSIOEM
,
1480 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1481 #if (WIN32K_VERSION >= NTDDI_VISTA)
1482 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1484 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1485 #if (WIN32K_VERSION >= NTDDI_VISTA)
1486 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1488 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1490 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1491 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1492 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1493 TWOPARAM_ROUTINE_SETCARETPOS
,
1494 TWOPARAM_ROUTINE_SETCURSORPOS
,
1495 #if (WIN32K_VERSION >= NTDDI_VISTA)
1496 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1498 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1499 TWOPARAM_ROUTINE_WOWCLEANUP
1522 NtUserCallHwndParam(
1529 NtUserCallHwndParamLock(
1536 NtUserCallMsgFilter(
1542 NtUserCallNextHookEx(
1568 NtUserChangeClipboardChain(
1574 NtUserChangeDisplaySettings(
1575 PUNICODE_STRING lpszDeviceName
,
1576 LPDEVMODEW lpDevMode
,
1583 NtUserCheckDesktopByThreadId(
1588 NtUserCheckWindowThreadDesktop(
1595 NtUserCheckImeHotKey(
1600 NtUserChildWindowFromPointEx(
1613 NtUserCloseClipboard(VOID
);
1622 NtUserCloseWindowStation(
1625 /* Console commands for NtUserConsoleControl */
1626 typedef enum _CONSOLECONTROL
1628 GuiConsoleWndClassAtom
,
1629 ConsoleMakePalettePublic
= 5,
1630 ConsoleAcquireDisplayOwnership
,
1631 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1635 NtUserConsoleControl(
1636 IN CONSOLECONTROL ConsoleCtrl
,
1637 IN PVOID ConsoleCtrlInfo
,
1638 IN ULONG ConsoleCtrlInfoLength
);
1642 NtUserConvertMemHandle(
1648 NtUserCopyAcceleratorTable(
1651 ULONG EntriesCount
);
1655 NtUserCountClipboardFormats(VOID
);
1659 NtUserCreateAcceleratorTable(
1661 ULONG EntriesCount
);
1673 NtUserCreateDesktop(
1674 POBJECT_ATTRIBUTES poa
,
1675 PUNICODE_STRING lpszDesktopDevice
,
1678 ACCESS_MASK dwDesiredAccess
);
1682 NtUserCreateInputContext(
1687 NtUserCreateLocalMemHandle(
1695 NtUserCreateWindowEx(
1697 PLARGE_STRING plstrClassName
,
1698 PLARGE_STRING plstrClsVersion
,
1699 PLARGE_STRING plstrWindowName
,
1707 HINSTANCE hInstance
,
1714 NtUserCreateWindowStation(
1715 POBJECT_ATTRIBUTES ObjectAttributes
,
1716 ACCESS_MASK dwDesiredAccess
,
1725 NtUserDdeGetQualityOfService(
1728 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1732 NtUserDdeInitialize(
1741 NtUserDdeSetQualityOfService(
1743 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1744 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1747 NtUserDeferWindowPos(
1750 HWND WndInsertAfter
,
1758 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1762 NtUserDestroyAcceleratorTable(
1767 NtUserDestroyCursor(
1773 NtUserDestroyInputContext(
1777 NtUserDestroyWindow(HWND Wnd
);
1781 NtUserDisableThreadIme(
1786 NtUserDispatchMessage(PMSG pMsg
);
1805 NtUserDrawAnimatedRects(
1821 NtUserDrawCaptionTemp(
1827 const PUNICODE_STRING str
,
1830 // Used with NtUserDrawIconEx, last parameter.
1831 typedef struct _DRAWICONEXDATA
1837 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1849 HBRUSH hbrFlickerFreeDraw
,
1856 NtUserEmptyClipboard(VOID
);
1860 NtUserEnableScrollBar(
1867 NtUserEndDeferWindowPosEx(
1872 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1876 NtUserEnumDisplayDevices (
1877 PUNICODE_STRING lpDevice
, /* device name */
1878 DWORD iDevNum
, /* display device */
1879 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1880 DWORD dwFlags
); /* reserved */
1884 NtUserEnumDisplayMonitors (
1887 MONITORENUMPROC lpfnEnum,
1889 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1892 NtUserEnumDisplayMonitors(
1893 OPTIONAL IN HDC hDC
,
1894 OPTIONAL IN LPCRECT pRect
,
1895 OPTIONAL OUT HMONITOR
*hMonitorList
,
1896 OPTIONAL OUT LPRECT monitorRectList
,
1897 OPTIONAL IN DWORD listSize
);
1902 NtUserEnumDisplaySettings(
1903 PUNICODE_STRING lpszDeviceName
,
1905 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1915 NtUserExcludeUpdateRgn(
1931 HWND hwndChildAfter
,
1932 PUNICODE_STRING ucClassName
,
1933 PUNICODE_STRING ucWindowName
,
1939 NtUserFlashWindowEx(
1940 IN PFLASHWINFO pfwi
);
1944 NtUserGetAltTabInfo(
1953 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1957 NtUserGetAppImeLevel(
1962 NtUserGetAsyncKeyState(
1965 _Success_(return!=0)
1966 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return*2+2))
1971 _Inout_ PUNICODE_STRING pustrName
);
1975 NtUserGetCaretBlinkTime(VOID
);
1983 NtUserGetClassInfo(HINSTANCE hInstance
,
1984 PUNICODE_STRING ClassName
,
1986 LPWSTR
*ppszMenuName
,
1991 NtUserGetClassName(HWND hWnd
,
1992 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1993 PUNICODE_STRING ClassName
);
1997 NtUserGetClipboardData(
1999 PGETCLIPBDATA pgcd
);
2003 NtUserGetClipboardFormatName(
2005 LPWSTR lpszFormatName
,
2010 NtUserGetClipboardOwner(VOID
);
2014 NtUserGetClipboardSequenceNumber(VOID
);
2018 NtUserGetClipboardViewer(VOID
);
2022 NtUserGetClipCursor(
2027 NtUserGetComboBoxInfo(
2029 PCOMBOBOXINFO pcbi
);
2033 NtUserGetControlBrush(
2040 NtUserGetControlColor(
2055 NtUserGetCursorFrameInfo(
2063 NtUserGetCursorInfo(
2080 NtUserGetDoubleClickTime(VOID
);
2084 NtUserGetForegroundWindow(VOID
);
2088 NtUserGetGuiResources(
2094 NtUserGetGUIThreadInfo(
2096 LPGUITHREADINFO lpgui
);
2098 _Success_(return!=FALSE
)
2102 _In_ HANDLE hCurIcon
,
2103 _Out_opt_ PICONINFO IconInfo
,
2104 _Inout_opt_ PUNICODE_STRING lpInstName
,
2105 _Inout_opt_ PUNICODE_STRING lpResName
,
2106 _Out_opt_ LPDWORD pbpp
,
2107 _In_ BOOL bInternal
);
2133 NtUserGetInternalWindowPos(
2140 NtUserGetKeyboardLayout(
2145 NtUserGetKeyboardLayoutList(
2151 NtUserGetKeyboardLayoutName(
2156 NtUserGetKeyboardState(
2161 NtUserGetKeyboardType(
2166 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
2175 NtUserGetLayeredWindowAttributes(
2183 NtUserGetListBoxInfo(
2187 NtUserGetMessage(PMSG pMsg
,
2194 NtUserGetMouseMovePointsEx(
2196 LPMOUSEMOVEPOINT lppt
,
2197 LPMOUSEMOVEPOINT lpptBuf
,
2203 NtUserGetObjectInformation(
2206 PVOID pvInformation
,
2208 PDWORD nLengthNeeded
);
2212 NtUserGetOpenClipboardWindow(VOID
);
2216 NtUserGetPriorityClipboardFormat(
2217 UINT
*paFormatPriorityList
,
2222 NtUserGetProcessWindowStation(VOID
);
2226 NtUserGetRawInputBuffer(
2233 NtUserGetRawInputData(
2234 HRAWINPUT hRawInput
,
2242 NtUserGetRawInputDeviceInfo(
2250 NtUserGetRawInputDeviceList(
2251 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2252 PUINT puiNumDevices
,
2257 NtUserGetRegisteredRawInputDevices(
2258 PRAWINPUTDEVICE pRawInputDevices
,
2259 PUINT puiNumDevices
,
2264 NtUserGetScrollBarInfo(
2267 PSCROLLBARINFO psbi
);
2271 NtUserGetThreadDesktop(
2276 enum ThreadStateRoutines
2278 THREADSTATE_GETTHREADINFO
,
2279 THREADSTATE_INSENDMESSAGE
,
2280 THREADSTATE_FOCUSWINDOW
,
2281 THREADSTATE_ACTIVEWINDOW
,
2282 THREADSTATE_CAPTUREWINDOW
,
2283 THREADSTATE_PROGMANWINDOW
,
2284 THREADSTATE_TASKMANWINDOW
,
2285 THREADSTATE_GETMESSAGETIME
,
2286 THREADSTATE_GETINPUTSTATE
,
2287 THREADSTATE_UPTIMELASTREAD
,
2288 THREADSTATE_FOREGROUNDTHREAD
,
2289 THREADSTATE_GETCURSOR
2294 NtUserGetThreadState(
2299 NtUserGetTitleBarInfo(
2304 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2320 NtUserGetWindowPlacement(
2322 WINDOWPLACEMENT
*lpwndpl
);
2327 HINSTANCE hInstance
,
2328 PUNICODE_STRING ClassName
);
2332 NtUserHardErrorControl(
2339 NtUserImpersonateDdeClientWindow(
2347 HANDLE hPowerRequestEvent
,
2348 HANDLE hMediaRequestEvent
);
2352 NtUserInitializeClientPfnArrays(
2353 PPFNCLIENT pfnClientA
,
2354 PPFNCLIENT pfnClientW
,
2355 PPFNCLIENTWORKER pfnClientWorker
,
2356 HINSTANCE hmodUser
);
2376 NtUserInternalGetWindowText(
2383 NtUserInvalidateRect(
2390 NtUserInvalidateRgn(
2397 NtUserIsClipboardFormatAvailable(
2410 NtUserLoadKeyboardLayoutEx(
2413 IN PUNICODE_STRING puszKeyboardName
,
2415 IN PUNICODE_STRING puszKLID
,
2421 NtUserLockWindowStation(
2422 HWINSTA hWindowStation
);
2426 NtUserLockWindowUpdate(
2431 NtUserLockWorkStation(VOID
);
2435 NtUserMapVirtualKeyEx( UINT keyCode
,
2440 typedef struct tagDOSENDMESSAGE
2446 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2455 ULONG_PTR ResultInfo
,
2456 DWORD dwType
, // FNID_XX types
2463 UINT cmd
, // Wine SW_ commands
2468 NtUserMNDragLeave(VOID
);
2478 NtUserModifyUserStartupInfoFlags(
2495 NtUserNotifyIMEStatus(
2502 NtUserNotifyProcessCreate(
2503 HANDLE NewProcessId
,
2504 HANDLE SourceThreadId
,
2510 NtUserNotifyWinEvent(
2518 NtUserOpenClipboard(
2525 POBJECT_ATTRIBUTES ObjectAttributes
,
2527 ACCESS_MASK dwDesiredAccess
);
2531 NtUserOpenInputDesktop(
2534 ACCESS_MASK dwDesiredAccess
);
2538 NtUserOpenWindowStation(
2539 POBJECT_ATTRIBUTES ObjectAttributes
,
2540 ACCESS_MASK dwDesiredAccess
);
2558 NtUserPeekMessage( PMSG pMsg
,
2574 NtUserPostThreadMessage(
2589 NtUserProcessConnect(
2591 OUT PUSERCONNECT pUserConnect
,
2592 IN DWORD dwSize
); // sizeof(USERCONNECT)
2596 NtUserQueryInformationThread(
2605 NtUserQueryInputContext(
2611 NtUserQuerySendMessage(
2616 NtUserQueryUserCounters(
2623 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2624 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2625 #define QUERY_WINDOW_ACTIVE 0x02
2626 #define QUERY_WINDOW_FOCUS 0x03
2627 #define QUERY_WINDOW_ISHUNG 0x04
2628 #define QUERY_WINDOW_REAL_ID 0x05
2629 #define QUERY_WINDOW_FOREGROUND 0x06
2638 NtUserRealInternalGetMessage(
2648 NtUserRealChildWindowFromPoint(
2655 NtUserRealWaitMessageEx(
2664 CONST RECT
*lprcUpdate
,
2671 NtUserRegisterClassExWOW(
2673 PUNICODE_STRING pustrClassName
,
2674 PUNICODE_STRING pustrCNVersion
,
2675 PCLSMENUNAME pClassMenuName
,
2682 NtUserRegisterRawInputDevices(
2683 IN PCRAWINPUTDEVICE pRawInputDevices
,
2684 IN UINT uiNumDevices
,
2689 NtUserRegisterUserApiHook(
2690 PUNICODE_STRING m_dllname1
,
2691 PUNICODE_STRING m_funname1
,
2697 NtUserRegisterHotKey(HWND hWnd
,
2704 NtUserRegisterTasklist(
2708 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2712 NtUserRemoteConnect(
2719 NtUserRemoteRedrawRectangle(
2727 NtUserRemoteRedrawScreen(VOID
);
2731 NtUserRemoteStopScreenUpdates(VOID
);
2734 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2738 NtUserResolveDesktop(
2746 NtUserResolveDesktopForWOW(
2763 CONST RECT
*lprcScroll
,
2764 CONST RECT
*lprcClip
,
2769 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2770 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2780 NtUserSetActiveWindow(HWND Wnd
);
2784 NtUserSetAppImeLevel(
2789 NtUserSetCapture(HWND Wnd
);
2795 ULONG_PTR dwNewLong
,
2807 NtUserSetClipboardData(
2814 NtUserSetClipboardViewer(
2815 HWND hWndNewViewer
);
2819 NtUserSelectPalette(
2822 BOOL ForceBackground
2827 NtUserSetConsoleReserveKeys(
2838 NtUserSetCursorContents(
2840 PICONINFO IconInfo
);
2842 #ifdef NEW_CURSORICON
2845 NtUserSetCursorIconData(
2846 _In_ HCURSOR hCursor
,
2847 _In_ PUNICODE_STRING pustrModule
,
2848 _In_ PUNICODE_STRING puSrcName
,
2849 _In_
const CURSORDATA
* pCursorData
);
2851 typedef struct _tagFINDEXISTINGCURICONPARAM
2856 } FINDEXISTINGCURICONPARAM
;
2860 NtUserFindExistingCursorIcon(
2861 _In_ PUNICODE_STRING pustrModule
,
2862 _In_ PUNICODE_STRING pustrRsrc
,
2863 _In_ FINDEXISTINGCURICONPARAM
* param
);
2867 NtUserSetCursorIconData(
2877 NtUserFindExistingCursorIcon(
2911 NtUserSetImeOwnerWindow(
2917 NtUserSetInformationProcess(
2925 NtUserSetInformationThread(
2926 IN HANDLE ThreadHandle
,
2927 IN USERTHREADINFOCLASS ThreadInformationClass
,
2928 IN PVOID ThreadInformation
,
2929 IN ULONG ThreadInformationLength
2934 NtUserSetInternalWindowPos(
2942 NtUserSetKeyboardState(
2947 NtUserSetLayeredWindowAttributes(
2955 NtUserSetLogonNotifyWindow(
2960 NtUserSetObjectInformation(
2963 PVOID pvInformation
,
2970 HWND hWndNewParent
);
2974 NtUserSetProcessWindowStation(
2975 HWINSTA hWindowStation
);
2978 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2988 NtUserSetScrollInfo(
2996 NtUserSetShellWindowEx(
2998 HWND hwndShellListView
);
3004 IN CONST INT
*lpaElements
,
3005 IN CONST COLORREF
*lpaRgbValues
,
3010 NtUserSetSystemCursor(
3016 NtUserSetThreadDesktop(
3021 NtUserSetThreadState(
3027 NtUserSetSystemTimer
3032 TIMERPROC lpTimerFunc
3037 NtUserSetThreadLayoutHandles(
3048 TIMERPROC lpTimerFunc
3053 NtUserSetWindowFNID(
3059 NtUserSetWindowLong(
3067 NtUserSetWindowPlacement(
3069 WINDOWPLACEMENT
*lpwndpl
);
3072 NTAPI
NtUserSetWindowPos(
3074 HWND hWndInsertAfter
,
3091 NtUserSetWindowsHookAW(
3098 NtUserSetWindowsHookEx(
3100 PUNICODE_STRING ModuleName
,
3108 NtUserSetWindowStationUser(
3115 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
3119 NtUserSetWinEventHook(
3122 HMODULE hmodWinEventProc
,
3123 PUNICODE_STRING puString
,
3124 WINEVENTPROC lpfnWinEventProc
,
3141 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
3151 NtUserShowWindowAsync(
3157 NtUserSoundSentry(VOID
);
3161 NtUserSwitchDesktop(
3166 NtUserSystemParametersInfo(
3174 NtUserTestForInteractiveUser(
3190 NtUserTrackMouseEvent(
3191 LPTRACKMOUSEEVENT lpEventTrack
);
3195 NtUserTranslateAccelerator(
3202 NtUserTranslateMessage(
3208 NtUserUnhookWindowsHookEx(
3213 NtUserUnhookWinEvent(
3214 HWINEVENTHOOK hWinEventHook
);
3218 NtUserUnloadKeyboardLayout(
3223 NtUserUnlockWindowStation(
3224 HWINSTA hWindowStation
);
3228 NtUserUnregisterClass(
3229 PUNICODE_STRING ClassNameOrAtom
,
3230 HINSTANCE hInstance
,
3231 PCLSMENUNAME pClassMenuName
);
3235 NtUserUnregisterHotKey(HWND hWnd
,
3240 NtUserUnregisterUserApiHook(VOID
);
3244 NtUserUpdateInputContext(
3251 NtUserUpdateInstance(
3258 NtUserUpdateLayeredWindow(
3266 BLENDFUNCTION
*pblend
,
3272 NtUserUpdatePerUserSystemParameters(
3278 NtUserUserHandleGrantAccess(
3279 IN HANDLE hUserHandle
,
3285 NtUserValidateHandleSecure(
3293 CONST RECT
*lpRect
);
3297 NtUserValidateTimerCallback(
3311 NtUserWaitForInputIdle(
3313 IN DWORD dwMilliseconds
,
3314 IN BOOL Unknown2
); // Always FALSE
3318 NtUserWaitForMsgAndEvent(
3323 NtUserWaitMessage(VOID
);
3327 NtUserWin32PoolAllocationStats(
3337 NtUserWindowFromPoint(
3343 NtUserYieldTask(VOID
);
3345 /* lParam of DDE messages */
3346 typedef struct tagKMDDEEXECUTEDATA
3350 /* BYTE Data[DataSize] */
3351 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3353 typedef struct tagKMDDELPARAM
3357 } KMDDELPARAM
, *PKMDDELPARAM
;
3364 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3367 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3368 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3369 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3370 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3371 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3372 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3373 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3374 #define TWOPARAM_ROUTINE_EXITREACTOS 0xfffd0051
3375 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3376 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0053
3377 #define MSQ_STATE_CAPTURE 0x1
3378 #define MSQ_STATE_ACTIVE 0x2
3379 #define MSQ_STATE_FOCUS 0x3
3380 #define MSQ_STATE_MENUOWNER 0x4
3381 #define MSQ_STATE_MOVESIZE 0x5
3382 #define MSQ_STATE_CARET 0x6
3383 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3384 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3385 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3389 NtUserGetMonitorInfo(
3390 IN HMONITOR hMonitor
,
3391 OUT LPMONITORINFO pMonitorInfo
);
3393 /* Should be done in usermode */
3395 /* (other FocusedItem values give the position of the focused item) */
3396 #define NO_SELECTED_ITEM 0xffff
3398 typedef struct tagROSMENUINFO
3400 /* ----------- MENUINFO ----------- */
3406 DWORD dwContextHelpID
;
3407 ULONG_PTR dwMenuData
;
3408 /* ----------- Extra ----------- */
3409 ULONG fFlags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3410 UINT iItem
; /* Currently focused item */
3411 UINT cItems
; /* Number of items in the menu */
3412 WORD cxMenu
; /* Width of the whole menu */
3413 WORD cyMenu
; /* Height of the whole menu */
3415 PWND spwndNotify
; /* window receiving the messages for ownerdraw */
3420 HMENU Self
; /* Handle of this menu */
3421 HWND Wnd
; /* Window containing the menu */
3422 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3423 } ROSMENUINFO
, *PROSMENUINFO
;
3425 typedef struct tagROSMENUITEMINFO
3427 /* ----------- MENUITEMINFOW ----------- */
3434 HBITMAP hbmpChecked
;
3435 HBITMAP hbmpUnchecked
;
3440 /* ----------- Extra ----------- */
3441 RECT Rect
; /* Item area (relative to menu window) */
3442 UINT dxTab
; /* X position of text after Tab */
3443 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3444 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3445 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3449 NtUserMonitorFromPoint(
3455 NtUserMonitorFromRect(
3461 NtUserMonitorFromWindow(
3465 typedef struct _SETSCROLLBARINFO
3469 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3470 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3474 NtUserSetScrollBarInfo(
3477 SETSCROLLBARINFO
*info
);
3481 #endif /* __WIN32K_NTUSER_H */