1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
9 typedef enum _USERTHREADINFOCLASS
11 UserThreadShutdownInformation
,
14 UserThreadWOWInformation
,
16 UserThreadInitiateShutdown
,
17 UserThreadEndShutdown
,
18 UserThreadUseActiveDesktop
,
20 UserThreadRestoreDesktop
,
22 } USERTHREADINFOCLASS
;
24 typedef struct _LARGE_UNICODE_STRING
27 ULONG MaximumLength
:31;
30 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
32 typedef struct _LARGE_STRING
35 ULONG MaximumLength
:31;
38 } LARGE_STRING
, *PLARGE_STRING
;
40 // Based on ANSI_STRING
42 typedef struct _LARGE_ANSI_STRING
45 ULONG MaximumLength
:31;
48 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
50 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
51 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
52 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
54 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
56 typedef struct _DESKTOPINFO
62 LIST_ENTRY aphkStart
[NB_HOOKS
];
68 PPROCESSINFO ppiShellProcess
;
75 UINT LastInputWasKbd
: 1;
79 WCHAR szDesktopName
[1];
80 } DESKTOPINFO
, *PDESKTOPINFO
;
82 #define CTI_INSENDMESSAGE 0x0002
84 typedef struct _CLIENTTHREADINFO
89 WORD fsWakeBitsJournal
;
91 ULONG tickLastMsgChecked
;
93 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
101 typedef struct _THROBJHEAD
105 } THROBJHEAD
, *PTHROBJHEAD
;
107 typedef struct _THRDESKHEAD
110 struct _DESKTOP
*rpdesk
;
112 } THRDESKHEAD
, *PTHRDESKHEAD
;
114 typedef struct _PROCDESKHEAD
118 struct _DESKTOP
*rpdesk
;
120 } PROCDESKHEAD
, *PPROCDESKHEAD
;
122 typedef struct _PROCMARKHEAD
127 } PROCMARKHEAD
, *PPROCMARKHEAD
;
129 #define UserHMGetHandle(obj) ((obj)->head.h)
131 /* Window Client Information structure */
134 #define WEF_SETBYWNDPTI 0x0001
136 typedef struct tagHOOK
139 struct tagHOOK
*phkNext
; /* This is for user space. */
140 int HookId
; /* Hook table index */
142 ULONG flags
; /* Some internal flags */
144 PTHREADINFO ptiHooked
;
145 struct _DESKTOP
*rpdesk
;
147 LIST_ENTRY Chain
; /* Hook chain entry */
148 struct _ETHREAD
* Thread
; /* Thread owning the hook */
149 HOOKPROC Proc
; /* Hook function */
150 BOOLEAN Ansi
; /* Is it an Ansi hook? */
151 UNICODE_STRING ModuleName
; /* Module name for global hooks */
154 /* THREADINFO Flags */
155 #define TIF_INCLEANUP 0x00000001
156 #define TIF_16BIT 0x00000002
157 #define TIF_SYSTEMTHREAD 0x00000004
158 #define TIF_CSRSSTHREAD 0x00000008
159 #define TIF_TRACKRECTVISIBLE 0x00000010
160 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
161 #define TIF_DONTATTACHQUEUE 0x00000040
162 #define TIF_DONTJOURNALATTACH 0x00000080
163 #define TIF_WOW64 0x00000100
164 #define TIF_INACTIVATEAPPMSG 0x00000200
165 #define TIF_SPINNING 0x00000400
166 #define TIF_PALETTEAWARE 0x00000800
167 #define TIF_SHAREDWOW 0x00001000
168 #define TIF_FIRSTIDLE 0x00002000
169 #define TIF_WAITFORINPUTIDLE 0x00004000
170 #define TIF_MOVESIZETRACKING 0x00008000
171 #define TIF_VDMAPP 0x00010000
172 #define TIF_DOSEMULATOR 0x00020000
173 #define TIF_GLOBALHOOKER 0x00040000
174 #define TIF_DELAYEDEVENT 0x00080000
175 #define TIF_MSGPOSCHANGED 0x00100000
176 #define TIF_SHUTDOWNCOMPLETE 0x00200000
177 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
178 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
179 #define TIF_GUITHREADINITIALIZED 0x02000000
180 #define TIF_DISABLEIME 0x04000000
181 #define TIF_INGETTEXTLENGTH 0x08000000
182 #define TIF_ANSILENGTH 0x10000000
183 #define TIF_DISABLEHOOKS 0x20000000
185 typedef struct _CALLBACKWND
189 } CALLBACKWND
, *PCALLBACKWND
;
191 #define CI_TRANSACTION 0x00000001
192 #define CI_QUEUEMSG 0x00000002
193 #define CI_WOW 0x00000004
194 #define CI_INITTHREAD 0x00000008
195 #define CI_CURTHPRHOOK 0x00000010
196 #define CI_CLASSESREGISTERED 0x00000020
197 #define CI_IMMACTIVATE 0x00000040
199 typedef struct _CLIENTINFO
205 DWORD dwCompatFlags2
;
206 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
207 PDESKTOPINFO pDeskInfo
;
208 ULONG_PTR ulClientDelta
;
211 CALLBACKWND CallbackWnd
;
213 INT cInDDEMLCallback
;
214 PCLIENTTHREADINFO pClientThreadInfo
;
215 ULONG_PTR dwHookData
;
218 DWORD dwAsyncKeyCache
;
219 BYTE afAsyncKeyState
[8];
220 BYTE afAsyncKeyStateRecentDow
[8];
225 LPDWORD lpdwRegisteredClasses
;
226 ULONG Win32ClientInfo3
[27];
227 /* It's just a pointer reference not to be used w the structure in user space. */
229 } CLIENTINFO
, *PCLIENTINFO
;
231 /* Make sure it fits into the TEB */
232 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
234 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
236 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
237 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
238 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
240 /* Menu Item fType. */
241 #define MFT_RTOL 0x6000
243 typedef struct tagITEM
248 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
250 HANDLE hbmpUnchecked
;
251 USHORT
* lpstr
; /* Item text pointer. */
253 DWORD_PTR dwItemData
;
254 ULONG xItem
; /* Item position. left */
255 ULONG yItem
; /* " top */
256 ULONG cxItem
; /* Item Size Width */
257 ULONG cyItem
; /* " Height */
258 ULONG dxTab
; /* X position of text after Tab */
259 ULONG ulX
; /* underline.. start position */
260 ULONG ulWidth
; /* underline.. width */
261 HBITMAP hbmp
; /* bitmap */
262 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
263 INT cyBmp
; /* Height " */
266 typedef struct tagMENULIST
268 struct tagMENULIST
* pNext
;
269 struct tagMENU
* pMenu
;
270 } MENULIST
, *PMENULIST
;
272 /* Menu fFlags, upper byte is MNS_X style flags. */
273 #define MNF_POPUP 0x0001
274 #define MNF_UNDERLINE 0x0004
275 #define MNF_INACTIVE 0x0010
276 #define MNF_RTOL 0x0020
277 #define MNF_DESKTOPMN 0x0040
278 #define MNF_SYSDESKMN 0x0080
279 #define MNF_SYSSUBMENU 0x0100
281 typedef struct tagMENU
284 ULONG fFlags
; /* [Style flags | Menu flags] */
285 INT iItem
; /* nPos of selected item, if -1 not selected. */
286 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
287 UINT cItems
; /* Number of items in the menu */
288 ULONG cxMenu
; /* Width of the whole menu */
289 ULONG cyMenu
; /* Height of the whole menu */
290 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
291 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
292 PITEM rgItems
; /* Array of menu items */
293 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
294 DWORD dwContextHelpId
;
295 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
296 DWORD_PTR dwMenuData
; /* application defined value */
297 HBRUSH hbrBack
; /* brush for menu background */
298 INT iTop
; /* Current scroll position Top */
299 INT iMaxTop
; /* Current scroll position Max Top */
300 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
303 typedef struct _REGISTER_SYSCLASS
305 /* This is a reactos specific class used to initialize the
306 system window classes during user32 initialization */
315 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
317 typedef struct _CLSMENUNAME
319 LPSTR pszClientAnsiMenuName
;
320 LPWSTR pwszClientUnicodeMenuName
;
321 PUNICODE_STRING pusMenuName
;
322 } CLSMENUNAME
, *PCLSMENUNAME
;
324 typedef struct tagSBDATA
332 typedef struct tagSBINFO
341 UserGetCPDA2U
= 0x01, // " Unicode "
342 UserGetCPDU2A
= 0X02, // " Ansi "
343 UserGetCPDClass
= 0X10,
344 UserGetCPDWindow
= 0X20,
345 UserGetCPDDialog
= 0X40,
346 UserGetCPDWndtoCls
= 0X80
349 typedef struct _CALLPROCDATA
352 struct _CALLPROCDATA
*spcpdNext
;
353 WNDPROC pfnClientPrevious
;
355 } CALLPROCDATA
, *PCALLPROCDATA
;
357 #define CSF_SERVERSIDEPROC 0x0001
358 #define CSF_ANSIPROC 0x0002
359 #define CSF_WOWDEFERDESTROY 0x0004
360 #define CSF_SYSTEMCLASS 0x0008
361 #define CSF_WOWCLASS 0x0010
362 #define CSF_WOWEXTRA 0x0020
363 #define CSF_CACHEDSMICON 0x0040
364 #define CSF_WIN40COMPAT 0x0080
368 struct _CLS
*pclsNext
;
369 RTL_ATOM atomClassName
;
370 ATOM atomNVClassName
;
372 struct _DESKTOP
*rpdeskParent
;
375 PSTR lpszClientAnsiMenuName
; // For client use
376 PWSTR lpszClientUnicodeMenuName
; // " " "
377 PCALLPROCDATA spcpdFirst
;
378 struct _CLS
*pclsBase
;
379 struct _CLS
*pclsClone
;
380 ULONG cWndReferenceCount
;
386 HANDLE hIcon
; /* FIXME - Use pointer! */
388 HANDLE hCursor
; /* FIXME - Use pointer! */
390 HBRUSH hbrBackground
;
391 PWSTR lpszMenuName
; // kernel use
392 PSTR lpszAnsiClassName
; // "
393 HANDLE hIconSm
; /* FIXME - Use pointer! */
396 UINT Unicode
: 1; // !CSF_ANSIPROC
397 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
398 UINT MenuNameIsString
: 1;
403 typedef struct _SBINFOEX
405 SCROLLBARINFO ScrollBarInfo
;
406 SCROLLINFO ScrollInfo
;
407 } SBINFOEX
, *PSBINFOEX
;
409 // State Flags !Not Implemented!
410 #define WNDS_HASMENU 0X00000001
411 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
412 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
413 #define WNDS_HASCAPTION 0X00000008
414 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
415 #define WNDS_MSGBOX 0X00000020
416 #define WNDS_ACTIVEFRAME 0X00000040
417 #define WNDS_HASSPB 0X00000080
418 #define WNDS_NONCPAINT 0X00000100
419 #define WNDS_SENDERASEBACKGROUND 0X00000200
420 #define WNDS_ERASEBACKGROUND 0X00000400
421 #define WNDS_SENDNCPAINT 0X00000800
422 #define WNDS_INTERNALPAINT 0X00001000
423 #define WNDS_UPDATEDIRTY 0X00002000
424 #define WNDS_HIDDENPOPUP 0X00004000
425 #define WNDS_FORCEMENUDRAW 0X00008000
426 #define WNDS_DIALOGWINDOW 0X00010000
427 #define WNDS_HASCREATESTRUCTNAME 0X00020000
428 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
429 #define WNDS_ANSIWINDOWPROC 0x00080000
430 #define WNDS_BEGINGACTIVATED 0x00100000
431 #define WNDS_HASPALETTE 0x00200000
432 #define WNDS_PAINTNOTPROCESSED 0x00400000
433 #define WNDS_SYNCPAINTPENDING 0x00800000
434 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
435 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
436 #define WNDS_TOGGLETOPMOST 0x04000000
437 #define WNDS_REDRAWIFHUNG 0x08000000
438 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
439 #define WNDS_ANSICREATOR 0x20000000
440 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
441 #define WNDS_DESTROYED 0x80000000
443 // State2 Flags !Not Implemented!
444 #define WNDS2_WMPAINTSENT 0X00000001
445 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
446 #define WNDS2_STARTPAINT 0X00000004
447 #define WNDS2_OLDUI 0X00000008
448 #define WNDS2_HASCLIENTEDGE 0X00000010
449 #define WNDS2_BOTTOMMOST 0X00000020
450 #define WNDS2_FULLSCREEN 0X00000040
451 #define WNDS2_INDESTROY 0X00000080
452 #define WNDS2_WIN31COMPAT 0X00000100
453 #define WNDS2_WIN40COMPAT 0X00000200
454 #define WNDS2_WIN50COMPAT 0X00000400
455 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
456 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
457 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
458 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
459 #define WNDS2_HELPBUTTONDOWN 0X00008000
460 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
461 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
462 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
463 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
464 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
465 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
466 #define WNDS2_FORCENCPAINT 0X00400000
467 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
468 #define WNDS2_FULLSCREENMODE 0X01000000
469 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
470 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
471 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
472 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
473 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
476 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
477 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
478 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
479 #define WS_EX2_LINKED 0X00000008
480 #define WS_EX2_LAYEREDFORDWM 0X00000010
481 #define WS_EX2_LAYEREDLIMBO 0X00000020
482 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
483 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
484 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
485 #define WS_EX2_HASOVERLAY 0X00000200
486 #define WS_EX2_CONSOLEWINDOW 0X00000400
487 #define WS_EX2_CHILDNOACTIVATE 0X00000800
494 /* Extended style. */
498 /* Handle of the module that created the window. */
501 struct _WND
*spwndNext
;
502 struct _WND
*spwndPrev
;
503 struct _WND
*spwndParent
;
504 struct _WND
*spwndChild
;
505 struct _WND
*spwndOwner
;
509 /* Pointer to the window class. */
512 /* Property list head.*/
513 LIST_ENTRY PropListHead
;
517 /* system menu handle. */
520 /* Window menu handle or window id */
521 UINT IDMenu
; // Use spmenu
526 LARGE_UNICODE_STRING strName
;
527 /* Size of the extra data associated with the window. */
530 struct _WND
*spwndLastActive
;
531 //HIMC hImc; // Input context associated with this window.
533 //PACTIVATION_CONTEXT pActCtx;
534 //PD3DMATRIX pTransForm;
535 struct _WND
*spwndClipboardListener
;
546 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
547 /* Indicates whether the window is derived from a system class */
548 UINT InternalPosInitialized
: 1;
549 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
550 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
553 PSBINFOEX pSBInfoex
; // convert to PSBINFO
554 /* Entry in the list of thread windows. */
555 LIST_ENTRY ThreadListEntry
;
558 typedef struct _PFNCLIENT
560 WNDPROC pfnScrollBarWndProc
;
561 WNDPROC pfnTitleWndProc
;
562 WNDPROC pfnMenuWndProc
;
563 WNDPROC pfnDesktopWndProc
;
564 WNDPROC pfnDefWindowProc
;
565 WNDPROC pfnMessageWindowProc
;
566 WNDPROC pfnSwitchWindowProc
;
567 WNDPROC pfnButtonWndProc
;
568 WNDPROC pfnComboBoxWndProc
;
569 WNDPROC pfnComboListBoxProc
;
570 WNDPROC pfnDialogWndProc
;
571 WNDPROC pfnEditWndProc
;
572 WNDPROC pfnListBoxWndProc
;
573 WNDPROC pfnMDIClientWndProc
;
574 WNDPROC pfnStaticWndProc
;
575 WNDPROC pfnImeWndProc
;
576 WNDPROC pfnGhostWndProc
;
577 WNDPROC pfnHkINLPCWPSTRUCT
;
578 WNDPROC pfnHkINLPCWPRETSTRUCT
;
579 WNDPROC pfnDispatchHook
;
580 WNDPROC pfnDispatchDefWindowProc
;
581 WNDPROC pfnDispatchMessage
;
582 WNDPROC pfnMDIActivateDlgProc
;
583 } PFNCLIENT
, *PPFNCLIENT
;
586 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
587 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
590 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
592 typedef struct _PFNCLIENTWORKER
594 WNDPROC_EX pfnButtonWndProc
;
595 WNDPROC_EX pfnComboBoxWndProc
;
596 WNDPROC_EX pfnComboListBoxProc
;
597 WNDPROC_EX pfnDialogWndProc
;
598 WNDPROC_EX pfnEditWndProc
;
599 WNDPROC_EX pfnListBoxWndProc
;
600 WNDPROC_EX pfnMDIClientWndProc
;
601 WNDPROC_EX pfnStaticWndProc
;
602 WNDPROC_EX pfnImeWndProc
;
603 WNDPROC_EX pfnGhostWndProc
;
604 WNDPROC_EX pfnCtfHookProc
;
605 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
607 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
609 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
610 #define FNID_FIRST 0x029A
611 #define FNID_SCROLLBAR 0x029A
612 #define FNID_ICONTITLE 0x029B
613 #define FNID_MENU 0x029C
614 #define FNID_DESKTOP 0x029D
615 #define FNID_DEFWINDOWPROC 0x029E
616 #define FNID_MESSAGEWND 0x029F
617 #define FNID_SWITCH 0x02A0
618 #define FNID_BUTTON 0x02A1
619 #define FNID_COMBOBOX 0x02A2
620 #define FNID_COMBOLBOX 0x02A3
621 #define FNID_DIALOG 0x02A4
622 #define FNID_EDIT 0x02A5
623 #define FNID_LISTBOX 0x02A6
624 #define FNID_MDICLIENT 0x02A7
625 #define FNID_STATIC 0x02A8
626 #define FNID_IME 0x02A9
627 #define FNID_GHOST 0x02AA
628 #define FNID_CALLWNDPROC 0x02AB
629 #define FNID_CALLWNDPROCRET 0x02AC
630 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
631 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
632 #define FNID_MB_DLGPROC 0x02AF
633 #define FNID_MDIACTIVATEDLGPROC 0x02B0
634 #define FNID_SENDMESSAGE 0x02B1
635 #define FNID_SENDMESSAGEFF 0x02B2
636 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
637 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
638 #define FNID_SENDMESSAGETIMEOUT 0x02B4
639 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
640 #define FNID_TOOLTIPS 0x02B6
641 #define FNID_SENDNOTIFYMESSAGE 0x02B7
642 #define FNID_SENDMESSAGECALLBACK 0x02B8
643 #define FNID_LAST 0x02B9
645 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
646 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
648 #define FNID_DDEML 0x2000 // Registers DDEML
649 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
650 // Seen during WM_CREATE on error exit too.
651 #define FNID_FREED 0x8000 // Window being Freed...
653 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
655 #define GETPFNCLIENTA(fnid)\
656 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
657 #define GETPFNCLIENTW(fnid)\
658 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
660 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
662 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
663 #define ICLS_BUTTON 0
665 #define ICLS_STATIC 2
666 #define ICLS_LISTBOX 3
667 #define ICLS_SCROLLBAR 4
668 #define ICLS_COMBOBOX 5
669 #define ICLS_MDICLIENT 6
670 #define ICLS_COMBOLBOX 7
671 #define ICLS_DDEMLEVENT 8
672 #define ICLS_DDEMLMOTHER 9
673 #define ICLS_DDEML16BIT 10
674 #define ICLS_DDEMLCLIENTA 11
675 #define ICLS_DDEMLCLIENTW 12
676 #define ICLS_DDEMLSERVERA 13
677 #define ICLS_DDEMLSERVERW 14
679 #define ICLS_GHOST 16
680 #define ICLS_DESKTOP 17
681 #define ICLS_DIALOG 18
683 #define ICLS_SWITCH 20
684 #define ICLS_ICONTITLE 21
685 #define ICLS_TOOLTIPS 22
686 #if (_WIN32_WINNT <= 0x0501)
687 #define ICLS_UNKNOWN 22
688 #define ICLS_NOTUSED 23
690 #define ICLS_SYSSHADOW 23
691 #define ICLS_HWNDMESSAGE 24
692 #define ICLS_NOTUSED 25
696 #define COLOR_LAST COLOR_MENUBAR
697 #define MAX_MB_STRINGS 11
699 #define SRVINFO_APIHOOK 0x0010
700 #define SRVINFO_METRICS 0x0020
702 typedef struct tagOEMBITMAPINFO
708 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
710 typedef struct tagMBSTRING
715 } MBSTRING
, *PMBSTRING
;
717 typedef struct tagDPISERVERINFO
719 INT gclBorder
; /* 000 */
720 HFONT hCaptionFont
; /* 004 */
721 HFONT hMsgFont
; /* 008 */
722 INT cxMsgFontChar
; /* 00C */
723 INT cyMsgFontChar
; /* 010 */
724 UINT wMaxBtnSize
; /* 014 */
725 } DPISERVERINFO
, *PDPISERVERINFO
;
727 typedef struct _PERUSERSERVERINFO
729 INT aiSysMet
[SM_CMETRICS
];
730 ULONG argbSystemUnmatched
[COLOR_LAST
+1];
731 COLORREF argbSystem
[COLOR_LAST
+1];
732 HBRUSH ahbrSystem
[COLOR_LAST
+1];
736 DWORD dwLastRITEventTickCount
;
741 UINT ucWheelScrollLines
;
742 UINT ucWheelScrollChars
;
743 INT wMaxLeftOverlapChars
;
744 INT wMaxRightOverlapChars
;
747 TEXTMETRICW tmSysFont
;
748 DPISERVERINFO dpiSystem
;
749 HICON hIconSmWindows
;
752 DWORD dwAsyncKeyCache
;
754 OEMBITMAPINFO oembmi
[93];
763 DWORD dwLastSystemRITEventTickCountUpdate
;
764 ULONG adwDBGTAGFlags
[35];
767 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
769 typedef struct tagSERVERINFO
772 ULONG_PTR cHandleEntries
;
773 PFN_FNID mpFnidPfn
[FNID_NUM
];
774 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
775 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
776 PFNCLIENT apfnClientA
;
777 PFNCLIENT apfnClientW
;
778 PFNCLIENTWORKER apfnClientWorker
;
780 ATOM atomSysClass
[ICLS_NOTUSED
+1];
781 DWORD dwDefaultHeapBase
;
782 DWORD dwDefaultHeapSize
;
784 MBSTRING MBStrings
[MAX_MB_STRINGS
];
787 ATOM atomContextHelpIdProp
;
788 ATOM atomFrostedWindowProp
;
789 CHAR acOemToAnsi
[256];
790 CHAR acAnsiToOem
[256];
791 DWORD dwInstalledEventHooks
;
793 } SERVERINFO
, *PSERVERINFO
;
796 // Server event activity bits.
797 #define SRV_EVENT_MENU 0x0001
798 #define SRV_EVENT_END_APPLICATION 0x0002
799 #define SRV_EVENT_RUNNING 0x0004
800 #define SRV_EVENT_NAMECHANGE 0x0008
801 #define SRV_EVENT_VALUECHANGE 0x0010
802 #define SRV_EVENT_STATECHANGE 0x0020
803 #define SRV_EVENT_LOCATIONCHANGE 0x0040
804 #define SRV_EVENT_CREATE 0x8000
806 typedef struct _PROPLISTITEM
810 } PROPLISTITEM
, *PPROPLISTITEM
;
812 typedef struct _PROPERTY
814 LIST_ENTRY PropListEntry
;
817 } PROPERTY
, *PPROPERTY
;
819 typedef struct _BROADCASTPARM
826 } BROADCASTPARM
, *PBROADCASTPARM
;
828 PTHREADINFO
GetW32ThreadInfo(VOID
);
829 PPROCESSINFO
GetW32ProcessInfo(VOID
);
831 typedef struct _WNDMSG
837 typedef struct _SHAREDINFO
839 PSERVERINFO psi
; // global Server Info
840 PVOID aheList
; // Handle Entry List
841 PVOID pDispInfo
; // global PDISPLAYINFO pointer
842 ULONG_PTR ulSharedDelta
; // Heap delta
843 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
844 WNDMSG DefWindowMsgs
;
845 WNDMSG DefWindowSpecMsgs
;
846 } SHAREDINFO
, *PSHAREDINFO
;
848 typedef struct _USERCONNECT
851 ULONG ulCurrentVersion
;
852 DWORD dwDispatchCount
;
854 } USERCONNECT
, *PUSERCONNECT
;
858 NtUserAssociateInputContext(
889 NtUserCtxDisplayIOCtl(
908 NtUserDrawMenuBarTemp(
917 NtUserEnableMenuItem(
928 NtUserGetMenuBarInfo(
942 NtUserGetMenuItemRect(
956 NtUserHiliteMenuItem(
964 NtUserMenuItemFromPoint(
986 NtUserSetMenuContextHelpId(
988 DWORD dwContextHelpId
);
992 NtUserSetMenuDefaultItem(
999 NtUserSetMenuFlagRtoL(
1004 NtUserSetSystemMenu(
1010 NtUserThunkedMenuInfo(
1016 NtUserThunkedMenuItemInfo(
1021 LPMENUITEMINFOW lpmii
,
1022 PUNICODE_STRING lpszCaption
);
1026 NtUserTrackPopupMenuEx(
1036 NtUserActivateKeyboardLayout(
1042 NtUserAlterWindowStyle(
1049 NtUserAttachThreadInput(
1051 IN DWORD idAttachTo
,
1055 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1076 NtUserBuildHwndList(
1086 NtUserBuildNameList(
1090 PULONG pRequiredSize
);
1094 NtUserBuildPropList(
1100 /* apfnSimpleCall indices from Windows XP SP 2 */
1101 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1102 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1104 enum SimpleCallRoutines
1106 NOPARAM_ROUTINE_CREATEMENU
,
1107 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1108 #if (WIN32K_VERSION >= NTDDI_VISTA)
1109 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1110 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1111 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1112 NOPARAM_ROUTINE_DESTROY_CARET
,
1114 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1115 #if (WIN32K_VERSION < NTDDI_VISTA)
1116 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1117 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1118 NOPARAM_ROUTINE_DESTROY_CARET
,
1120 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1121 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1122 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1123 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1124 #if (WIN32K_VERSION >= NTDDI_VISTA)
1125 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1127 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1129 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1130 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1131 #if (WIN32K_VERSION >= NTDDI_VISTA)
1132 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1133 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1135 NOPARAM_ROUTINE_RELEASECAPTURE
,
1136 NOPARAM_ROUTINE_RESETDBLCLICK
,
1137 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1138 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1139 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1140 NOPARAM_ROUTINE_REMOTELOGOFF
,
1141 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1142 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1143 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1144 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1145 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1146 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1147 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1148 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1149 #if (WIN32K_VERSION >= NTDDI_VISTA)
1150 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1152 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1153 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1154 #if (WIN32K_VERSION < NTDDI_VISTA)
1155 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1157 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1158 #if (WIN32K_VERSION >= NTDDI_VISTA)
1159 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1161 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1162 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1163 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1164 #if (WIN32K_VERSION < NTDDI_VISTA)
1165 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1167 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1168 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1169 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1170 #if (WIN32K_VERSION < NTDDI_VISTA)
1171 ONEPARAM_ROUTINE_GETCURSORPOS
,
1173 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1174 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1175 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1176 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1177 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1178 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1179 #if (WIN32K_VERSION < NTDDI_VISTA)
1180 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1182 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1183 ONEPARAM_ROUTINE_LOADFONTS
,
1184 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1185 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1186 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1187 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1188 #if (WIN32K_VERSION < NTDDI_VISTA)
1189 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1191 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1192 ONEPARAM_ROUTINE_REGISTERLPK
,
1193 #if (WIN32K_VERSION >= NTDDI_VISTA)
1194 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1196 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1197 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1198 ONEPARAM_ROUTINE_RELEASEDC
,
1199 #if (WIN32K_VERSION >= NTDDI_VISTA)
1200 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1202 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1203 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1204 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1205 #if (WIN32K_VERSION < NTDDI_VISTA)
1206 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1208 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1209 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1210 #if (WIN32K_VERSION >= NTDDI_VISTA)
1211 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1213 ONEPARAM_ROUTINE_SHOWCURSOR
,
1214 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1215 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1216 X_ROUTINE_WOWMODULEUNLOAD
,
1217 #if (WIN32K_VERSION < NTDDI_VISTA)
1218 X_ROUTINE_REMOTENOTIFY
,
1220 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1221 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1222 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1223 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1224 HWND_ROUTINE_SETMSGBOX
,
1225 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1226 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1227 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1228 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1229 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1230 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1231 HWNDPARAM_ROUTINE_SETVISIBLE
,
1232 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1233 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1234 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1235 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1236 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1237 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1238 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1239 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1240 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1241 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1242 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1243 HWNDLOCK_ROUTINE_SETSYSMENU
,
1244 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1245 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1246 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1247 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1248 TWOPARAM_ROUTINE_REDRAWTITLE
,
1249 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1250 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1251 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1252 TWOPARAM_ROUTINE_VALIDATERGN
,
1253 #if (WIN32K_VERSION >= NTDDI_VISTA)
1254 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1255 TWOPARAM_ROUTINE_GETCURSORPOS
,
1257 TWOPARAM_ROUTINE_GETHDEVNAME
,
1258 TWOPARAM_ROUTINE_INITANSIOEM
,
1259 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1260 #if (WIN32K_VERSION >= NTDDI_VISTA)
1261 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1263 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1264 #if (WIN32K_VERSION >= NTDDI_VISTA)
1265 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1267 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1269 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1270 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1271 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1272 TWOPARAM_ROUTINE_SETCARETPOS
,
1273 TWOPARAM_ROUTINE_SETCURSORPOS
,
1274 #if (WIN32K_VERSION >= NTDDI_VISTA)
1275 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1277 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1278 TWOPARAM_ROUTINE_WOWCLEANUP
1301 NtUserCallHwndParam(
1308 NtUserCallHwndParamLock(
1315 NtUserCallMsgFilter(
1321 NtUserCallNextHookEx(
1347 NtUserChangeClipboardChain(
1353 NtUserChangeDisplaySettings(
1354 PUNICODE_STRING lpszDeviceName
,
1355 LPDEVMODEW lpDevMode
,
1362 NtUserCheckDesktopByThreadId(
1367 NtUserCheckWindowThreadDesktop(
1374 NtUserCheckImeHotKey(
1379 NtUserChildWindowFromPointEx(
1392 NtUserCloseClipboard(VOID
);
1401 NtUserCloseWindowStation(
1406 NtUserConsoleControl(
1413 NtUserConvertMemHandle(
1419 NtUserCopyAcceleratorTable(
1426 NtUserCountClipboardFormats(VOID
);
1430 NtUserCreateAcceleratorTable(
1432 SIZE_T EntriesCount
);
1444 NtUserCreateDesktop(
1445 POBJECT_ATTRIBUTES poa
,
1446 PUNICODE_STRING lpszDesktopDevice
,
1449 ACCESS_MASK dwDesiredAccess
);
1453 NtUserCreateInputContext(
1458 NtUserCreateLocalMemHandle(
1466 NtUserCreateWindowEx(
1468 PLARGE_STRING plstrClassName
,
1469 PLARGE_STRING plstrClsVersion
,
1470 PLARGE_STRING plstrWindowName
,
1478 HINSTANCE hInstance
,
1485 NtUserCreateWindowStation(
1486 POBJECT_ATTRIBUTES ObjectAttributes
,
1487 ACCESS_MASK dwDesiredAccess
,
1496 NtUserDdeGetQualityOfService(
1499 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1503 NtUserDdeInitialize(
1512 NtUserDdeSetQualityOfService(
1514 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1515 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1518 NtUserDeferWindowPos(
1521 HWND WndInsertAfter
,
1529 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1533 NtUserDestroyAcceleratorTable(
1538 NtUserDestroyCursor(
1544 NtUserDestroyInputContext(
1548 NtUserDestroyWindow(HWND Wnd
);
1552 NtUserDisableThreadIme(
1557 NtUserDispatchMessage(PMSG pMsg
);
1576 NtUserDrawAnimatedRects(
1592 NtUserDrawCaptionTemp(
1598 const PUNICODE_STRING str
,
1601 // Used with NtUserDrawIconEx, last parameter.
1602 typedef struct _DRAWICONEXDATA
1608 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1620 HBRUSH hbrFlickerFreeDraw
,
1627 NtUserEmptyClipboard(VOID
);
1631 NtUserEnableScrollBar(
1638 NtUserEndDeferWindowPosEx(
1643 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1647 NtUserEnumDisplayDevices (
1648 PUNICODE_STRING lpDevice
, /* device name */
1649 DWORD iDevNum
, /* display device */
1650 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1651 DWORD dwFlags
); /* reserved */
1655 NtUserEnumDisplayMonitors (
1658 MONITORENUMPROC lpfnEnum,
1660 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1663 NtUserEnumDisplayMonitors(
1664 OPTIONAL IN HDC hDC
,
1665 OPTIONAL IN LPCRECT pRect
,
1666 OPTIONAL OUT HMONITOR
*hMonitorList
,
1667 OPTIONAL OUT LPRECT monitorRectList
,
1668 OPTIONAL IN DWORD listSize
);
1673 NtUserEnumDisplaySettings(
1674 PUNICODE_STRING lpszDeviceName
,
1676 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1686 NtUserExcludeUpdateRgn(
1700 NtUserFindExistingCursorIcon(
1710 HWND hwndChildAfter
,
1711 PUNICODE_STRING ucClassName
,
1712 PUNICODE_STRING ucWindowName
,
1718 NtUserFlashWindowEx(
1719 IN PFLASHWINFO pfwi
);
1723 NtUserGetAltTabInfo(
1732 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1736 NtUserGetAppImeLevel(
1741 NtUserGetAsyncKeyState(
1752 NtUserGetCaretBlinkTime(VOID
);
1760 NtUserGetClassInfo(HINSTANCE hInstance
,
1761 PUNICODE_STRING ClassName
,
1763 LPWSTR
*ppszMenuName
,
1768 NtUserGetClassName(HWND hWnd
,
1769 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1770 PUNICODE_STRING ClassName
);
1774 NtUserGetClipboardData(
1780 NtUserGetClipboardFormatName(
1782 PUNICODE_STRING FormatName
,
1787 NtUserGetClipboardOwner(VOID
);
1791 NtUserGetClipboardSequenceNumber(VOID
);
1795 NtUserGetClipboardViewer(VOID
);
1799 NtUserGetClipCursor(
1804 NtUserGetComboBoxInfo(
1806 PCOMBOBOXINFO pcbi
);
1810 NtUserGetControlBrush(
1817 NtUserGetControlColor(
1832 NtUserGetCursorFrameInfo(
1840 NtUserGetCursorInfo(
1857 NtUserGetDoubleClickTime(VOID
);
1861 NtUserGetForegroundWindow(VOID
);
1865 NtUserGetGuiResources(
1871 NtUserGetGUIThreadInfo(
1873 LPGUITHREADINFO lpgui
);
1880 PUNICODE_STRING lpInstName
,
1881 PUNICODE_STRING lpResName
,
1909 NtUserGetInternalWindowPos(
1916 NtUserGetKeyboardLayout(
1921 NtUserGetKeyboardLayoutList(
1927 NtUserGetKeyboardLayoutName(
1932 NtUserGetKeyboardState(
1937 NtUserGetKeyboardType(
1942 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
1951 NtUserGetLayeredWindowAttributes(
1959 NtUserGetListBoxInfo(
1963 NtUserGetMessage(PMSG pMsg
,
1970 NtUserGetMouseMovePointsEx(
1972 LPMOUSEMOVEPOINT lppt
,
1973 LPMOUSEMOVEPOINT lpptBuf
,
1979 NtUserGetObjectInformation(
1982 PVOID pvInformation
,
1984 PDWORD nLengthNeeded
);
1988 NtUserGetOpenClipboardWindow(VOID
);
1992 NtUserGetPriorityClipboardFormat(
1993 UINT
*paFormatPriorityList
,
1998 NtUserGetProcessWindowStation(VOID
);
2002 NtUserGetRawInputBuffer(
2009 NtUserGetRawInputData(
2010 HRAWINPUT hRawInput
,
2018 NtUserGetRawInputDeviceInfo(
2026 NtUserGetRawInputDeviceList(
2027 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2028 PUINT puiNumDevices
,
2033 NtUserGetRegisteredRawInputDevices(
2034 PRAWINPUTDEVICE pRawInputDevices
,
2035 PUINT puiNumDevices
,
2040 NtUserGetScrollBarInfo(
2043 PSCROLLBARINFO psbi
);
2047 NtUserGetThreadDesktop(
2052 enum ThreadStateRoutines
2054 THREADSTATE_GETTHREADINFO
,
2055 THREADSTATE_INSENDMESSAGE
,
2056 THREADSTATE_FOCUSWINDOW
,
2057 THREADSTATE_ACTIVEWINDOW
,
2058 THREADSTATE_CAPTUREWINDOW
,
2059 THREADSTATE_PROGMANWINDOW
,
2060 THREADSTATE_TASKMANWINDOW
,
2061 THREADSTATE_GETMESSAGETIME
,
2062 THREADSTATE_GETINPUTSTATE
,
2063 THREADSTATE_UPTIMELASTREAD
2068 NtUserGetThreadState(
2073 NtUserGetTitleBarInfo(
2078 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2094 NtUserGetWindowPlacement(
2096 WINDOWPLACEMENT
*lpwndpl
);
2101 HINSTANCE hInstance
,
2102 PUNICODE_STRING ClassName
);
2106 NtUserHardErrorControl(
2113 NtUserImpersonateDdeClientWindow(
2121 HANDLE hPowerRequestEvent
,
2122 HANDLE hMediaRequestEvent
);
2126 NtUserInitializeClientPfnArrays(
2127 PPFNCLIENT pfnClientA
,
2128 PPFNCLIENT pfnClientW
,
2129 PPFNCLIENTWORKER pfnClientWorker
,
2130 HINSTANCE hmodUser
);
2150 NtUserInternalGetWindowText(
2157 NtUserInvalidateRect(
2164 NtUserInvalidateRgn(
2171 NtUserIsClipboardFormatAvailable(
2184 NtUserLoadKeyboardLayoutEx(
2187 IN PUNICODE_STRING puszKeyboardName
,
2189 IN PUNICODE_STRING puszKLID
,
2195 NtUserLockWindowStation(
2196 HWINSTA hWindowStation
);
2200 NtUserLockWindowUpdate(
2205 NtUserLockWorkStation(VOID
);
2209 NtUserMapVirtualKeyEx( UINT keyCode
,
2214 typedef struct tagDOSENDMESSAGE
2220 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2229 ULONG_PTR ResultInfo
,
2230 DWORD dwType
, // FNID_XX types
2237 UINT cmd
, // Wine SW_ commands
2242 NtUserMNDragLeave(VOID
);
2252 NtUserModifyUserStartupInfoFlags(
2269 NtUserNotifyIMEStatus(
2276 NtUserNotifyProcessCreate(
2284 NtUserNotifyWinEvent(
2292 NtUserOpenClipboard(
2299 POBJECT_ATTRIBUTES ObjectAttributes
,
2301 ACCESS_MASK dwDesiredAccess
);
2305 NtUserOpenInputDesktop(
2308 ACCESS_MASK dwDesiredAccess
);
2312 NtUserOpenWindowStation(
2313 POBJECT_ATTRIBUTES ObjectAttributes
,
2314 ACCESS_MASK dwDesiredAccess
);
2332 NtUserPeekMessage( PMSG pMsg
,
2348 NtUserPostThreadMessage(
2363 NtUserProcessConnect(
2365 OUT PUSERCONNECT pUserConnect
,
2366 IN DWORD dwSize
); // sizeof(USERCONNECT)
2370 NtUserQueryInformationThread(
2379 NtUserQueryInputContext(
2385 NtUserQuerySendMessage(
2390 NtUserQueryUserCounters(
2397 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2398 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2399 #define QUERY_WINDOW_ACTIVE 0x02
2400 #define QUERY_WINDOW_FOCUS 0x03
2401 #define QUERY_WINDOW_ISHUNG 0x04
2402 #define QUERY_WINDOW_REAL_ID 0x05
2411 NtUserRealInternalGetMessage(
2421 NtUserRealChildWindowFromPoint(
2428 NtUserRealWaitMessageEx(
2437 CONST RECT
*lprcUpdate
,
2444 NtUserRegisterClassExWOW(
2446 PUNICODE_STRING pustrClassName
,
2447 PUNICODE_STRING pustrCNVersion
,
2448 PCLSMENUNAME pClassMenuName
,
2455 NtUserRegisterRawInputDevices(
2456 IN PCRAWINPUTDEVICE pRawInputDevices
,
2457 IN UINT uiNumDevices
,
2462 NtUserRegisterUserApiHook(
2463 PUNICODE_STRING m_dllname1
,
2464 PUNICODE_STRING m_funname1
,
2470 NtUserRegisterHotKey(HWND hWnd
,
2477 NtUserRegisterTasklist(
2481 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2485 NtUserRemoteConnect(
2492 NtUserRemoteRedrawRectangle(
2500 NtUserRemoteRedrawScreen(VOID
);
2504 NtUserRemoteStopScreenUpdates(VOID
);
2507 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2511 NtUserResolveDesktop(
2519 NtUserResolveDesktopForWOW(
2536 CONST RECT
*lprcScroll
,
2537 CONST RECT
*lprcClip
,
2542 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2543 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2553 NtUserSetActiveWindow(HWND Wnd
);
2557 NtUserSetAppImeLevel(
2562 NtUserSetCapture(HWND Wnd
);
2568 ULONG_PTR dwNewLong
,
2580 NtUserSetClipboardData(
2587 NtUserSetClipboardViewer(
2588 HWND hWndNewViewer
);
2592 NtUserSelectPalette(
2595 BOOL ForceBackground
2600 NtUserSetConsoleReserveKeys(
2611 NtUserSetCursorContents(
2613 PICONINFO IconInfo
);
2617 NtUserSetCursorIconData(
2652 NtUserSetImeOwnerWindow(
2658 NtUserSetInformationProcess(
2666 NtUserSetInformationThread(
2667 IN HANDLE ThreadHandle
,
2668 IN USERTHREADINFOCLASS ThreadInformationClass
,
2669 IN PVOID ThreadInformation
,
2670 IN ULONG ThreadInformationLength
2675 NtUserSetInternalWindowPos(
2683 NtUserSetKeyboardState(
2688 NtUserSetLayeredWindowAttributes(
2696 NtUserSetLogonNotifyWindow(
2701 NtUserSetObjectInformation(
2704 PVOID pvInformation
,
2711 HWND hWndNewParent
);
2715 NtUserSetProcessWindowStation(
2716 HWINSTA hWindowStation
);
2719 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2729 NtUserSetScrollInfo(
2737 NtUserSetShellWindowEx(
2739 HWND hwndShellListView
);
2745 IN CONST INT
*lpaElements
,
2746 IN CONST COLORREF
*lpaRgbValues
,
2751 NtUserSetSystemCursor(
2757 NtUserSetThreadDesktop(
2762 NtUserSetThreadState(
2768 NtUserSetSystemTimer
2773 TIMERPROC lpTimerFunc
2778 NtUserSetThreadLayoutHandles(
2789 TIMERPROC lpTimerFunc
2794 NtUserSetWindowFNID(
2800 NtUserSetWindowLong(
2808 NtUserSetWindowPlacement(
2810 WINDOWPLACEMENT
*lpwndpl
);
2813 NTAPI
NtUserSetWindowPos(
2815 HWND hWndInsertAfter
,
2832 NtUserSetWindowsHookAW(
2839 NtUserSetWindowsHookEx(
2841 PUNICODE_STRING ModuleName
,
2849 NtUserSetWindowStationUser(
2856 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
2860 NtUserSetWinEventHook(
2863 HMODULE hmodWinEventProc
,
2864 PUNICODE_STRING puString
,
2865 WINEVENTPROC lpfnWinEventProc
,
2882 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
2892 NtUserShowWindowAsync(
2898 NtUserSoundSentry(VOID
);
2902 NtUserSwitchDesktop(
2907 NtUserSystemParametersInfo(
2915 NtUserTestForInteractiveUser(
2931 NtUserTrackMouseEvent(
2932 LPTRACKMOUSEEVENT lpEventTrack
);
2936 NtUserTranslateAccelerator(
2943 NtUserTranslateMessage(
2949 NtUserUnhookWindowsHookEx(
2954 NtUserUnhookWinEvent(
2955 HWINEVENTHOOK hWinEventHook
);
2959 NtUserUnloadKeyboardLayout(
2964 NtUserUnlockWindowStation(
2965 HWINSTA hWindowStation
);
2969 NtUserUnregisterClass(
2970 PUNICODE_STRING ClassNameOrAtom
,
2971 HINSTANCE hInstance
,
2972 PCLSMENUNAME pClassMenuName
);
2976 NtUserUnregisterHotKey(HWND hWnd
,
2981 NtUserUnregisterUserApiHook(VOID
);
2985 NtUserUpdateInputContext(
2992 NtUserUpdateInstance(
2999 NtUserUpdateLayeredWindow(
3007 BLENDFUNCTION
*pblend
,
3013 NtUserUpdatePerUserSystemParameters(
3019 NtUserUserHandleGrantAccess(
3020 IN HANDLE hUserHandle
,
3026 NtUserValidateHandleSecure(
3034 CONST RECT
*lpRect
);
3038 NtUserValidateTimerCallback(
3052 NtUserWaitForInputIdle(
3054 IN DWORD dwMilliseconds
,
3055 IN BOOL Unknown2
); // Always FALSE
3059 NtUserWaitForMsgAndEvent(
3064 NtUserWaitMessage(VOID
);
3068 NtUserWin32PoolAllocationStats(
3078 NtUserWindowFromPhysicalPoint(
3083 NtUserWindowFromPoint(
3089 NtUserYieldTask(VOID
);
3091 /* lParam of DDE messages */
3092 typedef struct tagKMDDEEXECUTEDATA
3096 /* BYTE Data[DataSize] */
3097 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3099 typedef struct tagKMDDELPARAM
3111 } KMDDELPARAM
, *PKMDDELPARAM
;
3118 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3121 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3122 #define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
3123 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3124 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3125 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3126 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3127 #define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
3128 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3129 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3130 #define MSQ_STATE_CAPTURE 0x1
3131 #define MSQ_STATE_ACTIVE 0x2
3132 #define MSQ_STATE_FOCUS 0x3
3133 #define MSQ_STATE_MENUOWNER 0x4
3134 #define MSQ_STATE_MOVESIZE 0x5
3135 #define MSQ_STATE_CARET 0x6
3136 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3137 #define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
3138 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3139 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3143 NtUserBuildMenuItemList(
3150 /* Should be done in usermode and use NtUserGetCPD. */
3153 NtUserGetClassLong(HWND hWnd
, INT Offset
, BOOL Ansi
);
3157 NtUserGetMenuDefaultItem(
3164 NtUserGetLastInputInfo(
3165 PLASTINPUTINFO plii
);
3169 NtUserGetMinMaxInfo(
3171 MINMAXINFO
*MinMaxInfo
,
3176 NtUserGetMonitorInfo(
3177 IN HMONITOR hMonitor
,
3178 OUT LPMONITORINFO pMonitorInfo
);
3180 /* Should be done in usermode */
3182 /* (other FocusedItem values give the position of the focused item) */
3183 #define NO_SELECTED_ITEM 0xffff
3185 typedef struct tagROSMENUINFO
3187 /* ----------- MENUINFO ----------- */
3193 DWORD dwContextHelpID
;
3194 ULONG_PTR dwMenuData
;
3195 /* ----------- Extra ----------- */
3196 HMENU Self
; /* Handle of this menu */
3197 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3198 UINT FocusedItem
; /* Currently focused item */
3199 UINT MenuItemCount
; /* Number of items in the menu */
3200 HWND Wnd
; /* Window containing the menu */
3201 WORD Width
; /* Width of the whole menu */
3202 WORD Height
; /* Height of the whole menu */
3203 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3204 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3205 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3206 } ROSMENUINFO
, *PROSMENUINFO
;
3216 typedef struct tagROSMENUITEMINFO
3218 /* ----------- MENUITEMINFOW ----------- */
3225 HBITMAP hbmpChecked
;
3226 HBITMAP hbmpUnchecked
;
3231 /* ----------- Extra ----------- */
3232 RECT Rect
; /* Item area (relative to menu window) */
3233 UINT dxTab
; /* X position of text after Tab */
3234 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3235 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3243 PROSMENUITEMINFO lpmii
,
3249 NtUserMonitorFromPoint(
3255 NtUserMonitorFromRect(
3261 NtUserMonitorFromWindow(
3265 typedef struct _SETSCROLLBARINFO
3269 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3270 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3274 NtUserSetScrollBarInfo(
3277 SETSCROLLBARINFO
*info
);
3281 #endif /* __WIN32K_NTUSER_H */