1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
10 #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
11 #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
13 #define HANDLEENTRY_INDESTROY 1
15 typedef struct _USER_HANDLE_ENTRY
17 void *ptr
; /* pointer to object */
21 PTHREADINFO pti
; // pointer to Win32ThreadInfo
22 PPROCESSINFO ppi
; // pointer to W32ProcessInfo
24 unsigned char type
; /* object type (0 if free) */
26 unsigned short generation
; /* generation counter */
27 } USER_HANDLE_ENTRY
, * PUSER_HANDLE_ENTRY
;
29 typedef struct _USER_HANDLE_TABLE
31 PUSER_HANDLE_ENTRY handles
;
32 PUSER_HANDLE_ENTRY freelist
;
34 int allocated_handles
;
35 } USER_HANDLE_TABLE
, * PUSER_HANDLE_TABLE
;
37 typedef enum _USER_OBJECT_TYPE
63 typedef enum _USERTHREADINFOCLASS
65 UserThreadShutdownInformation
,
68 UserThreadWOWInformation
,
70 UserThreadInitiateShutdown
,
71 UserThreadEndShutdown
,
72 UserThreadUseActiveDesktop
,
74 UserThreadRestoreDesktop
,
76 } USERTHREADINFOCLASS
;
78 typedef struct _LARGE_UNICODE_STRING
81 ULONG MaximumLength
:31;
84 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
86 typedef struct _LARGE_STRING
89 ULONG MaximumLength
:31;
92 } LARGE_STRING
, *PLARGE_STRING
;
94 // Based on ANSI_STRING
96 typedef struct _LARGE_ANSI_STRING
99 ULONG MaximumLength
:31;
102 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
104 VOID NTAPI
RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING
,IN PCSZ
,IN INT
);
105 VOID NTAPI
RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING
,IN PCWSTR
,IN INT
);
106 BOOL NTAPI
RtlLargeStringToUnicodeString( PUNICODE_STRING
, PLARGE_STRING
);
108 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
110 typedef struct _DESKTOPINFO
113 PVOID pvDesktopLimit
;
116 LIST_ENTRY aphkStart
[NB_HOOKS
];
122 PPROCESSINFO ppiShellProcess
;
129 UINT LastInputWasKbd
: 1;
133 WCHAR szDesktopName
[1];
134 } DESKTOPINFO
, *PDESKTOPINFO
;
136 #define CTI_INSENDMESSAGE 0x0002
138 typedef struct _CLIENTTHREADINFO
143 WORD fsWakeBitsJournal
;
145 ULONG tickLastMsgChecked
;
147 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
155 typedef struct _THROBJHEAD
159 } THROBJHEAD
, *PTHROBJHEAD
;
161 typedef struct _THRDESKHEAD
164 struct _DESKTOP
*rpdesk
;
166 } THRDESKHEAD
, *PTHRDESKHEAD
;
168 typedef struct _PROCDESKHEAD
172 struct _DESKTOP
*rpdesk
;
174 } PROCDESKHEAD
, *PPROCDESKHEAD
;
176 typedef struct _PROCMARKHEAD
181 } PROCMARKHEAD
, *PPROCMARKHEAD
;
183 #define UserHMGetHandle(obj) ((obj)->head.h)
185 /* Window Client Information structure */
188 #define WEF_SETBYWNDPTI 0x0001
190 typedef struct tagHOOK
193 struct tagHOOK
*phkNext
; /* This is for user space. */
194 int HookId
; /* Hook table index */
196 ULONG flags
; /* Some internal flags */
198 PTHREADINFO ptiHooked
;
199 struct _DESKTOP
*rpdesk
;
201 LIST_ENTRY Chain
; /* Hook chain entry */
202 struct _ETHREAD
* Thread
; /* Thread owning the hook */
203 HOOKPROC Proc
; /* Hook function */
204 BOOLEAN Ansi
; /* Is it an Ansi hook? */
205 UNICODE_STRING ModuleName
; /* Module name for global hooks */
208 /* THREADINFO Flags */
209 #define TIF_INCLEANUP 0x00000001
210 #define TIF_16BIT 0x00000002
211 #define TIF_SYSTEMTHREAD 0x00000004
212 #define TIF_CSRSSTHREAD 0x00000008
213 #define TIF_TRACKRECTVISIBLE 0x00000010
214 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
215 #define TIF_DONTATTACHQUEUE 0x00000040
216 #define TIF_DONTJOURNALATTACH 0x00000080
217 #define TIF_WOW64 0x00000100
218 #define TIF_INACTIVATEAPPMSG 0x00000200
219 #define TIF_SPINNING 0x00000400
220 #define TIF_PALETTEAWARE 0x00000800
221 #define TIF_SHAREDWOW 0x00001000
222 #define TIF_FIRSTIDLE 0x00002000
223 #define TIF_WAITFORINPUTIDLE 0x00004000
224 #define TIF_MOVESIZETRACKING 0x00008000
225 #define TIF_VDMAPP 0x00010000
226 #define TIF_DOSEMULATOR 0x00020000
227 #define TIF_GLOBALHOOKER 0x00040000
228 #define TIF_DELAYEDEVENT 0x00080000
229 #define TIF_MSGPOSCHANGED 0x00100000
230 #define TIF_SHUTDOWNCOMPLETE 0x00200000
231 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
232 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
233 #define TIF_GUITHREADINITIALIZED 0x02000000
234 #define TIF_DISABLEIME 0x04000000
235 #define TIF_INGETTEXTLENGTH 0x08000000
236 #define TIF_ANSILENGTH 0x10000000
237 #define TIF_DISABLEHOOKS 0x20000000
239 typedef struct _CALLBACKWND
243 } CALLBACKWND
, *PCALLBACKWND
;
245 #define CI_TRANSACTION 0x00000001
246 #define CI_QUEUEMSG 0x00000002
247 #define CI_WOW 0x00000004
248 #define CI_INITTHREAD 0x00000008
249 #define CI_CURTHPRHOOK 0x00000010
250 #define CI_CLASSESREGISTERED 0x00000020
251 #define CI_IMMACTIVATE 0x00000040
253 typedef struct _CLIENTINFO
259 DWORD dwCompatFlags2
;
260 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
261 PDESKTOPINFO pDeskInfo
;
262 ULONG_PTR ulClientDelta
;
265 CALLBACKWND CallbackWnd
;
267 INT cInDDEMLCallback
;
268 PCLIENTTHREADINFO pClientThreadInfo
;
269 ULONG_PTR dwHookData
;
272 DWORD dwAsyncKeyCache
;
273 BYTE afAsyncKeyState
[8];
274 BYTE afAsyncKeyStateRecentDow
[8];
279 LPDWORD lpdwRegisteredClasses
;
280 ULONG Win32ClientInfo3
[27];
281 /* It's just a pointer reference not to be used w the structure in user space. */
283 } CLIENTINFO
, *PCLIENTINFO
;
285 /* Make sure it fits into the TEB */
286 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
288 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
290 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
291 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
292 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
294 /* Menu Item fType. */
295 #define MFT_RTOL 0x6000
297 typedef struct tagITEM
302 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
304 HANDLE hbmpUnchecked
;
305 USHORT
* lpstr
; /* Item text pointer. */
307 DWORD_PTR dwItemData
;
308 ULONG xItem
; /* Item position. left */
309 ULONG yItem
; /* " top */
310 ULONG cxItem
; /* Item Size Width */
311 ULONG cyItem
; /* " Height */
312 ULONG dxTab
; /* X position of text after Tab */
313 ULONG ulX
; /* underline.. start position */
314 ULONG ulWidth
; /* underline.. width */
315 HBITMAP hbmp
; /* bitmap */
316 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
317 INT cyBmp
; /* Height " */
320 typedef struct tagMENULIST
322 struct tagMENULIST
* pNext
;
323 struct tagMENU
* pMenu
;
324 } MENULIST
, *PMENULIST
;
326 /* Menu fFlags, upper byte is MNS_X style flags. */
327 #define MNF_POPUP 0x0001
328 #define MNF_UNDERLINE 0x0004
329 #define MNF_INACTIVE 0x0010
330 #define MNF_RTOL 0x0020
331 #define MNF_DESKTOPMN 0x0040
332 #define MNF_SYSDESKMN 0x0080
333 #define MNF_SYSSUBMENU 0x0100
335 typedef struct tagMENU
338 ULONG fFlags
; /* [Style flags | Menu flags] */
339 INT iItem
; /* nPos of selected item, if -1 not selected. */
340 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
341 UINT cItems
; /* Number of items in the menu */
342 ULONG cxMenu
; /* Width of the whole menu */
343 ULONG cyMenu
; /* Height of the whole menu */
344 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
345 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
346 PITEM rgItems
; /* Array of menu items */
347 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
348 DWORD dwContextHelpId
;
349 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
350 DWORD_PTR dwMenuData
; /* application defined value */
351 HBRUSH hbrBack
; /* brush for menu background */
352 INT iTop
; /* Current scroll position Top */
353 INT iMaxTop
; /* Current scroll position Max Top */
354 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
357 typedef struct _REGISTER_SYSCLASS
359 /* This is a reactos specific class used to initialize the
360 system window classes during user32 initialization */
369 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
371 typedef struct _CLSMENUNAME
373 LPSTR pszClientAnsiMenuName
;
374 LPWSTR pwszClientUnicodeMenuName
;
375 PUNICODE_STRING pusMenuName
;
376 } CLSMENUNAME
, *PCLSMENUNAME
;
378 typedef struct tagSBDATA
386 typedef struct tagSBINFO
395 UserGetCPDA2U
= 0x01, // " Unicode "
396 UserGetCPDU2A
= 0X02, // " Ansi "
397 UserGetCPDClass
= 0X10,
398 UserGetCPDWindow
= 0X20,
399 UserGetCPDDialog
= 0X40,
400 UserGetCPDWndtoCls
= 0X80
403 typedef struct _CALLPROCDATA
406 struct _CALLPROCDATA
*spcpdNext
;
407 WNDPROC pfnClientPrevious
;
409 } CALLPROCDATA
, *PCALLPROCDATA
;
411 #define CSF_SERVERSIDEPROC 0x0001
412 #define CSF_ANSIPROC 0x0002
413 #define CSF_WOWDEFERDESTROY 0x0004
414 #define CSF_SYSTEMCLASS 0x0008
415 #define CSF_WOWCLASS 0x0010
416 #define CSF_WOWEXTRA 0x0020
417 #define CSF_CACHEDSMICON 0x0040
418 #define CSF_WIN40COMPAT 0x0080
422 struct _CLS
*pclsNext
;
423 RTL_ATOM atomClassName
;
424 ATOM atomNVClassName
;
426 struct _DESKTOP
*rpdeskParent
;
429 PSTR lpszClientAnsiMenuName
; // For client use
430 PWSTR lpszClientUnicodeMenuName
; // " " "
431 PCALLPROCDATA spcpdFirst
;
432 struct _CLS
*pclsBase
;
433 struct _CLS
*pclsClone
;
434 ULONG cWndReferenceCount
;
440 HANDLE hIcon
; /* FIXME - Use pointer! */
442 HANDLE hCursor
; /* FIXME - Use pointer! */
444 HBRUSH hbrBackground
;
445 PWSTR lpszMenuName
; // kernel use
446 PSTR lpszAnsiClassName
; // "
447 HANDLE hIconSm
; /* FIXME - Use pointer! */
450 UINT Unicode
: 1; // !CSF_ANSIPROC
451 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
452 UINT MenuNameIsString
: 1;
457 typedef struct _SBINFOEX
459 SCROLLBARINFO ScrollBarInfo
;
460 SCROLLINFO ScrollInfo
;
461 } SBINFOEX
, *PSBINFOEX
;
463 // State Flags !Not Implemented!
464 #define WNDS_HASMENU 0X00000001
465 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
466 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
467 #define WNDS_HASCAPTION 0X00000008
468 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
469 #define WNDS_MSGBOX 0X00000020
470 #define WNDS_ACTIVEFRAME 0X00000040
471 #define WNDS_HASSPB 0X00000080
472 #define WNDS_NONCPAINT 0X00000100
473 #define WNDS_SENDERASEBACKGROUND 0X00000200
474 #define WNDS_ERASEBACKGROUND 0X00000400
475 #define WNDS_SENDNCPAINT 0X00000800
476 #define WNDS_INTERNALPAINT 0X00001000
477 #define WNDS_UPDATEDIRTY 0X00002000
478 #define WNDS_HIDDENPOPUP 0X00004000
479 #define WNDS_FORCEMENUDRAW 0X00008000
480 #define WNDS_DIALOGWINDOW 0X00010000
481 #define WNDS_HASCREATESTRUCTNAME 0X00020000
482 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
483 #define WNDS_ANSIWINDOWPROC 0x00080000
484 #define WNDS_BEGINGACTIVATED 0x00100000
485 #define WNDS_HASPALETTE 0x00200000
486 #define WNDS_PAINTNOTPROCESSED 0x00400000
487 #define WNDS_SYNCPAINTPENDING 0x00800000
488 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
489 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
490 #define WNDS_TOGGLETOPMOST 0x04000000
491 #define WNDS_REDRAWIFHUNG 0x08000000
492 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
493 #define WNDS_ANSICREATOR 0x20000000
494 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
495 #define WNDS_DESTROYED 0x80000000
497 // State2 Flags !Not Implemented!
498 #define WNDS2_WMPAINTSENT 0X00000001
499 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
500 #define WNDS2_STARTPAINT 0X00000004
501 #define WNDS2_OLDUI 0X00000008
502 #define WNDS2_HASCLIENTEDGE 0X00000010
503 #define WNDS2_BOTTOMMOST 0X00000020
504 #define WNDS2_FULLSCREEN 0X00000040
505 #define WNDS2_INDESTROY 0X00000080
506 #define WNDS2_WIN31COMPAT 0X00000100
507 #define WNDS2_WIN40COMPAT 0X00000200
508 #define WNDS2_WIN50COMPAT 0X00000400
509 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
510 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
511 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
512 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
513 #define WNDS2_HELPBUTTONDOWN 0X00008000
514 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
515 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
516 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
517 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
518 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
519 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
520 #define WNDS2_FORCENCPAINT 0X00400000
521 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
522 #define WNDS2_FULLSCREENMODE 0X01000000
523 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
524 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
525 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
526 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
527 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
530 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
531 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
532 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
533 #define WS_EX2_LINKED 0X00000008
534 #define WS_EX2_LAYEREDFORDWM 0X00000010
535 #define WS_EX2_LAYEREDLIMBO 0X00000020
536 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
537 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
538 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
539 #define WS_EX2_HASOVERLAY 0X00000200
540 #define WS_EX2_CONSOLEWINDOW 0X00000400
541 #define WS_EX2_CHILDNOACTIVATE 0X00000800
548 /* Extended style. */
552 /* Handle of the module that created the window. */
555 struct _WND
*spwndNext
;
556 struct _WND
*spwndPrev
;
557 struct _WND
*spwndParent
;
558 struct _WND
*spwndChild
;
559 struct _WND
*spwndOwner
;
563 /* Pointer to the window class. */
566 /* Property list head.*/
567 LIST_ENTRY PropListHead
;
571 /* system menu handle. */
574 /* Window menu handle or window id */
575 UINT IDMenu
; // Use spmenu
580 LARGE_UNICODE_STRING strName
;
581 /* Size of the extra data associated with the window. */
584 struct _WND
*spwndLastActive
;
585 //HIMC hImc; // Input context associated with this window.
587 //PACTIVATION_CONTEXT pActCtx;
588 //PD3DMATRIX pTransForm;
589 struct _WND
*spwndClipboardListener
;
600 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
601 /* Indicates whether the window is derived from a system class */
602 UINT InternalPosInitialized
: 1;
603 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
604 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
607 PSBINFOEX pSBInfoex
; // convert to PSBINFO
608 /* Entry in the list of thread windows. */
609 LIST_ENTRY ThreadListEntry
;
612 typedef struct _PFNCLIENT
614 WNDPROC pfnScrollBarWndProc
;
615 WNDPROC pfnTitleWndProc
;
616 WNDPROC pfnMenuWndProc
;
617 WNDPROC pfnDesktopWndProc
;
618 WNDPROC pfnDefWindowProc
;
619 WNDPROC pfnMessageWindowProc
;
620 WNDPROC pfnSwitchWindowProc
;
621 WNDPROC pfnButtonWndProc
;
622 WNDPROC pfnComboBoxWndProc
;
623 WNDPROC pfnComboListBoxProc
;
624 WNDPROC pfnDialogWndProc
;
625 WNDPROC pfnEditWndProc
;
626 WNDPROC pfnListBoxWndProc
;
627 WNDPROC pfnMDIClientWndProc
;
628 WNDPROC pfnStaticWndProc
;
629 WNDPROC pfnImeWndProc
;
630 WNDPROC pfnGhostWndProc
;
631 WNDPROC pfnHkINLPCWPSTRUCT
;
632 WNDPROC pfnHkINLPCWPRETSTRUCT
;
633 WNDPROC pfnDispatchHook
;
634 WNDPROC pfnDispatchDefWindowProc
;
635 WNDPROC pfnDispatchMessage
;
636 WNDPROC pfnMDIActivateDlgProc
;
637 } PFNCLIENT
, *PPFNCLIENT
;
640 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
641 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
644 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
646 typedef struct _PFNCLIENTWORKER
648 WNDPROC_EX pfnButtonWndProc
;
649 WNDPROC_EX pfnComboBoxWndProc
;
650 WNDPROC_EX pfnComboListBoxProc
;
651 WNDPROC_EX pfnDialogWndProc
;
652 WNDPROC_EX pfnEditWndProc
;
653 WNDPROC_EX pfnListBoxWndProc
;
654 WNDPROC_EX pfnMDIClientWndProc
;
655 WNDPROC_EX pfnStaticWndProc
;
656 WNDPROC_EX pfnImeWndProc
;
657 WNDPROC_EX pfnGhostWndProc
;
658 WNDPROC_EX pfnCtfHookProc
;
659 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
661 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
663 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
664 #define FNID_FIRST 0x029A
665 #define FNID_SCROLLBAR 0x029A
666 #define FNID_ICONTITLE 0x029B
667 #define FNID_MENU 0x029C
668 #define FNID_DESKTOP 0x029D
669 #define FNID_DEFWINDOWPROC 0x029E
670 #define FNID_MESSAGEWND 0x029F
671 #define FNID_SWITCH 0x02A0
672 #define FNID_BUTTON 0x02A1
673 #define FNID_COMBOBOX 0x02A2
674 #define FNID_COMBOLBOX 0x02A3
675 #define FNID_DIALOG 0x02A4
676 #define FNID_EDIT 0x02A5
677 #define FNID_LISTBOX 0x02A6
678 #define FNID_MDICLIENT 0x02A7
679 #define FNID_STATIC 0x02A8
680 #define FNID_IME 0x02A9
681 #define FNID_GHOST 0x02AA
682 #define FNID_CALLWNDPROC 0x02AB
683 #define FNID_CALLWNDPROCRET 0x02AC
684 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
685 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
686 #define FNID_MB_DLGPROC 0x02AF
687 #define FNID_MDIACTIVATEDLGPROC 0x02B0
688 #define FNID_SENDMESSAGE 0x02B1
689 #define FNID_SENDMESSAGEFF 0x02B2
690 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
691 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
692 #define FNID_SENDMESSAGETIMEOUT 0x02B4
693 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
694 #define FNID_TOOLTIPS 0x02B6
695 #define FNID_SENDNOTIFYMESSAGE 0x02B7
696 #define FNID_SENDMESSAGECALLBACK 0x02B8
697 #define FNID_LAST 0x02B9
699 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
700 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
702 #define FNID_DDEML 0x2000 // Registers DDEML
703 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
704 // Seen during WM_CREATE on error exit too.
705 #define FNID_FREED 0x8000 // Window being Freed...
707 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
709 #define GETPFNCLIENTA(fnid)\
710 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
711 #define GETPFNCLIENTW(fnid)\
712 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
714 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
716 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
717 #define ICLS_BUTTON 0
719 #define ICLS_STATIC 2
720 #define ICLS_LISTBOX 3
721 #define ICLS_SCROLLBAR 4
722 #define ICLS_COMBOBOX 5
723 #define ICLS_MDICLIENT 6
724 #define ICLS_COMBOLBOX 7
725 #define ICLS_DDEMLEVENT 8
726 #define ICLS_DDEMLMOTHER 9
727 #define ICLS_DDEML16BIT 10
728 #define ICLS_DDEMLCLIENTA 11
729 #define ICLS_DDEMLCLIENTW 12
730 #define ICLS_DDEMLSERVERA 13
731 #define ICLS_DDEMLSERVERW 14
733 #define ICLS_GHOST 16
734 #define ICLS_DESKTOP 17
735 #define ICLS_DIALOG 18
737 #define ICLS_SWITCH 20
738 #define ICLS_ICONTITLE 21
739 #define ICLS_TOOLTIPS 22
740 #if (_WIN32_WINNT <= 0x0501)
741 #define ICLS_UNKNOWN 22
742 #define ICLS_NOTUSED 23
744 #define ICLS_SYSSHADOW 23
745 #define ICLS_HWNDMESSAGE 24
746 #define ICLS_NOTUSED 25
750 #define COLOR_LAST COLOR_MENUBAR
751 #define MAX_MB_STRINGS 11
753 #define SRVINFO_APIHOOK 0x0010
754 #define SRVINFO_METRICS 0x0020
756 #define NUM_SYSCOLORS 31
758 typedef struct tagOEMBITMAPINFO
764 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
766 typedef struct tagMBSTRING
771 } MBSTRING
, *PMBSTRING
;
773 typedef struct tagDPISERVERINFO
775 INT gclBorder
; /* 000 */
776 HFONT hCaptionFont
; /* 004 */
777 HFONT hMsgFont
; /* 008 */
778 INT cxMsgFontChar
; /* 00C */
779 INT cyMsgFontChar
; /* 010 */
780 UINT wMaxBtnSize
; /* 014 */
781 } DPISERVERINFO
, *PDPISERVERINFO
;
783 typedef struct _PERUSERSERVERINFO
785 INT aiSysMet
[SM_CMETRICS
];
786 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
787 COLORREF argbSystem
[NUM_SYSCOLORS
];
788 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
792 DWORD dwLastRITEventTickCount
;
797 UINT ucWheelScrollLines
;
798 UINT ucWheelScrollChars
;
799 INT wMaxLeftOverlapChars
;
800 INT wMaxRightOverlapChars
;
803 TEXTMETRICW tmSysFont
;
804 DPISERVERINFO dpiSystem
;
805 HICON hIconSmWindows
;
808 DWORD dwAsyncKeyCache
;
810 OEMBITMAPINFO oembmi
[93];
819 DWORD dwLastSystemRITEventTickCountUpdate
;
820 ULONG adwDBGTAGFlags
[35];
823 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
825 typedef struct tagSERVERINFO
828 ULONG_PTR cHandleEntries
;
829 PFN_FNID mpFnidPfn
[FNID_NUM
];
830 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
831 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
832 PFNCLIENT apfnClientA
;
833 PFNCLIENT apfnClientW
;
834 PFNCLIENTWORKER apfnClientWorker
;
836 ATOM atomSysClass
[ICLS_NOTUSED
+1];
837 DWORD dwDefaultHeapBase
;
838 DWORD dwDefaultHeapSize
;
840 MBSTRING MBStrings
[MAX_MB_STRINGS
];
843 ATOM atomContextHelpIdProp
;
844 ATOM atomFrostedWindowProp
;
845 CHAR acOemToAnsi
[256];
846 CHAR acAnsiToOem
[256];
847 DWORD dwInstalledEventHooks
;
849 } SERVERINFO
, *PSERVERINFO
;
852 // Server event activity bits.
853 #define SRV_EVENT_MENU 0x0001
854 #define SRV_EVENT_END_APPLICATION 0x0002
855 #define SRV_EVENT_RUNNING 0x0004
856 #define SRV_EVENT_NAMECHANGE 0x0008
857 #define SRV_EVENT_VALUECHANGE 0x0010
858 #define SRV_EVENT_STATECHANGE 0x0020
859 #define SRV_EVENT_LOCATIONCHANGE 0x0040
860 #define SRV_EVENT_CREATE 0x8000
862 typedef struct _PROPLISTITEM
866 } PROPLISTITEM
, *PPROPLISTITEM
;
868 typedef struct _PROPERTY
870 LIST_ENTRY PropListEntry
;
873 } PROPERTY
, *PPROPERTY
;
875 typedef struct _BROADCASTPARM
882 } BROADCASTPARM
, *PBROADCASTPARM
;
884 PTHREADINFO
GetW32ThreadInfo(VOID
);
885 PPROCESSINFO
GetW32ProcessInfo(VOID
);
887 typedef struct _WNDMSG
893 typedef struct _SHAREDINFO
895 PSERVERINFO psi
; // global Server Info
896 PVOID aheList
; // Handle Entry List
897 PVOID pDispInfo
; // global PDISPLAYINFO pointer
898 ULONG_PTR ulSharedDelta
; // Heap delta
899 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
900 WNDMSG DefWindowMsgs
;
901 WNDMSG DefWindowSpecMsgs
;
902 } SHAREDINFO
, *PSHAREDINFO
;
904 typedef struct _USERCONNECT
907 ULONG ulCurrentVersion
;
908 DWORD dwDispatchCount
;
910 } USERCONNECT
, *PUSERCONNECT
;
914 NtUserAssociateInputContext(
945 NtUserCtxDisplayIOCtl(
964 NtUserDrawMenuBarTemp(
973 NtUserEnableMenuItem(
984 NtUserGetMenuBarInfo(
998 NtUserGetMenuItemRect(
1006 NtUserGetSystemMenu(
1012 NtUserHiliteMenuItem(
1020 NtUserMenuItemFromPoint(
1042 NtUserSetMenuContextHelpId(
1044 DWORD dwContextHelpId
);
1048 NtUserSetMenuDefaultItem(
1055 NtUserSetMenuFlagRtoL(
1060 NtUserSetSystemMenu(
1066 NtUserThunkedMenuInfo(
1072 NtUserThunkedMenuItemInfo(
1077 LPMENUITEMINFOW lpmii
,
1078 PUNICODE_STRING lpszCaption
);
1082 NtUserTrackPopupMenuEx(
1092 NtUserActivateKeyboardLayout(
1098 NtUserAlterWindowStyle(
1105 NtUserAttachThreadInput(
1107 IN DWORD idAttachTo
,
1111 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1132 NtUserBuildHwndList(
1142 NtUserBuildNameList(
1146 PULONG pRequiredSize
);
1150 NtUserBuildPropList(
1156 /* apfnSimpleCall indices from Windows XP SP 2 */
1157 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1158 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1160 enum SimpleCallRoutines
1162 NOPARAM_ROUTINE_CREATEMENU
,
1163 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1164 #if (WIN32K_VERSION >= NTDDI_VISTA)
1165 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1166 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1167 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1168 NOPARAM_ROUTINE_DESTROY_CARET
,
1170 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1171 #if (WIN32K_VERSION < NTDDI_VISTA)
1172 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1173 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1174 NOPARAM_ROUTINE_DESTROY_CARET
,
1176 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1177 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1178 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1179 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1180 #if (WIN32K_VERSION >= NTDDI_VISTA)
1181 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1183 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1185 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1186 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1187 #if (WIN32K_VERSION >= NTDDI_VISTA)
1188 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1189 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1191 NOPARAM_ROUTINE_RELEASECAPTURE
,
1192 NOPARAM_ROUTINE_RESETDBLCLICK
,
1193 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1194 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1195 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1196 NOPARAM_ROUTINE_REMOTELOGOFF
,
1197 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1198 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1199 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1200 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1201 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1202 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1203 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1204 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1205 #if (WIN32K_VERSION >= NTDDI_VISTA)
1206 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1208 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1209 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1210 #if (WIN32K_VERSION < NTDDI_VISTA)
1211 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1213 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1214 #if (WIN32K_VERSION >= NTDDI_VISTA)
1215 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1217 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1218 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1219 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1220 #if (WIN32K_VERSION < NTDDI_VISTA)
1221 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1223 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1224 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1225 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1226 #if (WIN32K_VERSION < NTDDI_VISTA)
1227 ONEPARAM_ROUTINE_GETCURSORPOS
,
1229 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1230 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1231 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1232 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1233 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1234 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1235 #if (WIN32K_VERSION < NTDDI_VISTA)
1236 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1238 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1239 ONEPARAM_ROUTINE_LOADFONTS
,
1240 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1241 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1242 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1243 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1244 #if (WIN32K_VERSION < NTDDI_VISTA)
1245 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1247 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1248 ONEPARAM_ROUTINE_REGISTERLPK
,
1249 #if (WIN32K_VERSION >= NTDDI_VISTA)
1250 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1252 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1253 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1254 ONEPARAM_ROUTINE_RELEASEDC
,
1255 #if (WIN32K_VERSION >= NTDDI_VISTA)
1256 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1258 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1259 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1260 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1261 #if (WIN32K_VERSION < NTDDI_VISTA)
1262 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1264 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1265 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1266 #if (WIN32K_VERSION >= NTDDI_VISTA)
1267 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1269 ONEPARAM_ROUTINE_SHOWCURSOR
,
1270 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1271 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1272 X_ROUTINE_WOWMODULEUNLOAD
,
1273 #if (WIN32K_VERSION < NTDDI_VISTA)
1274 X_ROUTINE_REMOTENOTIFY
,
1276 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1277 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1278 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1279 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1280 HWND_ROUTINE_SETMSGBOX
,
1281 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1282 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1283 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1284 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1285 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1286 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1287 HWNDPARAM_ROUTINE_SETVISIBLE
,
1288 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1289 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1290 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1291 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1292 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1293 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1294 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1295 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1296 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1297 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1298 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1299 HWNDLOCK_ROUTINE_SETSYSMENU
,
1300 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1301 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1302 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1303 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1304 TWOPARAM_ROUTINE_REDRAWTITLE
,
1305 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1306 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1307 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1308 TWOPARAM_ROUTINE_VALIDATERGN
,
1309 #if (WIN32K_VERSION >= NTDDI_VISTA)
1310 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1311 TWOPARAM_ROUTINE_GETCURSORPOS
,
1313 TWOPARAM_ROUTINE_GETHDEVNAME
,
1314 TWOPARAM_ROUTINE_INITANSIOEM
,
1315 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1316 #if (WIN32K_VERSION >= NTDDI_VISTA)
1317 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1319 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1320 #if (WIN32K_VERSION >= NTDDI_VISTA)
1321 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1323 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1325 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1326 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1327 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1328 TWOPARAM_ROUTINE_SETCARETPOS
,
1329 TWOPARAM_ROUTINE_SETCURSORPOS
,
1330 #if (WIN32K_VERSION >= NTDDI_VISTA)
1331 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1333 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1334 TWOPARAM_ROUTINE_WOWCLEANUP
1357 NtUserCallHwndParam(
1364 NtUserCallHwndParamLock(
1371 NtUserCallMsgFilter(
1377 NtUserCallNextHookEx(
1403 NtUserChangeClipboardChain(
1409 NtUserChangeDisplaySettings(
1410 PUNICODE_STRING lpszDeviceName
,
1411 LPDEVMODEW lpDevMode
,
1418 NtUserCheckDesktopByThreadId(
1423 NtUserCheckWindowThreadDesktop(
1430 NtUserCheckImeHotKey(
1435 NtUserChildWindowFromPointEx(
1448 NtUserCloseClipboard(VOID
);
1457 NtUserCloseWindowStation(
1462 NtUserConsoleControl(
1469 NtUserConvertMemHandle(
1475 NtUserCopyAcceleratorTable(
1482 NtUserCountClipboardFormats(VOID
);
1486 NtUserCreateAcceleratorTable(
1488 SIZE_T EntriesCount
);
1500 NtUserCreateDesktop(
1501 POBJECT_ATTRIBUTES poa
,
1502 PUNICODE_STRING lpszDesktopDevice
,
1505 ACCESS_MASK dwDesiredAccess
);
1509 NtUserCreateInputContext(
1514 NtUserCreateLocalMemHandle(
1522 NtUserCreateWindowEx(
1524 PLARGE_STRING plstrClassName
,
1525 PLARGE_STRING plstrClsVersion
,
1526 PLARGE_STRING plstrWindowName
,
1534 HINSTANCE hInstance
,
1541 NtUserCreateWindowStation(
1542 POBJECT_ATTRIBUTES ObjectAttributes
,
1543 ACCESS_MASK dwDesiredAccess
,
1552 NtUserDdeGetQualityOfService(
1555 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1559 NtUserDdeInitialize(
1568 NtUserDdeSetQualityOfService(
1570 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1571 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1574 NtUserDeferWindowPos(
1577 HWND WndInsertAfter
,
1585 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1589 NtUserDestroyAcceleratorTable(
1594 NtUserDestroyCursor(
1600 NtUserDestroyInputContext(
1604 NtUserDestroyWindow(HWND Wnd
);
1608 NtUserDisableThreadIme(
1613 NtUserDispatchMessage(PMSG pMsg
);
1632 NtUserDrawAnimatedRects(
1648 NtUserDrawCaptionTemp(
1654 const PUNICODE_STRING str
,
1657 // Used with NtUserDrawIconEx, last parameter.
1658 typedef struct _DRAWICONEXDATA
1664 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1676 HBRUSH hbrFlickerFreeDraw
,
1683 NtUserEmptyClipboard(VOID
);
1687 NtUserEnableScrollBar(
1694 NtUserEndDeferWindowPosEx(
1699 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1703 NtUserEnumDisplayDevices (
1704 PUNICODE_STRING lpDevice
, /* device name */
1705 DWORD iDevNum
, /* display device */
1706 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1707 DWORD dwFlags
); /* reserved */
1711 NtUserEnumDisplayMonitors (
1714 MONITORENUMPROC lpfnEnum,
1716 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1719 NtUserEnumDisplayMonitors(
1720 OPTIONAL IN HDC hDC
,
1721 OPTIONAL IN LPCRECT pRect
,
1722 OPTIONAL OUT HMONITOR
*hMonitorList
,
1723 OPTIONAL OUT LPRECT monitorRectList
,
1724 OPTIONAL IN DWORD listSize
);
1729 NtUserEnumDisplaySettings(
1730 PUNICODE_STRING lpszDeviceName
,
1732 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1742 NtUserExcludeUpdateRgn(
1756 NtUserFindExistingCursorIcon(
1766 HWND hwndChildAfter
,
1767 PUNICODE_STRING ucClassName
,
1768 PUNICODE_STRING ucWindowName
,
1774 NtUserFlashWindowEx(
1775 IN PFLASHWINFO pfwi
);
1779 NtUserGetAltTabInfo(
1788 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1792 NtUserGetAppImeLevel(
1797 NtUserGetAsyncKeyState(
1808 NtUserGetCaretBlinkTime(VOID
);
1816 NtUserGetClassInfo(HINSTANCE hInstance
,
1817 PUNICODE_STRING ClassName
,
1819 LPWSTR
*ppszMenuName
,
1824 NtUserGetClassName(HWND hWnd
,
1825 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1826 PUNICODE_STRING ClassName
);
1830 NtUserGetClipboardData(
1836 NtUserGetClipboardFormatName(
1838 PUNICODE_STRING FormatName
,
1843 NtUserGetClipboardOwner(VOID
);
1847 NtUserGetClipboardSequenceNumber(VOID
);
1851 NtUserGetClipboardViewer(VOID
);
1855 NtUserGetClipCursor(
1860 NtUserGetComboBoxInfo(
1862 PCOMBOBOXINFO pcbi
);
1866 NtUserGetControlBrush(
1873 NtUserGetControlColor(
1888 NtUserGetCursorFrameInfo(
1896 NtUserGetCursorInfo(
1913 NtUserGetDoubleClickTime(VOID
);
1917 NtUserGetForegroundWindow(VOID
);
1921 NtUserGetGuiResources(
1927 NtUserGetGUIThreadInfo(
1929 LPGUITHREADINFO lpgui
);
1936 PUNICODE_STRING lpInstName
,
1937 PUNICODE_STRING lpResName
,
1965 NtUserGetInternalWindowPos(
1972 NtUserGetKeyboardLayout(
1977 NtUserGetKeyboardLayoutList(
1983 NtUserGetKeyboardLayoutName(
1988 NtUserGetKeyboardState(
1993 NtUserGetKeyboardType(
1998 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
2007 NtUserGetLayeredWindowAttributes(
2015 NtUserGetListBoxInfo(
2019 NtUserGetMessage(PMSG pMsg
,
2026 NtUserGetMouseMovePointsEx(
2028 LPMOUSEMOVEPOINT lppt
,
2029 LPMOUSEMOVEPOINT lpptBuf
,
2035 NtUserGetObjectInformation(
2038 PVOID pvInformation
,
2040 PDWORD nLengthNeeded
);
2044 NtUserGetOpenClipboardWindow(VOID
);
2048 NtUserGetPriorityClipboardFormat(
2049 UINT
*paFormatPriorityList
,
2054 NtUserGetProcessWindowStation(VOID
);
2058 NtUserGetRawInputBuffer(
2065 NtUserGetRawInputData(
2066 HRAWINPUT hRawInput
,
2074 NtUserGetRawInputDeviceInfo(
2082 NtUserGetRawInputDeviceList(
2083 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2084 PUINT puiNumDevices
,
2089 NtUserGetRegisteredRawInputDevices(
2090 PRAWINPUTDEVICE pRawInputDevices
,
2091 PUINT puiNumDevices
,
2096 NtUserGetScrollBarInfo(
2099 PSCROLLBARINFO psbi
);
2103 NtUserGetThreadDesktop(
2108 enum ThreadStateRoutines
2110 THREADSTATE_GETTHREADINFO
,
2111 THREADSTATE_INSENDMESSAGE
,
2112 THREADSTATE_FOCUSWINDOW
,
2113 THREADSTATE_ACTIVEWINDOW
,
2114 THREADSTATE_CAPTUREWINDOW
,
2115 THREADSTATE_PROGMANWINDOW
,
2116 THREADSTATE_TASKMANWINDOW
,
2117 THREADSTATE_GETMESSAGETIME
,
2118 THREADSTATE_GETINPUTSTATE
,
2119 THREADSTATE_UPTIMELASTREAD
2124 NtUserGetThreadState(
2129 NtUserGetTitleBarInfo(
2134 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2150 NtUserGetWindowPlacement(
2152 WINDOWPLACEMENT
*lpwndpl
);
2157 HINSTANCE hInstance
,
2158 PUNICODE_STRING ClassName
);
2162 NtUserHardErrorControl(
2169 NtUserImpersonateDdeClientWindow(
2177 HANDLE hPowerRequestEvent
,
2178 HANDLE hMediaRequestEvent
);
2182 NtUserInitializeClientPfnArrays(
2183 PPFNCLIENT pfnClientA
,
2184 PPFNCLIENT pfnClientW
,
2185 PPFNCLIENTWORKER pfnClientWorker
,
2186 HINSTANCE hmodUser
);
2206 NtUserInternalGetWindowText(
2213 NtUserInvalidateRect(
2220 NtUserInvalidateRgn(
2227 NtUserIsClipboardFormatAvailable(
2240 NtUserLoadKeyboardLayoutEx(
2243 IN PUNICODE_STRING puszKeyboardName
,
2245 IN PUNICODE_STRING puszKLID
,
2251 NtUserLockWindowStation(
2252 HWINSTA hWindowStation
);
2256 NtUserLockWindowUpdate(
2261 NtUserLockWorkStation(VOID
);
2265 NtUserMapVirtualKeyEx( UINT keyCode
,
2270 typedef struct tagDOSENDMESSAGE
2276 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2285 ULONG_PTR ResultInfo
,
2286 DWORD dwType
, // FNID_XX types
2293 UINT cmd
, // Wine SW_ commands
2298 NtUserMNDragLeave(VOID
);
2308 NtUserModifyUserStartupInfoFlags(
2325 NtUserNotifyIMEStatus(
2332 NtUserNotifyProcessCreate(
2340 NtUserNotifyWinEvent(
2348 NtUserOpenClipboard(
2355 POBJECT_ATTRIBUTES ObjectAttributes
,
2357 ACCESS_MASK dwDesiredAccess
);
2361 NtUserOpenInputDesktop(
2364 ACCESS_MASK dwDesiredAccess
);
2368 NtUserOpenWindowStation(
2369 POBJECT_ATTRIBUTES ObjectAttributes
,
2370 ACCESS_MASK dwDesiredAccess
);
2388 NtUserPeekMessage( PMSG pMsg
,
2404 NtUserPostThreadMessage(
2419 NtUserProcessConnect(
2421 OUT PUSERCONNECT pUserConnect
,
2422 IN DWORD dwSize
); // sizeof(USERCONNECT)
2426 NtUserQueryInformationThread(
2435 NtUserQueryInputContext(
2441 NtUserQuerySendMessage(
2446 NtUserQueryUserCounters(
2453 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2454 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2455 #define QUERY_WINDOW_ACTIVE 0x02
2456 #define QUERY_WINDOW_FOCUS 0x03
2457 #define QUERY_WINDOW_ISHUNG 0x04
2458 #define QUERY_WINDOW_REAL_ID 0x05
2467 NtUserRealInternalGetMessage(
2477 NtUserRealChildWindowFromPoint(
2484 NtUserRealWaitMessageEx(
2493 CONST RECT
*lprcUpdate
,
2500 NtUserRegisterClassExWOW(
2502 PUNICODE_STRING pustrClassName
,
2503 PUNICODE_STRING pustrCNVersion
,
2504 PCLSMENUNAME pClassMenuName
,
2511 NtUserRegisterRawInputDevices(
2512 IN PCRAWINPUTDEVICE pRawInputDevices
,
2513 IN UINT uiNumDevices
,
2518 NtUserRegisterUserApiHook(
2519 PUNICODE_STRING m_dllname1
,
2520 PUNICODE_STRING m_funname1
,
2526 NtUserRegisterHotKey(HWND hWnd
,
2533 NtUserRegisterTasklist(
2537 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2541 NtUserRemoteConnect(
2548 NtUserRemoteRedrawRectangle(
2556 NtUserRemoteRedrawScreen(VOID
);
2560 NtUserRemoteStopScreenUpdates(VOID
);
2563 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2567 NtUserResolveDesktop(
2575 NtUserResolveDesktopForWOW(
2592 CONST RECT
*lprcScroll
,
2593 CONST RECT
*lprcClip
,
2598 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2599 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2609 NtUserSetActiveWindow(HWND Wnd
);
2613 NtUserSetAppImeLevel(
2618 NtUserSetCapture(HWND Wnd
);
2624 ULONG_PTR dwNewLong
,
2636 NtUserSetClipboardData(
2643 NtUserSetClipboardViewer(
2644 HWND hWndNewViewer
);
2648 NtUserSelectPalette(
2651 BOOL ForceBackground
2656 NtUserSetConsoleReserveKeys(
2667 NtUserSetCursorContents(
2669 PICONINFO IconInfo
);
2673 NtUserSetCursorIconData(
2708 NtUserSetImeOwnerWindow(
2714 NtUserSetInformationProcess(
2722 NtUserSetInformationThread(
2723 IN HANDLE ThreadHandle
,
2724 IN USERTHREADINFOCLASS ThreadInformationClass
,
2725 IN PVOID ThreadInformation
,
2726 IN ULONG ThreadInformationLength
2731 NtUserSetInternalWindowPos(
2739 NtUserSetKeyboardState(
2744 NtUserSetLayeredWindowAttributes(
2752 NtUserSetLogonNotifyWindow(
2757 NtUserSetObjectInformation(
2760 PVOID pvInformation
,
2767 HWND hWndNewParent
);
2771 NtUserSetProcessWindowStation(
2772 HWINSTA hWindowStation
);
2775 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2785 NtUserSetScrollInfo(
2793 NtUserSetShellWindowEx(
2795 HWND hwndShellListView
);
2801 IN CONST INT
*lpaElements
,
2802 IN CONST COLORREF
*lpaRgbValues
,
2807 NtUserSetSystemCursor(
2813 NtUserSetThreadDesktop(
2818 NtUserSetThreadState(
2824 NtUserSetSystemTimer
2829 TIMERPROC lpTimerFunc
2834 NtUserSetThreadLayoutHandles(
2845 TIMERPROC lpTimerFunc
2850 NtUserSetWindowFNID(
2856 NtUserSetWindowLong(
2864 NtUserSetWindowPlacement(
2866 WINDOWPLACEMENT
*lpwndpl
);
2869 NTAPI
NtUserSetWindowPos(
2871 HWND hWndInsertAfter
,
2888 NtUserSetWindowsHookAW(
2895 NtUserSetWindowsHookEx(
2897 PUNICODE_STRING ModuleName
,
2905 NtUserSetWindowStationUser(
2912 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
2916 NtUserSetWinEventHook(
2919 HMODULE hmodWinEventProc
,
2920 PUNICODE_STRING puString
,
2921 WINEVENTPROC lpfnWinEventProc
,
2938 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
2948 NtUserShowWindowAsync(
2954 NtUserSoundSentry(VOID
);
2958 NtUserSwitchDesktop(
2963 NtUserSystemParametersInfo(
2971 NtUserTestForInteractiveUser(
2987 NtUserTrackMouseEvent(
2988 LPTRACKMOUSEEVENT lpEventTrack
);
2992 NtUserTranslateAccelerator(
2999 NtUserTranslateMessage(
3005 NtUserUnhookWindowsHookEx(
3010 NtUserUnhookWinEvent(
3011 HWINEVENTHOOK hWinEventHook
);
3015 NtUserUnloadKeyboardLayout(
3020 NtUserUnlockWindowStation(
3021 HWINSTA hWindowStation
);
3025 NtUserUnregisterClass(
3026 PUNICODE_STRING ClassNameOrAtom
,
3027 HINSTANCE hInstance
,
3028 PCLSMENUNAME pClassMenuName
);
3032 NtUserUnregisterHotKey(HWND hWnd
,
3037 NtUserUnregisterUserApiHook(VOID
);
3041 NtUserUpdateInputContext(
3048 NtUserUpdateInstance(
3055 NtUserUpdateLayeredWindow(
3063 BLENDFUNCTION
*pblend
,
3069 NtUserUpdatePerUserSystemParameters(
3075 NtUserUserHandleGrantAccess(
3076 IN HANDLE hUserHandle
,
3082 NtUserValidateHandleSecure(
3090 CONST RECT
*lpRect
);
3094 NtUserValidateTimerCallback(
3108 NtUserWaitForInputIdle(
3110 IN DWORD dwMilliseconds
,
3111 IN BOOL Unknown2
); // Always FALSE
3115 NtUserWaitForMsgAndEvent(
3120 NtUserWaitMessage(VOID
);
3124 NtUserWin32PoolAllocationStats(
3134 NtUserWindowFromPhysicalPoint(
3139 NtUserWindowFromPoint(
3145 NtUserYieldTask(VOID
);
3147 /* lParam of DDE messages */
3148 typedef struct tagKMDDEEXECUTEDATA
3152 /* BYTE Data[DataSize] */
3153 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3155 typedef struct tagKMDDELPARAM
3167 } KMDDELPARAM
, *PKMDDELPARAM
;
3174 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3177 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3178 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3179 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3180 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3181 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3182 #define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
3183 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3184 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3185 #define MSQ_STATE_CAPTURE 0x1
3186 #define MSQ_STATE_ACTIVE 0x2
3187 #define MSQ_STATE_FOCUS 0x3
3188 #define MSQ_STATE_MENUOWNER 0x4
3189 #define MSQ_STATE_MOVESIZE 0x5
3190 #define MSQ_STATE_CARET 0x6
3191 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3192 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3193 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3197 NtUserBuildMenuItemList(
3205 NtUserGetMenuDefaultItem(
3212 NtUserGetMinMaxInfo(
3214 MINMAXINFO
*MinMaxInfo
,
3219 NtUserGetMonitorInfo(
3220 IN HMONITOR hMonitor
,
3221 OUT LPMONITORINFO pMonitorInfo
);
3223 /* Should be done in usermode */
3225 /* (other FocusedItem values give the position of the focused item) */
3226 #define NO_SELECTED_ITEM 0xffff
3228 typedef struct tagROSMENUINFO
3230 /* ----------- MENUINFO ----------- */
3236 DWORD dwContextHelpID
;
3237 ULONG_PTR dwMenuData
;
3238 /* ----------- Extra ----------- */
3239 HMENU Self
; /* Handle of this menu */
3240 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3241 UINT FocusedItem
; /* Currently focused item */
3242 UINT MenuItemCount
; /* Number of items in the menu */
3243 HWND Wnd
; /* Window containing the menu */
3244 WORD Width
; /* Width of the whole menu */
3245 WORD Height
; /* Height of the whole menu */
3246 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3247 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3248 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3249 } ROSMENUINFO
, *PROSMENUINFO
;
3259 typedef struct tagROSMENUITEMINFO
3261 /* ----------- MENUITEMINFOW ----------- */
3268 HBITMAP hbmpChecked
;
3269 HBITMAP hbmpUnchecked
;
3274 /* ----------- Extra ----------- */
3275 RECT Rect
; /* Item area (relative to menu window) */
3276 UINT dxTab
; /* X position of text after Tab */
3277 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3278 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3286 PROSMENUITEMINFO lpmii
,
3292 NtUserMonitorFromPoint(
3298 NtUserMonitorFromRect(
3304 NtUserMonitorFromWindow(
3308 typedef struct _SETSCROLLBARINFO
3312 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3313 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3317 NtUserSetScrollBarInfo(
3320 SETSCROLLBARINFO
*info
);
3324 #endif /* __WIN32K_NTUSER_H */