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 /* Menu Item fType. */
235 #define MFT_RTOL 0x6000
237 typedef struct tagITEM
242 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
244 HANDLE hbmpUnchecked
;
245 USHORT
* lpstr
; /* Item text pointer. */
247 DWORD_PTR dwItemData
;
248 ULONG xItem
; /* Item position. left */
249 ULONG yItem
; /* " top */
250 ULONG cxItem
; /* Item Size Width */
251 ULONG cyItem
; /* " Height */
252 ULONG dxTab
; /* X position of text after Tab */
253 ULONG ulX
; /* underline.. start position */
254 ULONG ulWidth
; /* underline.. width */
255 HBITMAP hbmp
; /* bitmap */
256 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
257 INT cyBmp
; /* Height " */
260 typedef struct tagMENULIST
262 struct tagMENULIST
* pNext
;
263 struct tagMENU
* pMenu
;
264 } MENULIST
, *PMENULIST
;
266 /* Menu fFlags, upper byte is MNS_X style flags. */
267 #define MNF_POPUP 0x0001
268 #define MNF_UNDERLINE 0x0004
269 #define MNF_INACTIVE 0x0010
270 #define MNF_RTOL 0x0020
271 #define MNF_DESKTOPMN 0x0040
272 #define MNF_SYSDESKMN 0x0080
273 #define MNF_SYSSUBMENU 0x0100
275 typedef struct tagMENU
278 ULONG fFlags
; /* [Style flags | Menu flags] */
279 INT iItem
; /* nPos of selected item, if -1 not selected. */
280 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
281 UINT cItems
; /* Number of items in the menu */
282 ULONG cxMenu
; /* Width of the whole menu */
283 ULONG cyMenu
; /* Height of the whole menu */
284 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
285 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
286 PITEM rgItems
; /* Array of menu items */
287 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
288 DWORD dwContextHelpId
;
289 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
290 DWORD_PTR dwMenuData
; /* application defined value */
291 HBRUSH hbrBack
; /* brush for menu background */
292 INT iTop
; /* Current scroll position Top */
293 INT iMaxTop
; /* Current scroll position Max Top */
294 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
297 typedef struct _REGISTER_SYSCLASS
299 /* This is a reactos specific class used to initialize the
300 system window classes during user32 initialization */
309 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
311 typedef struct _CLSMENUNAME
313 LPSTR pszClientAnsiMenuName
;
314 LPWSTR pwszClientUnicodeMenuName
;
315 PUNICODE_STRING pusMenuName
;
316 } CLSMENUNAME
, *PCLSMENUNAME
;
318 typedef struct tagSBDATA
326 typedef struct tagSBINFO
335 UserGetCPDA2U
= 0x01, // " Unicode "
336 UserGetCPDU2A
= 0X02, // " Ansi "
337 UserGetCPDClass
= 0X10,
338 UserGetCPDWindow
= 0X20,
339 UserGetCPDDialog
= 0X40,
340 UserGetCPDWndtoCls
= 0X80
343 typedef struct _CALLPROCDATA
346 struct _CALLPROCDATA
*spcpdNext
;
347 WNDPROC pfnClientPrevious
;
349 } CALLPROCDATA
, *PCALLPROCDATA
;
351 #define CSF_SERVERSIDEPROC 0x0001
352 #define CSF_ANSIPROC 0x0002
353 #define CSF_WOWDEFERDESTROY 0x0004
354 #define CSF_SYSTEMCLASS 0x0008
355 #define CSF_WOWCLASS 0x0010
356 #define CSF_WOWEXTRA 0x0020
357 #define CSF_CACHEDSMICON 0x0040
358 #define CSF_WIN40COMPAT 0x0080
362 struct _CLS
*pclsNext
;
363 RTL_ATOM atomClassName
;
364 ATOM atomNVClassName
;
366 struct _DESKTOP
*rpdeskParent
;
369 PSTR lpszClientAnsiMenuName
; // For client use
370 PWSTR lpszClientUnicodeMenuName
; // " " "
371 PCALLPROCDATA spcpdFirst
;
372 struct _CLS
*pclsBase
;
373 struct _CLS
*pclsClone
;
374 ULONG cWndReferenceCount
;
380 HANDLE hIcon
; /* FIXME - Use pointer! */
382 HANDLE hCursor
; /* FIXME - Use pointer! */
384 HBRUSH hbrBackground
;
385 PWSTR lpszMenuName
; // kernel use
386 PSTR lpszAnsiClassName
; // "
387 HANDLE hIconSm
; /* FIXME - Use pointer! */
390 UINT Unicode
: 1; // !CSF_ANSIPROC
391 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
392 UINT MenuNameIsString
: 1;
397 typedef struct _SBINFOEX
399 SCROLLBARINFO ScrollBarInfo
;
400 SCROLLINFO ScrollInfo
;
401 } SBINFOEX
, *PSBINFOEX
;
403 // State Flags !Not Implemented!
404 #define WNDS_HASMENU 0X00000001
405 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
406 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
407 #define WNDS_HASCAPTION 0X00000008
408 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
409 #define WNDS_MSGBOX 0X00000020
410 #define WNDS_ACTIVEFRAME 0X00000040
411 #define WNDS_HASSPB 0X00000080
412 #define WNDS_NONCPAINT 0X00000100
413 #define WNDS_SENDERASEBACKGROUND 0X00000200
414 #define WNDS_ERASEBACKGROUND 0X00000400
415 #define WNDS_SENDNCPAINT 0X00000800
416 #define WNDS_INTERNALPAINT 0X00001000
417 #define WNDS_UPDATEDIRTY 0X00002000
418 #define WNDS_HIDDENPOPUP 0X00004000
419 #define WNDS_FORCEMENUDRAW 0X00008000
420 #define WNDS_DIALOGWINDOW 0X00010000
421 #define WNDS_HASCREATESTRUCTNAME 0X00020000
422 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
423 #define WNDS_ANSIWINDOWPROC 0x00080000
424 #define WNDS_BEGINGACTIVATED 0x00100000
425 #define WNDS_HASPALETTE 0x00200000
426 #define WNDS_PAINTNOTPROCESSED 0x00400000
427 #define WNDS_SYNCPAINTPENDING 0x00800000
428 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
429 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
430 #define WNDS_TOGGLETOPMOST 0x04000000
431 #define WNDS_REDRAWIFHUNG 0x08000000
432 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
433 #define WNDS_ANSICREATOR 0x20000000
434 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
435 #define WNDS_DESTROYED 0x80000000
437 // State2 Flags !Not Implemented!
438 #define WNDS2_WMPAINTSENT 0X00000001
439 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
440 #define WNDS2_STARTPAINT 0X00000004
441 #define WNDS2_OLDUI 0X00000008
442 #define WNDS2_HASCLIENTEDGE 0X00000010
443 #define WNDS2_BOTTOMMOST 0X00000020
444 #define WNDS2_FULLSCREEN 0X00000040
445 #define WNDS2_INDESTROY 0X00000080
446 #define WNDS2_WIN31COMPAT 0X00000100
447 #define WNDS2_WIN40COMPAT 0X00000200
448 #define WNDS2_WIN50COMPAT 0X00000400
449 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
450 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
451 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
452 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
453 #define WNDS2_HELPBUTTONDOWN 0X00008000
454 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
455 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
456 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
457 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
458 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
459 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
460 #define WNDS2_FORCENCPAINT 0X00400000
461 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
462 #define WNDS2_FULLSCREENMODE 0X01000000
463 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
464 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
465 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
466 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
467 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
469 /* Non SDK ExStyles */
470 #define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
471 #define WS_EX_FORCELEGACYRESIZENCMETR 0x00800000
472 #define WS_EX_UISTATEACTIVE 0x04000000
473 #define WS_EX_REDIRECTED 0X20000000
474 #define WS_EX_UISTATEKBACCELHIDDEN 0X40000000
475 #define WS_EX_UISTATEFOCUSRECTHIDDEN 0X80000000
476 #define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
479 #define WS_MAXIMIZED WS_MAXIMIZE
480 #define WS_MINIMIZED WS_MINIMIZE
483 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
484 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
485 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
486 #define WS_EX2_LINKED 0X00000008
487 #define WS_EX2_LAYEREDFORDWM 0X00000010
488 #define WS_EX2_LAYEREDLIMBO 0X00000020
489 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
490 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
491 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
492 #define WS_EX2_HASOVERLAY 0X00000200
493 #define WS_EX2_CONSOLEWINDOW 0X00000400
494 #define WS_EX2_CHILDNOACTIVATE 0X00000800
501 /* Extended style. */
505 /* Handle of the module that created the window. */
508 struct _WND
*spwndNext
;
509 struct _WND
*spwndPrev
;
510 struct _WND
*spwndParent
;
511 struct _WND
*spwndChild
;
512 struct _WND
*spwndOwner
;
516 /* Pointer to the window class. */
519 /* Property list head.*/
520 LIST_ENTRY PropListHead
;
524 /* system menu handle. */
527 /* Window menu handle or window id */
528 UINT IDMenu
; // Use spmenu
533 LARGE_UNICODE_STRING strName
;
534 /* Size of the extra data associated with the window. */
537 struct _WND
*spwndLastActive
;
538 //HIMC hImc; // Input context associated with this window.
540 //PACTIVATION_CONTEXT pActCtx;
541 //PD3DMATRIX pTransForm;
542 struct _WND
*spwndClipboardListener
;
553 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
554 /* Indicates whether the window is derived from a system class */
555 UINT InternalPosInitialized
: 1;
556 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
557 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
560 PSBINFOEX pSBInfoex
; // convert to PSBINFO
561 /* Entry in the list of thread windows. */
562 LIST_ENTRY ThreadListEntry
;
565 typedef struct _PFNCLIENT
567 WNDPROC pfnScrollBarWndProc
;
568 WNDPROC pfnTitleWndProc
;
569 WNDPROC pfnMenuWndProc
;
570 WNDPROC pfnDesktopWndProc
;
571 WNDPROC pfnDefWindowProc
;
572 WNDPROC pfnMessageWindowProc
;
573 WNDPROC pfnSwitchWindowProc
;
574 WNDPROC pfnButtonWndProc
;
575 WNDPROC pfnComboBoxWndProc
;
576 WNDPROC pfnComboListBoxProc
;
577 WNDPROC pfnDialogWndProc
;
578 WNDPROC pfnEditWndProc
;
579 WNDPROC pfnListBoxWndProc
;
580 WNDPROC pfnMDIClientWndProc
;
581 WNDPROC pfnStaticWndProc
;
582 WNDPROC pfnImeWndProc
;
583 WNDPROC pfnGhostWndProc
;
584 WNDPROC pfnHkINLPCWPSTRUCT
;
585 WNDPROC pfnHkINLPCWPRETSTRUCT
;
586 WNDPROC pfnDispatchHook
;
587 WNDPROC pfnDispatchDefWindowProc
;
588 WNDPROC pfnDispatchMessage
;
589 WNDPROC pfnMDIActivateDlgProc
;
590 } PFNCLIENT
, *PPFNCLIENT
;
593 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
594 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
597 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
599 typedef struct _PFNCLIENTWORKER
601 WNDPROC_EX pfnButtonWndProc
;
602 WNDPROC_EX pfnComboBoxWndProc
;
603 WNDPROC_EX pfnComboListBoxProc
;
604 WNDPROC_EX pfnDialogWndProc
;
605 WNDPROC_EX pfnEditWndProc
;
606 WNDPROC_EX pfnListBoxWndProc
;
607 WNDPROC_EX pfnMDIClientWndProc
;
608 WNDPROC_EX pfnStaticWndProc
;
609 WNDPROC_EX pfnImeWndProc
;
610 WNDPROC_EX pfnGhostWndProc
;
611 WNDPROC_EX pfnCtfHookProc
;
612 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
614 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
616 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
617 #define FNID_FIRST 0x029A
618 #define FNID_SCROLLBAR 0x029A
619 #define FNID_ICONTITLE 0x029B
620 #define FNID_MENU 0x029C
621 #define FNID_DESKTOP 0x029D
622 #define FNID_DEFWINDOWPROC 0x029E
623 #define FNID_MESSAGEWND 0x029F
624 #define FNID_SWITCH 0x02A0
625 #define FNID_BUTTON 0x02A1
626 #define FNID_COMBOBOX 0x02A2
627 #define FNID_COMBOLBOX 0x02A3
628 #define FNID_DIALOG 0x02A4
629 #define FNID_EDIT 0x02A5
630 #define FNID_LISTBOX 0x02A6
631 #define FNID_MDICLIENT 0x02A7
632 #define FNID_STATIC 0x02A8
633 #define FNID_IME 0x02A9
634 #define FNID_GHOST 0x02AA
635 #define FNID_CALLWNDPROC 0x02AB
636 #define FNID_CALLWNDPROCRET 0x02AC
637 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
638 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
639 #define FNID_MB_DLGPROC 0x02AF
640 #define FNID_MDIACTIVATEDLGPROC 0x02B0
641 #define FNID_SENDMESSAGE 0x02B1
642 #define FNID_SENDMESSAGEFF 0x02B2
643 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
644 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
645 #define FNID_SENDMESSAGETIMEOUT 0x02B4
646 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
647 #define FNID_TOOLTIPS 0x02B6
648 #define FNID_SENDNOTIFYMESSAGE 0x02B7
649 #define FNID_SENDMESSAGECALLBACK 0x02B8
650 #define FNID_LAST 0x02B9
652 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
653 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
655 #define FNID_DDEML 0x2000 // Registers DDEML
656 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
657 // Seen during WM_CREATE on error exit too.
658 #define FNID_FREED 0x8000 // Window being Freed...
660 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
662 #define GETPFNCLIENTA(fnid)\
663 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
664 #define GETPFNCLIENTW(fnid)\
665 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
667 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
669 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
670 #define ICLS_BUTTON 0
672 #define ICLS_STATIC 2
673 #define ICLS_LISTBOX 3
674 #define ICLS_SCROLLBAR 4
675 #define ICLS_COMBOBOX 5
676 #define ICLS_MDICLIENT 6
677 #define ICLS_COMBOLBOX 7
678 #define ICLS_DDEMLEVENT 8
679 #define ICLS_DDEMLMOTHER 9
680 #define ICLS_DDEML16BIT 10
681 #define ICLS_DDEMLCLIENTA 11
682 #define ICLS_DDEMLCLIENTW 12
683 #define ICLS_DDEMLSERVERA 13
684 #define ICLS_DDEMLSERVERW 14
686 #define ICLS_GHOST 16
687 #define ICLS_DESKTOP 17
688 #define ICLS_DIALOG 18
690 #define ICLS_SWITCH 20
691 #define ICLS_ICONTITLE 21
692 #define ICLS_TOOLTIPS 22
693 #if (_WIN32_WINNT <= 0x0501)
694 #define ICLS_UNKNOWN 22
695 #define ICLS_NOTUSED 23
697 #define ICLS_SYSSHADOW 23
698 #define ICLS_HWNDMESSAGE 24
699 #define ICLS_NOTUSED 25
703 #define COLOR_LAST COLOR_MENUBAR
704 #define MAX_MB_STRINGS 11
706 #define SRVINFO_APIHOOK 0x0010
707 #define SRVINFO_METRICS 0x0020
709 typedef struct tagOEMBITMAPINFO
715 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
717 typedef struct tagMBSTRING
722 } MBSTRING
, *PMBSTRING
;
724 typedef struct tagDPISERVERINFO
726 INT gclBorder
; /* 000 */
727 HFONT hCaptionFont
; /* 004 */
728 HFONT hMsgFont
; /* 008 */
729 INT cxMsgFontChar
; /* 00C */
730 INT cyMsgFontChar
; /* 010 */
731 UINT wMaxBtnSize
; /* 014 */
732 } DPISERVERINFO
, *PDPISERVERINFO
;
734 typedef struct _PERUSERSERVERINFO
736 INT aiSysMet
[SM_CMETRICS
];
737 ULONG argbSystemUnmatched
[COLOR_LAST
+1];
738 COLORREF argbSystem
[COLOR_LAST
+1];
739 HBRUSH ahbrSystem
[COLOR_LAST
+1];
743 DWORD dwLastRITEventTickCount
;
748 UINT ucWheelScrollLines
;
749 UINT ucWheelScrollChars
;
750 INT wMaxLeftOverlapChars
;
751 INT wMaxRightOverlapChars
;
754 TEXTMETRICW tmSysFont
;
755 DPISERVERINFO dpiSystem
;
756 HICON hIconSmWindows
;
759 DWORD dwAsyncKeyCache
;
761 OEMBITMAPINFO oembmi
[93];
770 DWORD dwLastSystemRITEventTickCountUpdate
;
771 ULONG adwDBGTAGFlags
[35];
774 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
776 typedef struct tagSERVERINFO
779 ULONG_PTR cHandleEntries
;
780 PFN_FNID mpFnidPfn
[FNID_NUM
];
781 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
782 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
783 PFNCLIENT apfnClientA
;
784 PFNCLIENT apfnClientW
;
785 PFNCLIENTWORKER apfnClientWorker
;
787 ATOM atomSysClass
[ICLS_NOTUSED
+1];
788 DWORD dwDefaultHeapBase
;
789 DWORD dwDefaultHeapSize
;
791 MBSTRING MBStrings
[MAX_MB_STRINGS
];
794 ATOM atomContextHelpIdProp
;
795 ATOM atomFrostedWindowProp
;
796 CHAR acOemToAnsi
[256];
797 CHAR acAnsiToOem
[256];
798 DWORD dwInstalledEventHooks
;
800 } SERVERINFO
, *PSERVERINFO
;
803 // Server event activity bits.
804 #define SRV_EVENT_MENU 0x0001
805 #define SRV_EVENT_END_APPLICATION 0x0002
806 #define SRV_EVENT_RUNNING 0x0004
807 #define SRV_EVENT_NAMECHANGE 0x0008
808 #define SRV_EVENT_VALUECHANGE 0x0010
809 #define SRV_EVENT_STATECHANGE 0x0020
810 #define SRV_EVENT_LOCATIONCHANGE 0x0040
811 #define SRV_EVENT_CREATE 0x8000
813 typedef struct _PROPLISTITEM
817 } PROPLISTITEM
, *PPROPLISTITEM
;
819 typedef struct _PROPERTY
821 LIST_ENTRY PropListEntry
;
824 } PROPERTY
, *PPROPERTY
;
826 typedef struct _BROADCASTPARM
833 } BROADCASTPARM
, *PBROADCASTPARM
;
835 PTHREADINFO
GetW32ThreadInfo(VOID
);
836 PPROCESSINFO
GetW32ProcessInfo(VOID
);
838 typedef struct _WNDMSG
844 typedef struct _SHAREDINFO
846 PSERVERINFO psi
; // global Server Info
847 PVOID aheList
; // Handle Entry List
848 PVOID pDispInfo
; // global PDISPLAYINFO pointer
849 ULONG_PTR ulSharedDelta
; // Heap delta
850 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
851 WNDMSG DefWindowMsgs
;
852 WNDMSG DefWindowSpecMsgs
;
853 } SHAREDINFO
, *PSHAREDINFO
;
855 typedef struct _USERCONNECT
858 ULONG ulCurrentVersion
;
859 DWORD dwDispatchCount
;
861 } USERCONNECT
, *PUSERCONNECT
;
864 // Non SDK Window Message types.
866 #define WM_CLIENTSHUTDOWN 59
867 #define WM_COPYGLOBALDATA 73
868 #define WM_SYSTIMER 280
869 #define WM_POPUPSYSTEMMENU 787
870 #define WM_CBT 1023 // ReactOS only.
871 #define WM_MAXIMUM 0x0001FFFF
874 // Non SDK DCE types.
876 #define DCX_USESTYLE 0x00010000
877 #define DCX_KEEPCLIPRGN 0x00040000
878 #define DCX_KEEPLAYOUT 0x40000000
879 #define DCX_PROCESSOWNED 0x80000000
882 // Non SDK Queue message types.
884 #define QS_SMRESULT 0x8000
888 NtUserAssociateInputContext(
919 NtUserCtxDisplayIOCtl(
938 NtUserDrawMenuBarTemp(
947 NtUserEnableMenuItem(
958 NtUserGetMenuBarInfo(
972 NtUserGetMenuItemRect(
986 NtUserHiliteMenuItem(
994 NtUserMenuItemFromPoint(
1016 NtUserSetMenuContextHelpId(
1018 DWORD dwContextHelpId
);
1022 NtUserSetMenuDefaultItem(
1029 NtUserSetMenuFlagRtoL(
1034 NtUserSetSystemMenu(
1040 NtUserThunkedMenuInfo(
1046 NtUserThunkedMenuItemInfo(
1051 LPMENUITEMINFOW lpmii
,
1052 PUNICODE_STRING lpszCaption
);
1056 NtUserTrackPopupMenuEx(
1066 NtUserActivateKeyboardLayout(
1072 NtUserAlterWindowStyle(
1079 NtUserAttachThreadInput(
1081 IN DWORD idAttachTo
,
1085 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1106 NtUserBuildHwndList(
1116 NtUserBuildNameList(
1120 PULONG pRequiredSize
);
1124 NtUserBuildPropList(
1130 /* apfnSimpleCall indices from Windows XP SP 2 */
1131 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1132 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1134 enum SimpleCallRoutines
1136 NOPARAM_ROUTINE_CREATEMENU
,
1137 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1138 #if (WIN32K_VERSION >= NTDDI_VISTA)
1139 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1140 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1141 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1142 NOPARAM_ROUTINE_DESTROY_CARET
,
1144 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1145 #if (WIN32K_VERSION < NTDDI_VISTA)
1146 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1147 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1148 NOPARAM_ROUTINE_DESTROY_CARET
,
1150 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1151 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1152 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1153 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1154 #if (WIN32K_VERSION >= NTDDI_VISTA)
1155 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1157 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1159 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1160 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1161 #if (WIN32K_VERSION >= NTDDI_VISTA)
1162 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1163 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1165 NOPARAM_ROUTINE_RELEASECAPTURE
,
1166 NOPARAM_ROUTINE_RESETDBLCLICK
,
1167 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1168 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1169 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1170 NOPARAM_ROUTINE_REMOTELOGOFF
,
1171 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1172 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1173 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1174 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1175 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1176 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1177 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1178 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1179 #if (WIN32K_VERSION >= NTDDI_VISTA)
1180 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1182 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1183 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1184 #if (WIN32K_VERSION < NTDDI_VISTA)
1185 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1187 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1188 #if (WIN32K_VERSION >= NTDDI_VISTA)
1189 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1191 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1192 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1193 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1194 #if (WIN32K_VERSION < NTDDI_VISTA)
1195 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1197 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1198 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1199 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1200 #if (WIN32K_VERSION < NTDDI_VISTA)
1201 ONEPARAM_ROUTINE_GETCURSORPOS
,
1203 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1204 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1205 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1206 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1207 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1208 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1209 #if (WIN32K_VERSION < NTDDI_VISTA)
1210 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1212 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1213 ONEPARAM_ROUTINE_LOADFONTS
,
1214 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1215 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1216 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1217 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1218 #if (WIN32K_VERSION < NTDDI_VISTA)
1219 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1221 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1222 ONEPARAM_ROUTINE_REGISTERLPK
,
1223 #if (WIN32K_VERSION >= NTDDI_VISTA)
1224 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1226 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1227 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1228 ONEPARAM_ROUTINE_RELEASEDC
,
1229 #if (WIN32K_VERSION >= NTDDI_VISTA)
1230 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1232 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1233 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1234 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1235 #if (WIN32K_VERSION < NTDDI_VISTA)
1236 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1238 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1239 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1240 #if (WIN32K_VERSION >= NTDDI_VISTA)
1241 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1243 ONEPARAM_ROUTINE_SHOWCURSOR
,
1244 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1245 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1246 X_ROUTINE_WOWMODULEUNLOAD
,
1247 #if (WIN32K_VERSION < NTDDI_VISTA)
1248 X_ROUTINE_REMOTENOTIFY
,
1250 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1251 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1252 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1253 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1254 HWND_ROUTINE_SETMSGBOX
,
1255 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1256 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1257 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1258 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1259 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1260 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1261 HWNDPARAM_ROUTINE_SETVISIBLE
,
1262 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1263 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1264 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1265 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1266 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1267 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1268 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1269 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1270 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1271 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1272 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1273 HWNDLOCK_ROUTINE_SETSYSMENU
,
1274 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1275 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1276 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1277 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1278 TWOPARAM_ROUTINE_REDRAWTITLE
,
1279 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1280 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1281 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1282 TWOPARAM_ROUTINE_VALIDATERGN
,
1283 #if (WIN32K_VERSION >= NTDDI_VISTA)
1284 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1285 TWOPARAM_ROUTINE_GETCURSORPOS
,
1287 TWOPARAM_ROUTINE_GETHDEVNAME
,
1288 TWOPARAM_ROUTINE_INITANSIOEM
,
1289 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1290 #if (WIN32K_VERSION >= NTDDI_VISTA)
1291 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1293 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1294 #if (WIN32K_VERSION >= NTDDI_VISTA)
1295 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1297 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1299 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1300 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1301 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1302 TWOPARAM_ROUTINE_SETCARETPOS
,
1303 TWOPARAM_ROUTINE_SETCURSORPOS
,
1304 #if (WIN32K_VERSION >= NTDDI_VISTA)
1305 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1307 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1308 TWOPARAM_ROUTINE_WOWCLEANUP
1331 NtUserCallHwndParam(
1338 NtUserCallHwndParamLock(
1345 NtUserCallMsgFilter(
1351 NtUserCallNextHookEx(
1377 NtUserChangeClipboardChain(
1383 NtUserChangeDisplaySettings(
1384 PUNICODE_STRING lpszDeviceName
,
1385 LPDEVMODEW lpDevMode
,
1392 NtUserCheckDesktopByThreadId(
1397 NtUserCheckWindowThreadDesktop(
1404 NtUserCheckImeHotKey(
1409 NtUserChildWindowFromPointEx(
1422 NtUserCloseClipboard(VOID
);
1431 NtUserCloseWindowStation(
1436 NtUserConsoleControl(
1443 NtUserConvertMemHandle(
1449 NtUserCopyAcceleratorTable(
1456 NtUserCountClipboardFormats(VOID
);
1460 NtUserCreateAcceleratorTable(
1462 SIZE_T EntriesCount
);
1474 NtUserCreateDesktop(
1475 POBJECT_ATTRIBUTES poa
,
1476 PUNICODE_STRING lpszDesktopDevice
,
1479 ACCESS_MASK dwDesiredAccess
);
1483 NtUserCreateInputContext(
1488 NtUserCreateLocalMemHandle(
1496 NtUserCreateWindowEx(
1497 DWORD dwExStyle
, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
1498 PLARGE_STRING plstrClassName
,
1499 PLARGE_STRING plstrClsVersion
,
1500 PLARGE_STRING plstrWindowName
,
1508 HINSTANCE hInstance
,
1515 NtUserCreateWindowStation(
1516 PUNICODE_STRING lpszWindowStationName
,
1517 ACCESS_MASK dwDesiredAccess
,
1518 LPSECURITY_ATTRIBUTES lpSecurity
,
1526 NtUserDdeGetQualityOfService(
1529 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1533 NtUserDdeInitialize(
1542 NtUserDdeSetQualityOfService(
1544 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1545 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1548 NtUserDeferWindowPos(
1551 HWND WndInsertAfter
,
1559 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1563 NtUserDestroyAcceleratorTable(
1568 NtUserDestroyCursor(
1574 NtUserDestroyInputContext(
1578 NtUserDestroyWindow(HWND Wnd
);
1582 NtUserDisableThreadIme(
1587 NtUserDispatchMessage(PMSG pMsg
);
1606 NtUserDrawAnimatedRects(
1622 NtUserDrawCaptionTemp(
1628 const PUNICODE_STRING str
,
1631 // Used with NtUserDrawIconEx, last parameter.
1632 typedef struct _DRAWICONEXDATA
1638 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1650 HBRUSH hbrFlickerFreeDraw
,
1657 NtUserEmptyClipboard(VOID
);
1661 NtUserEnableScrollBar(
1668 NtUserEndDeferWindowPosEx(
1673 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1677 NtUserEnumDisplayDevices (
1678 PUNICODE_STRING lpDevice
, /* device name */
1679 DWORD iDevNum
, /* display device */
1680 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1681 DWORD dwFlags
); /* reserved */
1685 NtUserEnumDisplayMonitors (
1688 MONITORENUMPROC lpfnEnum,
1690 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1693 NtUserEnumDisplayMonitors(
1694 OPTIONAL IN HDC hDC
,
1695 OPTIONAL IN LPCRECT pRect
,
1696 OPTIONAL OUT HMONITOR
*hMonitorList
,
1697 OPTIONAL OUT LPRECT monitorRectList
,
1698 OPTIONAL IN DWORD listSize
);
1703 NtUserEnumDisplaySettings(
1704 PUNICODE_STRING lpszDeviceName
,
1706 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1716 NtUserExcludeUpdateRgn(
1730 NtUserFindExistingCursorIcon(
1740 HWND hwndChildAfter
,
1741 PUNICODE_STRING ucClassName
,
1742 PUNICODE_STRING ucWindowName
,
1748 NtUserFlashWindowEx(
1749 IN PFLASHWINFO pfwi
);
1753 NtUserGetAltTabInfo(
1762 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1766 NtUserGetAppImeLevel(
1771 NtUserGetAsyncKeyState(
1782 NtUserGetCaretBlinkTime(VOID
);
1790 NtUserGetClassInfo(HINSTANCE hInstance
,
1791 PUNICODE_STRING ClassName
,
1793 LPWSTR
*ppszMenuName
,
1798 NtUserGetClassName(HWND hWnd
,
1799 PUNICODE_STRING ClassName
,
1801 #if 0 // Real NtUserGetClassName
1804 NtUserGetClassName(HWND hWnd
,
1805 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1806 PUNICODE_STRING ClassName
);
1811 NtUserGetClipboardData(
1817 NtUserGetClipboardFormatName(
1819 PUNICODE_STRING FormatName
,
1824 NtUserGetClipboardOwner(VOID
);
1828 NtUserGetClipboardSequenceNumber(VOID
);
1832 NtUserGetClipboardViewer(VOID
);
1836 NtUserGetClipCursor(
1841 NtUserGetComboBoxInfo(
1843 PCOMBOBOXINFO pcbi
);
1847 NtUserGetControlBrush(
1854 NtUserGetControlColor(
1869 NtUserGetCursorFrameInfo(
1877 NtUserGetCursorInfo(
1894 NtUserGetDoubleClickTime(VOID
);
1898 NtUserGetForegroundWindow(VOID
);
1902 NtUserGetGuiResources(
1908 NtUserGetGUIThreadInfo(
1910 LPGUITHREADINFO lpgui
);
1917 PUNICODE_STRING lpInstName
,
1918 PUNICODE_STRING lpResName
,
1946 NtUserGetInternalWindowPos(
1953 NtUserGetKeyboardLayout(
1958 NtUserGetKeyboardLayoutList(
1964 NtUserGetKeyboardLayoutName(
1969 NtUserGetKeyboardState(
1974 NtUserGetKeyboardType(
1979 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
1988 NtUserGetLayeredWindowAttributes(
1996 NtUserGetListBoxInfo(
1999 typedef struct tagNTUSERGETMESSAGEINFO
2003 } NTUSERGETMESSAGEINFO
, *PNTUSERGETMESSAGEINFO
;
2008 PNTUSERGETMESSAGEINFO MsgInfo
,
2011 UINT wMsgFilterMax
);
2015 NtUserGetMouseMovePointsEx(
2017 LPMOUSEMOVEPOINT lppt
,
2018 LPMOUSEMOVEPOINT lpptBuf
,
2024 NtUserGetObjectInformation(
2027 PVOID pvInformation
,
2029 PDWORD nLengthNeeded
);
2033 NtUserGetOpenClipboardWindow(VOID
);
2037 NtUserGetPriorityClipboardFormat(
2038 UINT
*paFormatPriorityList
,
2043 NtUserGetProcessWindowStation(VOID
);
2047 NtUserGetRawInputBuffer(
2054 NtUserGetRawInputData(
2055 HRAWINPUT hRawInput
,
2063 NtUserGetRawInputDeviceInfo(
2071 NtUserGetRawInputDeviceList(
2072 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2073 PUINT puiNumDevices
,
2078 NtUserGetRegisteredRawInputDevices(
2079 PRAWINPUTDEVICE pRawInputDevices
,
2080 PUINT puiNumDevices
,
2085 NtUserGetScrollBarInfo(
2088 PSCROLLBARINFO psbi
);
2092 NtUserGetThreadDesktop(
2097 enum ThreadStateRoutines
2099 THREADSTATE_GETTHREADINFO
,
2100 THREADSTATE_INSENDMESSAGE
,
2101 THREADSTATE_FOCUSWINDOW
,
2102 THREADSTATE_ACTIVEWINDOW
,
2103 THREADSTATE_CAPTUREWINDOW
,
2104 THREADSTATE_PROGMANWINDOW
,
2105 THREADSTATE_TASKMANWINDOW
,
2106 THREADSTATE_GETMESSAGETIME
,
2107 THREADSTATE_GETINPUTSTATE
2112 NtUserGetThreadState(
2117 NtUserGetTitleBarInfo(
2122 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2138 NtUserGetWindowPlacement(
2140 WINDOWPLACEMENT
*lpwndpl
);
2145 HINSTANCE hInstance
,
2146 PUNICODE_STRING ClassName
);
2150 NtUserHardErrorControl(
2157 NtUserImpersonateDdeClientWindow(
2165 HANDLE hPowerRequestEvent
,
2166 HANDLE hMediaRequestEvent
);
2170 NtUserInitializeClientPfnArrays(
2171 PPFNCLIENT pfnClientA
,
2172 PPFNCLIENT pfnClientW
,
2173 PPFNCLIENTWORKER pfnClientWorker
,
2174 HINSTANCE hmodUser
);
2194 NtUserInternalGetWindowText(
2201 NtUserInvalidateRect(
2208 NtUserInvalidateRgn(
2215 NtUserIsClipboardFormatAvailable(
2228 NtUserLoadKeyboardLayoutEx(
2231 IN PUNICODE_STRING puszKeyboardName
,
2233 IN PUNICODE_STRING puszKLID
,
2239 NtUserLockWindowStation(
2240 HWINSTA hWindowStation
);
2244 NtUserLockWindowUpdate(
2249 NtUserLockWorkStation(VOID
);
2253 NtUserMapVirtualKeyEx( UINT keyCode
,
2264 ULONG_PTR ResultInfo
,
2265 DWORD dwType
, // FNID_XX types
2272 UINT cmd
, // Wine SW_ commands
2277 NtUserMNDragLeave(VOID
);
2287 NtUserModifyUserStartupInfoFlags(
2304 NtUserNotifyIMEStatus(
2311 NtUserNotifyProcessCreate(
2319 NtUserNotifyWinEvent(
2327 NtUserOpenClipboard(
2334 PUNICODE_STRING lpszDesktopName
,
2336 ACCESS_MASK dwDesiredAccess
);
2340 NtUserOpenInputDesktop(
2343 ACCESS_MASK dwDesiredAccess
);
2347 NtUserOpenWindowStation(
2348 PUNICODE_STRING lpszWindowStationName
,
2349 ACCESS_MASK dwDesiredAccess
);
2369 PNTUSERGETMESSAGEINFO MsgInfo
,
2385 NtUserPostThreadMessage(
2400 NtUserProcessConnect(
2402 OUT PUSERCONNECT pUserConnect
,
2403 IN DWORD dwSize
); // sizeof(USERCONNECT)
2407 NtUserQueryInformationThread(
2416 NtUserQueryInputContext(
2422 NtUserQuerySendMessage(
2427 NtUserQueryUserCounters(
2434 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2435 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2436 #define QUERY_WINDOW_ACTIVE 0x02
2437 #define QUERY_WINDOW_FOCUS 0x03
2438 #define QUERY_WINDOW_ISHUNG 0x04
2439 #define QUERY_WINDOW_REAL_ID 0x05
2448 NtUserRealInternalGetMessage(
2458 NtUserRealChildWindowFromPoint(
2465 NtUserRealWaitMessageEx(
2474 CONST RECT
*lprcUpdate
,
2481 NtUserRegisterClassExWOW(
2483 PUNICODE_STRING pustrClassName
,
2484 PUNICODE_STRING pustrCNVersion
,
2485 PCLSMENUNAME pClassMenuName
,
2492 NtUserRegisterRawInputDevices(
2493 IN PCRAWINPUTDEVICE pRawInputDevices
,
2494 IN UINT uiNumDevices
,
2499 NtUserRegisterUserApiHook(
2500 PUNICODE_STRING m_dllname1
,
2501 PUNICODE_STRING m_funname1
,
2507 NtUserRegisterHotKey(HWND hWnd
,
2514 NtUserRegisterTasklist(
2518 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2522 NtUserRemoteConnect(
2529 NtUserRemoteRedrawRectangle(
2537 NtUserRemoteRedrawScreen(VOID
);
2541 NtUserRemoteStopScreenUpdates(VOID
);
2544 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2548 NtUserResolveDesktop(
2556 NtUserResolveDesktopForWOW(
2573 CONST RECT
*lprcScroll
,
2574 CONST RECT
*lprcClip
,
2579 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2580 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2590 NtUserSetActiveWindow(HWND Wnd
);
2594 NtUserSetAppImeLevel(
2599 NtUserSetCapture(HWND Wnd
);
2605 ULONG_PTR dwNewLong
,
2617 NtUserSetClipboardData(
2624 NtUserSetClipboardViewer(
2625 HWND hWndNewViewer
);
2629 NtUserSelectPalette(
2632 BOOL ForceBackground
2637 NtUserSetConsoleReserveKeys(
2648 NtUserSetCursorContents(
2650 PICONINFO IconInfo
);
2654 NtUserSetCursorIconData(
2689 NtUserSetImeOwnerWindow(
2695 NtUserSetInformationProcess(
2703 NtUserSetInformationThread(
2704 IN HANDLE ThreadHandle
,
2705 IN USERTHREADINFOCLASS ThreadInformationClass
,
2706 IN PVOID ThreadInformation
,
2707 IN ULONG ThreadInformationLength
2712 NtUserSetInternalWindowPos(
2720 NtUserSetKeyboardState(
2725 NtUserSetLayeredWindowAttributes(
2733 NtUserSetLogonNotifyWindow(
2738 NtUserSetObjectInformation(
2741 PVOID pvInformation
,
2748 HWND hWndNewParent
);
2752 NtUserSetProcessWindowStation(
2753 HWINSTA hWindowStation
);
2756 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2766 NtUserSetScrollInfo(
2774 NtUserSetShellWindowEx(
2776 HWND hwndShellListView
);
2782 IN CONST INT
*lpaElements
,
2783 IN CONST COLORREF
*lpaRgbValues
,
2788 NtUserSetSystemCursor(
2794 NtUserSetThreadDesktop(
2799 NtUserSetThreadState(
2805 NtUserSetSystemTimer
2810 TIMERPROC lpTimerFunc
2815 NtUserSetThreadLayoutHandles(
2826 TIMERPROC lpTimerFunc
2831 NtUserSetWindowFNID(
2837 NtUserSetWindowLong(
2845 NtUserSetWindowPlacement(
2847 WINDOWPLACEMENT
*lpwndpl
);
2850 NTAPI
NtUserSetWindowPos(
2852 HWND hWndInsertAfter
,
2869 NtUserSetWindowsHookAW(
2876 NtUserSetWindowsHookEx(
2878 PUNICODE_STRING ModuleName
,
2886 NtUserSetWindowStationUser(
2893 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
2897 NtUserSetWinEventHook(
2900 HMODULE hmodWinEventProc
,
2901 PUNICODE_STRING puString
,
2902 WINEVENTPROC lpfnWinEventProc
,
2919 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
2929 NtUserShowWindowAsync(
2935 NtUserSoundSentry(VOID
);
2939 NtUserSwitchDesktop(
2944 NtUserSystemParametersInfo(
2952 NtUserTestForInteractiveUser(
2968 NtUserTrackMouseEvent(
2969 LPTRACKMOUSEEVENT lpEventTrack
);
2973 NtUserTranslateAccelerator(
2980 NtUserTranslateMessage(
2986 NtUserUnhookWindowsHookEx(
2991 NtUserUnhookWinEvent(
2992 HWINEVENTHOOK hWinEventHook
);
2996 NtUserUnloadKeyboardLayout(
3001 NtUserUnlockWindowStation(
3002 HWINSTA hWindowStation
);
3006 NtUserUnregisterClass(
3007 PUNICODE_STRING ClassNameOrAtom
,
3008 HINSTANCE hInstance
,
3009 PCLSMENUNAME pClassMenuName
);
3013 NtUserUnregisterHotKey(HWND hWnd
,
3018 NtUserUnregisterUserApiHook(VOID
);
3022 NtUserUpdateInputContext(
3029 NtUserUpdateInstance(
3036 NtUserUpdateLayeredWindow(
3044 BLENDFUNCTION
*pblend
,
3050 NtUserUpdatePerUserSystemParameters(
3056 NtUserUserHandleGrantAccess(
3057 IN HANDLE hUserHandle
,
3063 NtUserValidateHandleSecure(
3071 CONST RECT
*lpRect
);
3075 NtUserValidateTimerCallback(
3089 NtUserWaitForInputIdle(
3091 IN DWORD dwMilliseconds
,
3092 IN BOOL Unknown2
); // Always FALSE
3096 NtUserWaitForMsgAndEvent(
3101 NtUserWaitMessage(VOID
);
3105 NtUserWin32PoolAllocationStats(
3115 NtUserWindowFromPhysicalPoint(
3120 NtUserWindowFromPoint(
3126 NtUserYieldTask(VOID
);
3128 /* lParam of DDE messages */
3129 typedef struct tagKMDDEEXECUTEDATA
3133 /* BYTE Data[DataSize] */
3134 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3136 typedef struct tagKMDDELPARAM
3148 } KMDDELPARAM
, *PKMDDELPARAM
;
3155 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3158 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3159 #define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
3160 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3161 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3162 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3163 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3164 #define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0xfffe0027
3165 #define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
3166 #define TWOPARAM_ROUTINE_GETWINDOWRGNBOX 0xfffd0048 // user mode
3167 #define TWOPARAM_ROUTINE_GETWINDOWRGN 0xfffd0049 // user mode
3168 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3169 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3170 #define MSQ_STATE_CAPTURE 0x1
3171 #define MSQ_STATE_ACTIVE 0x2
3172 #define MSQ_STATE_FOCUS 0x3
3173 #define MSQ_STATE_MENUOWNER 0x4
3174 #define MSQ_STATE_MOVESIZE 0x5
3175 #define MSQ_STATE_CARET 0x6
3176 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3177 #define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
3178 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3179 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3183 NtUserBuildMenuItemList(
3190 /* Should be done in usermode and use NtUserGetCPD. */
3193 NtUserGetClassLong(HWND hWnd
, INT Offset
, BOOL Ansi
);
3197 NtUserGetMenuDefaultItem(
3204 NtUserGetLastInputInfo(
3205 PLASTINPUTINFO plii
);
3209 NtUserGetMinMaxInfo(
3211 MINMAXINFO
*MinMaxInfo
,
3216 NtUserGetMonitorInfo(
3217 IN HMONITOR hMonitor
,
3218 OUT LPMONITORINFO pMonitorInfo
);
3220 /* Should be done in usermode */
3222 /* (other FocusedItem values give the position of the focused item) */
3223 #define NO_SELECTED_ITEM 0xffff
3225 typedef struct tagROSMENUINFO
3227 /* ----------- MENUINFO ----------- */
3233 DWORD dwContextHelpID
;
3234 ULONG_PTR dwMenuData
;
3235 /* ----------- Extra ----------- */
3236 HMENU Self
; /* Handle of this menu */
3237 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3238 UINT FocusedItem
; /* Currently focused item */
3239 UINT MenuItemCount
; /* Number of items in the menu */
3240 HWND Wnd
; /* Window containing the menu */
3241 WORD Width
; /* Width of the whole menu */
3242 WORD Height
; /* Height of the whole menu */
3243 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3244 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3245 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3246 } ROSMENUINFO
, *PROSMENUINFO
;
3256 typedef struct tagROSMENUITEMINFO
3258 /* ----------- MENUITEMINFOW ----------- */
3265 HBITMAP hbmpChecked
;
3266 HBITMAP hbmpUnchecked
;
3271 /* ----------- Extra ----------- */
3272 RECT Rect
; /* Item area (relative to menu window) */
3273 UINT dxTab
; /* X position of text after Tab */
3274 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3275 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3283 PROSMENUITEMINFO lpmii
,
3289 NtUserMonitorFromPoint(
3295 NtUserMonitorFromRect(
3301 NtUserMonitorFromWindow(
3306 typedef struct tagNTUSERSENDMESSAGEINFO
3308 BOOL HandledByKernel
;
3311 } NTUSERSENDMESSAGEINFO
, *PNTUSERSENDMESSAGEINFO
;
3313 /* use NtUserMessageCall */
3315 NtUserSendMessage(HWND hWnd
,
3319 PNTUSERSENDMESSAGEINFO Info
);
3321 /* use NtUserMessageCall */
3323 NtUserSendMessageTimeout(HWND hWnd
,
3330 PNTUSERSENDMESSAGEINFO Info
);
3332 typedef struct _SETSCROLLBARINFO
3336 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3337 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3341 NtUserSetScrollBarInfo(
3344 SETSCROLLBARINFO
*info
);
3348 #endif /* __WIN32K_NTUSER_H */