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
];
73 UINT LastInputWasKbd
: 1;
77 WCHAR szDesktopName
[1];
78 } DESKTOPINFO
, *PDESKTOPINFO
;
80 #define CTI_INSENDMESSAGE 0x0002
82 typedef struct _CLIENTTHREADINFO
87 WORD fsWakeBitsJournal
;
89 ULONG tickLastMsgChecked
;
91 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
99 typedef struct _THROBJHEAD
103 } THROBJHEAD
, *PTHROBJHEAD
;
105 typedef struct _THRDESKHEAD
108 struct _DESKTOP
*rpdesk
;
110 } THRDESKHEAD
, *PTHRDESKHEAD
;
112 typedef struct _PROCDESKHEAD
116 struct _DESKTOP
*rpdesk
;
118 } PROCDESKHEAD
, *PPROCDESKHEAD
;
120 typedef struct _PROCMARKHEAD
125 } PROCMARKHEAD
, *PPROCMARKHEAD
;
127 #define UserHMGetHandle(obj) ((obj)->head.h)
129 /* Window Client Information structure */
132 #define WEF_SETBYWNDPTI 0x0001
134 typedef struct tagHOOK
137 struct tagHOOK
*phkNext
; /* This is for user space. */
138 int HookId
; /* Hook table index */
140 ULONG flags
; /* Some internal flags */
142 PTHREADINFO ptiHooked
;
143 struct _DESKTOP
*rpdesk
;
145 LIST_ENTRY Chain
; /* Hook chain entry */
146 struct _ETHREAD
* Thread
; /* Thread owning the hook */
147 HOOKPROC Proc
; /* Hook function */
148 BOOLEAN Ansi
; /* Is it an Ansi hook? */
149 UNICODE_STRING ModuleName
; /* Module name for global hooks */
152 /* THREADINFO Flags */
153 #define TIF_INCLEANUP 0x00000001
154 #define TIF_16BIT 0x00000002
155 #define TIF_SYSTEMTHREAD 0x00000004
156 #define TIF_CSRSSTHREAD 0x00000008
157 #define TIF_TRACKRECTVISIBLE 0x00000010
158 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
159 #define TIF_DONTATTACHQUEUE 0x00000040
160 #define TIF_DONTJOURNALATTACH 0x00000080
161 #define TIF_WOW64 0x00000100
162 #define TIF_INACTIVATEAPPMSG 0x00000200
163 #define TIF_SPINNING 0x00000400
164 #define TIF_PALETTEAWARE 0x00000800
165 #define TIF_SHAREDWOW 0x00001000
166 #define TIF_FIRSTIDLE 0x00002000
167 #define TIF_WAITFORINPUTIDLE 0x00004000
168 #define TIF_MOVESIZETRACKING 0x00008000
169 #define TIF_VDMAPP 0x00010000
170 #define TIF_DOSEMULATOR 0x00020000
171 #define TIF_GLOBALHOOKER 0x00040000
172 #define TIF_DELAYEDEVENT 0x00080000
173 #define TIF_MSGPOSCHANGED 0x00100000
174 #define TIF_SHUTDOWNCOMPLETE 0x00200000
175 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
176 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
177 #define TIF_GUITHREADINITIALIZED 0x02000000
178 #define TIF_DISABLEIME 0x04000000
179 #define TIF_INGETTEXTLENGTH 0x08000000
180 #define TIF_ANSILENGTH 0x10000000
181 #define TIF_DISABLEHOOKS 0x20000000
183 typedef struct _CALLBACKWND
187 } CALLBACKWND
, *PCALLBACKWND
;
189 #define CI_TRANSACTION 0x00000001
190 #define CI_QUEUEMSG 0x00000002
191 #define CI_WOW 0x00000004
192 #define CI_INITTHREAD 0x00000008
193 #define CI_CURTHPRHOOK 0x00000010
194 #define CI_CLASSESREGISTERED 0x00000020
195 #define CI_IMMACTIVATE 0x00000040
197 typedef struct _CLIENTINFO
203 DWORD dwCompatFlags2
;
204 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
205 PDESKTOPINFO pDeskInfo
;
206 ULONG_PTR ulClientDelta
;
209 CALLBACKWND CallbackWnd
;
211 INT cInDDEMLCallback
;
212 PCLIENTTHREADINFO pClientThreadInfo
;
213 ULONG_PTR dwHookData
;
216 DWORD dwAsyncKeyCache
;
217 BYTE afAsyncKeyState
[8];
218 BYTE afAsyncKeyStateRecentDow
[8];
223 LPDWORD lpdwRegisteredClasses
;
224 ULONG Win32ClientInfo3
[27];
225 /* It's just a pointer reference not to be used w the structure in user space. */
227 } CLIENTINFO
, *PCLIENTINFO
;
229 /* Make sure it fits into the TEB */
230 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
232 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
234 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
235 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
236 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
238 /* Menu Item fType. */
239 #define MFT_RTOL 0x6000
241 typedef struct tagITEM
246 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
248 HANDLE hbmpUnchecked
;
249 USHORT
* lpstr
; /* Item text pointer. */
251 DWORD_PTR dwItemData
;
252 ULONG xItem
; /* Item position. left */
253 ULONG yItem
; /* " top */
254 ULONG cxItem
; /* Item Size Width */
255 ULONG cyItem
; /* " Height */
256 ULONG dxTab
; /* X position of text after Tab */
257 ULONG ulX
; /* underline.. start position */
258 ULONG ulWidth
; /* underline.. width */
259 HBITMAP hbmp
; /* bitmap */
260 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
261 INT cyBmp
; /* Height " */
264 typedef struct tagMENULIST
266 struct tagMENULIST
* pNext
;
267 struct tagMENU
* pMenu
;
268 } MENULIST
, *PMENULIST
;
270 /* Menu fFlags, upper byte is MNS_X style flags. */
271 #define MNF_POPUP 0x0001
272 #define MNF_UNDERLINE 0x0004
273 #define MNF_INACTIVE 0x0010
274 #define MNF_RTOL 0x0020
275 #define MNF_DESKTOPMN 0x0040
276 #define MNF_SYSDESKMN 0x0080
277 #define MNF_SYSSUBMENU 0x0100
279 typedef struct tagMENU
282 ULONG fFlags
; /* [Style flags | Menu flags] */
283 INT iItem
; /* nPos of selected item, if -1 not selected. */
284 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
285 UINT cItems
; /* Number of items in the menu */
286 ULONG cxMenu
; /* Width of the whole menu */
287 ULONG cyMenu
; /* Height of the whole menu */
288 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
289 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
290 PITEM rgItems
; /* Array of menu items */
291 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
292 DWORD dwContextHelpId
;
293 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
294 DWORD_PTR dwMenuData
; /* application defined value */
295 HBRUSH hbrBack
; /* brush for menu background */
296 INT iTop
; /* Current scroll position Top */
297 INT iMaxTop
; /* Current scroll position Max Top */
298 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
301 typedef struct _REGISTER_SYSCLASS
303 /* This is a reactos specific class used to initialize the
304 system window classes during user32 initialization */
313 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
315 typedef struct _CLSMENUNAME
317 LPSTR pszClientAnsiMenuName
;
318 LPWSTR pwszClientUnicodeMenuName
;
319 PUNICODE_STRING pusMenuName
;
320 } CLSMENUNAME
, *PCLSMENUNAME
;
322 typedef struct tagSBDATA
330 typedef struct tagSBINFO
339 UserGetCPDA2U
= 0x01, // " Unicode "
340 UserGetCPDU2A
= 0X02, // " Ansi "
341 UserGetCPDClass
= 0X10,
342 UserGetCPDWindow
= 0X20,
343 UserGetCPDDialog
= 0X40,
344 UserGetCPDWndtoCls
= 0X80
347 typedef struct _CALLPROCDATA
350 struct _CALLPROCDATA
*spcpdNext
;
351 WNDPROC pfnClientPrevious
;
353 } CALLPROCDATA
, *PCALLPROCDATA
;
355 #define CSF_SERVERSIDEPROC 0x0001
356 #define CSF_ANSIPROC 0x0002
357 #define CSF_WOWDEFERDESTROY 0x0004
358 #define CSF_SYSTEMCLASS 0x0008
359 #define CSF_WOWCLASS 0x0010
360 #define CSF_WOWEXTRA 0x0020
361 #define CSF_CACHEDSMICON 0x0040
362 #define CSF_WIN40COMPAT 0x0080
366 struct _CLS
*pclsNext
;
367 RTL_ATOM atomClassName
;
368 ATOM atomNVClassName
;
370 struct _DESKTOP
*rpdeskParent
;
373 PSTR lpszClientAnsiMenuName
; // For client use
374 PWSTR lpszClientUnicodeMenuName
; // " " "
375 PCALLPROCDATA spcpdFirst
;
376 struct _CLS
*pclsBase
;
377 struct _CLS
*pclsClone
;
378 ULONG cWndReferenceCount
;
384 HANDLE hIcon
; /* FIXME - Use pointer! */
386 HANDLE hCursor
; /* FIXME - Use pointer! */
388 HBRUSH hbrBackground
;
389 PWSTR lpszMenuName
; // kernel use
390 PSTR lpszAnsiClassName
; // "
391 HANDLE hIconSm
; /* FIXME - Use pointer! */
394 UINT Unicode
: 1; // !CSF_ANSIPROC
395 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
396 UINT MenuNameIsString
: 1;
401 typedef struct _SBINFOEX
403 SCROLLBARINFO ScrollBarInfo
;
404 SCROLLINFO ScrollInfo
;
405 } SBINFOEX
, *PSBINFOEX
;
407 // State Flags !Not Implemented!
408 #define WNDS_HASMENU 0X00000001
409 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
410 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
411 #define WNDS_HASCAPTION 0X00000008
412 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
413 #define WNDS_MSGBOX 0X00000020
414 #define WNDS_ACTIVEFRAME 0X00000040
415 #define WNDS_HASSPB 0X00000080
416 #define WNDS_NONCPAINT 0X00000100
417 #define WNDS_SENDERASEBACKGROUND 0X00000200
418 #define WNDS_ERASEBACKGROUND 0X00000400
419 #define WNDS_SENDNCPAINT 0X00000800
420 #define WNDS_INTERNALPAINT 0X00001000
421 #define WNDS_UPDATEDIRTY 0X00002000
422 #define WNDS_HIDDENPOPUP 0X00004000
423 #define WNDS_FORCEMENUDRAW 0X00008000
424 #define WNDS_DIALOGWINDOW 0X00010000
425 #define WNDS_HASCREATESTRUCTNAME 0X00020000
426 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
427 #define WNDS_ANSIWINDOWPROC 0x00080000
428 #define WNDS_BEGINGACTIVATED 0x00100000
429 #define WNDS_HASPALETTE 0x00200000
430 #define WNDS_PAINTNOTPROCESSED 0x00400000
431 #define WNDS_SYNCPAINTPENDING 0x00800000
432 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
433 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
434 #define WNDS_TOGGLETOPMOST 0x04000000
435 #define WNDS_REDRAWIFHUNG 0x08000000
436 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
437 #define WNDS_ANSICREATOR 0x20000000
438 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
439 #define WNDS_DESTROYED 0x80000000
441 // State2 Flags !Not Implemented!
442 #define WNDS2_WMPAINTSENT 0X00000001
443 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
444 #define WNDS2_STARTPAINT 0X00000004
445 #define WNDS2_OLDUI 0X00000008
446 #define WNDS2_HASCLIENTEDGE 0X00000010
447 #define WNDS2_BOTTOMMOST 0X00000020
448 #define WNDS2_FULLSCREEN 0X00000040
449 #define WNDS2_INDESTROY 0X00000080
450 #define WNDS2_WIN31COMPAT 0X00000100
451 #define WNDS2_WIN40COMPAT 0X00000200
452 #define WNDS2_WIN50COMPAT 0X00000400
453 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
454 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
455 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
456 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
457 #define WNDS2_HELPBUTTONDOWN 0X00008000
458 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
459 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
460 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
461 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
462 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
463 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
464 #define WNDS2_FORCENCPAINT 0X00400000
465 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
466 #define WNDS2_FULLSCREENMODE 0X01000000
467 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
468 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
469 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
470 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
471 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
474 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
475 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
476 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
477 #define WS_EX2_LINKED 0X00000008
478 #define WS_EX2_LAYEREDFORDWM 0X00000010
479 #define WS_EX2_LAYEREDLIMBO 0X00000020
480 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
481 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
482 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
483 #define WS_EX2_HASOVERLAY 0X00000200
484 #define WS_EX2_CONSOLEWINDOW 0X00000400
485 #define WS_EX2_CHILDNOACTIVATE 0X00000800
492 /* Extended style. */
496 /* Handle of the module that created the window. */
499 struct _WND
*spwndNext
;
500 struct _WND
*spwndPrev
;
501 struct _WND
*spwndParent
;
502 struct _WND
*spwndChild
;
503 struct _WND
*spwndOwner
;
507 /* Pointer to the window class. */
510 /* Property list head.*/
511 LIST_ENTRY PropListHead
;
515 /* system menu handle. */
518 /* Window menu handle or window id */
519 UINT IDMenu
; // Use spmenu
524 LARGE_UNICODE_STRING strName
;
525 /* Size of the extra data associated with the window. */
528 struct _WND
*spwndLastActive
;
529 //HIMC hImc; // Input context associated with this window.
531 //PACTIVATION_CONTEXT pActCtx;
532 //PD3DMATRIX pTransForm;
533 struct _WND
*spwndClipboardListener
;
544 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
545 /* Indicates whether the window is derived from a system class */
546 UINT InternalPosInitialized
: 1;
547 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
548 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
551 PSBINFOEX pSBInfoex
; // convert to PSBINFO
552 /* Entry in the list of thread windows. */
553 LIST_ENTRY ThreadListEntry
;
556 typedef struct _PFNCLIENT
558 WNDPROC pfnScrollBarWndProc
;
559 WNDPROC pfnTitleWndProc
;
560 WNDPROC pfnMenuWndProc
;
561 WNDPROC pfnDesktopWndProc
;
562 WNDPROC pfnDefWindowProc
;
563 WNDPROC pfnMessageWindowProc
;
564 WNDPROC pfnSwitchWindowProc
;
565 WNDPROC pfnButtonWndProc
;
566 WNDPROC pfnComboBoxWndProc
;
567 WNDPROC pfnComboListBoxProc
;
568 WNDPROC pfnDialogWndProc
;
569 WNDPROC pfnEditWndProc
;
570 WNDPROC pfnListBoxWndProc
;
571 WNDPROC pfnMDIClientWndProc
;
572 WNDPROC pfnStaticWndProc
;
573 WNDPROC pfnImeWndProc
;
574 WNDPROC pfnGhostWndProc
;
575 WNDPROC pfnHkINLPCWPSTRUCT
;
576 WNDPROC pfnHkINLPCWPRETSTRUCT
;
577 WNDPROC pfnDispatchHook
;
578 WNDPROC pfnDispatchDefWindowProc
;
579 WNDPROC pfnDispatchMessage
;
580 WNDPROC pfnMDIActivateDlgProc
;
581 } PFNCLIENT
, *PPFNCLIENT
;
584 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
585 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
588 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
590 typedef struct _PFNCLIENTWORKER
592 WNDPROC_EX pfnButtonWndProc
;
593 WNDPROC_EX pfnComboBoxWndProc
;
594 WNDPROC_EX pfnComboListBoxProc
;
595 WNDPROC_EX pfnDialogWndProc
;
596 WNDPROC_EX pfnEditWndProc
;
597 WNDPROC_EX pfnListBoxWndProc
;
598 WNDPROC_EX pfnMDIClientWndProc
;
599 WNDPROC_EX pfnStaticWndProc
;
600 WNDPROC_EX pfnImeWndProc
;
601 WNDPROC_EX pfnGhostWndProc
;
602 WNDPROC_EX pfnCtfHookProc
;
603 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
605 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
607 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
608 #define FNID_FIRST 0x029A
609 #define FNID_SCROLLBAR 0x029A
610 #define FNID_ICONTITLE 0x029B
611 #define FNID_MENU 0x029C
612 #define FNID_DESKTOP 0x029D
613 #define FNID_DEFWINDOWPROC 0x029E
614 #define FNID_MESSAGEWND 0x029F
615 #define FNID_SWITCH 0x02A0
616 #define FNID_BUTTON 0x02A1
617 #define FNID_COMBOBOX 0x02A2
618 #define FNID_COMBOLBOX 0x02A3
619 #define FNID_DIALOG 0x02A4
620 #define FNID_EDIT 0x02A5
621 #define FNID_LISTBOX 0x02A6
622 #define FNID_MDICLIENT 0x02A7
623 #define FNID_STATIC 0x02A8
624 #define FNID_IME 0x02A9
625 #define FNID_GHOST 0x02AA
626 #define FNID_CALLWNDPROC 0x02AB
627 #define FNID_CALLWNDPROCRET 0x02AC
628 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
629 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
630 #define FNID_MB_DLGPROC 0x02AF
631 #define FNID_MDIACTIVATEDLGPROC 0x02B0
632 #define FNID_SENDMESSAGE 0x02B1
633 #define FNID_SENDMESSAGEFF 0x02B2
634 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
635 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
636 #define FNID_SENDMESSAGETIMEOUT 0x02B4
637 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
638 #define FNID_TOOLTIPS 0x02B6
639 #define FNID_SENDNOTIFYMESSAGE 0x02B7
640 #define FNID_SENDMESSAGECALLBACK 0x02B8
641 #define FNID_LAST 0x02B9
643 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
644 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
646 #define FNID_DDEML 0x2000 // Registers DDEML
647 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
648 // Seen during WM_CREATE on error exit too.
649 #define FNID_FREED 0x8000 // Window being Freed...
651 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
653 #define GETPFNCLIENTA(fnid)\
654 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
655 #define GETPFNCLIENTW(fnid)\
656 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
658 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
660 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
661 #define ICLS_BUTTON 0
663 #define ICLS_STATIC 2
664 #define ICLS_LISTBOX 3
665 #define ICLS_SCROLLBAR 4
666 #define ICLS_COMBOBOX 5
667 #define ICLS_MDICLIENT 6
668 #define ICLS_COMBOLBOX 7
669 #define ICLS_DDEMLEVENT 8
670 #define ICLS_DDEMLMOTHER 9
671 #define ICLS_DDEML16BIT 10
672 #define ICLS_DDEMLCLIENTA 11
673 #define ICLS_DDEMLCLIENTW 12
674 #define ICLS_DDEMLSERVERA 13
675 #define ICLS_DDEMLSERVERW 14
677 #define ICLS_GHOST 16
678 #define ICLS_DESKTOP 17
679 #define ICLS_DIALOG 18
681 #define ICLS_SWITCH 20
682 #define ICLS_ICONTITLE 21
683 #define ICLS_TOOLTIPS 22
684 #if (_WIN32_WINNT <= 0x0501)
685 #define ICLS_UNKNOWN 22
686 #define ICLS_NOTUSED 23
688 #define ICLS_SYSSHADOW 23
689 #define ICLS_HWNDMESSAGE 24
690 #define ICLS_NOTUSED 25
694 #define COLOR_LAST COLOR_MENUBAR
695 #define MAX_MB_STRINGS 11
697 #define SRVINFO_APIHOOK 0x0010
698 #define SRVINFO_METRICS 0x0020
700 typedef struct tagOEMBITMAPINFO
706 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
708 typedef struct tagMBSTRING
713 } MBSTRING
, *PMBSTRING
;
715 typedef struct tagDPISERVERINFO
717 INT gclBorder
; /* 000 */
718 HFONT hCaptionFont
; /* 004 */
719 HFONT hMsgFont
; /* 008 */
720 INT cxMsgFontChar
; /* 00C */
721 INT cyMsgFontChar
; /* 010 */
722 UINT wMaxBtnSize
; /* 014 */
723 } DPISERVERINFO
, *PDPISERVERINFO
;
725 typedef struct _PERUSERSERVERINFO
727 INT aiSysMet
[SM_CMETRICS
];
728 ULONG argbSystemUnmatched
[COLOR_LAST
+1];
729 COLORREF argbSystem
[COLOR_LAST
+1];
730 HBRUSH ahbrSystem
[COLOR_LAST
+1];
734 DWORD dwLastRITEventTickCount
;
739 UINT ucWheelScrollLines
;
740 UINT ucWheelScrollChars
;
741 INT wMaxLeftOverlapChars
;
742 INT wMaxRightOverlapChars
;
745 TEXTMETRICW tmSysFont
;
746 DPISERVERINFO dpiSystem
;
747 HICON hIconSmWindows
;
750 DWORD dwAsyncKeyCache
;
752 OEMBITMAPINFO oembmi
[93];
761 DWORD dwLastSystemRITEventTickCountUpdate
;
762 ULONG adwDBGTAGFlags
[35];
765 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
767 typedef struct tagSERVERINFO
770 ULONG_PTR cHandleEntries
;
771 PFN_FNID mpFnidPfn
[FNID_NUM
];
772 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
773 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
774 PFNCLIENT apfnClientA
;
775 PFNCLIENT apfnClientW
;
776 PFNCLIENTWORKER apfnClientWorker
;
778 ATOM atomSysClass
[ICLS_NOTUSED
+1];
779 DWORD dwDefaultHeapBase
;
780 DWORD dwDefaultHeapSize
;
782 MBSTRING MBStrings
[MAX_MB_STRINGS
];
785 ATOM atomContextHelpIdProp
;
786 ATOM atomFrostedWindowProp
;
787 CHAR acOemToAnsi
[256];
788 CHAR acAnsiToOem
[256];
789 DWORD dwInstalledEventHooks
;
791 } SERVERINFO
, *PSERVERINFO
;
794 // Server event activity bits.
795 #define SRV_EVENT_MENU 0x0001
796 #define SRV_EVENT_END_APPLICATION 0x0002
797 #define SRV_EVENT_RUNNING 0x0004
798 #define SRV_EVENT_NAMECHANGE 0x0008
799 #define SRV_EVENT_VALUECHANGE 0x0010
800 #define SRV_EVENT_STATECHANGE 0x0020
801 #define SRV_EVENT_LOCATIONCHANGE 0x0040
802 #define SRV_EVENT_CREATE 0x8000
804 typedef struct _PROPLISTITEM
808 } PROPLISTITEM
, *PPROPLISTITEM
;
810 typedef struct _PROPERTY
812 LIST_ENTRY PropListEntry
;
815 } PROPERTY
, *PPROPERTY
;
817 typedef struct _BROADCASTPARM
824 } BROADCASTPARM
, *PBROADCASTPARM
;
826 PTHREADINFO
GetW32ThreadInfo(VOID
);
827 PPROCESSINFO
GetW32ProcessInfo(VOID
);
829 typedef struct _WNDMSG
835 typedef struct _SHAREDINFO
837 PSERVERINFO psi
; // global Server Info
838 PVOID aheList
; // Handle Entry List
839 PVOID pDispInfo
; // global PDISPLAYINFO pointer
840 ULONG_PTR ulSharedDelta
; // Heap delta
841 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
842 WNDMSG DefWindowMsgs
;
843 WNDMSG DefWindowSpecMsgs
;
844 } SHAREDINFO
, *PSHAREDINFO
;
846 typedef struct _USERCONNECT
849 ULONG ulCurrentVersion
;
850 DWORD dwDispatchCount
;
852 } USERCONNECT
, *PUSERCONNECT
;
856 NtUserAssociateInputContext(
887 NtUserCtxDisplayIOCtl(
906 NtUserDrawMenuBarTemp(
915 NtUserEnableMenuItem(
926 NtUserGetMenuBarInfo(
940 NtUserGetMenuItemRect(
954 NtUserHiliteMenuItem(
962 NtUserMenuItemFromPoint(
984 NtUserSetMenuContextHelpId(
986 DWORD dwContextHelpId
);
990 NtUserSetMenuDefaultItem(
997 NtUserSetMenuFlagRtoL(
1002 NtUserSetSystemMenu(
1008 NtUserThunkedMenuInfo(
1014 NtUserThunkedMenuItemInfo(
1019 LPMENUITEMINFOW lpmii
,
1020 PUNICODE_STRING lpszCaption
);
1024 NtUserTrackPopupMenuEx(
1034 NtUserActivateKeyboardLayout(
1040 NtUserAlterWindowStyle(
1047 NtUserAttachThreadInput(
1049 IN DWORD idAttachTo
,
1053 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1074 NtUserBuildHwndList(
1084 NtUserBuildNameList(
1088 PULONG pRequiredSize
);
1092 NtUserBuildPropList(
1098 /* apfnSimpleCall indices from Windows XP SP 2 */
1099 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1100 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1102 enum SimpleCallRoutines
1104 NOPARAM_ROUTINE_CREATEMENU
,
1105 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1106 #if (WIN32K_VERSION >= NTDDI_VISTA)
1107 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1108 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1109 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1110 NOPARAM_ROUTINE_DESTROY_CARET
,
1112 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1113 #if (WIN32K_VERSION < NTDDI_VISTA)
1114 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1115 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1116 NOPARAM_ROUTINE_DESTROY_CARET
,
1118 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1119 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1120 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1121 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1122 #if (WIN32K_VERSION >= NTDDI_VISTA)
1123 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1125 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1127 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1128 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1129 #if (WIN32K_VERSION >= NTDDI_VISTA)
1130 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1131 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1133 NOPARAM_ROUTINE_RELEASECAPTURE
,
1134 NOPARAM_ROUTINE_RESETDBLCLICK
,
1135 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1136 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1137 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1138 NOPARAM_ROUTINE_REMOTELOGOFF
,
1139 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1140 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1141 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1142 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1143 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1144 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1145 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1146 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1147 #if (WIN32K_VERSION >= NTDDI_VISTA)
1148 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1150 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1151 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1152 #if (WIN32K_VERSION < NTDDI_VISTA)
1153 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1155 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1156 #if (WIN32K_VERSION >= NTDDI_VISTA)
1157 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1159 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1160 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1161 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1162 #if (WIN32K_VERSION < NTDDI_VISTA)
1163 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1165 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1166 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1167 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1168 #if (WIN32K_VERSION < NTDDI_VISTA)
1169 ONEPARAM_ROUTINE_GETCURSORPOS
,
1171 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1172 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1173 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1174 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1175 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1176 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1177 #if (WIN32K_VERSION < NTDDI_VISTA)
1178 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1180 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1181 ONEPARAM_ROUTINE_LOADFONTS
,
1182 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1183 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1184 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1185 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1186 #if (WIN32K_VERSION < NTDDI_VISTA)
1187 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1189 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1190 ONEPARAM_ROUTINE_REGISTERLPK
,
1191 #if (WIN32K_VERSION >= NTDDI_VISTA)
1192 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1194 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1195 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1196 ONEPARAM_ROUTINE_RELEASEDC
,
1197 #if (WIN32K_VERSION >= NTDDI_VISTA)
1198 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1200 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1201 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1202 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1203 #if (WIN32K_VERSION < NTDDI_VISTA)
1204 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1206 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1207 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1208 #if (WIN32K_VERSION >= NTDDI_VISTA)
1209 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1211 ONEPARAM_ROUTINE_SHOWCURSOR
,
1212 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1213 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1214 X_ROUTINE_WOWMODULEUNLOAD
,
1215 #if (WIN32K_VERSION < NTDDI_VISTA)
1216 X_ROUTINE_REMOTENOTIFY
,
1218 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1219 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1220 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1221 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1222 HWND_ROUTINE_SETMSGBOX
,
1223 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1224 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1225 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1226 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1227 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1228 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1229 HWNDPARAM_ROUTINE_SETVISIBLE
,
1230 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1231 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1232 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1233 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1234 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1235 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1236 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1237 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1238 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1239 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1240 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1241 HWNDLOCK_ROUTINE_SETSYSMENU
,
1242 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1243 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1244 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1245 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1246 TWOPARAM_ROUTINE_REDRAWTITLE
,
1247 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1248 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1249 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1250 TWOPARAM_ROUTINE_VALIDATERGN
,
1251 #if (WIN32K_VERSION >= NTDDI_VISTA)
1252 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1253 TWOPARAM_ROUTINE_GETCURSORPOS
,
1255 TWOPARAM_ROUTINE_GETHDEVNAME
,
1256 TWOPARAM_ROUTINE_INITANSIOEM
,
1257 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1258 #if (WIN32K_VERSION >= NTDDI_VISTA)
1259 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1261 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1262 #if (WIN32K_VERSION >= NTDDI_VISTA)
1263 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1265 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1267 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1268 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1269 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1270 TWOPARAM_ROUTINE_SETCARETPOS
,
1271 TWOPARAM_ROUTINE_SETCURSORPOS
,
1272 #if (WIN32K_VERSION >= NTDDI_VISTA)
1273 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1275 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1276 TWOPARAM_ROUTINE_WOWCLEANUP
1299 NtUserCallHwndParam(
1306 NtUserCallHwndParamLock(
1313 NtUserCallMsgFilter(
1319 NtUserCallNextHookEx(
1345 NtUserChangeClipboardChain(
1351 NtUserChangeDisplaySettings(
1352 PUNICODE_STRING lpszDeviceName
,
1353 LPDEVMODEW lpDevMode
,
1360 NtUserCheckDesktopByThreadId(
1365 NtUserCheckWindowThreadDesktop(
1372 NtUserCheckImeHotKey(
1377 NtUserChildWindowFromPointEx(
1390 NtUserCloseClipboard(VOID
);
1399 NtUserCloseWindowStation(
1404 NtUserConsoleControl(
1411 NtUserConvertMemHandle(
1417 NtUserCopyAcceleratorTable(
1424 NtUserCountClipboardFormats(VOID
);
1428 NtUserCreateAcceleratorTable(
1430 SIZE_T EntriesCount
);
1442 NtUserCreateDesktop(
1443 POBJECT_ATTRIBUTES poa
,
1444 PUNICODE_STRING lpszDesktopDevice
,
1447 ACCESS_MASK dwDesiredAccess
);
1451 NtUserCreateInputContext(
1456 NtUserCreateLocalMemHandle(
1464 NtUserCreateWindowEx(
1465 DWORD dwExStyle
, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
1466 PLARGE_STRING plstrClassName
,
1467 PLARGE_STRING plstrClsVersion
,
1468 PLARGE_STRING plstrWindowName
,
1476 HINSTANCE hInstance
,
1483 NtUserCreateWindowStation(
1484 PUNICODE_STRING lpszWindowStationName
,
1485 ACCESS_MASK dwDesiredAccess
,
1486 LPSECURITY_ATTRIBUTES lpSecurity
,
1494 NtUserDdeGetQualityOfService(
1497 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1501 NtUserDdeInitialize(
1510 NtUserDdeSetQualityOfService(
1512 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1513 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1516 NtUserDeferWindowPos(
1519 HWND WndInsertAfter
,
1527 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1531 NtUserDestroyAcceleratorTable(
1536 NtUserDestroyCursor(
1542 NtUserDestroyInputContext(
1546 NtUserDestroyWindow(HWND Wnd
);
1550 NtUserDisableThreadIme(
1555 NtUserDispatchMessage(PMSG pMsg
);
1574 NtUserDrawAnimatedRects(
1590 NtUserDrawCaptionTemp(
1596 const PUNICODE_STRING str
,
1599 // Used with NtUserDrawIconEx, last parameter.
1600 typedef struct _DRAWICONEXDATA
1606 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1618 HBRUSH hbrFlickerFreeDraw
,
1625 NtUserEmptyClipboard(VOID
);
1629 NtUserEnableScrollBar(
1636 NtUserEndDeferWindowPosEx(
1641 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1645 NtUserEnumDisplayDevices (
1646 PUNICODE_STRING lpDevice
, /* device name */
1647 DWORD iDevNum
, /* display device */
1648 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1649 DWORD dwFlags
); /* reserved */
1653 NtUserEnumDisplayMonitors (
1656 MONITORENUMPROC lpfnEnum,
1658 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1661 NtUserEnumDisplayMonitors(
1662 OPTIONAL IN HDC hDC
,
1663 OPTIONAL IN LPCRECT pRect
,
1664 OPTIONAL OUT HMONITOR
*hMonitorList
,
1665 OPTIONAL OUT LPRECT monitorRectList
,
1666 OPTIONAL IN DWORD listSize
);
1671 NtUserEnumDisplaySettings(
1672 PUNICODE_STRING lpszDeviceName
,
1674 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1684 NtUserExcludeUpdateRgn(
1698 NtUserFindExistingCursorIcon(
1708 HWND hwndChildAfter
,
1709 PUNICODE_STRING ucClassName
,
1710 PUNICODE_STRING ucWindowName
,
1716 NtUserFlashWindowEx(
1717 IN PFLASHWINFO pfwi
);
1721 NtUserGetAltTabInfo(
1730 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1734 NtUserGetAppImeLevel(
1739 NtUserGetAsyncKeyState(
1750 NtUserGetCaretBlinkTime(VOID
);
1758 NtUserGetClassInfo(HINSTANCE hInstance
,
1759 PUNICODE_STRING ClassName
,
1761 LPWSTR
*ppszMenuName
,
1766 NtUserGetClassName(HWND hWnd
,
1767 PUNICODE_STRING ClassName
,
1769 #if 0 // Real NtUserGetClassName
1772 NtUserGetClassName(HWND hWnd
,
1773 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1774 PUNICODE_STRING ClassName
);
1779 NtUserGetClipboardData(
1785 NtUserGetClipboardFormatName(
1787 PUNICODE_STRING FormatName
,
1792 NtUserGetClipboardOwner(VOID
);
1796 NtUserGetClipboardSequenceNumber(VOID
);
1800 NtUserGetClipboardViewer(VOID
);
1804 NtUserGetClipCursor(
1809 NtUserGetComboBoxInfo(
1811 PCOMBOBOXINFO pcbi
);
1815 NtUserGetControlBrush(
1822 NtUserGetControlColor(
1837 NtUserGetCursorFrameInfo(
1845 NtUserGetCursorInfo(
1862 NtUserGetDoubleClickTime(VOID
);
1866 NtUserGetForegroundWindow(VOID
);
1870 NtUserGetGuiResources(
1876 NtUserGetGUIThreadInfo(
1878 LPGUITHREADINFO lpgui
);
1885 PUNICODE_STRING lpInstName
,
1886 PUNICODE_STRING lpResName
,
1914 NtUserGetInternalWindowPos(
1921 NtUserGetKeyboardLayout(
1926 NtUserGetKeyboardLayoutList(
1932 NtUserGetKeyboardLayoutName(
1937 NtUserGetKeyboardState(
1942 NtUserGetKeyboardType(
1947 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
1956 NtUserGetLayeredWindowAttributes(
1964 NtUserGetListBoxInfo(
1968 NtUserGetMessage(PMSG pMsg
,
1975 NtUserGetMouseMovePointsEx(
1977 LPMOUSEMOVEPOINT lppt
,
1978 LPMOUSEMOVEPOINT lpptBuf
,
1984 NtUserGetObjectInformation(
1987 PVOID pvInformation
,
1989 PDWORD nLengthNeeded
);
1993 NtUserGetOpenClipboardWindow(VOID
);
1997 NtUserGetPriorityClipboardFormat(
1998 UINT
*paFormatPriorityList
,
2003 NtUserGetProcessWindowStation(VOID
);
2007 NtUserGetRawInputBuffer(
2014 NtUserGetRawInputData(
2015 HRAWINPUT hRawInput
,
2023 NtUserGetRawInputDeviceInfo(
2031 NtUserGetRawInputDeviceList(
2032 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2033 PUINT puiNumDevices
,
2038 NtUserGetRegisteredRawInputDevices(
2039 PRAWINPUTDEVICE pRawInputDevices
,
2040 PUINT puiNumDevices
,
2045 NtUserGetScrollBarInfo(
2048 PSCROLLBARINFO psbi
);
2052 NtUserGetThreadDesktop(
2057 enum ThreadStateRoutines
2059 THREADSTATE_GETTHREADINFO
,
2060 THREADSTATE_INSENDMESSAGE
,
2061 THREADSTATE_FOCUSWINDOW
,
2062 THREADSTATE_ACTIVEWINDOW
,
2063 THREADSTATE_CAPTUREWINDOW
,
2064 THREADSTATE_PROGMANWINDOW
,
2065 THREADSTATE_TASKMANWINDOW
,
2066 THREADSTATE_GETMESSAGETIME
,
2067 THREADSTATE_GETINPUTSTATE
,
2068 THREADSTATE_UPTIMELASTREAD
2073 NtUserGetThreadState(
2078 NtUserGetTitleBarInfo(
2083 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2099 NtUserGetWindowPlacement(
2101 WINDOWPLACEMENT
*lpwndpl
);
2106 HINSTANCE hInstance
,
2107 PUNICODE_STRING ClassName
);
2111 NtUserHardErrorControl(
2118 NtUserImpersonateDdeClientWindow(
2126 HANDLE hPowerRequestEvent
,
2127 HANDLE hMediaRequestEvent
);
2131 NtUserInitializeClientPfnArrays(
2132 PPFNCLIENT pfnClientA
,
2133 PPFNCLIENT pfnClientW
,
2134 PPFNCLIENTWORKER pfnClientWorker
,
2135 HINSTANCE hmodUser
);
2155 NtUserInternalGetWindowText(
2162 NtUserInvalidateRect(
2169 NtUserInvalidateRgn(
2176 NtUserIsClipboardFormatAvailable(
2189 NtUserLoadKeyboardLayoutEx(
2192 IN PUNICODE_STRING puszKeyboardName
,
2194 IN PUNICODE_STRING puszKLID
,
2200 NtUserLockWindowStation(
2201 HWINSTA hWindowStation
);
2205 NtUserLockWindowUpdate(
2210 NtUserLockWorkStation(VOID
);
2214 NtUserMapVirtualKeyEx( UINT keyCode
,
2219 typedef struct tagDOSENDMESSAGE
2225 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2234 ULONG_PTR ResultInfo
,
2235 DWORD dwType
, // FNID_XX types
2242 UINT cmd
, // Wine SW_ commands
2247 NtUserMNDragLeave(VOID
);
2257 NtUserModifyUserStartupInfoFlags(
2274 NtUserNotifyIMEStatus(
2281 NtUserNotifyProcessCreate(
2289 NtUserNotifyWinEvent(
2297 NtUserOpenClipboard(
2304 PUNICODE_STRING lpszDesktopName
,
2306 ACCESS_MASK dwDesiredAccess
);
2310 NtUserOpenInputDesktop(
2313 ACCESS_MASK dwDesiredAccess
);
2317 NtUserOpenWindowStation(
2318 PUNICODE_STRING lpszWindowStationName
,
2319 ACCESS_MASK dwDesiredAccess
);
2337 NtUserPeekMessage( PMSG pMsg
,
2353 NtUserPostThreadMessage(
2368 NtUserProcessConnect(
2370 OUT PUSERCONNECT pUserConnect
,
2371 IN DWORD dwSize
); // sizeof(USERCONNECT)
2375 NtUserQueryInformationThread(
2384 NtUserQueryInputContext(
2390 NtUserQuerySendMessage(
2395 NtUserQueryUserCounters(
2402 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2403 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2404 #define QUERY_WINDOW_ACTIVE 0x02
2405 #define QUERY_WINDOW_FOCUS 0x03
2406 #define QUERY_WINDOW_ISHUNG 0x04
2407 #define QUERY_WINDOW_REAL_ID 0x05
2416 NtUserRealInternalGetMessage(
2426 NtUserRealChildWindowFromPoint(
2433 NtUserRealWaitMessageEx(
2442 CONST RECT
*lprcUpdate
,
2449 NtUserRegisterClassExWOW(
2451 PUNICODE_STRING pustrClassName
,
2452 PUNICODE_STRING pustrCNVersion
,
2453 PCLSMENUNAME pClassMenuName
,
2460 NtUserRegisterRawInputDevices(
2461 IN PCRAWINPUTDEVICE pRawInputDevices
,
2462 IN UINT uiNumDevices
,
2467 NtUserRegisterUserApiHook(
2468 PUNICODE_STRING m_dllname1
,
2469 PUNICODE_STRING m_funname1
,
2475 NtUserRegisterHotKey(HWND hWnd
,
2482 NtUserRegisterTasklist(
2486 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2490 NtUserRemoteConnect(
2497 NtUserRemoteRedrawRectangle(
2505 NtUserRemoteRedrawScreen(VOID
);
2509 NtUserRemoteStopScreenUpdates(VOID
);
2512 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2516 NtUserResolveDesktop(
2524 NtUserResolveDesktopForWOW(
2541 CONST RECT
*lprcScroll
,
2542 CONST RECT
*lprcClip
,
2547 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2548 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2558 NtUserSetActiveWindow(HWND Wnd
);
2562 NtUserSetAppImeLevel(
2567 NtUserSetCapture(HWND Wnd
);
2573 ULONG_PTR dwNewLong
,
2585 NtUserSetClipboardData(
2592 NtUserSetClipboardViewer(
2593 HWND hWndNewViewer
);
2597 NtUserSelectPalette(
2600 BOOL ForceBackground
2605 NtUserSetConsoleReserveKeys(
2616 NtUserSetCursorContents(
2618 PICONINFO IconInfo
);
2622 NtUserSetCursorIconData(
2657 NtUserSetImeOwnerWindow(
2663 NtUserSetInformationProcess(
2671 NtUserSetInformationThread(
2672 IN HANDLE ThreadHandle
,
2673 IN USERTHREADINFOCLASS ThreadInformationClass
,
2674 IN PVOID ThreadInformation
,
2675 IN ULONG ThreadInformationLength
2680 NtUserSetInternalWindowPos(
2688 NtUserSetKeyboardState(
2693 NtUserSetLayeredWindowAttributes(
2701 NtUserSetLogonNotifyWindow(
2706 NtUserSetObjectInformation(
2709 PVOID pvInformation
,
2716 HWND hWndNewParent
);
2720 NtUserSetProcessWindowStation(
2721 HWINSTA hWindowStation
);
2724 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2734 NtUserSetScrollInfo(
2742 NtUserSetShellWindowEx(
2744 HWND hwndShellListView
);
2750 IN CONST INT
*lpaElements
,
2751 IN CONST COLORREF
*lpaRgbValues
,
2756 NtUserSetSystemCursor(
2762 NtUserSetThreadDesktop(
2767 NtUserSetThreadState(
2773 NtUserSetSystemTimer
2778 TIMERPROC lpTimerFunc
2783 NtUserSetThreadLayoutHandles(
2794 TIMERPROC lpTimerFunc
2799 NtUserSetWindowFNID(
2805 NtUserSetWindowLong(
2813 NtUserSetWindowPlacement(
2815 WINDOWPLACEMENT
*lpwndpl
);
2818 NTAPI
NtUserSetWindowPos(
2820 HWND hWndInsertAfter
,
2837 NtUserSetWindowsHookAW(
2844 NtUserSetWindowsHookEx(
2846 PUNICODE_STRING ModuleName
,
2854 NtUserSetWindowStationUser(
2861 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
2865 NtUserSetWinEventHook(
2868 HMODULE hmodWinEventProc
,
2869 PUNICODE_STRING puString
,
2870 WINEVENTPROC lpfnWinEventProc
,
2887 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
2897 NtUserShowWindowAsync(
2903 NtUserSoundSentry(VOID
);
2907 NtUserSwitchDesktop(
2912 NtUserSystemParametersInfo(
2920 NtUserTestForInteractiveUser(
2936 NtUserTrackMouseEvent(
2937 LPTRACKMOUSEEVENT lpEventTrack
);
2941 NtUserTranslateAccelerator(
2948 NtUserTranslateMessage(
2954 NtUserUnhookWindowsHookEx(
2959 NtUserUnhookWinEvent(
2960 HWINEVENTHOOK hWinEventHook
);
2964 NtUserUnloadKeyboardLayout(
2969 NtUserUnlockWindowStation(
2970 HWINSTA hWindowStation
);
2974 NtUserUnregisterClass(
2975 PUNICODE_STRING ClassNameOrAtom
,
2976 HINSTANCE hInstance
,
2977 PCLSMENUNAME pClassMenuName
);
2981 NtUserUnregisterHotKey(HWND hWnd
,
2986 NtUserUnregisterUserApiHook(VOID
);
2990 NtUserUpdateInputContext(
2997 NtUserUpdateInstance(
3004 NtUserUpdateLayeredWindow(
3012 BLENDFUNCTION
*pblend
,
3018 NtUserUpdatePerUserSystemParameters(
3024 NtUserUserHandleGrantAccess(
3025 IN HANDLE hUserHandle
,
3031 NtUserValidateHandleSecure(
3039 CONST RECT
*lpRect
);
3043 NtUserValidateTimerCallback(
3057 NtUserWaitForInputIdle(
3059 IN DWORD dwMilliseconds
,
3060 IN BOOL Unknown2
); // Always FALSE
3064 NtUserWaitForMsgAndEvent(
3069 NtUserWaitMessage(VOID
);
3073 NtUserWin32PoolAllocationStats(
3083 NtUserWindowFromPhysicalPoint(
3088 NtUserWindowFromPoint(
3094 NtUserYieldTask(VOID
);
3096 /* lParam of DDE messages */
3097 typedef struct tagKMDDEEXECUTEDATA
3101 /* BYTE Data[DataSize] */
3102 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3104 typedef struct tagKMDDELPARAM
3116 } KMDDELPARAM
, *PKMDDELPARAM
;
3123 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3126 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3127 #define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
3128 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3129 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3130 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3131 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3132 #define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
3133 #define TWOPARAM_ROUTINE_GETWINDOWRGNBOX 0xfffd0048 // user mode
3134 #define TWOPARAM_ROUTINE_GETWINDOWRGN 0xfffd0049 // user mode
3135 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3136 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3137 #define MSQ_STATE_CAPTURE 0x1
3138 #define MSQ_STATE_ACTIVE 0x2
3139 #define MSQ_STATE_FOCUS 0x3
3140 #define MSQ_STATE_MENUOWNER 0x4
3141 #define MSQ_STATE_MOVESIZE 0x5
3142 #define MSQ_STATE_CARET 0x6
3143 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3144 #define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
3145 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3146 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3150 NtUserBuildMenuItemList(
3157 /* Should be done in usermode and use NtUserGetCPD. */
3160 NtUserGetClassLong(HWND hWnd
, INT Offset
, BOOL Ansi
);
3164 NtUserGetMenuDefaultItem(
3171 NtUserGetLastInputInfo(
3172 PLASTINPUTINFO plii
);
3176 NtUserGetMinMaxInfo(
3178 MINMAXINFO
*MinMaxInfo
,
3183 NtUserGetMonitorInfo(
3184 IN HMONITOR hMonitor
,
3185 OUT LPMONITORINFO pMonitorInfo
);
3187 /* Should be done in usermode */
3189 /* (other FocusedItem values give the position of the focused item) */
3190 #define NO_SELECTED_ITEM 0xffff
3192 typedef struct tagROSMENUINFO
3194 /* ----------- MENUINFO ----------- */
3200 DWORD dwContextHelpID
;
3201 ULONG_PTR dwMenuData
;
3202 /* ----------- Extra ----------- */
3203 HMENU Self
; /* Handle of this menu */
3204 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3205 UINT FocusedItem
; /* Currently focused item */
3206 UINT MenuItemCount
; /* Number of items in the menu */
3207 HWND Wnd
; /* Window containing the menu */
3208 WORD Width
; /* Width of the whole menu */
3209 WORD Height
; /* Height of the whole menu */
3210 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3211 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3212 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3213 } ROSMENUINFO
, *PROSMENUINFO
;
3223 typedef struct tagROSMENUITEMINFO
3225 /* ----------- MENUITEMINFOW ----------- */
3232 HBITMAP hbmpChecked
;
3233 HBITMAP hbmpUnchecked
;
3238 /* ----------- Extra ----------- */
3239 RECT Rect
; /* Item area (relative to menu window) */
3240 UINT dxTab
; /* X position of text after Tab */
3241 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3242 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3250 PROSMENUITEMINFO lpmii
,
3256 NtUserMonitorFromPoint(
3262 NtUserMonitorFromRect(
3268 NtUserMonitorFromWindow(
3272 typedef struct _SETSCROLLBARINFO
3276 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3277 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3281 NtUserSetScrollBarInfo(
3284 SETSCROLLBARINFO
*info
);
3288 #endif /* __WIN32K_NTUSER_H */