Reactos
at master 3664 lines 74 kB view raw
1#ifndef __WIN32K_NTUSER_H 2#define __WIN32K_NTUSER_H 3 4struct _PROCESSINFO; 5struct _THREADINFO; 6struct _DESKTOP; 7struct _WND; 8struct tagPOPUPMENU; 9 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 */ 12 13#define HANDLEENTRY_DESTROY 1 14#define HANDLEENTRY_INDESTROY 2 15 16typedef struct _USER_HANDLE_ENTRY 17{ 18 void *ptr; /* pointer to object */ 19 union 20 { 21 PVOID pi; 22 struct _THREADINFO *pti; /* pointer to Win32ThreadInfo */ 23 struct _PROCESSINFO *ppi; /* pointer to W32ProcessInfo */ 24 }; 25 unsigned char type; /* object type (0 if free) */ 26 unsigned char flags; 27 unsigned short generation; /* generation counter */ 28} USER_HANDLE_ENTRY, *PUSER_HANDLE_ENTRY; 29 30typedef struct _USER_HANDLE_TABLE 31{ 32 PUSER_HANDLE_ENTRY handles; 33 PUSER_HANDLE_ENTRY freelist; 34 int nb_handles; 35 int allocated_handles; 36} USER_HANDLE_TABLE, *PUSER_HANDLE_TABLE; 37 38typedef enum _HANDLE_TYPE 39{ 40 TYPE_FREE = 0, 41 TYPE_WINDOW = 1, 42 TYPE_MENU = 2, 43 TYPE_CURSOR = 3, 44 TYPE_SETWINDOWPOS = 4, 45 TYPE_HOOK = 5, 46 TYPE_CLIPDATA = 6, 47 TYPE_CALLPROC = 7, 48 TYPE_ACCELTABLE = 8, 49 TYPE_DDEACCESS = 9, 50 TYPE_DDECONV = 10, 51 TYPE_DDEXACT = 11, 52 TYPE_MONITOR = 12, 53 TYPE_KBDLAYOUT = 13, 54 TYPE_KBDFILE = 14, 55 TYPE_WINEVENTHOOK = 15, 56 TYPE_TIMER = 16, 57 TYPE_INPUTCONTEXT = 17, 58 TYPE_HIDDATA = 18, 59 TYPE_DEVICEINFO = 19, 60 TYPE_TOUCHINPUTINFO = 20, 61 TYPE_GESTUREINFOOBJ = 21, 62 TYPE_CTYPES, 63 TYPE_GENERIC = 255 64} HANDLE_TYPE, *PHANDLE_TYPE; 65 66typedef enum _USERTHREADINFOCLASS 67{ 68 UserThreadShutdownInformation, 69 UserThreadFlags, 70 UserThreadTaskName, 71 UserThreadWOWInformation, 72 UserThreadHungStatus, 73 UserThreadInitiateShutdown, 74 UserThreadEndShutdown, 75 UserThreadUseActiveDesktop, 76 UserThreadUseDesktop, 77 UserThreadRestoreDesktop, 78 UserThreadCsrApiPort, 79} USERTHREADINFOCLASS; 80 81typedef struct _LARGE_UNICODE_STRING 82{ 83 ULONG Length; 84 ULONG MaximumLength:31; 85 ULONG bAnsi:1; 86 PWSTR Buffer; 87} LARGE_UNICODE_STRING, *PLARGE_UNICODE_STRING; 88 89typedef struct _LARGE_STRING 90{ 91 ULONG Length; 92 ULONG MaximumLength:31; 93 ULONG bAnsi:1; 94 PVOID Buffer; 95} LARGE_STRING, *PLARGE_STRING; 96 97 98/* Based on ANSI_STRING */ 99typedef struct _LARGE_ANSI_STRING 100{ 101 ULONG Length; 102 ULONG MaximumLength:31; 103 ULONG bAnsi:1; 104 PCHAR Buffer; 105} LARGE_ANSI_STRING, *PLARGE_ANSI_STRING; 106 107VOID 108NTAPI 109RtlInitLargeAnsiString( 110 IN OUT PLARGE_ANSI_STRING, 111 IN PCSZ, 112 IN INT); 113 114VOID 115NTAPI 116RtlInitLargeUnicodeString( 117 IN OUT PLARGE_UNICODE_STRING, 118 IN PCWSTR, 119 IN INT); 120 121BOOL 122NTAPI 123RtlLargeStringToUnicodeString( 124 PUNICODE_STRING, 125 PLARGE_STRING); 126 127#define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1) 128 129/* 130 * DESKTOPINFO structure. 131 * See also: https://reactos.org/wiki/Techwiki:Win32k/DESKTOP 132 */ 133typedef struct _DESKTOPINFO 134{ 135 PVOID pvDesktopBase; 136 PVOID pvDesktopLimit; 137 struct _WND *spwnd; 138 DWORD fsHooks; 139 LIST_ENTRY aphkStart[NB_HOOKS]; 140 141 HWND hTaskManWindow; 142 HWND hProgmanWindow; 143 HWND hShellWindow; 144 struct _WND *spwndShell; 145 struct _WND *spwndBkGnd; 146 147 struct _PROCESSINFO *ppiShellProcess; 148 149 union 150 { 151 UINT Dummy; 152 struct 153 { 154 UINT LastInputWasKbd:1; 155 }; 156 }; 157 158 WCHAR szDesktopName[1]; 159} DESKTOPINFO, *PDESKTOPINFO; 160 161#define CTI_THREADSYSLOCK 0x0001 162#define CTI_INSENDMESSAGE 0x0002 163 164/* 165 * CLIENTTHREADINFO structure. 166 * See also: https://reactos.org/wiki/Techwiki:Win32k/CLIENTTHREADINFO 167 */ 168typedef struct _CLIENTTHREADINFO 169{ 170 DWORD CTI_flags; 171 WORD fsChangeBits; 172 WORD fsWakeBits; 173 WORD fsWakeBitsJournal; 174 WORD fsWakeMask; 175 ULONG timeLastRead; // Last time the message queue was read. 176 DWORD dwcPumpHook; 177} CLIENTTHREADINFO, *PCLIENTTHREADINFO; 178 179typedef struct _HEAD 180{ 181 HANDLE h; 182 DWORD cLockObj; 183} HEAD, *PHEAD; 184 185typedef struct _THROBJHEAD 186{ 187 HEAD; 188 struct _THREADINFO *pti; 189} THROBJHEAD, *PTHROBJHEAD; 190 191typedef struct _THRDESKHEAD 192{ 193 THROBJHEAD; 194 struct _DESKTOP *rpdesk; 195 PVOID pSelf; 196} THRDESKHEAD, *PTHRDESKHEAD; 197 198typedef struct tagIMC 199{ 200 THRDESKHEAD head; 201 struct tagIMC *pImcNext; 202 ULONG_PTR dwClientImcData; 203 HWND hImeWnd; 204} IMC, *PIMC; 205 206#ifndef _WIN64 207C_ASSERT(offsetof(IMC, head.h) == 0x0); 208C_ASSERT(offsetof(IMC, head.cLockObj) == 0x4); 209C_ASSERT(offsetof(IMC, head.pti) == 0x8); 210C_ASSERT(offsetof(IMC, pImcNext) == 0x14); 211C_ASSERT(offsetof(IMC, dwClientImcData) == 0x18); 212C_ASSERT(offsetof(IMC, hImeWnd) == 0x1c); 213#endif 214 215typedef struct _PROCDESKHEAD 216{ 217 HEAD; 218 DWORD_PTR hTaskWow; 219 struct _DESKTOP *rpdesk; 220 PVOID pSelf; 221} PROCDESKHEAD, *PPROCDESKHEAD; 222 223typedef struct _PROCMARKHEAD 224{ 225 HEAD; 226 ULONG hTaskWow; 227 struct _PROCESSINFO *ppi; 228} PROCMARKHEAD, *PPROCMARKHEAD; 229 230#define UserHMGetHandle(obj) ((obj)->head.h) 231#define UserHMSetHandle(obj, handle) ((obj)->head.h = (handle)) 232 233/* Window Client Information structure */ 234struct _ETHREAD; 235 236#define WEF_SETBYWNDPTI 0x0001 237 238typedef struct tagHOOK 239{ 240 THRDESKHEAD head; 241 struct tagHOOK *phkNext; /* This is for user space. */ 242 int HookId; /* Hook table index */ 243 ULONG_PTR offPfn; 244 ULONG flags; /* Some internal flags */ 245 INT_PTR ihmod; 246 struct _THREADINFO *ptiHooked; 247 struct _DESKTOP *rpdesk; 248 /* ReactOS */ 249 LIST_ENTRY Chain; /* Hook chain entry */ 250 HOOKPROC Proc; /* Hook function */ 251 BOOLEAN Ansi; /* Is it an Ansi hook? */ 252 UNICODE_STRING ModuleName; /* Module name for global hooks */ 253} HOOK, *PHOOK; 254 255typedef struct tagCLIPBOARDDATA 256{ 257 HEAD head; 258 DWORD cbData; 259 BYTE Data[0]; 260} CLIPBOARDDATA, *PCLIPBOARDDATA; 261 262/* THREADINFO Flags */ 263#define TIF_INCLEANUP 0x00000001 264#define TIF_16BIT 0x00000002 265#define TIF_SYSTEMTHREAD 0x00000004 266#define TIF_CSRSSTHREAD 0x00000008 267#define TIF_TRACKRECTVISIBLE 0x00000010 268#define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020 269#define TIF_DONTATTACHQUEUE 0x00000040 270#define TIF_DONTJOURNALATTACH 0x00000080 271#define TIF_WOW64 0x00000100 272#define TIF_INACTIVATEAPPMSG 0x00000200 273#define TIF_SPINNING 0x00000400 274#define TIF_PALETTEAWARE 0x00000800 275#define TIF_SHAREDWOW 0x00001000 276#define TIF_FIRSTIDLE 0x00002000 277#define TIF_WAITFORINPUTIDLE 0x00004000 278#define TIF_MOVESIZETRACKING 0x00008000 279#define TIF_VDMAPP 0x00010000 280#define TIF_DOSEMULATOR 0x00020000 281#define TIF_GLOBALHOOKER 0x00040000 282#define TIF_DELAYEDEVENT 0x00080000 283#define TIF_MSGPOSCHANGED 0x00100000 284#define TIF_SHUTDOWNCOMPLETE 0x00200000 285#define TIF_IGNOREPLAYBACKDELAY 0x00400000 286#define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000 287#define TIF_GUITHREADINITIALIZED 0x02000000 288#define TIF_DISABLEIME 0x04000000 289#define TIF_INGETTEXTLENGTH 0x08000000 290#define TIF_ANSILENGTH 0x10000000 291#define TIF_DISABLEHOOKS 0x20000000 292 293typedef struct _CALLBACKWND 294{ 295 HWND hWnd; 296 struct _WND *pWnd; 297 PVOID pActCtx; 298} CALLBACKWND, *PCALLBACKWND; 299 300#define CI_TRANSACTION 0x00000001 301#define CI_QUEUEMSG 0x00000002 302#define CI_WOW 0x00000004 303#define CI_INITTHREAD 0x00000008 304#define CI_CURTHPRHOOK 0x00000010 305#define CI_CLASSESREGISTERED 0x00000020 306#define CI_IMMACTIVATE 0x00000040 /* IMM/IME (Asian input) */ 307#define CI_CTFCOINIT 0x00000080 /* Did CTF CoInitialize? */ 308#define CI_CTFTIM 0x00000100 /* CTF Thread Input Manager (TIM) */ 309#define CI_CICERO_STARTED 0x00000200 /* Is Cicero started in the thread? */ 310#define CI_TSFDISABLED 0x00000400 /* TSF (Text Services Framework a.k.a. Cicero) */ 311#define CI_AIMMACTIVATED 0x00000800 /* Active IMM (AIMM) */ 312 313/* 314 * CLIENTINFO structure. 315 * See also: https://reactos.org/wiki/Techwiki:Win32k/CLIENTINFO 316 */ 317typedef struct _CLIENTINFO 318{ 319 ULONG_PTR CI_flags; 320 ULONG_PTR cSpins; 321 DWORD dwExpWinVer; 322 DWORD dwCompatFlags; 323 DWORD dwCompatFlags2; 324 DWORD dwTIFlags; /* ThreadInfo TIF_Xxx flags for User space. */ 325 PDESKTOPINFO pDeskInfo; 326 ULONG_PTR ulClientDelta; 327 PHOOK phkCurrent; 328 ULONG fsHooks; 329 CALLBACKWND CallbackWnd; 330 DWORD dwHookCurrent; 331 INT cInDDEMLCallback; 332 PCLIENTTHREADINFO pClientThreadInfo; 333 ULONG_PTR dwHookData; 334 DWORD dwKeyCache; 335 BYTE afKeyState[8]; 336 DWORD dwAsyncKeyCache; 337 BYTE afAsyncKeyState[8]; 338 BYTE afAsyncKeyStateRecentDow[8]; 339 HKL hKL; 340 USHORT CodePage; 341 UCHAR achDbcsCF[2]; 342 MSG msgDbcsCB; 343 LPDWORD lpdwRegisteredClasses; 344 ULONG Win32ClientInfo3[26]; 345/* It's just a pointer reference not to be used w the structure in user space. */ 346 struct _PROCESSINFO *ppi; 347} CLIENTINFO, *PCLIENTINFO; 348 349/* Make sure it fits into the TEB */ 350C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo)); 351 352#define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo)) 353 354typedef struct tagDDEPACK 355{ 356 UINT_PTR uiLo; 357 UINT_PTR uiHi; 358} DDEPACK, *PDDEPACK; 359 360#define HRGN_NULL ((HRGN)0) /* NULL empty region */ 361#define HRGN_WINDOW ((HRGN)1) /* region from window rcWindow */ 362#define HRGN_MONITOR ((HRGN)2) /* region from monitor region. */ 363 364/* Menu Item fType. */ 365#define MFT_RTOL 0x6000 366 367/* Menu Item fState. */ 368#define MFS_HBMMENUBMP 0x20000000 369 370typedef struct tagITEM 371{ 372 UINT fType; 373 UINT fState; 374 UINT wID; 375 struct tagMENU *spSubMenu; /* Pop-up menu. */ 376 HANDLE hbmpChecked; 377 HANDLE hbmpUnchecked; 378 USHORT *Xlpstr; /* Item text pointer. */ 379 ULONG cch; 380 DWORD_PTR dwItemData; 381 ULONG xItem; /* Item position. left */ 382 ULONG yItem; /* " top */ 383 ULONG cxItem; /* Item Size Width */ 384 ULONG cyItem; /* " Height */ 385 ULONG dxTab; /* X position of text after Tab */ 386 ULONG ulX; /* underline.. start position */ 387 ULONG ulWidth; /* underline.. width */ 388 HBITMAP hbmp; /* bitmap */ 389 INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */ 390 INT cyBmp; /* Height " */ 391 /* ReactOS */ 392 UNICODE_STRING lpstr; 393} ITEM, *PITEM; 394 395typedef struct tagMENULIST 396{ 397 struct tagMENULIST *pNext; 398 struct tagMENU *pMenu; 399} MENULIST, *PMENULIST; 400 401/* Menu fFlags, upper byte is MNS_X style flags. */ 402#define MNF_POPUP 0x0001 403#define MNF_UNDERLINE 0x0004 404#define MNF_INACTIVE 0x0010 405#define MNF_RTOL 0x0020 406#define MNF_DESKTOPMN 0x0040 407#define MNF_SYSDESKMN 0x0080 408#define MNF_SYSSUBMENU 0x0100 409/* Hack */ 410#define MNF_SYSMENU 0x0200 411 412/* (other FocusedItem values give the position of the focused item) */ 413#define NO_SELECTED_ITEM 0xffff 414 415typedef struct tagMENU 416{ 417 PROCDESKHEAD head; 418 ULONG fFlags; /* [Style flags | Menu flags] */ 419 INT iItem; /* nPos of selected item, if -1 not selected. AKA focused item */ 420 UINT cAlloced; /* Number of allocated items. Inc's of 8 */ 421 UINT cItems; /* Number of items in the menu */ 422 ULONG cxMenu; /* Width of the whole menu */ 423 ULONG cyMenu; /* Height of the whole menu */ 424 ULONG cxTextAlign; /* Offset of text when items have both bitmaps and text */ 425 struct _WND *spwndNotify; /* window receiving the messages for ownerdraw */ 426 PITEM rgItems; /* Array of menu items */ 427 struct tagMENULIST *pParentMenus; /* If this is SubMenu, list of parents. */ 428 DWORD dwContextHelpId; 429 ULONG cyMax; /* max height of the whole menu, 0 is screen height */ 430 DWORD_PTR dwMenuData; /* application defined value */ 431 HBRUSH hbrBack; /* brush for menu background */ 432 INT iTop; /* Current scroll position Top */ 433 INT iMaxTop; /* Current scroll position Max Top */ 434 DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */ 435 /* ReactOS */ 436 LIST_ENTRY ListEntry; 437 HWND hWnd; /* Window containing the menu, use POPUPMENU */ 438 BOOL TimeToHide; 439} MENU, *PMENU; 440 441typedef struct tagPOPUPMENU 442{ 443 ULONG fIsMenuBar:1; 444 ULONG fHasMenuBar:1; 445 ULONG fIsSysMenu:1; 446 ULONG fIsTrackPopup:1; 447 ULONG fDroppedLeft:1; 448 ULONG fHierarchyDropped:1; 449 ULONG fRightButton:1; 450 ULONG fToggle:1; 451 ULONG fSynchronous:1; 452 ULONG fFirstClick:1; 453 ULONG fDropNextPopup:1; 454 ULONG fNoNotify:1; 455 ULONG fAboutToHide:1; 456 ULONG fShowTimer:1; 457 ULONG fHideTimer:1; 458 ULONG fDestroyed:1; 459 ULONG fDelayedFree:1; 460 ULONG fFlushDelayedFree:1; 461 ULONG fFreed:1; 462 ULONG fInCancel:1; 463 ULONG fTrackMouseEvent:1; 464 ULONG fSendUninit:1; 465 ULONG fRtoL:1; 466 // ULONG fDesktopMenu:1; 467 ULONG iDropDir:5; 468 ULONG fUseMonitorRect:1; 469 struct _WND *spwndNotify; 470 struct _WND *spwndPopupMenu; 471 struct _WND *spwndNextPopup; 472 struct _WND *spwndPrevPopup; 473 PMENU spmenu; 474 PMENU spmenuAlternate; 475 struct _WND *spwndActivePopup; 476 struct tagPOPUPMENU *ppopupmenuRoot; 477 struct tagPOPUPMENU *ppmDelayedFree; 478 UINT posSelectedItem; 479 UINT posDropped; 480} POPUPMENU, *PPOPUPMENU; 481 482typedef struct _REGISTER_SYSCLASS 483{ 484 /* This is a reactos specific class used to initialize the 485 system window classes during user32 initialization */ 486 PWSTR ClassName; 487 UINT Style; 488 WNDPROC ProcW; 489 UINT ExtraBytes; 490 HICON hCursor; 491 HBRUSH hBrush; 492 WORD fiId; 493 WORD iCls; 494} REGISTER_SYSCLASS, *PREGISTER_SYSCLASS; 495 496typedef struct _CLSMENUNAME 497{ 498 LPSTR pszClientAnsiMenuName; 499 LPWSTR pwszClientUnicodeMenuName; 500 PUNICODE_STRING pusMenuName; 501} CLSMENUNAME, *PCLSMENUNAME; 502 503typedef struct tagSBDATA 504{ 505 INT posMin; 506 INT posMax; 507 INT page; 508 INT pos; 509} SBDATA, *PSBDATA; 510 511typedef struct tagSBINFO 512{ 513 INT WSBflags; 514 SBDATA Horz; 515 SBDATA Vert; 516} SBINFO, *PSBINFO; 517 518typedef struct tagSBCALC 519{ 520 INT posMin; 521 INT posMax; 522 INT page; 523 INT pos; 524 INT pxTop; 525 INT pxBottom; 526 INT pxLeft; 527 INT pxRight; 528 INT cpxThumb; 529 INT pxUpArrow; 530 INT pxDownArrow; 531 INT pxStart; 532 INT pxThumbBottom; 533 INT pxThumbTop; 534 INT cpx; 535 INT pxMin; 536} SBCALC, *PSBCALC; 537 538typedef enum _GETCPD 539{ 540 UserGetCPDA2U = 0x01, /* " Unicode " */ 541 UserGetCPDU2A = 0X02, /* " Ansi " */ 542 UserGetCPDClass = 0X10, 543 UserGetCPDWindow = 0X20, 544 UserGetCPDDialog = 0X40, 545 UserGetCPDWndtoCls = 0X80 546} GETCPD, *PGETCPD; 547 548typedef struct _CALLPROCDATA 549{ 550 PROCDESKHEAD head; 551 struct _CALLPROCDATA *spcpdNext; 552 WNDPROC pfnClientPrevious; 553 GETCPD wType; 554} CALLPROCDATA, *PCALLPROCDATA; 555 556#define CSF_SERVERSIDEPROC 0x0001 557#define CSF_ANSIPROC 0x0002 558#define CSF_WOWDEFERDESTROY 0x0004 559#define CSF_SYSTEMCLASS 0x0008 560#define CSF_WOWCLASS 0x0010 561#define CSF_WOWEXTRA 0x0020 562#define CSF_CACHEDSMICON 0x0040 563#define CSF_WIN40COMPAT 0x0080 564 565typedef struct _CLS 566{ 567 struct _CLS *pclsNext; 568 RTL_ATOM atomClassName; 569 ATOM atomNVClassName; 570 DWORD fnid; 571 struct _DESKTOP *rpdeskParent; 572 PVOID pdce; 573 DWORD CSF_flags; 574 PSTR lpszClientAnsiMenuName; /* For client use */ 575 PWSTR lpszClientUnicodeMenuName; /* " " " */ 576 PCALLPROCDATA spcpdFirst; 577 struct _CLS *pclsBase; 578 struct _CLS *pclsClone; 579 ULONG cWndReferenceCount; 580 UINT style; 581 WNDPROC lpfnWndProc; 582 INT cbclsExtra; 583 INT cbwndExtra; 584 HINSTANCE hModule; 585 struct _CURICON_OBJECT *spicn; 586 struct _CURICON_OBJECT *spcur; 587 HBRUSH hbrBackground; 588 PWSTR lpszMenuName; /* kernel use */ 589 PSTR lpszAnsiClassName; /* " */ 590 struct _CURICON_OBJECT *spicnSm; 591 //// 592 UINT Unicode:1; // !CSF_ANSIPROC 593 UINT Global:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC 594 UINT MenuNameIsString:1; 595 UINT NotUsed:29; 596} CLS, *PCLS; 597 598typedef struct _SBINFOEX 599{ 600 SCROLLBARINFO ScrollBarInfo; 601 SCROLLINFO ScrollInfo; 602} SBINFOEX, *PSBINFOEX; 603 604/* State Flags !Not ALL Implemented! */ 605#define WNDS_HASMENU 0X00000001 606#define WNDS_HASVERTICALSCROOLLBAR 0X00000002 607#define WNDS_HASHORIZONTALSCROLLBAR 0X00000004 608#define WNDS_HASCAPTION 0X00000008 609#define WNDS_SENDSIZEMOVEMSGS 0X00000010 610#define WNDS_MSGBOX 0X00000020 611#define WNDS_ACTIVEFRAME 0X00000040 612#define WNDS_HASSPB 0X00000080 613#define WNDS_NONCPAINT 0X00000100 614#define WNDS_SENDERASEBACKGROUND 0X00000200 615#define WNDS_ERASEBACKGROUND 0X00000400 616#define WNDS_SENDNCPAINT 0X00000800 617#define WNDS_INTERNALPAINT 0X00001000 618#define WNDS_UPDATEDIRTY 0X00002000 619#define WNDS_HIDDENPOPUP 0X00004000 620#define WNDS_FORCEMENUDRAW 0X00008000 621#define WNDS_DIALOGWINDOW 0X00010000 622#define WNDS_HASCREATESTRUCTNAME 0X00020000 623#define WNDS_SERVERSIDEWINDOWPROC 0x00040000 /* Call proc inside win32k. */ 624#define WNDS_ANSIWINDOWPROC 0x00080000 625#define WNDS_BEINGACTIVATED 0x00100000 626#define WNDS_HASPALETTE 0x00200000 627#define WNDS_PAINTNOTPROCESSED 0x00400000 628#define WNDS_SYNCPAINTPENDING 0x00800000 629#define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000 630#define WNDS_RECEIVEDSUSPENDMSG 0x02000000 631#define WNDS_TOGGLETOPMOST 0x04000000 632#define WNDS_REDRAWIFHUNG 0x08000000 633#define WNDS_REDRAWFRAMEIFHUNG 0x10000000 634#define WNDS_ANSICREATOR 0x20000000 635#define WNDS_MAXIMIZESTOMONITOR 0x40000000 636#define WNDS_DESTROYED 0x80000000 637 638#define WNDSACTIVEFRAME 0x00000006 639 640/* State2 Flags !Not ALL Implemented! */ 641#define WNDS2_WMPAINTSENT 0X00000001 642#define WNDS2_ENDPAINTINVALIDATE 0X00000002 643#define WNDS2_STARTPAINT 0X00000004 644#define WNDS2_OLDUI 0X00000008 645#define WNDS2_HASCLIENTEDGE 0X00000010 646#define WNDS2_BOTTOMMOST 0X00000020 647#define WNDS2_FULLSCREEN 0X00000040 648#define WNDS2_INDESTROY 0X00000080 649#define WNDS2_WIN31COMPAT 0X00000100 650#define WNDS2_WIN40COMPAT 0X00000200 651#define WNDS2_WIN50COMPAT 0X00000400 652#define WNDS2_MAXIMIZEDMONITORREGION 0X00000800 653#define WNDS2_CLOSEBUTTONDOWN 0X00001000 654#define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000 655#define WNDS2_MINIMIZEBUTTONDOWN 0X00004000 656#define WNDS2_HELPBUTTONDOWN 0X00008000 657#define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000 658#define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000 659#define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000 660#define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000 661#define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000 662#define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000 663#define WNDS2_FORCENCPAINT 0X00400000 664#define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000 665#define WNDS2_FULLSCREENMODE 0X01000000 666#define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000 667#define WNDS2_NOMINMAXANIMATERECTS 0X10000000 668#define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000 669#define WNDS2_SHELLHOOKREGISTERED 0X40000000 670#define WNDS2_WMCREATEMSGPROCESSED 0X80000000 671 672/* ExStyles2 */ 673#define WS_EX2_CLIPBOARDLISTENER 0X00000001 674#define WS_EX2_LAYEREDINVALIDATE 0X00000002 675#define WS_EX2_REDIRECTEDFORPRINT 0X00000004 676#define WS_EX2_LINKED 0X00000008 677#define WS_EX2_LAYEREDFORDWM 0X00000010 678#define WS_EX2_LAYEREDLIMBO 0X00000020 679#define WS_EX2_HIGHTDPI_UNAWAR 0X00000040 680#define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080 681#define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100 682#define WS_EX2_HASOVERLAY 0X00000200 683#define WS_EX2_CONSOLEWINDOW 0X00000400 684#define WS_EX2_CHILDNOACTIVATE 0X00000800 685 686#define WPF_MININIT 0x0008 687#define WPF_MAXINIT 0x0010 688 689/* 690 * WND structure. 691 * See also: https://reactos.org/wiki/Techwiki:Win32k/WND 692 */ 693typedef struct _WND 694{ 695 THRDESKHEAD head; 696#if 0 697 WW ww; 698#else 699 /* These fields should be moved in the WW at some point. */ 700 /* Plese do not change them to keep the same layout with WW. */ 701 DWORD state; 702 DWORD state2; 703 /* Extended style. */ 704 DWORD ExStyle; 705 /* Style. */ 706 DWORD style; 707 /* Handle of the module that created the window. */ 708 HINSTANCE hModule; 709 DWORD fnid; 710#endif 711 struct _WND *spwndNext; 712 struct _WND *spwndPrev; 713 struct _WND *spwndParent; 714 struct _WND *spwndChild; 715 struct _WND *spwndOwner; 716 RECT rcWindow; 717 RECT rcClient; 718 WNDPROC lpfnWndProc; 719 /* Pointer to the window class. */ 720 PCLS pcls; 721 HRGN hrgnUpdate; 722 /* Property list head.*/ 723 LIST_ENTRY PropListHead; 724 ULONG PropListItems; 725 /* Scrollbar info */ 726 PSBINFO pSBInfo; 727 /* system menu handle. */ 728 HMENU SystemMenu; 729 //PMENU spmenuSys; 730 /* Window menu handle or window id */ 731 UINT_PTR IDMenu; // Use spmenu 732 //PMENU spmenu; 733 HRGN hrgnClip; 734 HRGN hrgnNewFrame; 735 /* Window name. */ 736 LARGE_UNICODE_STRING strName; 737 /* Size of the extra data associated with the window. */ 738 ULONG cbwndExtra; 739 struct _WND *spwndLastActive; 740 HIMC hImc; // Input context associated with this window. 741 LONG_PTR dwUserData; 742 PVOID pActCtx; 743 //PD3DMATRIX pTransForm; 744 struct _WND *spwndClipboardListener; 745 DWORD ExStyle2; 746 747 /* ReactOS */ 748 struct 749 { 750 RECT NormalRect; 751 POINT IconPos; 752 POINT MaxPos; 753 UINT flags; /* WPF_ flags. */ 754 } InternalPos; 755 756 UINT Unicode:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */ 757 UINT InternalPosInitialized:1; 758 UINT HideFocus:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */ 759 UINT HideAccel:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */ 760 761 /* Scrollbar info */ 762 PSBINFOEX pSBInfoex; // convert to PSBINFO 763 /* Entry in the list of thread windows. */ 764 LIST_ENTRY ThreadListEntry; 765 766 PVOID DialogPointer; 767} WND, *PWND; 768 769#define PWND_BOTTOM ((PWND)1) 770 771typedef struct _SBWND 772{ 773 WND wnd; 774 BOOL fVert; 775 UINT wDisableFlags; 776 SBCALC SBCalc; 777} SBWND, *PSBWND; 778 779typedef struct _MDIWND 780{ 781 WND wnd; 782 DWORD dwReserved; 783 PVOID pmdi; 784} MDIWND, *PMDIWND; 785 786#define GWLP_MDIWND 4 787 788typedef struct _MENUWND 789{ 790 WND wnd; 791 PPOPUPMENU ppopupmenu; 792} MENUWND, *PMENUWND; 793 794typedef struct _PFNCLIENT 795{ 796 WNDPROC pfnScrollBarWndProc; 797 WNDPROC pfnTitleWndProc; 798 WNDPROC pfnMenuWndProc; 799 WNDPROC pfnDesktopWndProc; 800 WNDPROC pfnDefWindowProc; 801 WNDPROC pfnMessageWindowProc; 802 WNDPROC pfnSwitchWindowProc; 803 WNDPROC pfnButtonWndProc; 804 WNDPROC pfnComboBoxWndProc; 805 WNDPROC pfnComboListBoxProc; 806 WNDPROC pfnDialogWndProc; 807 WNDPROC pfnEditWndProc; 808 WNDPROC pfnListBoxWndProc; 809 WNDPROC pfnMDIClientWndProc; 810 WNDPROC pfnStaticWndProc; 811 WNDPROC pfnImeWndProc; 812 WNDPROC pfnGhostWndProc; 813 WNDPROC pfnHkINLPCWPSTRUCT; 814 WNDPROC pfnHkINLPCWPRETSTRUCT; 815 WNDPROC pfnDispatchHook; 816 WNDPROC pfnDispatchDefWindowProc; 817 WNDPROC pfnDispatchMessage; 818 WNDPROC pfnMDIActivateDlgProc; 819} PFNCLIENT, *PPFNCLIENT; 820 821/* 822 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode ); 823 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE. 824 */ 825 826typedef LRESULT 827(CALLBACK *WNDPROC_EX)( 828 HWND, 829 UINT, 830 WPARAM, 831 LPARAM, 832 BOOL); 833 834typedef struct _PFNCLIENTWORKER 835{ 836 WNDPROC_EX pfnButtonWndProc; 837 WNDPROC_EX pfnComboBoxWndProc; 838 WNDPROC_EX pfnComboListBoxProc; 839 WNDPROC_EX pfnDialogWndProc; 840 WNDPROC_EX pfnEditWndProc; 841 WNDPROC_EX pfnListBoxWndProc; 842 WNDPROC_EX pfnMDIClientWndProc; 843 WNDPROC_EX pfnStaticWndProc; 844 WNDPROC_EX pfnImeWndProc; 845 WNDPROC_EX pfnGhostWndProc; 846 WNDPROC_EX pfnCtfHookProc; 847} PFNCLIENTWORKER, *PPFNCLIENTWORKER; 848 849typedef LONG_PTR 850(NTAPI *PFN_FNID)( 851 PWND, 852 UINT, 853 WPARAM, 854 LPARAM, 855 ULONG_PTR); 856 857/* FNID's for NtUserSetWindowFNID, NtUserMessageCall */ 858#define FNID_FIRST 0x029A 859#define FNID_SCROLLBAR 0x029A 860#define FNID_ICONTITLE 0x029B 861#define FNID_MENU 0x029C 862#define FNID_DESKTOP 0x029D 863#define FNID_DEFWINDOWPROC 0x029E 864#define FNID_MESSAGEWND 0x029F 865#define FNID_SWITCH 0x02A0 866#define FNID_BUTTON 0x02A1 867#define FNID_COMBOBOX 0x02A2 868#define FNID_COMBOLBOX 0x02A3 869#define FNID_DIALOG 0x02A4 870#define FNID_EDIT 0x02A5 871#define FNID_LISTBOX 0x02A6 872#define FNID_MDICLIENT 0x02A7 873#define FNID_STATIC 0x02A8 874#define FNID_IME 0x02A9 875#define FNID_GHOST 0x02AA 876#define FNID_CALLWNDPROC 0x02AB 877#define FNID_CALLWNDPROCRET 0x02AC 878#define FNID_HKINLPCWPEXSTRUCT 0x02AD 879#define FNID_HKINLPCWPRETEXSTRUCT 0x02AE 880#define FNID_MB_DLGPROC 0x02AF 881#define FNID_MDIACTIVATEDLGPROC 0x02B0 882#define FNID_SENDMESSAGE 0x02B1 883#define FNID_SENDMESSAGEFF 0x02B2 884/* Kernel has option to use TimeOut or normal msg send, based on type of msg. */ 885#define FNID_SENDMESSAGEWTOOPTION 0x02B3 886#define FNID_SENDMESSAGECALLPROC 0x02B4 887#define FNID_BROADCASTSYSTEMMESSAGE 0x02B5 888#define FNID_TOOLTIPS 0x02B6 889#define FNID_SENDNOTIFYMESSAGE 0x02B7 890#define FNID_SENDMESSAGECALLBACK 0x02B8 891 892#define FNID_LAST FNID_SENDMESSAGECALLBACK 893 894#define FNID_NUM (FNID_LAST - FNID_FIRST + 1) 895#define FNID_NUMSERVERPROC (FNID_SWITCH - FNID_FIRST + 1) 896 897#define FNID_DDEML 0x2000 /* Registers DDEML */ 898#define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */ 899 /* Seen during WM_CREATE on error exit too. */ 900#define FNID_FREED 0x8000 /* Window being Freed... */ 901 902#define ICLASS_TO_MASK(iCls) (1 << ((iCls))) 903 904#define GETPFNCLIENTA(fnid) \ 905 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST))) 906#define GETPFNCLIENTW(fnid) \ 907 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST))) 908 909#define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST] 910 911/* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */ 912#define ICLS_BUTTON 0 913#define ICLS_EDIT 1 914#define ICLS_STATIC 2 915#define ICLS_LISTBOX 3 916#define ICLS_SCROLLBAR 4 917#define ICLS_COMBOBOX 5 918#define ICLS_MDICLIENT 6 919#define ICLS_COMBOLBOX 7 920#define ICLS_DDEMLEVENT 8 921#define ICLS_DDEMLMOTHER 9 922#define ICLS_DDEML16BIT 10 923#define ICLS_DDEMLCLIENTA 11 924#define ICLS_DDEMLCLIENTW 12 925#define ICLS_DDEMLSERVERA 13 926#define ICLS_DDEMLSERVERW 14 927#define ICLS_IME 15 928#define ICLS_GHOST 16 929#define ICLS_DESKTOP 17 930#define ICLS_DIALOG 18 931#define ICLS_MENU 19 932#define ICLS_SWITCH 20 933#define ICLS_ICONTITLE 21 934#define ICLS_TOOLTIPS 22 935#if (_WIN32_WINNT <= 0x0501) 936#define ICLS_UNKNOWN 22 937#define ICLS_NOTUSED 23 938#else 939#define ICLS_SYSSHADOW 23 940#define ICLS_HWNDMESSAGE 24 941#define ICLS_NOTUSED 25 942#endif 943#define ICLS_END 31 944 945#define COLOR_LAST COLOR_MENUBAR 946#define MAX_MB_STRINGS 11 947 948#define SRVINFO_DBCSENABLED 0x0002 949#define SRVINFO_IMM32 0x0004 950#define SRVINFO_APIHOOK 0x0010 951#define SRVINFO_CTFIME_ENABLED 0x0020 952#define SRVINFO_KBDPREF 0x0080 953 954#define NUM_SYSCOLORS 31 955 956typedef struct tagOEMBITMAPINFO 957{ 958 INT x; 959 INT y; 960 INT cx; 961 INT cy; 962} OEMBITMAPINFO, *POEMBITMAPINFO; 963 964typedef enum _OBI_TYPES 965{ 966 OBI_CLOSE = 0, 967 OBI_UPARROW = 46, 968 OBI_UPARROWI = 49, 969 OBI_DNARROW = 50, 970 OBI_DNARROWI = 53, 971 OBI_MNARROW = 62, 972 OBI_CTYPES = 93 973} OBI_TYPES; 974 975typedef struct tagMBSTRING 976{ 977 WCHAR szName[16]; 978 UINT uID; 979 UINT uStr; 980} MBSTRING, *PMBSTRING; 981 982typedef struct tagDPISERVERINFO 983{ 984 INT gclBorder; /* 000 */ 985 HFONT hCaptionFont; /* 004 */ 986 HFONT hMsgFont; /* 008 */ 987 INT cxMsgFontChar; /* 00C */ 988 INT cyMsgFontChar; /* 010 */ 989 UINT wMaxBtnSize; /* 014 */ 990} DPISERVERINFO, *PDPISERVERINFO; 991 992/* PUSIFlags: */ 993#define PUSIF_PALETTEDISPLAY 0x01 994#define PUSIF_SNAPTO 0x02 995#define PUSIF_COMBOBOXANIMATION 0x04 996#define PUSIF_LISTBOXSMOOTHSCROLLING 0x08 997#define PUSIF_KEYBOARDCUES 0x20 998 999/* 1000 * PERUSERSERVERINFO structure. 1001 * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO 1002 */ 1003typedef struct _PERUSERSERVERINFO 1004{ 1005 INT aiSysMet[SM_CMETRICS]; 1006 ULONG argbSystemUnmatched[NUM_SYSCOLORS]; 1007 COLORREF argbSystem[NUM_SYSCOLORS]; 1008 HBRUSH ahbrSystem[NUM_SYSCOLORS]; 1009 HBRUSH hbrGray; 1010 POINT ptCursor; 1011 POINT ptCursorReal; 1012 DWORD dwLastRITEventTickCount; 1013 INT nEvents; 1014 UINT dtScroll; 1015 UINT dtLBSearch; 1016 UINT dtCaretBlink; 1017 UINT ucWheelScrollLines; 1018 UINT ucWheelScrollChars; 1019 INT wMaxLeftOverlapChars; 1020 INT wMaxRightOverlapChars; 1021 INT cxSysFontChar; 1022 INT cySysFontChar; 1023 TEXTMETRICW tmSysFont; 1024 DPISERVERINFO dpiSystem; 1025 HICON hIconSmWindows; 1026 HICON hIconWindows; 1027 DWORD dwKeyCache; 1028 DWORD dwAsyncKeyCache; 1029 ULONG cCaptures; 1030 OEMBITMAPINFO oembmi[OBI_CTYPES]; 1031 RECT rcScreenReal; 1032 USHORT BitCount; 1033 USHORT dmLogPixels; 1034 BYTE Planes; 1035 BYTE BitsPixel; 1036 ULONG PUSIFlags; 1037 UINT uCaretWidth; 1038 USHORT UILangID; 1039 DWORD dwLastSystemRITEventTickCountUpdate; 1040 ULONG adwDBGTAGFlags[35]; 1041 DWORD dwTagCount; 1042 DWORD dwRIPFlags; 1043} PERUSERSERVERINFO, *PPERUSERSERVERINFO; 1044 1045/* 1046 * SERVERINFO structure. 1047 * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO 1048 */ 1049typedef struct tagSERVERINFO 1050{ 1051 DWORD dwSRVIFlags; 1052 ULONG_PTR cHandleEntries; 1053 PFN_FNID mpFnidPfn[FNID_NUM]; 1054 WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]; 1055 USHORT mpFnid_serverCBWndProc[FNID_NUM]; 1056 PFNCLIENT apfnClientA; 1057 PFNCLIENT apfnClientW; 1058 PFNCLIENTWORKER apfnClientWorker; 1059 ULONG cbHandleTable; 1060 ATOM atomSysClass[ICLS_NOTUSED+1]; 1061 DWORD dwDefaultHeapBase; 1062 DWORD dwDefaultHeapSize; 1063 UINT uiShellMsg; 1064 MBSTRING MBStrings[MAX_MB_STRINGS]; 1065 ATOM atomIconSmProp; 1066 ATOM atomIconProp; 1067 ATOM atomContextHelpIdProp; 1068 ATOM atomFrostedWindowProp; 1069 CHAR acOemToAnsi[256]; 1070 CHAR acAnsiToOem[256]; 1071 DWORD dwInstalledEventHooks; 1072 PERUSERSERVERINFO; 1073} SERVERINFO, *PSERVERINFO; 1074 1075#ifdef _M_IX86 1076C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE); 1077#endif 1078 1079 1080/* Server event activity bits. */ 1081#define SRV_EVENT_MENU 0x0001 1082#define SRV_EVENT_END_APPLICATION 0x0002 1083#define SRV_EVENT_RUNNING 0x0004 1084#define SRV_EVENT_NAMECHANGE 0x0008 1085#define SRV_EVENT_VALUECHANGE 0x0010 1086#define SRV_EVENT_STATECHANGE 0x0020 1087#define SRV_EVENT_LOCATIONCHANGE 0x0040 1088#define SRV_EVENT_CREATE 0x8000 1089 1090typedef struct _PROPLISTITEM 1091{ 1092 ATOM Atom; 1093 HANDLE Data; 1094} PROPLISTITEM, *PPROPLISTITEM; 1095 1096#define PROPERTY_FLAG_SYSTEM 1 1097 1098typedef struct _PROPERTY 1099{ 1100 LIST_ENTRY PropListEntry; 1101 HANDLE Data; 1102 ATOM Atom; 1103 WORD fs; 1104} PROPERTY, *PPROPERTY; 1105 1106typedef struct _BROADCASTPARM 1107{ 1108 DWORD flags; 1109 DWORD recipients; 1110 HDESK hDesk; 1111 HWND hWnd; 1112 LUID luid; 1113} BROADCASTPARM, *PBROADCASTPARM; 1114 1115struct _THREADINFO *GetW32ThreadInfo(VOID); 1116struct _PROCESSINFO *GetW32ProcessInfo(VOID); 1117 1118typedef struct _WNDMSG 1119{ 1120 DWORD maxMsgs; 1121 PINT abMsgs; 1122} WNDMSG, *PWNDMSG; 1123 1124/* 1125 * SHAREDINFO structure. 1126 * See also: https://reactos.org/wiki/Techwiki:Win32k/SHAREDINFO 1127 */ 1128typedef struct _SHAREDINFO 1129{ 1130 PSERVERINFO psi; /* Global Server Info */ 1131 PVOID aheList; /* Handle Entry List */ 1132 PVOID pDispInfo; /* Global PDISPLAYINFO pointer */ 1133 ULONG_PTR ulSharedDelta; /* Shared USER mapped section delta */ 1134 WNDMSG awmControl[FNID_NUM]; 1135 WNDMSG DefWindowMsgs; 1136 WNDMSG DefWindowSpecMsgs; 1137} SHAREDINFO, *PSHAREDINFO; 1138 1139/* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */ 1140typedef struct _USERCONNECT 1141{ 1142 ULONG ulVersion; 1143 ULONG ulCurrentVersion; 1144 DWORD dwDispatchCount; 1145 SHAREDINFO siClient; 1146} USERCONNECT, *PUSERCONNECT; 1147 1148/* WinNT 5.0 compatible user32 / win32k */ 1149#define USER_VERSION MAKELONG(0x0000, 0x0005) 1150 1151#if defined(_M_IX86) 1152C_ASSERT(sizeof(USERCONNECT) == 0x124); 1153#endif 1154 1155typedef struct tagGETCLIPBDATA 1156{ 1157 UINT uFmtRet; 1158 BOOL fGlobalHandle; 1159 union 1160 { 1161 HANDLE hLocale; 1162 HANDLE hPalette; 1163 }; 1164} GETCLIPBDATA, *PGETCLIPBDATA; 1165 1166typedef struct tagSETCLIPBDATA 1167{ 1168 BOOL fGlobalHandle; 1169 BOOL fIncSerialNumber; 1170} SETCLIPBDATA, *PSETCLIPBDATA; 1171 1172/* Used with NtUserSetCursorIconData, last parameter. */ 1173typedef struct tagCURSORDATA 1174{ 1175 LPWSTR lpName; 1176 LPWSTR lpModName; 1177 USHORT rt; 1178 USHORT dummy; 1179 ULONG CURSORF_flags; 1180 SHORT xHotspot; 1181 SHORT yHotspot; 1182 HBITMAP hbmMask; 1183 HBITMAP hbmColor; 1184 HBITMAP hbmAlpha; 1185 RECT rcBounds; 1186 HBITMAP hbmUserAlpha; /* Could be in W7U, not in W2k */ 1187 ULONG bpp; 1188 ULONG cx; 1189 ULONG cy; 1190 UINT cpcur; 1191 UINT cicur; 1192 struct tagCURSORDATA *aspcur; 1193 DWORD *aicur; 1194 INT *ajifRate; 1195 UINT iicur; 1196} CURSORDATA, *PCURSORDATA; /* !dso CURSORDATA */ 1197 1198/* CURSORF_flags: */ 1199#define CURSORF_FROMRESOURCE 0x0001 1200#define CURSORF_GLOBAL 0x0002 1201#define CURSORF_LRSHARED 0x0004 1202#define CURSORF_ACON 0x0008 1203#define CURSORF_WOWCLEANUP 0x0010 1204#define CURSORF_ACONFRAME 0x0040 1205#define CURSORF_SECRET 0x0080 1206#define CURSORF_LINKED 0x0100 1207#define CURSORF_CURRENT 0x0200 1208 1209/* Flags for dwCompatFlags2 */ 1210#define COMPAT_FLAG_2_CICERO_DISABLED 2 1211 1212#define IS_IMM_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_IMM32)) 1213#define IS_CICERO_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_CTFIME_ENABLED)) 1214#define IS_16BIT_MODE() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT) 1215#define IS_CICERO_COMPAT_DISABLED() \ 1216 (GetWin32ClientInfo()->dwCompatFlags2 & COMPAT_FLAG_2_CICERO_DISABLED) 1217 1218typedef struct tagIMEUI 1219{ 1220 PWND spwnd; 1221 HIMC hIMC; 1222 HWND hwndIMC; 1223 HKL hKL; 1224 HWND hwndUI; 1225 LONG nCntInIMEProc; 1226 struct { 1227 UINT fShowStatus:1; 1228 UINT fActivate:1; 1229 UINT fDestroy:1; 1230 UINT fDefault:1; 1231 UINT fChildThreadDef:1; 1232 UINT fCtrlShowStatus:1; 1233 UINT fFreeActiveEvent:1; 1234 }; 1235 DWORD dwLastStatus; 1236} IMEUI, *PIMEUI; 1237 1238typedef struct tagIMEWND 1239{ 1240 WND wnd; 1241 PIMEUI pimeui; 1242} IMEWND, *PIMEWND; 1243 1244#define GWLP_IMEWND_PIMEUI 0 1245 1246/* IMEWND and GWLP_IMEWND_PIMEUI assume this alignment */ 1247C_ASSERT(sizeof(WND) % sizeof(PVOID) == 0); 1248 1249DWORD 1250NTAPI 1251NtUserAssociateInputContext( 1252 _In_ HWND hWnd, 1253 _In_opt_ HIMC hIMC, 1254 _In_ DWORD dwFlags); 1255 1256NTSTATUS 1257NTAPI 1258NtUserBuildHimcList( 1259 _In_ DWORD dwThreadId, 1260 _In_ DWORD dwCount, 1261 _Out_ HIMC *phList, 1262 _Out_ PDWORD pdwCount); 1263 1264DWORD 1265NTAPI 1266NtUserCalcMenuBar( 1267 HWND hwnd, 1268 DWORD x, 1269 DWORD width, 1270 DWORD y, 1271 LPRECT prc); 1272 1273DWORD 1274NTAPI 1275NtUserCheckMenuItem( 1276 HMENU hmenu, 1277 UINT uIDCheckItem, 1278 UINT uCheck); 1279 1280DWORD 1281NTAPI 1282NtUserCtxDisplayIOCtl( 1283 DWORD dwUnknown1, 1284 DWORD dwUnknown2, 1285 DWORD dwUnknown3); 1286 1287DWORD 1288APIENTRY 1289NtUserDbgWin32HeapFail( 1290 DWORD Unknown0, 1291 DWORD Unknown1); 1292 1293DWORD 1294APIENTRY 1295NtUserDbgWin32HeapStat( 1296 DWORD Unknown0, 1297 DWORD Unknown1); 1298 1299BOOL 1300NTAPI 1301NtUserDeleteMenu( 1302 HMENU hMenu, 1303 UINT uPosition, 1304 UINT uFlags); 1305 1306BOOL 1307NTAPI 1308NtUserDestroyMenu( 1309 HMENU hMenu); 1310 1311DWORD 1312NTAPI 1313NtUserDrawMenuBarTemp( 1314 HWND hWnd, 1315 HDC hDC, 1316 PRECT hRect, 1317 HMENU hMenu, 1318 HFONT hFont); 1319 1320UINT 1321NTAPI 1322NtUserEnableMenuItem( 1323 HMENU hMenu, 1324 UINT uIDEnableItem, 1325 UINT uEnable); 1326 1327BOOL 1328NTAPI 1329NtUserEndMenu(VOID); 1330 1331BOOL 1332NTAPI 1333NtUserGetMenuBarInfo( 1334 HWND hwnd, 1335 LONG idObject, 1336 LONG idItem, 1337 PMENUBARINFO pmbi); 1338 1339UINT 1340NTAPI 1341NtUserGetMenuIndex( 1342 HMENU hMenu, 1343 HMENU hSubMenu); 1344 1345BOOL 1346NTAPI 1347NtUserGetMenuItemRect( 1348 HWND hWnd, 1349 HMENU hMenu, 1350 UINT uItem, 1351 LPRECT lprcItem); 1352 1353HMENU 1354NTAPI 1355NtUserGetSystemMenu( 1356 HWND hWnd, 1357 BOOL bRevert); 1358 1359BOOL 1360NTAPI 1361NtUserHiliteMenuItem( 1362 HWND hWnd, 1363 HMENU hMenu, 1364 UINT uItemHilite, 1365 UINT uHilite); 1366 1367int 1368NTAPI 1369NtUserMenuItemFromPoint( 1370 HWND hWnd, 1371 HMENU hMenu, 1372 DWORD X, 1373 DWORD Y); 1374 1375BOOL 1376NTAPI 1377NtUserRemoveMenu( 1378 HMENU hMenu, 1379 UINT uPosition, 1380 UINT uFlags); 1381 1382BOOL 1383NTAPI 1384NtUserSetMenu( 1385 HWND hWnd, 1386 HMENU hMenu, 1387 BOOL bRepaint); 1388 1389BOOL 1390NTAPI 1391NtUserSetMenuContextHelpId( 1392 HMENU hmenu, 1393 DWORD dwContextHelpId); 1394 1395BOOL 1396NTAPI 1397NtUserSetMenuDefaultItem( 1398 HMENU hMenu, 1399 UINT uItem, 1400 UINT fByPos); 1401 1402BOOL 1403NTAPI 1404NtUserSetMenuFlagRtoL( 1405 HMENU hMenu); 1406 1407BOOL 1408NTAPI 1409NtUserSetSystemMenu( 1410 HWND hWnd, 1411 HMENU hMenu); 1412 1413BOOL 1414NTAPI 1415NtUserThunkedMenuInfo( 1416 HMENU hMenu, 1417 LPCMENUINFO lpcmi); 1418 1419BOOL 1420NTAPI 1421NtUserThunkedMenuItemInfo( 1422 HMENU hMenu, 1423 UINT uItem, 1424 BOOL fByPosition, 1425 BOOL bInsert, 1426 LPMENUITEMINFOW lpmii, 1427 PUNICODE_STRING lpszCaption); 1428 1429BOOL 1430NTAPI 1431NtUserTrackPopupMenuEx( 1432 _In_ HMENU hMenu, 1433 _In_ UINT fuFlags, 1434 _In_ INT x, 1435 _In_ INT y, 1436 _In_ HWND hwnd, 1437 _In_opt_ LPTPMPARAMS lptpm); 1438 1439HKL 1440NTAPI 1441NtUserActivateKeyboardLayout( 1442 HKL hKL, 1443 ULONG Flags); 1444 1445DWORD 1446NTAPI 1447NtUserAlterWindowStyle( 1448 HWND hWnd, 1449 DWORD Index, 1450 LONG NewValue); 1451 1452BOOL 1453NTAPI 1454NtUserAttachThreadInput( 1455 IN DWORD idAttach, 1456 IN DWORD idAttachTo, 1457 IN BOOL fAttach); 1458 1459HDC NTAPI 1460NtUserBeginPaint( 1461 HWND hWnd, 1462 PAINTSTRUCT *lPs); 1463 1464BOOL 1465NTAPI 1466NtUserBitBltSysBmp( 1467 HDC hdc, 1468 INT nXDest, 1469 INT nYDest, 1470 INT nWidth, 1471 INT nHeight, 1472 INT nXSrc, 1473 INT nYSrc, 1474 DWORD dwRop); 1475 1476BOOL 1477NTAPI 1478NtUserBlockInput( 1479 BOOL BlockIt); 1480 1481NTSTATUS 1482NTAPI 1483NtUserBuildHwndList( 1484 HDESK hDesktop, 1485 HWND hwndParent, 1486 BOOLEAN bChildren, 1487 ULONG dwThreadId, 1488 ULONG cHwnd, 1489 HWND *phwndList, 1490 ULONG *pcHwndNeeded); 1491 1492NTSTATUS 1493NTAPI 1494NtUserBuildNameList( 1495 HWINSTA hWinSta, 1496 ULONG dwSize, 1497 PVOID lpBuffer, 1498 PULONG pRequiredSize); 1499 1500NTSTATUS 1501NTAPI 1502NtUserBuildPropList( 1503 HWND hWnd, 1504 LPVOID Buffer, 1505 DWORD BufferSize, 1506 DWORD *Count); 1507 1508/* apfnSimpleCall indices from Windows XP SP 2 */ 1509/* TODO: Check for differences in Windows 2000, 2003 and 2008 */ 1510#define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */ 1511 1512enum SimpleCallRoutines 1513{ 1514 NOPARAM_ROUTINE_CREATEMENU, 1515 NOPARAM_ROUTINE_CREATEMENUPOPUP, 1516#if (WIN32K_VERSION >= NTDDI_VISTA) 1517 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION, 1518 NOPARAM_ROUTINE_MSQCLEARWAKEMASK, 1519 NOPARAM_ROUTINE_CREATESYSTEMTHREADS, 1520 NOPARAM_ROUTINE_DESTROY_CARET, 1521#endif 1522 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING, 1523#if (WIN32K_VERSION < NTDDI_VISTA) 1524 NOPARAM_ROUTINE_MSQCLEARWAKEMASK, 1525 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION, 1526 NOPARAM_ROUTINE_DESTROY_CARET, 1527#endif 1528 NOPARAM_ROUTINE_GETDEVICECHANGEINFO, 1529 NOPARAM_ROUTINE_GETIMESHOWSTATUS, 1530 NOPARAM_ROUTINE_GETINPUTDESKTOP, 1531 NOPARAM_ROUTINE_GETMSESSAGEPOS, 1532#if (WIN32K_VERSION >= NTDDI_VISTA) 1533 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL, 1534#else 1535 NOPARAM_ROUTINE_GETREMOTEPROCESSID, 1536#endif 1537 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE, 1538 NOPARAM_ROUTINE_LOADCURSANDICOS, 1539#if (WIN32K_VERSION >= NTDDI_VISTA) 1540 NOPARAM_ROUTINE_LOADUSERAPIHOOK, 1541 NOPARAM_ROUTINE_PREPAREFORLOGOFF, /* 0x0f */ 1542#endif 1543 NOPARAM_ROUTINE_RELEASECAPTURE, 1544 NOPARAM_ROUTINE_RESETDBLCLICK, 1545 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS, 1546 NOPARAM_ROUTINE_REMOTECONSHDWSTOP, 1547 NOPARAM_ROUTINE_REMOTEDISCONNECT, 1548 NOPARAM_ROUTINE_REMOTELOGOFF, 1549 NOPARAM_ROUTINE_REMOTENTSECURITY, 1550 NOPARAM_ROUTINE_REMOTESHDWSETUP, 1551 NOPARAM_ROUTINE_REMOTESHDWSTOP, 1552 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE, 1553 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE, 1554 NOPARAM_ROUTINE_REMOTECONNECTSTATE, 1555 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING, 1556 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER, 1557#if (WIN32K_VERSION >= NTDDI_VISTA) 1558 NOPARAM_ROUTINE_WAKERITFORSHTDWN, 1559#endif 1560 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP, 1561 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP, 1562#if (WIN32K_VERSION < NTDDI_VISTA) 1563 NOPARAM_ROUTINE_LOADUSERAPIHOOK, 1564#endif 1565 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS, 1566#if (WIN32K_VERSION >= NTDDI_VISTA) 1567 ONEPARAM_ROUTINE_GETSENDMSGRECVR, 1568#endif 1569 ONEPARAM_ROUTINE_WINDOWFROMDC, 1570 ONEPARAM_ROUTINE_ALLOWSETFOREGND, 1571 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT, 1572#if (WIN32K_VERSION < NTDDI_VISTA) 1573 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS, 1574#endif 1575 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE, 1576 ONEPARAM_ROUTINE_DIRECTEDYIELD, 1577 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS, 1578#if (WIN32K_VERSION < NTDDI_VISTA) 1579 ONEPARAM_ROUTINE_GETCURSORPOS, 1580#endif 1581 ONEPARAM_ROUTINE_GETINPUTEVENT, 1582 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT, 1583 ONEPARAM_ROUTINE_GETKEYBOARDTYPE, 1584 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT, 1585 ONEPARAM_ROUTINE_GETQUEUESTATUS, 1586 ONEPARAM_ROUTINE_GETWINSTAINFO, 1587#if (WIN32K_VERSION < NTDDI_VISTA) 1588 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL, 1589#endif 1590 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW, 1591 ONEPARAM_ROUTINE_LOADFONTS, 1592 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT, 1593 ONEPARAM_ROUTINE_MESSAGEBEEP, 1594 ONEPARAM_ROUTINE_PLAYEVENTSOUND, 1595 ONEPARAM_ROUTINE_POSTQUITMESSAGE, 1596#if (WIN32K_VERSION < NTDDI_VISTA) 1597 ONEPARAM_ROUTINE_PREPAREFORLOGOFF, 1598#endif 1599 ONEPARAM_ROUTINE_REALIZEPALETTE, 1600 ONEPARAM_ROUTINE_REGISTERLPK, 1601#if (WIN32K_VERSION >= NTDDI_VISTA) 1602 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD, 1603#endif 1604 ONEPARAM_ROUTINE_REMOTERECONNECT, 1605 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS, 1606 ONEPARAM_ROUTINE_RELEASEDC, 1607#if (WIN32K_VERSION >= NTDDI_VISTA) 1608 ONEPARAM_ROUTINE_REMOTENOTIFY, 1609#endif 1610 ONEPARAM_ROUTINE_REPLYMESSAGE, 1611 ONEPARAM_ROUTINE_SETCARETBLINKTIME, 1612 ONEPARAM_ROUTINE_SETDBLCLICKTIME, 1613#if (WIN32K_VERSION < NTDDI_VISTA) 1614 ONEPARAM_ROUTINE_SETIMESHOWSTATUS, 1615#endif 1616 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO, 1617 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT, 1618#if (WIN32K_VERSION >= NTDDI_VISTA) 1619 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS, 1620#endif 1621 ONEPARAM_ROUTINE_SHOWCURSOR, 1622 ONEPARAM_ROUTINE_SHOWSTARTGLASS, 1623 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON, 1624 X_ROUTINE_WOWMODULEUNLOAD, 1625#if (WIN32K_VERSION < NTDDI_VISTA) 1626 X_ROUTINE_REMOTENOTIFY, 1627#endif 1628 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW, 1629 HWND_ROUTINE_DWP_GETENABLEDPOPUP, 1630 HWND_ROUTINE_GETWNDCONTEXTHLPID, 1631 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW, 1632 HWND_ROUTINE_SETMSGBOX, 1633 HWNDOPT_ROUTINE_SETPROGMANWINDOW, 1634 HWNDOPT_ROUTINE_SETTASKMANWINDOW, 1635 HWNDPARAM_ROUTINE_GETCLASSICOCUR, 1636 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE, 1637 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER, 1638 HWNDPARAM_ROUTINE_SETDIALOGPOINTER, 1639 HWNDPARAM_ROUTINE_SETVISIBLE, 1640 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID, 1641 HWNDPARAM_ROUTINE_SETWINDOWSTATE, 1642 HWNDLOCK_ROUTINE_WINDOWHASSHADOW, /* correct prefix ? */ 1643 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS, 1644 HWNDLOCK_ROUTINE_DRAWMENUBAR, 1645 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD, 1646 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE, 1647 HWNDLOCK_ROUTINE_REDRAWFRAME, 1648 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK, 1649 HWNDLOCK_ROUTINE_SETDLGSYSMENU, 1650 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW, 1651 HWNDLOCK_ROUTINE_SETSYSMENU, 1652 HWNDLOCK_ROUTINE_UPDATECKIENTRECT, 1653 HWNDLOCK_ROUTINE_UPDATEWINDOW, 1654 TWOPARAM_ROUTINE_IMESHOWSTATUSCHANGE, 1655 TWOPARAM_ROUTINE_ENABLEWINDOW, 1656 TWOPARAM_ROUTINE_REDRAWTITLE, 1657 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS, 1658 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW, 1659 TWOPARAM_ROUTINE_UPDATEWINDOWS, 1660 TWOPARAM_ROUTINE_VALIDATERGN, 1661#if (WIN32K_VERSION >= NTDDI_VISTA) 1662 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER, 1663 TWOPARAM_ROUTINE_GETCURSORPOS, 1664#endif 1665 TWOPARAM_ROUTINE_GETHDEVNAME, 1666 TWOPARAM_ROUTINE_INITANSIOEM, 1667 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY, 1668#if (WIN32K_VERSION >= NTDDI_VISTA) 1669 TWOPARAM_ROUTINE_REGISTERGHSTWND, 1670#endif 1671 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS, 1672#if (WIN32K_VERSION >= NTDDI_VISTA) 1673 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND, 1674#else 1675 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD, 1676#endif 1677 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS, 1678 TWOPARAM_ROUTINE_SHADOWCLEANUP, 1679 TWOPARAM_ROUTINE_REMOTESHADOWSTART, 1680 TWOPARAM_ROUTINE_SETCARETPOS, 1681 TWOPARAM_ROUTINE_SETCURSORPOS, 1682#if (WIN32K_VERSION >= NTDDI_VISTA) 1683 TWOPARAM_ROUTINE_SETPHYSCURSORPOS, 1684#endif 1685 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK, 1686 TWOPARAM_ROUTINE_WOWCLEANUP 1687}; 1688 1689DWORD_PTR 1690NTAPI 1691NtUserCallHwnd( 1692 HWND hWnd, 1693 DWORD Routine); 1694 1695BOOL 1696NTAPI 1697NtUserCallHwndLock( 1698 HWND hWnd, 1699 DWORD Routine); 1700 1701HWND 1702NTAPI 1703NtUserCallHwndOpt( 1704 HWND hWnd, 1705 DWORD Routine); 1706 1707DWORD 1708NTAPI 1709NtUserCallHwndParam( 1710 HWND hWnd, 1711 DWORD_PTR Param, 1712 DWORD Routine); 1713 1714DWORD 1715NTAPI 1716NtUserCallHwndParamLock( 1717 HWND hWnd, 1718 DWORD_PTR Param, 1719 DWORD Routine); 1720 1721BOOL 1722NTAPI 1723NtUserCallMsgFilter( 1724 LPMSG msg, 1725 INT code); 1726 1727LRESULT 1728NTAPI 1729NtUserCallNextHookEx( 1730 int Code, 1731 WPARAM wParam, 1732 LPARAM lParam, 1733 BOOL Ansi); 1734 1735DWORD_PTR 1736NTAPI 1737NtUserCallNoParam( 1738 DWORD Routine); 1739 1740DWORD_PTR 1741NTAPI 1742NtUserCallOneParam( 1743 DWORD_PTR Param, 1744 DWORD Routine); 1745 1746DWORD_PTR 1747NTAPI 1748NtUserCallTwoParam( 1749 DWORD_PTR Param1, 1750 DWORD_PTR Param2, 1751 DWORD Routine); 1752 1753BOOL 1754NTAPI 1755NtUserChangeClipboardChain( 1756 HWND hWndRemove, 1757 HWND hWndNewNext); 1758 1759LONG 1760NTAPI 1761NtUserChangeDisplaySettings( 1762 PUNICODE_STRING lpszDeviceName, 1763 LPDEVMODEW lpDevMode, 1764 DWORD dwflags, 1765 LPVOID lParam); 1766 1767BOOL 1768NTAPI 1769NtUserCheckDesktopByThreadId( 1770 DWORD dwThreadId); 1771 1772BOOL 1773NTAPI 1774NtUserCheckWindowThreadDesktop( 1775 HWND hwnd, 1776 DWORD dwThreadId, 1777 ULONG ReturnValue); 1778 1779DWORD 1780NTAPI 1781NtUserCheckImeHotKey( 1782 _In_ UINT uVirtualKey, 1783 _In_ LPARAM lParam); 1784 1785HWND NTAPI 1786NtUserChildWindowFromPointEx( 1787 HWND Parent, 1788 LONG x, 1789 LONG y, 1790 UINT Flags); 1791 1792BOOL 1793NTAPI 1794NtUserClipCursor( 1795 RECT *lpRect); 1796 1797BOOL 1798NTAPI 1799NtUserCloseClipboard(VOID); 1800 1801BOOL 1802NTAPI 1803NtUserCloseDesktop( 1804 HDESK hDesktop); 1805 1806BOOL 1807NTAPI 1808NtUserCloseWindowStation( 1809 HWINSTA hWinSta); 1810 1811/* Console commands for NtUserConsoleControl */ 1812typedef enum _CONSOLECONTROL 1813{ 1814 ConsoleCtrlDesktopConsoleThread = 0, 1815 GuiConsoleWndClassAtom = 1, 1816 ConsoleMakePalettePublic = 5, 1817 ConsoleAcquireDisplayOwnership, 1818} CONSOLECONTROL, *PCONSOLECONTROL; 1819 1820typedef struct _DESKTOP_CONSOLE_THREAD 1821{ 1822 HDESK DesktopHandle; 1823 ULONG_PTR ThreadId; 1824} DESKTOP_CONSOLE_THREAD, *PDESKTOP_CONSOLE_THREAD; 1825 1826NTSTATUS 1827APIENTRY 1828NtUserConsoleControl( 1829 IN CONSOLECONTROL ConsoleCtrl, 1830 IN PVOID ConsoleCtrlInfo, 1831 IN ULONG ConsoleCtrlInfoLength); 1832 1833HANDLE 1834NTAPI 1835NtUserConvertMemHandle( 1836 PVOID pData, 1837 DWORD cbData); 1838 1839ULONG 1840NTAPI 1841NtUserCopyAcceleratorTable( 1842 HACCEL Table, 1843 LPACCEL Entries, 1844 ULONG EntriesCount); 1845 1846DWORD 1847NTAPI 1848NtUserCountClipboardFormats(VOID); 1849 1850HACCEL 1851NTAPI 1852NtUserCreateAcceleratorTable( 1853 LPACCEL Entries, 1854 ULONG EntriesCount); 1855 1856BOOL 1857NTAPI 1858NtUserCreateCaret( 1859 HWND hWnd, 1860 HBITMAP hBitmap, 1861 int nWidth, 1862 int nHeight); 1863 1864HDESK 1865NTAPI 1866NtUserCreateDesktop( 1867 POBJECT_ATTRIBUTES poa, 1868 PUNICODE_STRING lpszDesktopDevice, 1869 LPDEVMODEW lpdmw, 1870 DWORD dwFlags, 1871 ACCESS_MASK dwDesiredAccess); 1872 1873HIMC 1874NTAPI 1875NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData); 1876 1877NTSTATUS 1878NTAPI 1879NtUserCreateLocalMemHandle( 1880 HANDLE hMem, 1881 PVOID pData, 1882 DWORD cbData, 1883 DWORD *pcbData); 1884 1885HWND 1886NTAPI 1887NtUserCreateWindowEx( 1888 DWORD dwExStyle, 1889 PLARGE_STRING plstrClassName, 1890 PLARGE_STRING plstrClsVersion, 1891 PLARGE_STRING plstrWindowName, 1892 DWORD dwStyle, 1893 int x, 1894 int y, 1895 int nWidth, 1896 int nHeight, 1897 HWND hWndParent, 1898 HMENU hMenu, 1899 HINSTANCE hInstance, 1900 LPVOID lpParam, 1901 DWORD dwFlags, 1902 PVOID acbiBuffer); 1903 1904HWINSTA 1905NTAPI 1906NtUserCreateWindowStation( 1907 POBJECT_ATTRIBUTES ObjectAttributes, 1908 ACCESS_MASK dwDesiredAccess, 1909 DWORD Unknown2, 1910 DWORD Unknown3, 1911 DWORD Unknown4, 1912 DWORD Unknown5, 1913 DWORD Unknown6); 1914 1915BOOL 1916NTAPI 1917NtUserDdeGetQualityOfService( 1918 IN HWND hwndClient, 1919 IN HWND hWndServer, 1920 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev); 1921 1922DWORD 1923NTAPI 1924NtUserDdeInitialize( 1925 DWORD Unknown0, 1926 DWORD Unknown1, 1927 DWORD Unknown2, 1928 DWORD Unknown3, 1929 DWORD Unknown4); 1930 1931BOOL 1932NTAPI 1933NtUserDdeSetQualityOfService( 1934 IN HWND hwndClient, 1935 IN PSECURITY_QUALITY_OF_SERVICE pqosNew, 1936 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev); 1937 1938HDWP 1939NTAPI 1940NtUserDeferWindowPos( 1941 HDWP WinPosInfo, 1942 HWND Wnd, 1943 HWND WndInsertAfter, 1944 int x, 1945 int y, 1946 int cx, 1947 int cy, 1948 UINT Flags); 1949 1950BOOL 1951NTAPI 1952NtUserDefSetText( 1953 HWND WindowHandle, 1954 PLARGE_STRING WindowText); 1955 1956BOOLEAN 1957NTAPI 1958NtUserDestroyAcceleratorTable( 1959 HACCEL Table); 1960 1961BOOL 1962NTAPI 1963NtUserDestroyCursor( 1964 _In_ HANDLE Handle, 1965 _In_ BOOL bForce); 1966 1967BOOL 1968NTAPI 1969NtUserDestroyInputContext(_In_ HIMC hIMC); 1970 1971BOOLEAN 1972NTAPI 1973NtUserDestroyWindow( 1974 HWND Wnd); 1975 1976BOOL 1977NTAPI 1978NtUserDisableThreadIme( 1979 _In_ DWORD dwThreadID); 1980 1981LRESULT 1982NTAPI 1983NtUserDispatchMessage( 1984 PMSG pMsg); 1985 1986BOOL 1987NTAPI 1988NtUserDragDetect( 1989 HWND hWnd, 1990 POINT pt); 1991 1992DWORD 1993NTAPI 1994NtUserDragObject( 1995 HWND hwnd1, 1996 HWND hwnd2, 1997 UINT u1, 1998 DWORD dw1, 1999 HCURSOR hc1); 2000 2001BOOL 2002NTAPI 2003NtUserDrawAnimatedRects( 2004 HWND hwnd, 2005 INT idAni, 2006 RECT *lprcFrom, 2007 RECT *lprcTo); 2008 2009BOOL 2010NTAPI 2011NtUserDrawCaption( 2012 HWND hWnd, 2013 HDC hDc, 2014 LPCRECT lpRc, 2015 UINT uFlags); 2016 2017BOOL 2018NTAPI 2019NtUserDrawCaptionTemp( 2020 HWND hWnd, 2021 HDC hDC, 2022 LPCRECT lpRc, 2023 HFONT hFont, 2024 HICON hIcon, 2025 const PUNICODE_STRING str, 2026 UINT uFlags); 2027 2028/* Used with NtUserDrawIconEx, last parameter. */ 2029typedef struct _DRAWICONEXDATA 2030{ 2031 HBITMAP hbmMask; 2032 HBITMAP hbmColor; 2033 int cx; 2034 int cy; 2035} DRAWICONEXDATA, *PDRAWICONEXDATA; 2036 2037BOOL 2038NTAPI 2039NtUserDrawIconEx( 2040 HDC hdc, 2041 int xLeft, 2042 int yTop, 2043 HICON hIcon, 2044 int cxWidth, 2045 int cyWidth, 2046 UINT istepIfAniCur, 2047 HBRUSH hbrFlickerFreeDraw, 2048 UINT diFlags, 2049 BOOL bMetaHDC, 2050 PVOID pDIXData); 2051 2052BOOL 2053NTAPI 2054NtUserEmptyClipboard(VOID); 2055 2056BOOL 2057NTAPI 2058NtUserEnableScrollBar( 2059 HWND hWnd, 2060 UINT wSBflags, 2061 UINT wArrows); 2062 2063BOOL 2064NTAPI 2065NtUserEndDeferWindowPosEx( 2066 HDWP WinPosInfo, 2067 BOOL bAsync); 2068 2069BOOL 2070NTAPI 2071NtUserEndPaint( 2072 HWND hWnd, 2073 CONST PAINTSTRUCT *lPs); 2074 2075BOOL 2076NTAPI 2077NtUserEnumDisplayDevices( 2078 PUNICODE_STRING lpDevice, /* device name */ 2079 DWORD iDevNum, /* display device */ 2080 PDISPLAY_DEVICEW lpDisplayDevice, /* device information */ 2081 DWORD dwFlags); /* reserved */ 2082 2083/* 2084BOOL 2085NTAPI 2086NtUserEnumDisplayMonitors( 2087 HDC hdc, 2088 LPCRECT lprcClip, 2089 MONITORENUMPROC lpfnEnum, 2090 LPARAM dwData); 2091*/ 2092/* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */ 2093INT 2094NTAPI 2095NtUserEnumDisplayMonitors( 2096 OPTIONAL IN HDC hDC, 2097 OPTIONAL IN LPCRECT pRect, 2098 OPTIONAL OUT HMONITOR *hMonitorList, 2099 OPTIONAL OUT LPRECT monitorRectList, 2100 OPTIONAL IN DWORD listSize); 2101 2102 2103NTSTATUS 2104NTAPI 2105NtUserEnumDisplaySettings( 2106 PUNICODE_STRING lpszDeviceName, 2107 DWORD iModeNum, 2108 LPDEVMODEW lpDevMode, /* FIXME is this correct? */ 2109 DWORD dwFlags); 2110 2111DWORD 2112NTAPI 2113NtUserEvent( 2114 DWORD Unknown0); 2115 2116INT 2117NTAPI 2118NtUserExcludeUpdateRgn( 2119 HDC hDC, 2120 HWND hWnd); 2121 2122BOOL 2123NTAPI 2124NtUserFillWindow( 2125 HWND hWndPaint, 2126 HWND hWndPaint1, 2127 HDC hDC, 2128 HBRUSH hBrush); 2129 2130HWND 2131NTAPI 2132NtUserFindWindowEx( 2133 HWND hwndParent, 2134 HWND hwndChildAfter, 2135 PUNICODE_STRING ucClassName, 2136 PUNICODE_STRING ucWindowName, 2137 DWORD dwUnknown); 2138 2139BOOL 2140NTAPI 2141NtUserFlashWindowEx( 2142 IN PFLASHWINFO pfwi); 2143 2144BOOL 2145NTAPI 2146NtUserGetAltTabInfo( 2147 HWND hwnd, 2148 INT iItem, 2149 PALTTABINFO pati, 2150 LPWSTR pszItemText, 2151 UINT cchItemText, 2152 BOOL Ansi); 2153 2154HWND 2155NTAPI 2156NtUserGetAncestor( 2157 _In_ HWND hWnd, 2158 _In_ UINT uType); 2159 2160DWORD 2161NTAPI 2162NtUserGetAppImeLevel(_In_ HWND hWnd); 2163 2164SHORT 2165NTAPI 2166NtUserGetAsyncKeyState( 2167 INT Key); 2168 2169_Success_(return != 0) 2170_At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return * 2 + 2)) 2171ULONG 2172APIENTRY 2173NtUserGetAtomName( 2174 _In_ ATOM atom, 2175 _Inout_ PUNICODE_STRING pustrName); 2176 2177UINT 2178NTAPI 2179NtUserGetCaretBlinkTime(VOID); 2180 2181BOOL 2182NTAPI 2183NtUserGetCaretPos( 2184 LPPOINT lpPoint); 2185 2186BOOL 2187NTAPI 2188NtUserGetClassInfo( 2189 HINSTANCE hInstance, 2190 PUNICODE_STRING ClassName, 2191 LPWNDCLASSEXW wcex, 2192 LPWSTR *ppszMenuName, 2193 BOOL Ansi); 2194 2195INT 2196NTAPI 2197NtUserGetClassName( 2198 HWND hWnd, 2199 BOOL Real, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */ 2200 PUNICODE_STRING ClassName); 2201 2202HANDLE 2203NTAPI 2204NtUserGetClipboardData( 2205 UINT fmt, 2206 PGETCLIPBDATA pgcd); 2207 2208INT 2209NTAPI 2210NtUserGetClipboardFormatName( 2211 UINT uFormat, 2212 LPWSTR lpszFormatName, 2213 INT cchMaxCount); 2214 2215HWND 2216NTAPI 2217NtUserGetClipboardOwner(VOID); 2218 2219DWORD 2220NTAPI 2221NtUserGetClipboardSequenceNumber(VOID); 2222 2223HWND 2224NTAPI 2225NtUserGetClipboardViewer(VOID); 2226 2227BOOL 2228NTAPI 2229NtUserGetClipCursor( 2230 RECT *lpRect); 2231 2232BOOL 2233NTAPI 2234NtUserGetComboBoxInfo( 2235 HWND hWnd, 2236 PCOMBOBOXINFO pcbi); 2237 2238HBRUSH 2239NTAPI 2240NtUserGetControlBrush( 2241 HWND hwnd, 2242 HDC hdc, 2243 UINT ctlType); 2244 2245HBRUSH 2246NTAPI 2247NtUserGetControlColor( 2248 HWND hwndParent, 2249 HWND hwnd, 2250 HDC hdc, 2251 UINT CtlMsg); 2252 2253ULONG_PTR 2254NTAPI 2255NtUserGetCPD( 2256 HWND hWnd, 2257 GETCPD Flags, 2258 ULONG_PTR Proc); 2259 2260HCURSOR 2261NTAPI 2262NtUserGetCursorFrameInfo( 2263 HCURSOR hCursor, 2264 DWORD istep, 2265 INT *rate_jiffies, 2266 DWORD *num_steps); 2267 2268BOOL 2269NTAPI 2270NtUserGetCursorInfo( 2271 PCURSORINFO pci); 2272 2273HDC 2274NTAPI 2275NtUserGetDC( 2276 HWND hWnd); 2277 2278HDC 2279NTAPI 2280NtUserGetDCEx( 2281 HWND hWnd, 2282 HANDLE hRegion, 2283 ULONG Flags); 2284 2285UINT 2286NTAPI 2287NtUserGetDoubleClickTime(VOID); 2288 2289HWND 2290NTAPI 2291NtUserGetForegroundWindow(VOID); 2292 2293DWORD 2294NTAPI 2295NtUserGetGuiResources( 2296 HANDLE hProcess, 2297 DWORD uiFlags); 2298 2299BOOL 2300NTAPI 2301NtUserGetGUIThreadInfo( 2302 DWORD idThread, 2303 LPGUITHREADINFO lpgui); 2304 2305_Success_(return != FALSE) 2306BOOL 2307NTAPI 2308NtUserGetIconInfo( 2309 _In_ HANDLE hCurIcon, 2310 _Out_opt_ PICONINFO IconInfo, 2311 _Inout_opt_ PUNICODE_STRING lpInstName, 2312 _Inout_opt_ PUNICODE_STRING lpResName, 2313 _Out_opt_ LPDWORD pbpp, 2314 _In_ BOOL bInternal); 2315 2316BOOL 2317NTAPI 2318NtUserGetIconSize( 2319 HANDLE Handle, 2320 UINT istepIfAniCur, 2321 LONG *plcx, 2322 LONG *plcy); 2323 2324BOOL 2325NTAPI 2326NtUserGetImeHotKey( 2327 _In_ DWORD dwHotKeyId, 2328 _Out_ PUINT lpuModifiers, 2329 _Out_ PUINT lpuVirtualKey, 2330 _Out_opt_ LPHKL lphKL); 2331 2332BOOL 2333NTAPI 2334NtUserGetImeInfoEx( 2335 _Inout_ PIMEINFOEX pImeInfoEx, 2336 _In_ IMEINFOEXCLASS SearchType); 2337 2338DWORD 2339NTAPI 2340NtUserGetInternalWindowPos( 2341 HWND hwnd, 2342 LPRECT rectWnd, 2343 LPPOINT ptIcon); 2344 2345HKL 2346NTAPI 2347NtUserGetKeyboardLayout( 2348 DWORD dwThreadid); 2349 2350UINT 2351NTAPI 2352NtUserGetKeyboardLayoutList( 2353 ULONG nItems, 2354 HKL *pHklBuff); 2355 2356BOOL 2357NTAPI 2358NtUserGetKeyboardLayoutName( 2359 _Inout_ PUNICODE_STRING pustrName); 2360 2361DWORD 2362NTAPI 2363NtUserGetKeyboardState( 2364 LPBYTE Unknown0); 2365 2366DWORD 2367NTAPI 2368NtUserGetKeyboardType( 2369 DWORD TypeFlag); 2370 2371DWORD 2372NTAPI 2373NtUserGetKeyNameText( 2374 LONG lParam, 2375 LPWSTR lpString, 2376 int nSize); 2377 2378SHORT 2379NTAPI 2380NtUserGetKeyState( 2381 INT VirtKey); 2382 2383BOOL 2384NTAPI 2385NtUserGetLayeredWindowAttributes( 2386 HWND hwnd, 2387 COLORREF *pcrKey, 2388 BYTE *pbAlpha, 2389 DWORD *pdwFlags); 2390 2391DWORD 2392NTAPI 2393NtUserGetListBoxInfo( 2394 HWND hWnd); 2395 2396BOOL 2397APIENTRY 2398NtUserGetMessage( 2399 PMSG pMsg, 2400 HWND hWnd, 2401 UINT MsgFilterMin, 2402 UINT MsgFilterMax); 2403 2404DWORD 2405NTAPI 2406NtUserGetMouseMovePointsEx( 2407 UINT cbSize, 2408 LPMOUSEMOVEPOINT lppt, 2409 LPMOUSEMOVEPOINT lpptBuf, 2410 int nBufPoints, 2411 DWORD resolution); 2412 2413BOOL 2414NTAPI 2415NtUserGetObjectInformation( 2416 HANDLE hObject, 2417 DWORD nIndex, 2418 PVOID pvInformation, 2419 DWORD nLength, 2420 PDWORD nLengthNeeded); 2421 2422HWND 2423NTAPI 2424NtUserGetOpenClipboardWindow(VOID); 2425 2426INT 2427NTAPI 2428NtUserGetPriorityClipboardFormat( 2429 UINT *paFormatPriorityList, 2430 INT cFormats); 2431 2432HWINSTA 2433NTAPI 2434NtUserGetProcessWindowStation(VOID); 2435 2436DWORD 2437NTAPI 2438NtUserGetRawInputBuffer( 2439 PRAWINPUT pData, 2440 PUINT pcbSize, 2441 UINT cbSizeHeader); 2442 2443DWORD 2444NTAPI 2445NtUserGetRawInputData( 2446 HRAWINPUT hRawInput, 2447 UINT uiCommand, 2448 LPVOID pData, 2449 PUINT pcbSize, 2450 UINT cbSizeHeader); 2451 2452DWORD 2453NTAPI 2454NtUserGetRawInputDeviceInfo( 2455 HANDLE hDevice, 2456 UINT uiCommand, 2457 LPVOID pData, 2458 PUINT pcbSize); 2459 2460DWORD 2461NTAPI 2462NtUserGetRawInputDeviceList( 2463 PRAWINPUTDEVICELIST pRawInputDeviceList, 2464 PUINT puiNumDevices, 2465 UINT cbSize); 2466 2467DWORD 2468NTAPI 2469NtUserGetRegisteredRawInputDevices( 2470 PRAWINPUTDEVICE pRawInputDevices, 2471 PUINT puiNumDevices, 2472 UINT cbSize); 2473 2474BOOL 2475NTAPI 2476NtUserGetScrollBarInfo( 2477 HWND hWnd, 2478 LONG idObject, 2479 PSCROLLBARINFO psbi); 2480 2481HDESK 2482NTAPI 2483NtUserGetThreadDesktop( 2484 DWORD dwThreadId, 2485 HDESK hConsoleDesktop); 2486 2487enum ThreadStateRoutines 2488{ 2489 THREADSTATE_FOCUSWINDOW = 0, 2490 THREADSTATE_ACTIVEWINDOW, 2491 THREADSTATE_CAPTUREWINDOW, 2492 THREADSTATE_DEFAULTIMEWINDOW, 2493 THREADSTATE_DEFAULTINPUTCONTEXT, 2494 THREADSTATE_GETINPUTSTATE, 2495 THREADSTATE_GETCURSOR, 2496 THREADSTATE_CHANGEBITS, 2497 THREADSTATE_UPTIMELASTREAD, 2498 THREADSTATE_GETMESSAGEEXTRAINFO, 2499 THREADSTATE_INSENDMESSAGE, 2500 THREADSTATE_GETMESSAGETIME, 2501 THREADSTATE_FOREGROUNDTHREAD, 2502 THREADSTATE_IMECOMPATFLAGS, 2503 THREADSTATE_OLDKEYBOARDLAYOUT, 2504 THREADSTATE_ISWINLOGON, 2505 THREADSTATE_UNKNOWN_0x10, 2506 THREADSTATE_CHECKCONIME, 2507 THREADSTATE_GETTHREADINFO, 2508 THREADSTATE_PROGMANWINDOW, /* FIXME: Delete this HACK */ 2509 THREADSTATE_TASKMANWINDOW, /* FIXME: Delete this HACK */ 2510}; 2511 2512DWORD_PTR 2513NTAPI 2514NtUserGetThreadState( 2515 DWORD Routine); 2516 2517BOOLEAN 2518NTAPI 2519NtUserGetTitleBarInfo( 2520 HWND hwnd, 2521 PTITLEBARINFO pti); 2522 2523BOOL 2524NTAPI 2525NtUserGetUpdateRect( 2526 HWND hWnd, 2527 LPRECT lpRect, 2528 BOOL fErase); 2529 2530INT 2531NTAPI 2532NtUserGetUpdateRgn( 2533 HWND hWnd, 2534 HRGN hRgn, 2535 BOOL bErase); 2536 2537HDC 2538NTAPI 2539NtUserGetWindowDC( 2540 HWND hWnd); 2541 2542BOOL 2543NTAPI 2544NtUserGetWindowPlacement( 2545 HWND hWnd, 2546 WINDOWPLACEMENT *lpwndpl); 2547 2548PCLS 2549NTAPI 2550NtUserGetWOWClass( 2551 HINSTANCE hInstance, 2552 PUNICODE_STRING ClassName); 2553 2554DWORD 2555NTAPI 2556NtUserHardErrorControl( 2557 DWORD dwUnknown1, 2558 DWORD dwUnknown2, 2559 DWORD dwUnknown3); 2560 2561BOOL 2562NTAPI 2563NtUserImpersonateDdeClientWindow( 2564 HWND hWndClient, 2565 HWND hWndServer); 2566 2567NTSTATUS 2568NTAPI 2569NtUserInitialize( 2570 DWORD dwWinVersion, 2571 HANDLE hPowerRequestEvent, 2572 HANDLE hMediaRequestEvent); 2573 2574NTSTATUS 2575NTAPI 2576NtUserInitializeClientPfnArrays( 2577 PPFNCLIENT pfnClientA, 2578 PPFNCLIENT pfnClientW, 2579 PPFNCLIENTWORKER pfnClientWorker, 2580 HINSTANCE hmodUser); 2581 2582DWORD 2583NTAPI 2584NtUserInitTask( 2585 DWORD Unknown0, 2586 DWORD Unknown1, 2587 DWORD Unknown2, 2588 DWORD Unknown3, 2589 DWORD Unknown4, 2590 DWORD Unknown5, 2591 DWORD Unknown6, 2592 DWORD Unknown7, 2593 DWORD Unknown8, 2594 DWORD Unknown9, 2595 DWORD Unknown10, 2596 DWORD Unknown11); 2597 2598INT 2599NTAPI 2600NtUserInternalGetWindowText( 2601 HWND hWnd, 2602 LPWSTR lpString, 2603 INT nMaxCount); 2604 2605BOOL 2606NTAPI 2607NtUserInvalidateRect( 2608 HWND hWnd, 2609 CONST RECT *lpRect, 2610 BOOL bErase); 2611 2612BOOL 2613NTAPI 2614NtUserInvalidateRgn( 2615 HWND hWnd, 2616 HRGN hRgn, 2617 BOOL bErase); 2618 2619BOOL 2620NTAPI 2621NtUserIsClipboardFormatAvailable( 2622 UINT format); 2623 2624BOOL 2625NTAPI 2626NtUserKillTimer( 2627 HWND hWnd, 2628 UINT_PTR uIDEvent); 2629 2630HKL 2631NTAPI 2632NtUserLoadKeyboardLayoutEx( 2633 IN HANDLE hFile, 2634 IN DWORD offTable, 2635 IN PVOID pTables, 2636 IN HKL hOldKL, 2637 IN PUNICODE_STRING puszKLID, 2638 IN DWORD dwNewKL, 2639 IN UINT Flags); 2640 2641BOOL 2642NTAPI 2643NtUserLockWindowStation( 2644 HWINSTA hWindowStation); 2645 2646BOOL 2647NTAPI 2648NtUserLockWindowUpdate( 2649 HWND hWnd); 2650 2651BOOL 2652NTAPI 2653NtUserLockWorkStation(VOID); 2654 2655UINT 2656NTAPI 2657NtUserMapVirtualKeyEx( 2658 UINT keyCode, 2659 UINT transType, 2660 DWORD keyboardId, 2661 HKL dwhkl); 2662 2663typedef struct tagDOSENDMESSAGE 2664{ 2665 UINT uFlags; 2666 UINT uTimeout; 2667 ULONG_PTR Result; 2668} 2669DOSENDMESSAGE, *PDOSENDMESSAGE; 2670 2671BOOL 2672NTAPI 2673NtUserMessageCall( 2674 HWND hWnd, 2675 UINT Msg, 2676 WPARAM wParam, 2677 LPARAM lParam, 2678 ULONG_PTR ResultInfo, 2679 DWORD dwType, /* FNID_XX types */ 2680 BOOL Ansi); 2681 2682DWORD 2683NTAPI 2684NtUserMinMaximize( 2685 HWND hWnd, 2686 UINT cmd, /* Wine SW_ commands */ 2687 BOOL Hide); 2688 2689DWORD 2690NTAPI 2691NtUserMNDragLeave(VOID); 2692 2693DWORD 2694NTAPI 2695NtUserMNDragOver( 2696 DWORD Unknown0, 2697 DWORD Unknown1); 2698 2699DWORD 2700NTAPI 2701NtUserModifyUserStartupInfoFlags( 2702 DWORD Unknown0, 2703 DWORD Unknown1); 2704 2705BOOL 2706NTAPI 2707NtUserMoveWindow( 2708 HWND hWnd, 2709 int X, 2710 int Y, 2711 int nWidth, 2712 int nHeight, 2713 BOOL bRepaint 2714); 2715 2716DWORD 2717NTAPI 2718NtUserNotifyIMEStatus( 2719 _In_ HWND hwnd, 2720 _In_ BOOL fOpen, 2721 _In_ DWORD dwConversion); 2722 2723BOOL 2724NTAPI 2725NtUserNotifyProcessCreate( 2726 HANDLE NewProcessId, 2727 HANDLE ParentThreadId, 2728 ULONG dwUnknown, 2729 ULONG CreateFlags); 2730 2731VOID 2732NTAPI 2733NtUserNotifyWinEvent( 2734 DWORD Event, 2735 HWND hWnd, 2736 LONG idObject, 2737 LONG idChild); 2738 2739BOOL 2740NTAPI 2741NtUserOpenClipboard( 2742 HWND hWnd, 2743 DWORD Unknown1); 2744 2745HDESK 2746NTAPI 2747NtUserOpenDesktop( 2748 POBJECT_ATTRIBUTES ObjectAttributes, 2749 DWORD dwFlags, 2750 ACCESS_MASK dwDesiredAccess); 2751 2752HDESK 2753NTAPI 2754NtUserOpenInputDesktop( 2755 DWORD dwFlags, 2756 BOOL fInherit, 2757 ACCESS_MASK dwDesiredAccess); 2758 2759HWINSTA 2760NTAPI 2761NtUserOpenWindowStation( 2762 POBJECT_ATTRIBUTES ObjectAttributes, 2763 ACCESS_MASK dwDesiredAccess); 2764 2765BOOL 2766NTAPI 2767NtUserPaintDesktop( 2768 HDC hDC); 2769 2770DWORD 2771NTAPI 2772NtUserPaintMenuBar( 2773 HWND hWnd, 2774 HDC hDC, 2775 ULONG left, // x, 2776 ULONG right, // width, // Scale the edge thickness, offset? 2777 ULONG top, // y, 2778 BOOL bActive); // DWORD Flags); DC_ACTIVE or WS_ACTIVECAPTION, by checking WNDS_ACTIVEFRAME and foreground. 2779 2780BOOL 2781APIENTRY 2782NtUserPeekMessage( 2783 PMSG pMsg, 2784 HWND hWnd, 2785 UINT MsgFilterMin, 2786 UINT MsgFilterMax, 2787 UINT RemoveMsg); 2788 2789BOOL 2790NTAPI 2791NtUserPostMessage( 2792 HWND hWnd, 2793 UINT Msg, 2794 WPARAM wParam, 2795 LPARAM lParam); 2796 2797BOOL 2798NTAPI 2799NtUserPostThreadMessage( 2800 DWORD idThread, 2801 UINT Msg, 2802 WPARAM wParam, 2803 LPARAM lParam); 2804 2805BOOL 2806NTAPI 2807NtUserPrintWindow( 2808 HWND hwnd, 2809 HDC hdcBlt, 2810 UINT nFlags); 2811 2812NTSTATUS 2813NTAPI 2814NtUserProcessConnect( 2815 IN HANDLE ProcessHandle, 2816 OUT PUSERCONNECT pUserConnect, 2817 IN ULONG Size); /* sizeof(USERCONNECT) */ 2818 2819NTSTATUS 2820NTAPI 2821NtUserQueryInformationThread( 2822 IN HANDLE ThreadHandle, 2823 IN USERTHREADINFOCLASS ThreadInformationClass, 2824 OUT PVOID ThreadInformation, 2825 IN ULONG ThreadInformationLength); 2826 2827DWORD_PTR 2828NTAPI 2829NtUserQueryInputContext( 2830 HIMC hIMC, 2831 DWORD dwType); 2832 2833DWORD 2834NTAPI 2835NtUserQuerySendMessage( 2836 DWORD Unknown0); 2837 2838DWORD 2839NTAPI 2840NtUserQueryUserCounters( 2841 DWORD Unknown0, 2842 DWORD Unknown1, 2843 DWORD Unknown2, 2844 DWORD Unknown3, 2845 DWORD Unknown4); 2846 2847#define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00 2848#define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01 2849#define QUERY_WINDOW_ACTIVE 0x02 2850#define QUERY_WINDOW_FOCUS 0x03 2851#define QUERY_WINDOW_ISHUNG 0x04 2852#define QUERY_WINDOW_REAL_ID 0x05 2853#define QUERY_WINDOW_FOREGROUND 0x06 2854#define QUERY_WINDOW_DEFAULT_IME 0x07 2855#define QUERY_WINDOW_DEFAULT_ICONTEXT 0x08 2856#define QUERY_WINDOW_ACTIVE_IME 0x09 2857 2858DWORD_PTR 2859NTAPI 2860NtUserQueryWindow( 2861 HWND hWnd, 2862 DWORD Index); 2863 2864BOOL 2865NTAPI 2866NtUserRealInternalGetMessage( 2867 LPMSG lpMsg, 2868 HWND hWnd, 2869 UINT wMsgFilterMin, 2870 UINT wMsgFilterMax, 2871 UINT wRemoveMsg, 2872 BOOL bGMSG); 2873 2874HWND 2875NTAPI 2876NtUserRealChildWindowFromPoint( 2877 HWND Parent, 2878 LONG x, 2879 LONG y); 2880 2881BOOL 2882NTAPI 2883NtUserRealWaitMessageEx( 2884 DWORD dwWakeMask, 2885 UINT uTimeout); 2886 2887BOOL 2888NTAPI 2889NtUserRedrawWindow( 2890 HWND hWnd, 2891 CONST RECT *lprcUpdate, 2892 HRGN hrgnUpdate, 2893 UINT flags); 2894 2895RTL_ATOM 2896NTAPI 2897NtUserRegisterClassExWOW( 2898 WNDCLASSEXW* lpwcx, 2899 PUNICODE_STRING pustrClassName, 2900 PUNICODE_STRING pustrCVersion, 2901 PCLSMENUNAME pClassMenuName, 2902 DWORD fnID, 2903 DWORD Flags, 2904 LPDWORD pWow); 2905 2906BOOL 2907NTAPI 2908NtUserRegisterRawInputDevices( 2909 IN PCRAWINPUTDEVICE pRawInputDevices, 2910 IN UINT uiNumDevices, 2911 IN UINT cbSize); 2912 2913BOOL 2914NTAPI 2915NtUserRegisterUserApiHook( 2916 PUNICODE_STRING m_dllname1, 2917 PUNICODE_STRING m_funname1, 2918 DWORD dwUnknown3, 2919 DWORD dwUnknown4); 2920 2921BOOL 2922NTAPI 2923NtUserRegisterHotKey( 2924 HWND hWnd, 2925 int id, 2926 UINT fsModifiers, 2927 UINT vk); 2928 2929DWORD 2930NTAPI 2931NtUserRegisterTasklist( 2932 DWORD Unknown0); 2933 2934UINT 2935NTAPI 2936NtUserRegisterWindowMessage( 2937 PUNICODE_STRING MessageName); 2938 2939DWORD 2940NTAPI 2941NtUserRemoteConnect( 2942 DWORD dwUnknown1, 2943 DWORD dwUnknown2, 2944 DWORD dwUnknown3); 2945 2946DWORD 2947NTAPI 2948NtUserRemoteRedrawRectangle( 2949 DWORD dwUnknown1, 2950 DWORD dwUnknown2, 2951 DWORD dwUnknown3, 2952 DWORD dwUnknown4); 2953 2954DWORD 2955NTAPI 2956NtUserRemoteRedrawScreen(VOID); 2957 2958DWORD 2959NTAPI 2960NtUserRemoteStopScreenUpdates(VOID); 2961 2962HANDLE 2963NTAPI 2964NtUserRemoveProp( 2965 HWND hWnd, 2966 ATOM Atom); 2967 2968HDESK 2969NTAPI 2970NtUserResolveDesktop( 2971 IN HANDLE ProcessHandle, 2972 IN PUNICODE_STRING DesktopPath, 2973 IN BOOL bInherit, 2974 OUT HWINSTA* phWinSta); 2975 2976DWORD 2977NTAPI 2978NtUserResolveDesktopForWOW( 2979 DWORD Unknown0); 2980 2981BOOL 2982NTAPI 2983NtUserSBGetParms( 2984 HWND hwnd, 2985 int fnBar, 2986 PSBDATA pSBData, 2987 LPSCROLLINFO lpsi); 2988 2989BOOL 2990NTAPI 2991NtUserScrollDC( 2992 HDC hDC, 2993 int dx, 2994 int dy, 2995 CONST RECT *lprcScroll, 2996 CONST RECT *lprcClip , 2997 HRGN hrgnUpdate, 2998 LPRECT lprcUpdate); 2999 3000DWORD 3001NTAPI 3002NtUserScrollWindowEx( 3003 HWND hWnd, 3004 INT dx, 3005 INT dy, 3006 const RECT *rect, 3007 const RECT *clipRect, 3008 HRGN hrgnUpdate, 3009 LPRECT rcUpdate, 3010 UINT flags); 3011 3012UINT 3013NTAPI 3014NtUserSendInput( 3015 UINT nInputs, 3016 LPINPUT pInput, 3017 INT cbSize); 3018 3019HWND 3020NTAPI 3021NtUserSetActiveWindow( 3022 HWND Wnd); 3023 3024BOOL 3025NTAPI 3026NtUserSetAppImeLevel( 3027 HWND hWnd, 3028 DWORD dwLevel); 3029 3030HWND 3031NTAPI 3032NtUserSetCapture( 3033 HWND Wnd); 3034 3035ULONG_PTR 3036NTAPI 3037NtUserSetClassLong( 3038 _In_ HWND hWnd, 3039 _In_ INT Offset, 3040 _In_ ULONG dwNewLong, 3041 _In_ BOOL Ansi); 3042 3043#ifdef _WIN64 3044 3045ULONG_PTR 3046APIENTRY 3047NtUserSetClassLongPtr( 3048 _In_ HWND hWnd, 3049 _In_ INT Offset, 3050 _In_ ULONG_PTR dwNewLong, 3051 _In_ BOOL Ansi); 3052 3053#endif // _WIN64 3054WORD 3055NTAPI 3056NtUserSetClassWord( 3057 HWND hWnd, 3058 INT nIndex, 3059 WORD wNewWord); 3060 3061HANDLE 3062NTAPI 3063NtUserSetClipboardData( 3064 UINT fmt, 3065 HANDLE hMem, 3066 PSETCLIPBDATA scd); 3067 3068HWND 3069NTAPI 3070NtUserSetClipboardViewer( 3071 HWND hWndNewViewer); 3072 3073HPALETTE 3074NTAPI 3075NtUserSelectPalette( 3076 HDC hDC, 3077 HPALETTE hpal, 3078 BOOL ForceBackground); 3079 3080DWORD 3081NTAPI 3082NtUserSetConsoleReserveKeys( 3083 DWORD Unknown0, 3084 DWORD Unknown1); 3085 3086HCURSOR 3087NTAPI 3088NtUserSetCursor( 3089 HCURSOR hCursor); 3090 3091BOOL 3092NTAPI 3093NtUserSetCursorContents( 3094 HANDLE Handle, 3095 PICONINFO IconInfo); 3096 3097BOOL 3098NTAPI 3099NtUserSetCursorIconData( 3100 _In_ HCURSOR hCursor, 3101 _In_opt_ PUNICODE_STRING pustrModule, 3102 _In_opt_ PUNICODE_STRING puSrcName, 3103 _In_ const CURSORDATA *pCursorData); 3104 3105typedef struct _tagFINDEXISTINGCURICONPARAM 3106{ 3107 BOOL bIcon; 3108 LONG cx; 3109 LONG cy; 3110} FINDEXISTINGCURICONPARAM; 3111 3112HICON 3113NTAPI 3114NtUserFindExistingCursorIcon( 3115 _In_ PUNICODE_STRING pustrModule, 3116 _In_ PUNICODE_STRING pustrRsrc, 3117 _In_ FINDEXISTINGCURICONPARAM *param); 3118 3119DWORD 3120NTAPI 3121NtUserSetDbgTag( 3122 DWORD Unknown0, 3123 DWORD Unknown1); 3124 3125DWORD 3126APIENTRY 3127NtUserSetDbgTagCount( 3128 DWORD Unknown0); 3129 3130HWND 3131NTAPI 3132NtUserSetFocus( 3133 HWND hWnd); 3134 3135BOOL 3136NTAPI 3137NtUserSetImeHotKey( 3138 _In_ DWORD dwHotKeyId, 3139 _In_ UINT uModifiers, 3140 _In_ UINT uVirtualKey, 3141 _In_opt_ HKL hKL, 3142 _In_ DWORD dwAction); 3143 3144BOOL 3145NTAPI 3146NtUserSetImeInfoEx( 3147 _In_ const IMEINFOEX *pImeInfoEx); 3148 3149BOOL 3150NTAPI 3151NtUserSetImeOwnerWindow(_In_ HWND hImeWnd, _In_opt_ HWND hwndFocus); 3152 3153DWORD 3154NTAPI 3155NtUserSetInformationProcess( 3156 DWORD dwUnknown1, 3157 DWORD dwUnknown2, 3158 DWORD dwUnknown3, 3159 DWORD dwUnknown4); 3160 3161NTSTATUS 3162NTAPI 3163NtUserSetInformationThread( 3164 IN HANDLE ThreadHandle, 3165 IN USERTHREADINFOCLASS ThreadInformationClass, 3166 IN PVOID ThreadInformation, 3167 IN ULONG ThreadInformationLength); 3168 3169DWORD 3170NTAPI 3171NtUserSetInternalWindowPos( 3172 HWND hwnd, 3173 UINT showCmd, 3174 LPRECT rect, 3175 LPPOINT pt); 3176 3177BOOL 3178NTAPI 3179NtUserSetKeyboardState( 3180 LPBYTE lpKeyState); 3181 3182BOOL 3183NTAPI 3184NtUserSetLayeredWindowAttributes( 3185 HWND hwnd, 3186 COLORREF crKey, 3187 BYTE bAlpha, 3188 DWORD dwFlags); 3189 3190BOOL 3191NTAPI 3192NtUserSetLogonNotifyWindow( 3193 HWND hWnd); 3194 3195BOOL 3196NTAPI 3197NtUserSetObjectInformation( 3198 HANDLE hObject, 3199 DWORD nIndex, 3200 PVOID pvInformation, 3201 DWORD nLength); 3202 3203HWND 3204NTAPI 3205NtUserSetParent( 3206 HWND hWndChild, 3207 HWND hWndNewParent); 3208 3209BOOL 3210NTAPI 3211NtUserSetProcessWindowStation( 3212 HWINSTA hWindowStation); 3213 3214BOOL 3215NTAPI 3216NtUserSetProp( 3217 HWND hWnd, 3218 ATOM Atom, 3219 HANDLE Data); 3220 3221DWORD 3222NTAPI 3223NtUserSetRipFlags( 3224 DWORD Unknown0); 3225 3226DWORD 3227NTAPI 3228NtUserSetScrollInfo( 3229 HWND hwnd, 3230 int fnBar, 3231 LPCSCROLLINFO lpsi, 3232 BOOL bRedraw); 3233 3234BOOL 3235NTAPI 3236NtUserSetShellWindowEx( 3237 HWND hwndShell, 3238 HWND hwndShellListView); 3239 3240BOOL 3241NTAPI 3242NtUserSetSysColors( 3243 int cElements, 3244 IN CONST INT *lpaElements, 3245 IN CONST COLORREF *lpaRgbValues, 3246 FLONG Flags); 3247 3248BOOL 3249NTAPI 3250NtUserSetSystemCursor( 3251 HCURSOR hcur, 3252 DWORD id); 3253 3254BOOL 3255NTAPI 3256NtUserSetThreadDesktop( 3257 HDESK hDesktop); 3258 3259DWORD 3260NTAPI 3261NtUserSetThreadState( 3262 DWORD Unknown0, 3263 DWORD Unknown1); 3264 3265UINT_PTR 3266NTAPI 3267NtUserSetSystemTimer( 3268 HWND hWnd, 3269 UINT_PTR nIDEvent, 3270 UINT uElapse, 3271 TIMERPROC lpTimerFunc); 3272 3273DWORD 3274NTAPI 3275NtUserSetThreadLayoutHandles( 3276 _In_ HKL hNewKL, 3277 _In_ HKL hOldKL); 3278 3279UINT_PTR 3280NTAPI 3281NtUserSetTimer( 3282 HWND hWnd, 3283 UINT_PTR nIDEvent, 3284 UINT uElapse, 3285 TIMERPROC lpTimerFunc); 3286 3287BOOL 3288NTAPI 3289NtUserSetWindowFNID( 3290 HWND hWnd, 3291 WORD fnID); 3292 3293LONG 3294NTAPI 3295NtUserSetWindowLong( 3296 HWND hWnd, 3297 DWORD Index, 3298 LONG NewValue, 3299 BOOL Ansi); 3300 3301#ifdef _WIN64 3302LONG_PTR 3303NTAPI 3304NtUserSetWindowLongPtr( 3305 HWND hWnd, 3306 DWORD Index, 3307 LONG_PTR NewValue, 3308 BOOL Ansi); 3309#else 3310#define NtUserSetWindowLongPtr NtUserSetWindowLong 3311#endif // _WIN64 3312 3313BOOL 3314NTAPI 3315NtUserSetWindowPlacement( 3316 HWND hWnd, 3317 WINDOWPLACEMENT *lpwndpl); 3318 3319BOOL 3320NTAPI 3321NtUserSetWindowPos( 3322 HWND hWnd, 3323 HWND hWndInsertAfter, 3324 int X, 3325 int Y, 3326 int cx, 3327 int cy, 3328 UINT uFlags); 3329 3330INT 3331NTAPI 3332NtUserSetWindowRgn( 3333 HWND hWnd, 3334 HRGN hRgn, 3335 BOOL bRedraw); 3336 3337HHOOK 3338NTAPI 3339NtUserSetWindowsHookAW( 3340 int idHook, 3341 HOOKPROC lpfn, 3342 BOOL Ansi); 3343 3344HHOOK 3345NTAPI 3346NtUserSetWindowsHookEx( 3347 HINSTANCE Mod, 3348 PUNICODE_STRING ModuleName, 3349 DWORD ThreadId, 3350 int HookId, 3351 HOOKPROC HookProc, 3352 BOOL Ansi); 3353 3354BOOL 3355NTAPI 3356NtUserSetWindowStationUser( 3357 IN HWINSTA hWindowStation, 3358 IN PLUID pluid, 3359 IN PSID psid OPTIONAL, 3360 IN DWORD size); 3361 3362WORD 3363NTAPI 3364NtUserSetWindowWord( 3365 HWND hWnd, 3366 INT Index, 3367 WORD NewVal); 3368 3369HWINEVENTHOOK 3370NTAPI 3371NtUserSetWinEventHook( 3372 UINT eventMin, 3373 UINT eventMax, 3374 HMODULE hmodWinEventProc, 3375 PUNICODE_STRING puString, 3376 WINEVENTPROC lpfnWinEventProc, 3377 DWORD idProcess, 3378 DWORD idThread, 3379 UINT dwflags); 3380 3381BOOL 3382NTAPI 3383NtUserShowCaret( 3384 HWND hWnd); 3385 3386BOOL 3387NTAPI 3388NtUserHideCaret( 3389 HWND hWnd); 3390 3391DWORD 3392NTAPI 3393NtUserShowScrollBar( 3394 HWND hWnd, 3395 int wBar, 3396 DWORD bShow); 3397 3398BOOL 3399NTAPI 3400NtUserShowWindow( 3401 HWND hWnd, 3402 LONG nCmdShow); 3403 3404BOOL 3405NTAPI 3406NtUserShowWindowAsync( 3407 HWND hWnd, 3408 LONG nCmdShow); 3409 3410BOOL 3411NTAPI 3412NtUserSoundSentry(VOID); 3413 3414BOOL 3415NTAPI 3416NtUserSwitchDesktop( 3417 HDESK hDesktop); 3418 3419BOOL 3420NTAPI 3421NtUserSystemParametersInfo( 3422 UINT uiAction, 3423 UINT uiParam, 3424 PVOID pvParam, 3425 UINT fWinIni); 3426 3427DWORD 3428NTAPI 3429NtUserTestForInteractiveUser( 3430 DWORD dwUnknown1); 3431 3432INT 3433NTAPI 3434NtUserToUnicodeEx( 3435 UINT wVirtKey, 3436 UINT wScanCode, 3437 PBYTE lpKeyState, 3438 LPWSTR pwszBuff, 3439 int cchBuff, 3440 UINT wFlags, 3441 HKL dwhkl); 3442 3443BOOL 3444NTAPI 3445NtUserTrackMouseEvent( 3446 LPTRACKMOUSEEVENT lpEventTrack); 3447 3448int 3449NTAPI 3450NtUserTranslateAccelerator( 3451 HWND Window, 3452 HACCEL Table, 3453 LPMSG Message); 3454 3455BOOL 3456NTAPI 3457NtUserTranslateMessage( 3458 LPMSG lpMsg, 3459 UINT flags ); 3460 3461BOOL 3462NTAPI 3463NtUserUnhookWindowsHookEx( 3464 HHOOK Hook); 3465 3466BOOL 3467NTAPI 3468NtUserUnhookWinEvent( 3469 HWINEVENTHOOK hWinEventHook); 3470 3471BOOL 3472NTAPI 3473NtUserUnloadKeyboardLayout( 3474 HKL hKl); 3475 3476BOOL 3477NTAPI 3478NtUserUnlockWindowStation( 3479 HWINSTA hWindowStation); 3480 3481BOOL 3482NTAPI 3483NtUserUnregisterClass( 3484 PUNICODE_STRING ClassNameOrAtom, 3485 HINSTANCE hInstance, 3486 PCLSMENUNAME pClassMenuName); 3487 3488BOOL 3489NTAPI 3490NtUserUnregisterHotKey( 3491 HWND hWnd, 3492 int id); 3493 3494BOOL 3495NTAPI 3496NtUserUnregisterUserApiHook(VOID); 3497 3498BOOL 3499NTAPI 3500NtUserUpdateInputContext( 3501 HIMC hIMC, 3502 DWORD dwType, 3503 DWORD_PTR dwValue); 3504 3505DWORD 3506NTAPI 3507NtUserUpdateInstance( 3508 DWORD Unknown0, 3509 DWORD Unknown1, 3510 DWORD Unknown2); 3511 3512BOOL 3513NTAPI 3514NtUserUpdateLayeredWindow( 3515 HWND hwnd, 3516 HDC hdcDst, 3517 POINT *pptDst, 3518 SIZE *psize, 3519 HDC hdcSrc, 3520 POINT *pptSrc, 3521 COLORREF crKey, 3522 BLENDFUNCTION *pblend, 3523 DWORD dwFlags, 3524 RECT *prcDirty); 3525 3526BOOL 3527NTAPI 3528NtUserUpdatePerUserSystemParameters( 3529 DWORD dwReserved, 3530 BOOL bEnable); 3531 3532BOOL 3533NTAPI 3534NtUserUserHandleGrantAccess( 3535 IN HANDLE hUserHandle, 3536 IN HANDLE hJob, 3537 IN BOOL bGrant); 3538 3539BOOL 3540NTAPI 3541NtUserValidateHandleSecure( 3542 HANDLE hHdl); 3543 3544BOOL 3545NTAPI 3546NtUserValidateRect( 3547 HWND hWnd, 3548 CONST RECT *lpRect); 3549 3550BOOL 3551APIENTRY 3552NtUserValidateTimerCallback( 3553 LPARAM lParam); 3554 3555DWORD 3556NTAPI 3557NtUserVkKeyScanEx( 3558 WCHAR wChar, 3559 HKL KeyboardLayout, 3560 BOOL bUsehHK); 3561 3562DWORD 3563NTAPI 3564NtUserWaitForInputIdle( 3565 IN HANDLE hProcess, 3566 IN DWORD dwMilliseconds, 3567 IN BOOL bSharedWow); /* Always FALSE */ 3568 3569DWORD 3570NTAPI 3571NtUserWaitForMsgAndEvent( 3572 DWORD Unknown0); 3573 3574BOOL 3575NTAPI 3576NtUserWaitMessage(VOID); 3577 3578DWORD 3579NTAPI 3580NtUserWin32PoolAllocationStats( 3581 DWORD Unknown0, 3582 DWORD Unknown1, 3583 DWORD Unknown2, 3584 DWORD Unknown3, 3585 DWORD Unknown4, 3586 DWORD Unknown5); 3587 3588HWND 3589NTAPI 3590NtUserWindowFromPoint( 3591 LONG X, 3592 LONG Y); 3593 3594DWORD 3595NTAPI 3596NtUserYieldTask(VOID); 3597 3598/* NtUserBad 3599 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist. 3600 */ 3601 3602#define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001 3603#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d 3604#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e 3605#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050 3606#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051 3607#define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052 3608 3609#define MSQ_STATE_CAPTURE 0x1 3610#define MSQ_STATE_ACTIVE 0x2 3611#define MSQ_STATE_FOCUS 0x3 3612#define MSQ_STATE_MENUOWNER 0x4 3613#define MSQ_STATE_MOVESIZE 0x5 3614#define MSQ_STATE_CARET 0x6 3615 3616#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004 3617#define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005 3618 3619BOOL 3620NTAPI 3621NtUserGetMonitorInfo( 3622 IN HMONITOR hMonitor, 3623 OUT LPMONITORINFO pMonitorInfo); 3624 3625/* Should be done in usermode */ 3626 3627HMONITOR 3628NTAPI 3629NtUserMonitorFromPoint( 3630 _In_ POINT point, 3631 _In_ DWORD dwFlags); 3632 3633HMONITOR 3634NTAPI 3635NtUserMonitorFromRect( 3636 _In_ LPCRECT pRect, 3637 _In_ DWORD dwFlags); 3638 3639HMONITOR 3640NTAPI 3641NtUserMonitorFromWindow( 3642 _In_ HWND hWnd, 3643 _In_ DWORD dwFlags); 3644 3645typedef struct _SETSCROLLBARINFO 3646{ 3647 int nTrackPos; 3648 int reserved; 3649 DWORD rgstate[CCHILDREN_SCROLLBAR + 1]; 3650} SETSCROLLBARINFO, *PSETSCROLLBARINFO; 3651 3652BOOL 3653NTAPI 3654NtUserSetScrollBarInfo( 3655 HWND hwnd, 3656 LONG idObject, 3657 SETSCROLLBARINFO *info); 3658 3659ULONG 3660RtlGetExpWinVer(_In_ PVOID BaseAddress); 3661 3662#endif /* __WIN32K_NTUSER_H */ 3663 3664/* EOF */