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 typedef struct _DESKTOPINFO
60 struct tagHOOK
* aphkStart
[16];
71 UINT LastInputWasKbd
: 1;
75 WCHAR szDesktopName
[1];
76 } DESKTOPINFO
, *PDESKTOPINFO
;
78 #define CTI_INSENDMESSAGE 0x0002
80 typedef struct _CLIENTTHREADINFO
85 WORD fsWakeBitsJournal
;
87 ULONG tickLastMsgChecked
;
89 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
97 typedef struct _THROBJHEAD
101 } THROBJHEAD
, *PTHROBJHEAD
;
103 typedef struct _THRDESKHEAD
106 struct _DESKTOP
*rpdesk
;
108 } THRDESKHEAD
, *PTHRDESKHEAD
;
110 typedef struct _PROCDESKHEAD
114 struct _DESKTOP
*rpdesk
;
116 } PROCDESKHEAD
, *PPROCDESKHEAD
;
118 typedef struct _PROCMARKHEAD
123 } PROCMARKHEAD
, *PPROCMARKHEAD
;
125 #define UserHMGetHandle(obj) ((obj)->head.h)
127 /* Window Client Information structure */
130 typedef struct tagHOOK
133 LIST_ENTRY Chain
; /* Hook chain entry */
134 struct _ETHREAD
* Thread
; /* Thread owning the hook */
135 int HookId
; /* Hook table index */
136 HOOKPROC Proc
; /* Hook function */
137 BOOLEAN Ansi
; /* Is it an Ansi hook? */
138 ULONG Flags
; /* Some internal flags */
139 UNICODE_STRING ModuleName
; /* Module name for global hooks */
142 /* THREADINFO Flags */
143 #define TIF_INCLEANUP 0x00000001
144 #define TIF_16BIT 0x00000002
145 #define TIF_SYSTEMTHREAD 0x00000004
146 #define TIF_CSRSSTHREAD 0x00000008
147 #define TIF_TRACKRECTVISIBLE 0x00000010
148 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
149 #define TIF_DONTATTACHQUEUE 0x00000040
150 #define TIF_DONTJOURNALATTACH 0x00000080
151 #define TIF_WOW64 0x00000100
152 #define TIF_INACTIVATEAPPMSG 0x00000200
153 #define TIF_SPINNING 0x00000400
154 #define TIF_PALETTEAWARE 0x00000800
155 #define TIF_SHAREDWOW 0x00001000
156 #define TIF_FIRSTIDLE 0x00002000
157 #define TIF_WAITFORINPUTIDLE 0x00004000
158 #define TIF_MOVESIZETRACKING 0x00008000
159 #define TIF_VDMAPP 0x00010000
160 #define TIF_DOSEMULATOR 0x00020000
161 #define TIF_GLOBALHOOKER 0x00040000
162 #define TIF_DELAYEDEVENT 0x00080000
163 #define TIF_MSGPOSCHANGED 0x00100000
164 #define TIF_SHUTDOWNCOMPLETE 0x00200000
165 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
166 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
167 #define TIF_GUITHREADINITIALIZED 0x02000000
168 #define TIF_DISABLEIME 0x04000000
169 #define TIF_INGETTEXTLENGTH 0x08000000
170 #define TIF_ANSILENGTH 0x10000000
171 #define TIF_DISABLEHOOKS 0x20000000
173 typedef struct _CALLBACKWND
177 } CALLBACKWND
, *PCALLBACKWND
;
179 #define CI_TRANSACTION 0x00000001
180 #define CI_QUEUEMSG 0x00000002
181 #define CI_WOW 0x00000004
182 #define CI_INITTHREAD 0x00000008
183 #define CI_CURTHPRHOOK 0x00000010
184 #define CI_CLASSESREGISTERED 0x00000020
185 #define CI_IMMACTIVATE 0x00000040
187 typedef struct _CLIENTINFO
193 DWORD dwCompatFlags2
;
194 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
195 PDESKTOPINFO pDeskInfo
;
196 ULONG_PTR ulClientDelta
;
199 CALLBACKWND CallbackWnd
;
201 INT cInDDEMLCallback
;
202 PCLIENTTHREADINFO pClientThreadInfo
;
203 ULONG_PTR dwHookData
;
206 DWORD dwAsyncKeyCache
;
207 BYTE afAsyncKeyState
[8];
208 BYTE afAsyncKeyStateRecentDow
[8];
213 LPDWORD lpdwRegisteredClasses
;
214 ULONG Win32ClientInfo3
[27];
215 /* It's just a pointer reference not to be used w the structure in user space. */
217 } CLIENTINFO
, *PCLIENTINFO
;
219 /* Make sure it fits into the TEB */
220 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
222 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
224 /* Menu Item fType. */
225 #define MFT_RTOL 0x6000
227 typedef struct tagITEM
232 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
234 HANDLE hbmpUnchecked
;
235 USHORT
* lpstr
; /* Item text pointer. */
237 DWORD_PTR dwItemData
;
238 ULONG xItem
; /* Item position. left */
239 ULONG yItem
; /* " top */
240 ULONG cxItem
; /* Item Size Width */
241 ULONG cyItem
; /* " Height */
242 ULONG dxTab
; /* X position of text after Tab */
243 ULONG ulX
; /* underline.. start position */
244 ULONG ulWidth
; /* underline.. width */
245 HBITMAP hbmp
; /* bitmap */
246 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
247 INT cyBmp
; /* Height " */
250 typedef struct tagMENULIST
252 struct tagMENULIST
* pNext
;
253 struct tagMENU
* pMenu
;
254 } MENULIST
, *PMENULIST
;
256 /* Menu fFlags, upper byte is MNS_X style flags. */
257 #define MNF_POPUP 0x0001
258 #define MNF_UNDERLINE 0x0004
259 #define MNF_INACTIVE 0x0010
260 #define MNF_RTOL 0x0020
261 #define MNF_DESKTOPMN 0x0040
262 #define MNF_SYSDESKMN 0x0080
263 #define MNF_SYSSUBMENU 0x0100
265 typedef struct tagMENU
268 ULONG fFlags
; /* [Style flags | Menu flags] */
269 INT iItem
; /* nPos of selected item, if -1 not selected. */
270 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
271 UINT cItems
; /* Number of items in the menu */
272 ULONG cxMenu
; /* Width of the whole menu */
273 ULONG cyMenu
; /* Height of the whole menu */
274 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
275 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
276 PITEM rgItems
; /* Array of menu items */
277 struct tagMENULIST
* pParentMenus
; /* If this is SubMenu, list of parents. */
278 DWORD dwContextHelpId
;
279 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
280 DWORD_PTR dwMenuData
; /* application defined value */
281 HBRUSH hbrBack
; /* brush for menu background */
282 INT iTop
; /* Current scroll position Top */
283 INT iMaxTop
; /* Current scroll position Max Top */
284 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
287 typedef struct _REGISTER_SYSCLASS
289 /* This is a reactos specific class used to initialize the
290 system window classes during user32 initialization */
299 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
301 typedef struct _CLSMENUNAME
303 LPSTR pszClientAnsiMenuName
;
304 LPWSTR pwszClientUnicodeMenuName
;
305 PUNICODE_STRING pusMenuName
;
306 } CLSMENUNAME
, *PCLSMENUNAME
;
308 typedef struct tagSBDATA
316 typedef struct tagSBINFO
325 UserGetCPDA2U
= 0x01, // " Unicode "
326 UserGetCPDU2A
= 0X02, // " Ansi "
327 UserGetCPDClass
= 0X10,
328 UserGetCPDWindow
= 0X20,
329 UserGetCPDDialog
= 0X40,
330 UserGetCPDWndtoCls
= 0X80
333 typedef struct _CALLPROCDATA
336 struct _CALLPROCDATA
*spcpdNext
;
337 WNDPROC pfnClientPrevious
;
339 } CALLPROCDATA
, *PCALLPROCDATA
;
341 #define CSF_SERVERSIDEPROC 0x0001
342 #define CSF_ANSIPROC 0x0002
343 #define CSF_WOWDEFERDESTROY 0x0004
344 #define CSF_SYSTEMCLASS 0x0008
345 #define CSF_WOWCLASS 0x0010
346 #define CSF_WOWEXTRA 0x0020
347 #define CSF_CACHEDSMICON 0x0040
348 #define CSF_WIN40COMPAT 0x0080
352 struct _CLS
*pclsNext
;
353 RTL_ATOM atomClassName
;
354 ATOM atomNVClassName
;
356 struct _DESKTOP
*rpdeskParent
;
359 PSTR lpszClientAnsiMenuName
; // For client use
360 PWSTR lpszClientUnicodeMenuName
; // " " "
361 PCALLPROCDATA spcpdFirst
;
362 struct _CLS
*pclsBase
;
363 struct _CLS
*pclsClone
;
364 ULONG cWndReferenceCount
;
370 HANDLE hIcon
; /* FIXME - Use pointer! */
372 HANDLE hCursor
; /* FIXME - Use pointer! */
374 HBRUSH hbrBackground
;
375 PWSTR lpszMenuName
; // kernel use
376 PSTR lpszAnsiClassName
; // "
377 HANDLE hIconSm
; /* FIXME - Use pointer! */
380 UINT Unicode
: 1; // !CSF_ANSIPROC
381 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
382 UINT MenuNameIsString
: 1;
387 // State Flags !Not Implemented!
388 #define WNDS_HASMENU 0X00000001
389 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
390 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
391 #define WNDS_HASCAPTION 0X00000008
392 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
393 #define WNDS_MSGBOX 0X00000020
394 #define WNDS_ACTIVEFRAME 0X00000040
395 #define WNDS_HASSPB 0X00000080
396 #define WNDS_NONCPAINT 0X00000100
397 #define WNDS_SENDERASEBACKGROUND 0X00000200
398 #define WNDS_ERASEBACKGROUND 0X00000400
399 #define WNDS_SENDNCPAINT 0X00000800
400 #define WNDS_INTERNALPAINT 0X00001000
401 #define WNDS_UPDATEDIRTY 0X00002000
402 #define WNDS_HIDDENPOPUP 0X00004000
403 #define WNDS_FORCEMENUDRAW 0X00008000
404 #define WNDS_DIALOGWINDOW 0X00010000
405 #define WNDS_HASCREATESTRUCTNAME 0X00020000
406 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
407 #define WNDS_ANSIWINDOWPROC 0x00080000
408 #define WNDS_BEGINGACTIVATED 0x00100000
409 #define WNDS_HASPALETTE 0x00200000
410 #define WNDS_PAINTNOTPROCESSED 0x00400000
411 #define WNDS_SYNCPAINTPENDING 0x00800000
412 #define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000
413 #define WNDS_RECIEVEDSUSPENDMSG 0x02000000
414 #define WNDS_TOGGLETOPMOST 0x04000000
415 #define WNDS_REDRAWIFHUNG 0x08000000
416 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
417 #define WNDS_ANSICREATOR 0x20000000
418 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
419 #define WNDS_DESTROYED 0x80000000
421 // State2 Flags !Not Implemented!
422 #define WNDS2_WMPAINTSENT 0X00000001
423 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
424 #define WNDS2_STARTPAINT 0X00000004
425 #define WNDS2_OLDUI 0X00000008
426 #define WNDS2_HASCLIENTEDGE 0X00000010
427 #define WNDS2_BOTTOMMOST 0X00000020
428 #define WNDS2_FULLSCREEN 0X00000040
429 #define WNDS2_INDESTROY 0X00000080
430 #define WNDS2_WIN31COMPAT 0X00000100
431 #define WNDS2_WIN40COMPAT 0X00000200
432 #define WNDS2_WIN50COMPAT 0X00000400
433 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
434 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
435 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
436 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
437 #define WNDS2_HELPBUTTONDOWN 0X00008000
438 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
439 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
440 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
441 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
442 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
443 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
444 #define WNDS2_FORCENCPAINT 0X00400000
445 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
446 #define WNDS2_FULLSCREENMODE 0X01000000
447 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
448 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
449 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
450 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
451 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
453 /* Non SDK ExStyles */
454 #define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
455 #define WS_EX_FORCELEGACYRESIZENCMETR 0x00800000
456 #define WS_EX_UISTATEACTIVE 0x04000000
457 #define WS_EX_REDIRECTED 0X20000000
458 #define WS_EX_UISTATEKBACCELHIDDEN 0X40000000
459 #define WS_EX_UISTATEFOCUSRECTHIDDEN 0X80000000
460 #define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
463 #define WS_MAXIMIZED WS_MAXIMIZE
464 #define WS_MINIMIZED WS_MINIMIZE
467 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
468 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
469 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
470 #define WS_EX2_LINKED 0X00000008
471 #define WS_EX2_LAYEREDFORDWM 0X00000010
472 #define WS_EX2_LAYEREDLIMBO 0X00000020
473 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
474 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
475 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
476 #define WS_EX2_HASOVERLAY 0X00000200
477 #define WS_EX2_CONSOLEWINDOW 0X00000400
478 #define WS_EX2_CHILDNOACTIVATE 0X00000800
485 /* Extended style. */
489 /* Handle of the module that created the window. */
492 struct _WND
*spwndNext
;
493 struct _WND
*spwndPrev
;
494 struct _WND
*spwndParent
;
495 struct _WND
*spwndChild
;
496 struct _WND
*spwndOwner
;
500 /* Pointer to the window class. */
503 /* Property list head.*/
504 LIST_ENTRY PropListHead
;
508 /* system menu handle. */
511 /* Window menu handle or window id */
512 UINT IDMenu
; // Use spmenu
517 LARGE_UNICODE_STRING strName
;
518 /* Size of the extra data associated with the window. */
521 struct _WND
*spwndLastActive
;
522 //HIMC hImc; // Input context associated with this window.
524 //PACTIVATION_CONTEXT pActCtx;
525 //PD3DMATRIX pTransForm;
526 struct _WND
*spwndClipboardListener
;
536 UINT Unicode
: 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
537 /* Indicates whether the window is derived from a system class */
538 UINT InternalPosInitialized
: 1;
539 UINT HideFocus
: 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
540 UINT HideAccel
: 1; // WS_EX_UISTATEKBACCELHIDDEN ?
543 typedef struct _PFNCLIENT
545 WNDPROC pfnScrollBarWndProc
;
546 WNDPROC pfnTitleWndProc
;
547 WNDPROC pfnMenuWndProc
;
548 WNDPROC pfnDesktopWndProc
;
549 WNDPROC pfnDefWindowProc
;
550 WNDPROC pfnMessageWindowProc
;
551 WNDPROC pfnSwitchWindowProc
;
552 WNDPROC pfnButtonWndProc
;
553 WNDPROC pfnComboBoxWndProc
;
554 WNDPROC pfnComboListBoxProc
;
555 WNDPROC pfnDialogWndProc
;
556 WNDPROC pfnEditWndProc
;
557 WNDPROC pfnListBoxWndProc
;
558 WNDPROC pfnMDIClientWndProc
;
559 WNDPROC pfnStaticWndProc
;
560 WNDPROC pfnImeWndProc
;
561 WNDPROC pfnGhostWndProc
;
562 WNDPROC pfnHkINLPCWPSTRUCT
;
563 WNDPROC pfnHkINLPCWPRETSTRUCT
;
564 WNDPROC pfnDispatchHook
;
565 WNDPROC pfnDispatchDefWindowProc
;
566 WNDPROC pfnDispatchMessage
;
567 WNDPROC pfnMDIActivateDlgProc
;
568 } PFNCLIENT
, *PPFNCLIENT
;
571 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
572 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
575 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
577 typedef struct _PFNCLIENTWORKER
579 WNDPROC_EX pfnButtonWndProc
;
580 WNDPROC_EX pfnComboBoxWndProc
;
581 WNDPROC_EX pfnComboListBoxProc
;
582 WNDPROC_EX pfnDialogWndProc
;
583 WNDPROC_EX pfnEditWndProc
;
584 WNDPROC_EX pfnListBoxWndProc
;
585 WNDPROC_EX pfnMDIClientWndProc
;
586 WNDPROC_EX pfnStaticWndProc
;
587 WNDPROC_EX pfnImeWndProc
;
588 WNDPROC_EX pfnGhostWndProc
;
589 WNDPROC_EX pfnCtfHookProc
;
590 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
592 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
594 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
595 #define FNID_FIRST 0x029A
596 #define FNID_SCROLLBAR 0x029A
597 #define FNID_ICONTITLE 0x029B
598 #define FNID_MENU 0x029C
599 #define FNID_DESKTOP 0x029D
600 #define FNID_DEFWINDOWPROC 0x029E
601 #define FNID_MESSAGEWND 0x029F
602 #define FNID_SWITCH 0x02A0
603 #define FNID_BUTTON 0x02A1
604 #define FNID_COMBOBOX 0x02A2
605 #define FNID_COMBOLBOX 0x02A3
606 #define FNID_DIALOG 0x02A4
607 #define FNID_EDIT 0x02A5
608 #define FNID_LISTBOX 0x02A6
609 #define FNID_MDICLIENT 0x02A7
610 #define FNID_STATIC 0x02A8
611 #define FNID_IME 0x02A9
612 #define FNID_GHOST 0x02AA
613 #define FNID_CALLWNDPROC 0x02AB
614 #define FNID_CALLWNDPROCRET 0x02AC
615 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
616 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
617 #define FNID_MB_DLGPROC 0x02AF
618 #define FNID_MDIACTIVATEDLGPROC 0x02B0
619 #define FNID_SENDMESSAGE 0x02B1
620 #define FNID_SENDMESSAGEFF 0x02B2
621 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
622 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
623 #define FNID_SENDMESSAGETIMEOUT 0x02B4
624 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
625 #define FNID_TOOLTIPS 0x02B6
626 #define FNID_SENDNOTIFYMESSAGE 0x02B7
627 #define FNID_SENDMESSAGECALLBACK 0x02B8
628 #define FNID_LAST 0x02B9
630 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
631 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
633 #define FNID_DDEML 0x2000 // Registers DDEML
634 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
635 // Seen during WM_CREATE on error exit too.
636 #define FNID_FREED 0x8000 // Window being Freed...
638 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
640 #define GETPFNCLIENTA(fnid)\
641 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
642 #define GETPFNCLIENTW(fnid)\
643 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
645 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
647 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
648 #define ICLS_BUTTON 0
650 #define ICLS_STATIC 2
651 #define ICLS_LISTBOX 3
652 #define ICLS_SCROLLBAR 4
653 #define ICLS_COMBOBOX 5
654 #define ICLS_MDICLIENT 6
655 #define ICLS_COMBOLBOX 7
656 #define ICLS_DDEMLEVENT 8
657 #define ICLS_DDEMLMOTHER 9
658 #define ICLS_DDEML16BIT 10
659 #define ICLS_DDEMLCLIENTA 11
660 #define ICLS_DDEMLCLIENTW 12
661 #define ICLS_DDEMLSERVERA 13
662 #define ICLS_DDEMLSERVERW 14
664 #define ICLS_GHOST 16
665 #define ICLS_DESKTOP 17
666 #define ICLS_DIALOG 18
668 #define ICLS_SWITCH 20
669 #define ICLS_ICONTITLE 21
670 #define ICLS_TOOLTIPS 22
671 #if (_WIN32_WINNT <= 0x0501)
672 #define ICLS_UNKNOWN 22
673 #define ICLS_NOTUSED 23
675 #define ICLS_SYSSHADOW 23
676 #define ICLS_HWNDMESSAGE 24
677 #define ICLS_NOTUSED 25
681 #define COLOR_LAST COLOR_MENUBAR
682 #define MAX_MB_STRINGS 11
684 #define SRVINFO_APIHOOK 0x0010
685 #define SRVINFO_METRICS 0x0020
687 typedef struct tagOEMBITMAPINFO
693 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
695 typedef struct tagMBSTRING
700 } MBSTRING
, *PMBSTRING
;
702 typedef struct tagDPISERVERINFO
704 INT gclBorder
; /* 000 */
705 HFONT hCaptionFont
; /* 004 */
706 HFONT hMsgFont
; /* 008 */
707 INT cxMsgFontChar
; /* 00C */
708 INT cyMsgFontChar
; /* 010 */
709 UINT wMaxBtnSize
; /* 014 */
710 } DPISERVERINFO
, *PDPISERVERINFO
;
712 typedef struct _PERUSERSERVERINFO
714 INT aiSysMet
[SM_CMETRICS
];
715 ULONG argbSystemUnmatched
[COLOR_LAST
+1];
716 COLORREF argbSystem
[COLOR_LAST
+1];
717 HBRUSH ahbrSystem
[COLOR_LAST
+1];
721 DWORD dwLastRITEventTickCount
;
726 UINT ucWheelScrollLines
;
727 UINT ucWheelScrollChars
;
728 INT wMaxLeftOverlapChars
;
729 INT wMaxRightOverlapChars
;
732 TEXTMETRICW tmSysFont
;
733 DPISERVERINFO dpiSystem
;
734 HICON hIconSmWindows
;
737 DWORD dwAsyncKeyCache
;
739 OEMBITMAPINFO oembmi
[93];
748 DWORD dwLastSystemRITEventTickCountUpdate
;
749 ULONG adwDBGTAGFlags
[35];
752 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
754 typedef struct tagSERVERINFO
757 ULONG_PTR cHandleEntries
;
758 PFN_FNID mpFnidPfn
[FNID_NUM
];
759 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
760 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
761 PFNCLIENT apfnClientA
;
762 PFNCLIENT apfnClientW
;
763 PFNCLIENTWORKER apfnClientWorker
;
765 ATOM atomSysClass
[ICLS_NOTUSED
+1];
766 DWORD dwDefaultHeapBase
;
767 DWORD dwDefaultHeapSize
;
769 MBSTRING MBStrings
[MAX_MB_STRINGS
];
772 ATOM atomContextHelpIdProp
;
773 ATOM atomFrostedWindowProp
;
774 CHAR acOemToAnsi
[256];
775 CHAR acAnsiToOem
[256];
776 DWORD dwInstalledEventHooks
;
778 } SERVERINFO
, *PSERVERINFO
;
781 // Server event activity bits.
782 #define SRV_EVENT_MENU 0x0001
783 #define SRV_EVENT_END_APPLICATION 0x0002
784 #define SRV_EVENT_RUNNING 0x0004
785 #define SRV_EVENT_NAMECHANGE 0x0008
786 #define SRV_EVENT_VALUECHANGE 0x0010
787 #define SRV_EVENT_STATECHANGE 0x0020
788 #define SRV_EVENT_LOCATIONCHANGE 0x0040
789 #define SRV_EVENT_CREATE 0x8000
791 typedef struct _PROPLISTITEM
795 } PROPLISTITEM
, *PPROPLISTITEM
;
797 typedef struct _PROPERTY
799 LIST_ENTRY PropListEntry
;
802 } PROPERTY
, *PPROPERTY
;
804 typedef struct _BROADCASTPARM
811 } BROADCASTPARM
, *PBROADCASTPARM
;
813 PTHREADINFO
GetW32ThreadInfo(VOID
);
814 PPROCESSINFO
GetW32ProcessInfo(VOID
);
816 typedef struct _WNDMSG
822 typedef struct _SHAREDINFO
824 PSERVERINFO psi
; // global Server Info
825 PVOID aheList
; // Handle Entry List
826 PVOID pDispInfo
; // global PDISPLAYINFO pointer
827 ULONG_PTR ulSharedDelta
; // Heap delta
828 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
829 WNDMSG DefWindowMsgs
;
830 WNDMSG DefWindowSpecMsgs
;
831 } SHAREDINFO
, *PSHAREDINFO
;
833 typedef struct _USERCONNECT
836 ULONG ulCurrentVersion
;
837 DWORD dwDispatchCount
;
839 } USERCONNECT
, *PUSERCONNECT
;
842 // Non SDK Window Message types.
844 #define WM_CLIENTSHUTDOWN 59
845 #define WM_COPYGLOBALDATA 73
846 #define WM_SYSTIMER 280
847 #define WM_POPUPSYSTEMMENU 787
848 #define WM_CBT 1023 // ReactOS only.
849 #define WM_MAXIMUM 0x0001FFFF
852 // Non SDK DCE types.
854 #define DCX_USESTYLE 0x00010000
855 #define DCX_KEEPCLIPRGN 0x00040000
856 #define DCX_KEEPLAYOUT 0x40000000
857 #define DCX_PROCESSOWNED 0x80000000
860 // Non SDK Queue message types.
862 #define QS_SMRESULT 0x8000
866 NtUserAssociateInputContext(
897 NtUserCtxDisplayIOCtl(
916 NtUserDrawMenuBarTemp(
925 NtUserEnableMenuItem(
936 NtUserGetMenuBarInfo(
950 NtUserGetMenuItemRect(
964 NtUserHiliteMenuItem(
972 NtUserMenuItemFromPoint(
994 NtUserSetMenuContextHelpId(
996 DWORD dwContextHelpId
);
1000 NtUserSetMenuDefaultItem(
1007 NtUserSetMenuFlagRtoL(
1012 NtUserSetSystemMenu(
1018 NtUserThunkedMenuInfo(
1024 NtUserThunkedMenuItemInfo(
1029 LPMENUITEMINFOW lpmii
,
1030 PUNICODE_STRING lpszCaption
);
1034 NtUserTrackPopupMenuEx(
1044 NtUserActivateKeyboardLayout(
1050 NtUserAlterWindowStyle(
1057 NtUserAttachThreadInput(
1059 IN DWORD idAttachTo
,
1063 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1084 NtUserBuildHwndList(
1094 NtUserBuildNameList(
1098 PULONG pRequiredSize
);
1102 NtUserBuildPropList(
1108 /* apfnSimpleCall indices from Windows XP SP 2 */
1109 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1110 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1112 enum SimpleCallRoutines
1114 NOPARAM_ROUTINE_CREATEMENU
,
1115 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1116 #if (WIN32K_VERSION >= NTDDI_VISTA)
1117 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1118 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1119 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1120 NOPARAM_ROUTINE_DESTROY_CARET
,
1122 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1123 #if (WIN32K_VERSION < NTDDI_VISTA)
1124 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1125 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1126 NOPARAM_ROUTINE_DESTROY_CARET
,
1128 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1129 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1130 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1131 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1132 #if (WIN32K_VERSION >= NTDDI_VISTA)
1133 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1135 NOPARAM_ROUTINE_GETREMOTEPROCID
,
1137 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1138 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1139 #if (WIN32K_VERSION >= NTDDI_VISTA)
1140 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1141 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1143 NOPARAM_ROUTINE_RELEASECAPTURE
,
1144 NOPARAM_ROUTINE_RESETDBLCLICK
,
1145 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1146 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1147 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1148 NOPARAM_ROUTINE_REMOTELOGOFF
,
1149 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1150 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1151 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1152 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1153 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1154 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1155 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1156 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1157 #if (WIN32K_VERSION >= NTDDI_VISTA)
1158 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1160 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1161 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1162 #if (WIN32K_VERSION < NTDDI_VISTA)
1163 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1165 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1166 #if (WIN32K_VERSION >= NTDDI_VISTA)
1167 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1169 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1170 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1171 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1172 #if (WIN32K_VERSION < NTDDI_VISTA)
1173 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1175 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1176 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1177 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1178 #if (WIN32K_VERSION < NTDDI_VISTA)
1179 ONEPARAM_ROUTINE_GETCURSORPOS
,
1181 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1182 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1183 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1184 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1185 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1186 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1187 #if (WIN32K_VERSION < NTDDI_VISTA)
1188 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1190 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1191 ONEPARAM_ROUTINE_LOADFONTS
,
1192 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1193 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1194 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1195 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1196 #if (WIN32K_VERSION < NTDDI_VISTA)
1197 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1199 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1200 ONEPARAM_ROUTINE_REGISTERLPK
,
1201 #if (WIN32K_VERSION >= NTDDI_VISTA)
1202 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1204 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1205 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1206 ONEPARAM_ROUTINE_RELEASEDC
,
1207 #if (WIN32K_VERSION >= NTDDI_VISTA)
1208 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1210 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1211 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1212 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1213 #if (WIN32K_VERSION < NTDDI_VISTA)
1214 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1216 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1217 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1218 #if (WIN32K_VERSION >= NTDDI_VISTA)
1219 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1221 ONEPARAM_ROUTINE_SHOWCURSOR
,
1222 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1223 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1224 X_ROUTINE_WOWMODULEUNLOAD
,
1225 #if (WIN32K_VERSION < NTDDI_VISTA)
1226 X_ROUTINE_REMOTENOTIFY
,
1228 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1229 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1230 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1231 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1232 HWND_ROUTINE_SETMSGBOX
,
1233 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1234 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1235 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1236 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1237 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1238 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1239 HWNDPARAM_ROUTINE_SETVISIBLE
,
1240 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1241 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1242 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1243 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1244 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1245 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1246 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1247 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1248 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1249 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1250 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1251 HWNDLOCK_ROUTINE_SETSYSMENU
,
1252 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1253 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1254 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1255 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1256 TWOPARAM_ROUTINE_REDRAWTITLE
,
1257 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1258 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1259 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1260 TWOPARAM_ROUTINE_VALIDATERGN
,
1261 #if (WIN32K_VERSION >= NTDDI_VISTA)
1262 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1263 TWOPARAM_ROUTINE_GETCURSORPOS
,
1265 TWOPARAM_ROUTINE_GETHDEVNAME
,
1266 TWOPARAM_ROUTINE_INITANSIOEM
,
1267 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1268 #if (WIN32K_VERSION >= NTDDI_VISTA)
1269 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1271 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1272 #if (WIN32K_VERSION >= NTDDI_VISTA)
1273 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1275 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1277 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1278 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1279 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1280 TWOPARAM_ROUTINE_SETCARETPOS
,
1281 TWOPARAM_ROUTINE_SETCURSORPOS
,
1282 #if (WIN32K_VERSION >= NTDDI_VISTA)
1283 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1285 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1286 TWOPARAM_ROUTINE_WOWCLEANUP
1309 NtUserCallHwndParam(
1316 NtUserCallHwndParamLock(
1323 NtUserCallMsgFilter(
1329 NtUserCallNextHookEx(
1355 NtUserChangeClipboardChain(
1361 NtUserChangeDisplaySettings(
1362 PUNICODE_STRING lpszDeviceName
,
1363 LPDEVMODEW lpDevMode
,
1370 NtUserCheckDesktopByThreadId(
1375 NtUserCheckWindowThreadDesktop(
1382 NtUserCheckImeHotKey(
1387 NtUserChildWindowFromPointEx(
1400 NtUserCloseClipboard(VOID
);
1409 NtUserCloseWindowStation(
1414 NtUserConsoleControl(
1421 NtUserConvertMemHandle(
1427 NtUserCopyAcceleratorTable(
1434 NtUserCountClipboardFormats(VOID
);
1438 NtUserCreateAcceleratorTable(
1440 SIZE_T EntriesCount
);
1452 NtUserCreateDesktop(
1453 POBJECT_ATTRIBUTES poa
,
1454 PUNICODE_STRING lpszDesktopDevice
,
1457 ACCESS_MASK dwDesiredAccess
);
1461 NtUserCreateInputContext(
1466 NtUserCreateLocalMemHandle(
1474 NtUserCreateWindowEx(
1475 DWORD dwExStyle
, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
1476 PLARGE_STRING plstrClassName
,
1477 PLARGE_STRING plstrClsVersion
,
1478 PLARGE_STRING plstrWindowName
,
1486 HINSTANCE hInstance
,
1493 NtUserCreateWindowStation(
1494 PUNICODE_STRING lpszWindowStationName
,
1495 ACCESS_MASK dwDesiredAccess
,
1496 LPSECURITY_ATTRIBUTES lpSecurity
,
1504 NtUserDdeGetQualityOfService(
1507 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1511 NtUserDdeInitialize(
1520 NtUserDdeSetQualityOfService(
1522 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1523 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1526 NtUserDeferWindowPos(
1529 HWND WndInsertAfter
,
1537 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1541 NtUserDestroyAcceleratorTable(
1546 NtUserDestroyCursor(
1552 NtUserDestroyInputContext(
1556 NtUserDestroyWindow(HWND Wnd
);
1560 NtUserDisableThreadIme(
1565 NtUserDispatchMessage(PMSG pMsg
);
1584 NtUserDrawAnimatedRects(
1600 NtUserDrawCaptionTemp(
1606 const PUNICODE_STRING str
,
1609 // Used with NtUserDrawIconEx, last parameter.
1610 typedef struct _DRAWICONEXDATA
1616 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1628 HBRUSH hbrFlickerFreeDraw
,
1635 NtUserEmptyClipboard(VOID
);
1639 NtUserEnableScrollBar(
1646 NtUserEndDeferWindowPosEx(
1651 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1655 NtUserEnumDisplayDevices (
1656 PUNICODE_STRING lpDevice
, /* device name */
1657 DWORD iDevNum
, /* display device */
1658 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1659 DWORD dwFlags
); /* reserved */
1663 NtUserEnumDisplayMonitors (
1666 MONITORENUMPROC lpfnEnum,
1668 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1671 NtUserEnumDisplayMonitors(
1672 OPTIONAL IN HDC hDC
,
1673 OPTIONAL IN LPCRECT pRect
,
1674 OPTIONAL OUT HMONITOR
*hMonitorList
,
1675 OPTIONAL OUT LPRECT monitorRectList
,
1676 OPTIONAL IN DWORD listSize
);
1681 NtUserEnumDisplaySettings(
1682 PUNICODE_STRING lpszDeviceName
,
1684 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1694 NtUserExcludeUpdateRgn(
1708 NtUserFindExistingCursorIcon(
1718 HWND hwndChildAfter
,
1719 PUNICODE_STRING ucClassName
,
1720 PUNICODE_STRING ucWindowName
,
1726 NtUserFlashWindowEx(
1727 IN PFLASHWINFO pfwi
);
1731 NtUserGetAltTabInfo(
1740 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
1744 NtUserGetAppImeLevel(
1749 NtUserGetAsyncKeyState(
1760 NtUserGetCaretBlinkTime(VOID
);
1768 NtUserGetClassInfo(HINSTANCE hInstance
,
1769 PUNICODE_STRING ClassName
,
1771 LPWSTR
*ppszMenuName
,
1776 NtUserGetClassName(HWND hWnd
,
1777 PUNICODE_STRING ClassName
,
1779 #if 0 // Real NtUserGetClassName
1782 NtUserGetClassName(HWND hWnd
,
1783 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1784 PUNICODE_STRING ClassName
);
1789 NtUserGetClipboardData(
1795 NtUserGetClipboardFormatName(
1797 PUNICODE_STRING FormatName
,
1802 NtUserGetClipboardOwner(VOID
);
1806 NtUserGetClipboardSequenceNumber(VOID
);
1810 NtUserGetClipboardViewer(VOID
);
1814 NtUserGetClipCursor(
1819 NtUserGetComboBoxInfo(
1821 PCOMBOBOXINFO pcbi
);
1825 NtUserGetControlBrush(
1832 NtUserGetControlColor(
1847 NtUserGetCursorFrameInfo(
1855 NtUserGetCursorInfo(
1872 NtUserGetDoubleClickTime(VOID
);
1876 NtUserGetForegroundWindow(VOID
);
1880 NtUserGetGuiResources(
1886 NtUserGetGUIThreadInfo(
1888 LPGUITHREADINFO lpgui
);
1895 PUNICODE_STRING lpInstName
,
1896 PUNICODE_STRING lpResName
,
1924 NtUserGetInternalWindowPos(
1931 NtUserGetKeyboardLayout(
1936 NtUserGetKeyboardLayoutList(
1942 NtUserGetKeyboardLayoutName(
1947 NtUserGetKeyboardState(
1952 NtUserGetKeyboardType(
1957 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
1966 NtUserGetLayeredWindowAttributes(
1974 NtUserGetListBoxInfo(
1977 typedef struct tagNTUSERGETMESSAGEINFO
1981 } NTUSERGETMESSAGEINFO
, *PNTUSERGETMESSAGEINFO
;
1986 PNTUSERGETMESSAGEINFO MsgInfo
,
1989 UINT wMsgFilterMax
);
1993 NtUserGetMouseMovePointsEx(
1995 LPMOUSEMOVEPOINT lppt
,
1996 LPMOUSEMOVEPOINT lpptBuf
,
2002 NtUserGetObjectInformation(
2005 PVOID pvInformation
,
2007 PDWORD nLengthNeeded
);
2011 NtUserGetOpenClipboardWindow(VOID
);
2015 NtUserGetPriorityClipboardFormat(
2016 UINT
*paFormatPriorityList
,
2021 NtUserGetProcessWindowStation(VOID
);
2025 NtUserGetRawInputBuffer(
2032 NtUserGetRawInputData(
2033 HRAWINPUT hRawInput
,
2041 NtUserGetRawInputDeviceInfo(
2049 NtUserGetRawInputDeviceList(
2050 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2051 PUINT puiNumDevices
,
2056 NtUserGetRegisteredRawInputDevices(
2057 PRAWINPUTDEVICE pRawInputDevices
,
2058 PUINT puiNumDevices
,
2063 NtUserGetScrollBarInfo(
2066 PSCROLLBARINFO psbi
);
2070 NtUserGetThreadDesktop(
2075 enum ThreadStateRoutines
2077 THREADSTATE_GETTHREADINFO
,
2078 THREADSTATE_INSENDMESSAGE
,
2079 THREADSTATE_FOCUSWINDOW
,
2080 THREADSTATE_ACTIVEWINDOW
,
2081 THREADSTATE_CAPTUREWINDOW
,
2082 THREADSTATE_PROGMANWINDOW
,
2083 THREADSTATE_TASKMANWINDOW
,
2084 THREADSTATE_GETMESSAGETIME
,
2085 THREADSTATE_GETINPUTSTATE
2090 NtUserGetThreadState(
2095 NtUserGetTitleBarInfo(
2100 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2116 NtUserGetWindowPlacement(
2118 WINDOWPLACEMENT
*lpwndpl
);
2123 HINSTANCE hInstance
,
2124 PUNICODE_STRING ClassName
);
2128 NtUserHardErrorControl(
2135 NtUserImpersonateDdeClientWindow(
2143 HANDLE hPowerRequestEvent
,
2144 HANDLE hMediaRequestEvent
);
2148 NtUserInitializeClientPfnArrays(
2149 PPFNCLIENT pfnClientA
,
2150 PPFNCLIENT pfnClientW
,
2151 PPFNCLIENTWORKER pfnClientWorker
,
2152 HINSTANCE hmodUser
);
2172 NtUserInternalGetWindowText(
2179 NtUserInvalidateRect(
2186 NtUserInvalidateRgn(
2193 NtUserIsClipboardFormatAvailable(
2206 NtUserLoadKeyboardLayoutEx(
2209 IN PUNICODE_STRING puszKeyboardName
,
2211 IN PUNICODE_STRING puszKLID
,
2217 NtUserLockWindowStation(
2218 HWINSTA hWindowStation
);
2222 NtUserLockWindowUpdate(
2227 NtUserLockWorkStation(VOID
);
2231 NtUserMapVirtualKeyEx( UINT keyCode
,
2242 ULONG_PTR ResultInfo
,
2243 DWORD dwType
, // FNID_XX types
2250 UINT cmd
, // Wine SW_ commands
2255 NtUserMNDragLeave(VOID
);
2265 NtUserModifyUserStartupInfoFlags(
2282 NtUserNotifyIMEStatus(
2289 NtUserNotifyProcessCreate(
2297 NtUserNotifyWinEvent(
2305 NtUserOpenClipboard(
2312 PUNICODE_STRING lpszDesktopName
,
2314 ACCESS_MASK dwDesiredAccess
);
2318 NtUserOpenInputDesktop(
2321 ACCESS_MASK dwDesiredAccess
);
2325 NtUserOpenWindowStation(
2326 PUNICODE_STRING lpszWindowStationName
,
2327 ACCESS_MASK dwDesiredAccess
);
2347 PNTUSERGETMESSAGEINFO MsgInfo
,
2363 NtUserPostThreadMessage(
2378 NtUserProcessConnect(
2380 OUT PUSERCONNECT pUserConnect
,
2381 IN DWORD dwSize
); // sizeof(USERCONNECT)
2385 NtUserQueryInformationThread(
2394 NtUserQueryInputContext(
2400 NtUserQuerySendMessage(
2405 NtUserQueryUserCounters(
2412 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2413 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2414 #define QUERY_WINDOW_ACTIVE 0x02
2415 #define QUERY_WINDOW_FOCUS 0x03
2416 #define QUERY_WINDOW_ISHUNG 0x04
2417 #define QUERY_WINDOW_REAL_ID 0x05
2426 NtUserRealInternalGetMessage(
2436 NtUserRealChildWindowFromPoint(
2443 NtUserRealWaitMessageEx(
2452 CONST RECT
*lprcUpdate
,
2459 NtUserRegisterClassExWOW(
2461 PUNICODE_STRING pustrClassName
,
2462 PUNICODE_STRING pustrCNVersion
,
2463 PCLSMENUNAME pClassMenuName
,
2470 NtUserRegisterRawInputDevices(
2471 IN PCRAWINPUTDEVICE pRawInputDevices
,
2472 IN UINT uiNumDevices
,
2477 NtUserRegisterUserApiHook(
2478 PUNICODE_STRING m_dllname1
,
2479 PUNICODE_STRING m_funname1
,
2485 NtUserRegisterHotKey(HWND hWnd
,
2492 NtUserRegisterTasklist(
2496 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2500 NtUserRemoteConnect(
2507 NtUserRemoteRedrawRectangle(
2515 NtUserRemoteRedrawScreen(VOID
);
2519 NtUserRemoteStopScreenUpdates(VOID
);
2522 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2526 NtUserResolveDesktop(
2534 NtUserResolveDesktopForWOW(
2551 CONST RECT
*lprcScroll
,
2552 CONST RECT
*lprcClip
,
2557 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2558 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2568 NtUserSetActiveWindow(HWND Wnd
);
2572 NtUserSetAppImeLevel(
2577 NtUserSetCapture(HWND Wnd
);
2583 ULONG_PTR dwNewLong
,
2595 NtUserSetClipboardData(
2602 NtUserSetClipboardViewer(
2603 HWND hWndNewViewer
);
2607 NtUserSelectPalette(
2610 BOOL ForceBackground
2615 NtUserSetConsoleReserveKeys(
2626 NtUserSetCursorContents(
2628 PICONINFO IconInfo
);
2632 NtUserSetCursorIconData(
2667 NtUserSetImeOwnerWindow(
2673 NtUserSetInformationProcess(
2681 NtUserSetInformationThread(
2682 IN HANDLE ThreadHandle
,
2683 IN USERTHREADINFOCLASS ThreadInformationClass
,
2684 IN PVOID ThreadInformation
,
2685 IN ULONG ThreadInformationLength
2690 NtUserSetInternalWindowPos(
2698 NtUserSetKeyboardState(
2703 NtUserSetLayeredWindowAttributes(
2711 NtUserSetLogonNotifyWindow(
2716 NtUserSetObjectInformation(
2719 PVOID pvInformation
,
2726 HWND hWndNewParent
);
2730 NtUserSetProcessWindowStation(
2731 HWINSTA hWindowStation
);
2734 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
2744 NtUserSetScrollInfo(
2752 NtUserSetShellWindowEx(
2754 HWND hwndShellListView
);
2760 IN CONST INT
*lpaElements
,
2761 IN CONST COLORREF
*lpaRgbValues
,
2766 NtUserSetSystemCursor(
2772 NtUserSetThreadDesktop(
2777 NtUserSetThreadState(
2783 NtUserSetSystemTimer
2788 TIMERPROC lpTimerFunc
2793 NtUserSetThreadLayoutHandles(
2804 TIMERPROC lpTimerFunc
2809 NtUserSetWindowFNID(
2815 NtUserSetWindowLong(
2823 NtUserSetWindowPlacement(
2825 WINDOWPLACEMENT
*lpwndpl
);
2828 NTAPI
NtUserSetWindowPos(
2830 HWND hWndInsertAfter
,
2847 NtUserSetWindowsHookAW(
2854 NtUserSetWindowsHookEx(
2856 PUNICODE_STRING ModuleName
,
2864 NtUserSetWindowStationUser(
2871 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
2875 NtUserSetWinEventHook(
2878 HMODULE hmodWinEventProc
,
2879 PUNICODE_STRING puString
,
2880 WINEVENTPROC lpfnWinEventProc
,
2897 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
2907 NtUserShowWindowAsync(
2913 NtUserSoundSentry(VOID
);
2917 NtUserSwitchDesktop(
2922 NtUserSystemParametersInfo(
2930 NtUserTestForInteractiveUser(
2946 NtUserTrackMouseEvent(
2947 LPTRACKMOUSEEVENT lpEventTrack
);
2951 NtUserTranslateAccelerator(
2958 NtUserTranslateMessage(
2964 NtUserUnhookWindowsHookEx(
2969 NtUserUnhookWinEvent(
2970 HWINEVENTHOOK hWinEventHook
);
2974 NtUserUnloadKeyboardLayout(
2979 NtUserUnlockWindowStation(
2980 HWINSTA hWindowStation
);
2984 NtUserUnregisterClass(
2985 PUNICODE_STRING ClassNameOrAtom
,
2986 HINSTANCE hInstance
,
2987 PCLSMENUNAME pClassMenuName
);
2991 NtUserUnregisterHotKey(HWND hWnd
,
2996 NtUserUnregisterUserApiHook(VOID
);
3000 NtUserUpdateInputContext(
3007 NtUserUpdateInstance(
3014 NtUserUpdateLayeredWindow(
3022 BLENDFUNCTION
*pblend
,
3028 NtUserUpdatePerUserSystemParameters(
3034 NtUserUserHandleGrantAccess(
3035 IN HANDLE hUserHandle
,
3041 NtUserValidateHandleSecure(
3049 CONST RECT
*lpRect
);
3053 NtUserValidateTimerCallback(
3067 NtUserWaitForInputIdle(
3069 IN DWORD dwMilliseconds
,
3070 IN BOOL Unknown2
); // Always FALSE
3074 NtUserWaitForMsgAndEvent(
3079 NtUserWaitMessage(VOID
);
3083 NtUserWin32PoolAllocationStats(
3093 NtUserWindowFromPhysicalPoint(
3098 NtUserWindowFromPoint(
3104 NtUserYieldTask(VOID
);
3106 /* lParam of DDE messages */
3107 typedef struct tagKMDDEEXECUTEDATA
3111 /* BYTE Data[DataSize] */
3112 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3114 typedef struct tagKMDDELPARAM
3126 } KMDDELPARAM
, *PKMDDELPARAM
;
3133 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3136 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3137 #define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
3138 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3139 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3140 #define ONEPARAM_ROUTINE_ISWINDOWINDESTROY 0xfffe000c
3141 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3142 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3143 #define ONEPARAM_ROUTINE_CREATECURICONHANDLE 0xfffe0025 // CREATE_EMPTY_CURSOR_OBJECT ?
3144 #define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0xfffe0027
3145 #define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
3146 #define TWOPARAM_ROUTINE_GETWINDOWRGNBOX 0xfffd0048 // user mode
3147 #define TWOPARAM_ROUTINE_GETWINDOWRGN 0xfffd0049 // user mode
3148 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3149 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3150 #define MSQ_STATE_CAPTURE 0x1
3151 #define MSQ_STATE_ACTIVE 0x2
3152 #define MSQ_STATE_FOCUS 0x3
3153 #define MSQ_STATE_MENUOWNER 0x4
3154 #define MSQ_STATE_MOVESIZE 0x5
3155 #define MSQ_STATE_CARET 0x6
3156 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3157 #define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
3158 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3162 NtUserBuildMenuItemList(
3169 /* Should be done in usermode and use NtUserGetCPD. */
3172 NtUserGetClassLong(HWND hWnd
, INT Offset
, BOOL Ansi
);
3176 NtUserGetMenuDefaultItem(
3183 NtUserGetLastInputInfo(
3184 PLASTINPUTINFO plii
);
3188 NtUserGetMinMaxInfo(
3190 MINMAXINFO
*MinMaxInfo
,
3195 NtUserGetMonitorInfo(
3196 IN HMONITOR hMonitor
,
3197 OUT LPMONITORINFO pMonitorInfo
);
3199 /* Should be done in usermode */
3201 /* (other FocusedItem values give the position of the focused item) */
3202 #define NO_SELECTED_ITEM 0xffff
3204 typedef struct tagROSMENUINFO
3206 /* ----------- MENUINFO ----------- */
3212 DWORD dwContextHelpID
;
3213 ULONG_PTR dwMenuData
;
3214 /* ----------- Extra ----------- */
3215 HMENU Self
; /* Handle of this menu */
3216 WORD Flags
; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3217 UINT FocusedItem
; /* Currently focused item */
3218 UINT MenuItemCount
; /* Number of items in the menu */
3219 HWND Wnd
; /* Window containing the menu */
3220 WORD Width
; /* Width of the whole menu */
3221 WORD Height
; /* Height of the whole menu */
3222 HWND WndOwner
; /* window receiving the messages for ownerdraw */
3223 BOOL TimeToHide
; /* Request hiding when receiving a second click in the top-level menu item */
3224 SIZE maxBmpSize
; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3225 } ROSMENUINFO
, *PROSMENUINFO
;
3237 typedef struct tagROSMENUITEMINFO
3239 /* ----------- MENUITEMINFOW ----------- */
3246 HBITMAP hbmpChecked
;
3247 HBITMAP hbmpUnchecked
;
3252 /* ----------- Extra ----------- */
3253 RECT Rect
; /* Item area (relative to menu window) */
3254 UINT dxTab
; /* X position of text after Tab */
3255 LPWSTR lpstr
; /* Copy of the text pointer in MenuItem->Text */
3256 } ROSMENUITEMINFO
, *PROSMENUITEMINFO
;
3264 PROSMENUITEMINFO lpmii
,
3270 NtUserMonitorFromPoint(
3276 NtUserMonitorFromRect(
3282 NtUserMonitorFromWindow(
3287 typedef struct tagNTUSERSENDMESSAGEINFO
3289 BOOL HandledByKernel
;
3292 } NTUSERSENDMESSAGEINFO
, *PNTUSERSENDMESSAGEINFO
;
3294 /* use NtUserMessageCall */
3296 NtUserSendMessage(HWND hWnd
,
3300 PNTUSERSENDMESSAGEINFO Info
);
3302 /* use NtUserMessageCall */
3304 NtUserSendMessageTimeout(HWND hWnd
,
3311 PNTUSERSENDMESSAGEINFO Info
);
3313 typedef struct _SETSCROLLBARINFO
3317 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3318 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3322 NtUserSetScrollBarInfo(
3325 SETSCROLLBARINFO
*info
);
3329 #endif /* __WIN32K_NTUSER_H */