X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=win32ss%2Finclude%2Fntuser.h;h=b997b21c848d3ead3b44c3e5abfdcce96435a519;hp=28fb20a99d07dd27609a45582a36dbc8e49b8024;hb=HEAD;hpb=122303c4ea9ff70a483355888e43b5976c79cb0e diff --git a/win32ss/include/ntuser.h b/win32ss/include/ntuser.h index 28fb20a99d0..6c5691bbe8d 100644 --- a/win32ss/include/ntuser.h +++ b/win32ss/include/ntuser.h @@ -1,37 +1,39 @@ #ifndef __WIN32K_NTUSER_H #define __WIN32K_NTUSER_H -typedef struct _PROCESSINFO *PPROCESSINFO; -typedef struct _THREADINFO *PTHREADINFO; +struct _PROCESSINFO; +struct _THREADINFO; struct _DESKTOP; struct _WND; +struct tagPOPUPMENU; -#define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */ -#define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */ +#define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */ +#define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */ -#define HANDLEENTRY_INDESTROY 1 +#define HANDLEENTRY_DESTROY 1 +#define HANDLEENTRY_INDESTROY 2 typedef struct _USER_HANDLE_ENTRY { - void *ptr; /* pointer to object */ + void *ptr; /* pointer to object */ union { PVOID pi; - PTHREADINFO pti; // pointer to Win32ThreadInfo - PPROCESSINFO ppi; // pointer to W32ProcessInfo + struct _THREADINFO *pti; /* pointer to Win32ThreadInfo */ + struct _PROCESSINFO *ppi; /* pointer to W32ProcessInfo */ }; - unsigned char type; /* object type (0 if free) */ - unsigned char flags; - unsigned short generation; /* generation counter */ -} USER_HANDLE_ENTRY, * PUSER_HANDLE_ENTRY; + unsigned char type; /* object type (0 if free) */ + unsigned char flags; + unsigned short generation; /* generation counter */ +} USER_HANDLE_ENTRY, *PUSER_HANDLE_ENTRY; typedef struct _USER_HANDLE_TABLE { - PUSER_HANDLE_ENTRY handles; - PUSER_HANDLE_ENTRY freelist; - int nb_handles; - int allocated_handles; -} USER_HANDLE_TABLE, * PUSER_HANDLE_TABLE; + PUSER_HANDLE_ENTRY handles; + PUSER_HANDLE_ENTRY freelist; + int nb_handles; + int allocated_handles; +} USER_HANDLE_TABLE, *PUSER_HANDLE_TABLE; typedef enum _HANDLE_TYPE { @@ -78,36 +80,56 @@ typedef enum _USERTHREADINFOCLASS typedef struct _LARGE_UNICODE_STRING { - ULONG Length; - ULONG MaximumLength:31; - ULONG bAnsi:1; - PWSTR Buffer; + ULONG Length; + ULONG MaximumLength:31; + ULONG bAnsi:1; + PWSTR Buffer; } LARGE_UNICODE_STRING, *PLARGE_UNICODE_STRING; typedef struct _LARGE_STRING { - ULONG Length; - ULONG MaximumLength:31; - ULONG bAnsi:1; - PVOID Buffer; + ULONG Length; + ULONG MaximumLength:31; + ULONG bAnsi:1; + PVOID Buffer; } LARGE_STRING, *PLARGE_STRING; -// -// Based on ANSI_STRING -// + + +/* Based on ANSI_STRING */ typedef struct _LARGE_ANSI_STRING { - ULONG Length; - ULONG MaximumLength:31; - ULONG bAnsi:1; - PCHAR Buffer; + ULONG Length; + ULONG MaximumLength:31; + ULONG bAnsi:1; + PCHAR Buffer; } LARGE_ANSI_STRING, *PLARGE_ANSI_STRING; -VOID NTAPI RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING,IN PCSZ,IN INT); -VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING,IN PCWSTR,IN INT); -BOOL NTAPI RtlLargeStringToUnicodeString( PUNICODE_STRING, PLARGE_STRING); +VOID +NTAPI +RtlInitLargeAnsiString( + IN OUT PLARGE_ANSI_STRING, + IN PCSZ, + IN INT); + +VOID +NTAPI +RtlInitLargeUnicodeString( + IN OUT PLARGE_UNICODE_STRING, + IN PCWSTR, + IN INT); + +BOOL +NTAPI +RtlLargeStringToUnicodeString( + PUNICODE_STRING, + PLARGE_STRING); -#define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1) +#define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1) +/* + * DESKTOPINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/DESKTOP + */ typedef struct _DESKTOPINFO { PVOID pvDesktopBase; @@ -119,15 +141,17 @@ typedef struct _DESKTOPINFO HWND hTaskManWindow; HWND hProgmanWindow; HWND hShellWindow; + struct _WND *spwndShell; + struct _WND *spwndBkGnd; - PPROCESSINFO ppiShellProcess; + struct _PROCESSINFO *ppiShellProcess; union { UINT Dummy; struct { - UINT LastInputWasKbd : 1; + UINT LastInputWasKbd:1; }; }; @@ -137,80 +161,102 @@ typedef struct _DESKTOPINFO #define CTI_THREADSYSLOCK 0x0001 #define CTI_INSENDMESSAGE 0x0002 +/* + * CLIENTTHREADINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/CLIENTTHREADINFO + */ typedef struct _CLIENTTHREADINFO { DWORD CTI_flags; - WORD fsChangeBits; - WORD fsWakeBits; - WORD fsWakeBitsJournal; - WORD fsWakeMask; - ULONG tickLastMsgChecked; + WORD fsChangeBits; + WORD fsWakeBits; + WORD fsWakeBitsJournal; + WORD fsWakeMask; + ULONG timeLastRead; // Last time the message queue was read. DWORD dwcPumpHook; } CLIENTTHREADINFO, *PCLIENTTHREADINFO; typedef struct _HEAD { - HANDLE h; - DWORD cLockObj; + HANDLE h; + DWORD cLockObj; } HEAD, *PHEAD; typedef struct _THROBJHEAD { - HEAD; - PTHREADINFO pti; + HEAD; + struct _THREADINFO *pti; } THROBJHEAD, *PTHROBJHEAD; typedef struct _THRDESKHEAD { - THROBJHEAD; - struct _DESKTOP *rpdesk; - PVOID pSelf; + THROBJHEAD; + struct _DESKTOP *rpdesk; + PVOID pSelf; } THRDESKHEAD, *PTHRDESKHEAD; +typedef struct tagIMC +{ + THRDESKHEAD head; + struct tagIMC *pImcNext; + ULONG_PTR dwClientImcData; + HWND hImeWnd; +} IMC, *PIMC; + +#ifndef _WIN64 +C_ASSERT(offsetof(IMC, head.h) == 0x0); +C_ASSERT(offsetof(IMC, head.cLockObj) == 0x4); +C_ASSERT(offsetof(IMC, head.pti) == 0x8); +C_ASSERT(offsetof(IMC, pImcNext) == 0x14); +C_ASSERT(offsetof(IMC, dwClientImcData) == 0x18); +C_ASSERT(offsetof(IMC, hImeWnd) == 0x1c); +#endif + typedef struct _PROCDESKHEAD { - HEAD; - DWORD hTaskWow; - struct _DESKTOP *rpdesk; - PVOID pSelf; + HEAD; + DWORD_PTR hTaskWow; + struct _DESKTOP *rpdesk; + PVOID pSelf; } PROCDESKHEAD, *PPROCDESKHEAD; typedef struct _PROCMARKHEAD { - HEAD; - ULONG hTaskWow; - PPROCESSINFO ppi; + HEAD; + ULONG hTaskWow; + struct _PROCESSINFO *ppi; } PROCMARKHEAD, *PPROCMARKHEAD; #define UserHMGetHandle(obj) ((obj)->head.h) +#define UserHMSetHandle(obj, handle) ((obj)->head.h = (handle)) /* Window Client Information structure */ -struct _ETHREAD; +struct _ETHREAD; -#define WEF_SETBYWNDPTI 0x0001 +#define WEF_SETBYWNDPTI 0x0001 typedef struct tagHOOK { - THRDESKHEAD head; - struct tagHOOK *phkNext; /* This is for user space. */ - int HookId; /* Hook table index */ - ULONG_PTR offPfn; - ULONG flags; /* Some internal flags */ - INT ihmod; - PTHREADINFO ptiHooked; - struct _DESKTOP *rpdesk; - /* ReactOS */ - LIST_ENTRY Chain; /* Hook chain entry */ - HOOKPROC Proc; /* Hook function */ - BOOLEAN Ansi; /* Is it an Ansi hook? */ - UNICODE_STRING ModuleName; /* Module name for global hooks */ + THRDESKHEAD head; + struct tagHOOK *phkNext; /* This is for user space. */ + int HookId; /* Hook table index */ + ULONG_PTR offPfn; + ULONG flags; /* Some internal flags */ + INT_PTR ihmod; + struct _THREADINFO *ptiHooked; + struct _DESKTOP *rpdesk; + /* ReactOS */ + LIST_ENTRY Chain; /* Hook chain entry */ + HOOKPROC Proc; /* Hook function */ + BOOLEAN Ansi; /* Is it an Ansi hook? */ + UNICODE_STRING ModuleName; /* Module name for global hooks */ } HOOK, *PHOOK; typedef struct tagCLIPBOARDDATA { - HEAD head; - DWORD cbData; - BYTE Data[0]; + HEAD head; + DWORD cbData; + BYTE Data[0]; } CLIPBOARDDATA, *PCLIPBOARDDATA; /* THREADINFO Flags */ @@ -246,9 +292,9 @@ typedef struct tagCLIPBOARDDATA typedef struct _CALLBACKWND { - HWND hWnd; - struct _WND *pWnd; - PVOID pActCtx; + HWND hWnd; + struct _WND *pWnd; + PVOID pActCtx; } CALLBACKWND, *PCALLBACKWND; #define CI_TRANSACTION 0x00000001 @@ -257,8 +303,17 @@ typedef struct _CALLBACKWND #define CI_INITTHREAD 0x00000008 #define CI_CURTHPRHOOK 0x00000010 #define CI_CLASSESREGISTERED 0x00000020 -#define CI_IMMACTIVATE 0x00000040 +#define CI_IMMACTIVATE 0x00000040 /* IMM/IME (Asian input) */ +#define CI_CTFCOINIT 0x00000080 /* Did CTF CoInitialize? */ +#define CI_CTFTIM 0x00000100 /* CTF Thread Input Manager (TIM) */ +#define CI_CICERO_STARTED 0x00000200 /* Is Cicero started in the thread? */ +#define CI_TSFDISABLED 0x00000400 /* TSF (Text Services Framework a.k.a. Cicero) */ +#define CI_AIMMACTIVATED 0x00000800 /* Active IMM (AIMM) */ +/* + * CLIENTINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/CLIENTINFO + */ typedef struct _CLIENTINFO { ULONG_PTR CI_flags; @@ -266,7 +321,7 @@ typedef struct _CLIENTINFO DWORD dwExpWinVer; DWORD dwCompatFlags; DWORD dwCompatFlags2; - DWORD dwTIFlags; // ThreadInfo TIF_Xxx flags for User space. + DWORD dwTIFlags; /* ThreadInfo TIF_Xxx flags for User space. */ PDESKTOPINFO pDeskInfo; ULONG_PTR ulClientDelta; PHOOK phkCurrent; @@ -288,7 +343,7 @@ typedef struct _CLIENTINFO LPDWORD lpdwRegisteredClasses; ULONG Win32ClientInfo3[26]; /* It's just a pointer reference not to be used w the structure in user space. */ - PPROCESSINFO ppi; + struct _PROCESSINFO *ppi; } CLIENTINFO, *PCLIENTINFO; /* Make sure it fits into the TEB */ @@ -296,73 +351,134 @@ C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo)); #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo)) -#define HRGN_NULL ( (HRGN) 0) // NULL empty region -#define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow -#define HRGN_MONITOR ( (HRGN) 2) // region from monitor region. +typedef struct tagDDEPACK +{ + UINT_PTR uiLo; + UINT_PTR uiHi; +} DDEPACK, *PDDEPACK; + +#define HRGN_NULL ((HRGN)0) /* NULL empty region */ +#define HRGN_WINDOW ((HRGN)1) /* region from window rcWindow */ +#define HRGN_MONITOR ((HRGN)2) /* region from monitor region. */ /* Menu Item fType. */ #define MFT_RTOL 0x6000 +/* Menu Item fState. */ +#define MFS_HBMMENUBMP 0x20000000 + typedef struct tagITEM { UINT fType; UINT fState; UINT wID; - struct tagMENU* spSubMenu; /* Pop-up menu. */ + struct tagMENU *spSubMenu; /* Pop-up menu. */ HANDLE hbmpChecked; HANDLE hbmpUnchecked; - USHORT* lpstr; /* Item text pointer. */ + USHORT *Xlpstr; /* Item text pointer. */ ULONG cch; DWORD_PTR dwItemData; - ULONG xItem; /* Item position. left */ - ULONG yItem; /* " top */ - ULONG cxItem; /* Item Size Width */ - ULONG cyItem; /* " Height */ - ULONG dxTab; /* X position of text after Tab */ - ULONG ulX; /* underline.. start position */ + ULONG xItem; /* Item position. left */ + ULONG yItem; /* " top */ + ULONG cxItem; /* Item Size Width */ + ULONG cyItem; /* " Height */ + ULONG dxTab; /* X position of text after Tab */ + ULONG ulX; /* underline.. start position */ ULONG ulWidth; /* underline.. width */ - HBITMAP hbmp; /* bitmap */ - INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */ - INT cyBmp; /* Height " */ + HBITMAP hbmp; /* bitmap */ + INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */ + INT cyBmp; /* Height " */ + /* ReactOS */ + UNICODE_STRING lpstr; } ITEM, *PITEM; typedef struct tagMENULIST { - struct tagMENULIST* pNext; - struct tagMENU* pMenu; + struct tagMENULIST *pNext; + struct tagMENU *pMenu; } MENULIST, *PMENULIST; /* Menu fFlags, upper byte is MNS_X style flags. */ -#define MNF_POPUP 0x0001 -#define MNF_UNDERLINE 0x0004 -#define MNF_INACTIVE 0x0010 -#define MNF_RTOL 0x0020 -#define MNF_DESKTOPMN 0x0040 -#define MNF_SYSDESKMN 0x0080 -#define MNF_SYSSUBMENU 0x0100 +#define MNF_POPUP 0x0001 +#define MNF_UNDERLINE 0x0004 +#define MNF_INACTIVE 0x0010 +#define MNF_RTOL 0x0020 +#define MNF_DESKTOPMN 0x0040 +#define MNF_SYSDESKMN 0x0080 +#define MNF_SYSSUBMENU 0x0100 +/* Hack */ +#define MNF_SYSMENU 0x0200 + +/* (other FocusedItem values give the position of the focused item) */ +#define NO_SELECTED_ITEM 0xffff typedef struct tagMENU { PROCDESKHEAD head; - ULONG fFlags; /* [Style flags | Menu flags] */ - INT iItem; /* nPos of selected item, if -1 not selected. */ - UINT cAlloced; /* Number of allocated items. Inc's of 8 */ - UINT cItems; /* Number of items in the menu */ - ULONG cxMenu; /* Width of the whole menu */ - ULONG cyMenu; /* Height of the whole menu */ - ULONG cxTextAlign; /* Offset of text when items have both bitmaps and text */ + ULONG fFlags; /* [Style flags | Menu flags] */ + INT iItem; /* nPos of selected item, if -1 not selected. AKA focused item */ + UINT cAlloced; /* Number of allocated items. Inc's of 8 */ + UINT cItems; /* Number of items in the menu */ + ULONG cxMenu; /* Width of the whole menu */ + ULONG cyMenu; /* Height of the whole menu */ + ULONG cxTextAlign; /* Offset of text when items have both bitmaps and text */ struct _WND *spwndNotify; /* window receiving the messages for ownerdraw */ - PITEM rgItems; /* Array of menu items */ - struct tagMENULIST* pParentMenus; /* If this is SubMenu, list of parents. */ + PITEM rgItems; /* Array of menu items */ + struct tagMENULIST *pParentMenus; /* If this is SubMenu, list of parents. */ DWORD dwContextHelpId; - ULONG cyMax; /* max height of the whole menu, 0 is screen height */ - DWORD_PTR dwMenuData; /* application defined value */ - HBRUSH hbrBack; /* brush for menu background */ - INT iTop; /* Current scroll position Top */ - INT iMaxTop; /* Current scroll position Max Top */ - DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */ + ULONG cyMax; /* max height of the whole menu, 0 is screen height */ + DWORD_PTR dwMenuData; /* application defined value */ + HBRUSH hbrBack; /* brush for menu background */ + INT iTop; /* Current scroll position Top */ + INT iMaxTop; /* Current scroll position Max Top */ + DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */ + /* ReactOS */ + LIST_ENTRY ListEntry; + HWND hWnd; /* Window containing the menu, use POPUPMENU */ + BOOL TimeToHide; } MENU, *PMENU; +typedef struct tagPOPUPMENU +{ + ULONG fIsMenuBar:1; + ULONG fHasMenuBar:1; + ULONG fIsSysMenu:1; + ULONG fIsTrackPopup:1; + ULONG fDroppedLeft:1; + ULONG fHierarchyDropped:1; + ULONG fRightButton:1; + ULONG fToggle:1; + ULONG fSynchronous:1; + ULONG fFirstClick:1; + ULONG fDropNextPopup:1; + ULONG fNoNotify:1; + ULONG fAboutToHide:1; + ULONG fShowTimer:1; + ULONG fHideTimer:1; + ULONG fDestroyed:1; + ULONG fDelayedFree:1; + ULONG fFlushDelayedFree:1; + ULONG fFreed:1; + ULONG fInCancel:1; + ULONG fTrackMouseEvent:1; + ULONG fSendUninit:1; + ULONG fRtoL:1; + // ULONG fDesktopMenu:1; + ULONG iDropDir:5; + ULONG fUseMonitorRect:1; + struct _WND *spwndNotify; + struct _WND *spwndPopupMenu; + struct _WND *spwndNextPopup; + struct _WND *spwndPrevPopup; + PMENU spmenu; + PMENU spmenuAlternate; + struct _WND *spwndActivePopup; + struct tagPOPUPMENU *ppopupmenuRoot; + struct tagPOPUPMENU *ppmDelayedFree; + UINT posSelectedItem; + UINT posDropped; +} POPUPMENU, *PPOPUPMENU; + typedef struct _REGISTER_SYSCLASS { /* This is a reactos specific class used to initialize the @@ -379,53 +495,53 @@ typedef struct _REGISTER_SYSCLASS typedef struct _CLSMENUNAME { - LPSTR pszClientAnsiMenuName; - LPWSTR pwszClientUnicodeMenuName; - PUNICODE_STRING pusMenuName; + LPSTR pszClientAnsiMenuName; + LPWSTR pwszClientUnicodeMenuName; + PUNICODE_STRING pusMenuName; } CLSMENUNAME, *PCLSMENUNAME; typedef struct tagSBDATA { - INT posMin; - INT posMax; - INT page; - INT pos; + INT posMin; + INT posMax; + INT page; + INT pos; } SBDATA, *PSBDATA; typedef struct tagSBINFO { - INT WSBflags; - SBDATA Horz; - SBDATA Vert; + INT WSBflags; + SBDATA Horz; + SBDATA Vert; } SBINFO, *PSBINFO; typedef struct tagSBCALC { - INT posMin; - INT posMax; - INT page; - INT pos; - INT pxTop; - INT pxBottom; - INT pxLeft; - INT pxRight; - INT cpxThumb; - INT pxUpArrow; - INT pxDownArrow; - INT pxStart; - INT pxThumbBottom; - INT pxThumbTop; - INT cpx; - INT pxMin; + INT posMin; + INT posMax; + INT page; + INT pos; + INT pxTop; + INT pxBottom; + INT pxLeft; + INT pxRight; + INT cpxThumb; + INT pxUpArrow; + INT pxDownArrow; + INT pxStart; + INT pxThumbBottom; + INT pxThumbTop; + INT cpx; + INT pxMin; } SBCALC, *PSBCALC; typedef enum _GETCPD { - UserGetCPDA2U = 0x01, // " Unicode " - UserGetCPDU2A = 0X02, // " Ansi " - UserGetCPDClass = 0X10, - UserGetCPDWindow = 0X20, - UserGetCPDDialog = 0X40, + UserGetCPDA2U = 0x01, /* " Unicode " */ + UserGetCPDU2A = 0X02, /* " Ansi " */ + UserGetCPDClass = 0X10, + UserGetCPDWindow = 0X20, + UserGetCPDDialog = 0X40, UserGetCPDWndtoCls = 0X80 } GETCPD, *PGETCPD; @@ -437,14 +553,14 @@ typedef struct _CALLPROCDATA GETCPD wType; } CALLPROCDATA, *PCALLPROCDATA; -#define CSF_SERVERSIDEPROC 0x0001 -#define CSF_ANSIPROC 0x0002 -#define CSF_WOWDEFERDESTROY 0x0004 -#define CSF_SYSTEMCLASS 0x0008 -#define CSF_WOWCLASS 0x0010 -#define CSF_WOWEXTRA 0x0020 -#define CSF_CACHEDSMICON 0x0040 -#define CSF_WIN40COMPAT 0x0080 +#define CSF_SERVERSIDEPROC 0x0001 +#define CSF_ANSIPROC 0x0002 +#define CSF_WOWDEFERDESTROY 0x0004 +#define CSF_SYSTEMCLASS 0x0008 +#define CSF_WOWCLASS 0x0010 +#define CSF_WOWEXTRA 0x0020 +#define CSF_CACHEDSMICON 0x0040 +#define CSF_WIN40COMPAT 0x0080 typedef struct _CLS { @@ -455,8 +571,8 @@ typedef struct _CLS struct _DESKTOP *rpdeskParent; PVOID pdce; DWORD CSF_flags; - PSTR lpszClientAnsiMenuName; // For client use - PWSTR lpszClientUnicodeMenuName; // " " " + PSTR lpszClientAnsiMenuName; /* For client use */ + PWSTR lpszClientUnicodeMenuName; /* " " " */ PCALLPROCDATA spcpdFirst; struct _CLS *pclsBase; struct _CLS *pclsClone; @@ -466,30 +582,26 @@ typedef struct _CLS INT cbclsExtra; INT cbwndExtra; HINSTANCE hModule; - HANDLE hIcon; /* FIXME - Use pointer! */ - //PCURSOR spicn; - HANDLE hCursor; /* FIXME - Use pointer! */ - //PCURSOR spcur; + struct _CURICON_OBJECT *spicn; + struct _CURICON_OBJECT *spcur; HBRUSH hbrBackground; - PWSTR lpszMenuName; // kernel use - PSTR lpszAnsiClassName; // " - HANDLE hIconSm; /* FIXME - Use pointer! */ - //PCURSOR spicnSm; - - UINT Unicode : 1; // !CSF_ANSIPROC - UINT Global : 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC - UINT MenuNameIsString : 1; - UINT NotUsed : 29; + PWSTR lpszMenuName; /* kernel use */ + PSTR lpszAnsiClassName; /* " */ + struct _CURICON_OBJECT *spicnSm; + //// + UINT Unicode:1; // !CSF_ANSIPROC + UINT Global:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC + UINT MenuNameIsString:1; + UINT NotUsed:29; } CLS, *PCLS; - typedef struct _SBINFOEX { - SCROLLBARINFO ScrollBarInfo; - SCROLLINFO ScrollInfo; + SCROLLBARINFO ScrollBarInfo; + SCROLLINFO ScrollInfo; } SBINFOEX, *PSBINFOEX; -// State Flags !Not Implemented! +/* State Flags !Not ALL Implemented! */ #define WNDS_HASMENU 0X00000001 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004 @@ -508,14 +620,14 @@ typedef struct _SBINFOEX #define WNDS_FORCEMENUDRAW 0X00008000 #define WNDS_DIALOGWINDOW 0X00010000 #define WNDS_HASCREATESTRUCTNAME 0X00020000 -#define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k. +#define WNDS_SERVERSIDEWINDOWPROC 0x00040000 /* Call proc inside win32k. */ #define WNDS_ANSIWINDOWPROC 0x00080000 #define WNDS_BEINGACTIVATED 0x00100000 #define WNDS_HASPALETTE 0x00200000 #define WNDS_PAINTNOTPROCESSED 0x00400000 #define WNDS_SYNCPAINTPENDING 0x00800000 -#define WNDS_RECIEVEDQUERYSUSPENDMSG 0x01000000 -#define WNDS_RECIEVEDSUSPENDMSG 0x02000000 +#define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000 +#define WNDS_RECEIVEDSUSPENDMSG 0x02000000 #define WNDS_TOGGLETOPMOST 0x04000000 #define WNDS_REDRAWIFHUNG 0x08000000 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000 @@ -525,7 +637,7 @@ typedef struct _SBINFOEX #define WNDSACTIVEFRAME 0x00000006 -// State2 Flags !Not Implemented! +/* State2 Flags !Not ALL Implemented! */ #define WNDS2_WMPAINTSENT 0X00000001 #define WNDS2_ENDPAINTINVALIDATE 0X00000002 #define WNDS2_STARTPAINT 0X00000004 @@ -571,12 +683,21 @@ typedef struct _SBINFOEX #define WS_EX2_CONSOLEWINDOW 0X00000400 #define WS_EX2_CHILDNOACTIVATE 0X00000800 -#define WPF_MININIT 0x0008 -#define WPF_MAXINIT 0x0010 +#define WPF_MININIT 0x0008 +#define WPF_MAXINIT 0x0010 +/* + * WND structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/WND + */ typedef struct _WND { THRDESKHEAD head; +#if 0 + WW ww; +#else + /* These fields should be moved in the WW at some point. */ + /* Plese do not change them to keep the same layout with WW. */ DWORD state; DWORD state2; /* Extended style. */ @@ -586,6 +707,7 @@ typedef struct _WND /* Handle of the module that created the window. */ HINSTANCE hModule; DWORD fnid; +#endif struct _WND *spwndNext; struct _WND *spwndPrev; struct _WND *spwndParent; @@ -606,7 +728,7 @@ typedef struct _WND HMENU SystemMenu; //PMENU spmenuSys; /* Window menu handle or window id */ - UINT IDMenu; // Use spmenu + UINT_PTR IDMenu; // Use spmenu //PMENU spmenu; HRGN hrgnClip; HRGN hrgnNewFrame; @@ -615,8 +737,8 @@ typedef struct _WND /* Size of the extra data associated with the window. */ ULONG cbwndExtra; struct _WND *spwndLastActive; - //HIMC hImc; // Input context associated with this window. - LONG dwUserData; + HIMC hImc; // Input context associated with this window. + LONG_PTR dwUserData; PVOID pActCtx; //PD3DMATRIX pTransForm; struct _WND *spwndClipboardListener; @@ -628,30 +750,47 @@ typedef struct _WND RECT NormalRect; POINT IconPos; POINT MaxPos; - UINT flags; // WPF_ flags. + UINT flags; /* WPF_ flags. */ } InternalPos; - UINT Unicode : 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? - UINT InternalPosInitialized : 1; - UINT HideFocus : 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ? - UINT HideAccel : 1; // WS_EX_UISTATEKBACCELHIDDEN ? + UINT Unicode:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */ + UINT InternalPosInitialized:1; + UINT HideFocus:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */ + UINT HideAccel:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */ + + /* Scrollbar info */ + PSBINFOEX pSBInfoex; // convert to PSBINFO + /* Entry in the list of thread windows. */ + LIST_ENTRY ThreadListEntry; - /* Scrollbar info */ - PSBINFOEX pSBInfoex; // convert to PSBINFO - /* Entry in the list of thread windows. */ - LIST_ENTRY ThreadListEntry; + PVOID DialogPointer; } WND, *PWND; #define PWND_BOTTOM ((PWND)1) typedef struct _SBWND { - WND wnd; - BOOL fVert; - UINT wDisableFlags; - SBCALC SBCalc; + WND wnd; + BOOL fVert; + UINT wDisableFlags; + SBCALC SBCalc; } SBWND, *PSBWND; +typedef struct _MDIWND +{ + WND wnd; + DWORD dwReserved; + PVOID pmdi; +} MDIWND, *PMDIWND; + +#define GWLP_MDIWND 4 + +typedef struct _MENUWND +{ + WND wnd; + PPOPUPMENU ppopupmenu; +} MENUWND, *PMENUWND; + typedef struct _PFNCLIENT { WNDPROC pfnScrollBarWndProc; @@ -684,7 +823,13 @@ typedef struct _PFNCLIENT Windows uses Ansi == TRUE, Wine uses Unicode == TRUE. */ -typedef LRESULT(CALLBACK *WNDPROC_EX)(HWND,UINT,WPARAM,LPARAM,BOOL); +typedef LRESULT +(CALLBACK *WNDPROC_EX)( + HWND, + UINT, + WPARAM, + LPARAM, + BOOL); typedef struct _PFNCLIENTWORKER { @@ -701,9 +846,15 @@ typedef struct _PFNCLIENTWORKER WNDPROC_EX pfnCtfHookProc; } PFNCLIENTWORKER, *PPFNCLIENTWORKER; -typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR); +typedef LONG_PTR +(NTAPI *PFN_FNID)( + PWND, + UINT, + WPARAM, + LPARAM, + ULONG_PTR); -// FNID's for NtUserSetWindowFNID, NtUserMessageCall +/* FNID's for NtUserSetWindowFNID, NtUserMessageCall */ #define FNID_FIRST 0x029A #define FNID_SCROLLBAR 0x029A #define FNID_ICONTITLE 0x029B @@ -730,33 +881,34 @@ typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR); #define FNID_MDIACTIVATEDLGPROC 0x02B0 #define FNID_SENDMESSAGE 0x02B1 #define FNID_SENDMESSAGEFF 0x02B2 -// Kernel has option to use TimeOut or normal msg send, based on type of msg. +/* Kernel has option to use TimeOut or normal msg send, based on type of msg. */ #define FNID_SENDMESSAGEWTOOPTION 0x02B3 #define FNID_SENDMESSAGECALLPROC 0x02B4 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5 #define FNID_TOOLTIPS 0x02B6 #define FNID_SENDNOTIFYMESSAGE 0x02B7 #define FNID_SENDMESSAGECALLBACK 0x02B8 -#define FNID_LAST 0x02B9 -#define FNID_NUM FNID_LAST - FNID_FIRST + 1 -#define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1 +#define FNID_LAST FNID_SENDMESSAGECALLBACK + +#define FNID_NUM (FNID_LAST - FNID_FIRST + 1) +#define FNID_NUMSERVERPROC (FNID_SWITCH - FNID_FIRST + 1) -#define FNID_DDEML 0x2000 // Registers DDEML -#define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine. - // Seen during WM_CREATE on error exit too. -#define FNID_FREED 0x8000 // Window being Freed... +#define FNID_DDEML 0x2000 /* Registers DDEML */ +#define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */ + /* Seen during WM_CREATE on error exit too. */ +#define FNID_FREED 0x8000 /* Window being Freed... */ #define ICLASS_TO_MASK(iCls) (1 << ((iCls))) -#define GETPFNCLIENTA(fnid)\ +#define GETPFNCLIENTA(fnid) \ (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST))) -#define GETPFNCLIENTW(fnid)\ +#define GETPFNCLIENTW(fnid) \ (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST))) #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST] -// ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays +/* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */ #define ICLS_BUTTON 0 #define ICLS_EDIT 1 #define ICLS_STATIC 2 @@ -793,9 +945,11 @@ typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR); #define COLOR_LAST COLOR_MENUBAR #define MAX_MB_STRINGS 11 -#define SRVINFO_APIHOOK 0x0010 -#define SRVINFO_METRICS 0x0020 -#define SRVINFO_KBDPREF 0x0080 +#define SRVINFO_DBCSENABLED 0x0002 +#define SRVINFO_IMM32 0x0004 +#define SRVINFO_APIHOOK 0x0010 +#define SRVINFO_CICERO_ENABLED 0x0020 +#define SRVINFO_KBDPREF 0x0080 #define NUM_SYSCOLORS 31 @@ -807,6 +961,17 @@ typedef struct tagOEMBITMAPINFO INT cy; } OEMBITMAPINFO, *POEMBITMAPINFO; +typedef enum _OBI_TYPES +{ + OBI_CLOSE = 0, + OBI_UPARROW = 46, + OBI_UPARROWI = 49, + OBI_DNARROW = 50, + OBI_DNARROWI = 53, + OBI_MNARROW = 62, + OBI_CTYPES = 93 +} OBI_TYPES; + typedef struct tagMBSTRING { WCHAR szName[16]; @@ -816,91 +981,103 @@ typedef struct tagMBSTRING typedef struct tagDPISERVERINFO { - INT gclBorder; /* 000 */ - HFONT hCaptionFont; /* 004 */ - HFONT hMsgFont; /* 008 */ - INT cxMsgFontChar; /* 00C */ - INT cyMsgFontChar; /* 010 */ - UINT wMaxBtnSize; /* 014 */ + INT gclBorder; /* 000 */ + HFONT hCaptionFont; /* 004 */ + HFONT hMsgFont; /* 008 */ + INT cxMsgFontChar; /* 00C */ + INT cyMsgFontChar; /* 010 */ + UINT wMaxBtnSize; /* 014 */ } DPISERVERINFO, *PDPISERVERINFO; -// PUSIFlags: +/* PUSIFlags: */ #define PUSIF_PALETTEDISPLAY 0x01 #define PUSIF_SNAPTO 0x02 #define PUSIF_COMBOBOXANIMATION 0x04 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08 #define PUSIF_KEYBOARDCUES 0x20 +/* + * PERUSERSERVERINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO + */ typedef struct _PERUSERSERVERINFO { - INT aiSysMet[SM_CMETRICS]; - ULONG argbSystemUnmatched[NUM_SYSCOLORS]; - COLORREF argbSystem[NUM_SYSCOLORS]; - HBRUSH ahbrSystem[NUM_SYSCOLORS]; - HBRUSH hbrGray; - POINT ptCursor; - POINT ptCursorReal; - DWORD dwLastRITEventTickCount; - INT nEvents; - UINT dtScroll; - UINT dtLBSearch; - UINT dtCaretBlink; - UINT ucWheelScrollLines; - UINT ucWheelScrollChars; - INT wMaxLeftOverlapChars; - INT wMaxRightOverlapChars; - INT cxSysFontChar; - INT cySysFontChar; - TEXTMETRICW tmSysFont; + INT aiSysMet[SM_CMETRICS]; + ULONG argbSystemUnmatched[NUM_SYSCOLORS]; + COLORREF argbSystem[NUM_SYSCOLORS]; + HBRUSH ahbrSystem[NUM_SYSCOLORS]; + HBRUSH hbrGray; + POINT ptCursor; + POINT ptCursorReal; + DWORD dwLastRITEventTickCount; + INT nEvents; + UINT dtScroll; + UINT dtLBSearch; + UINT dtCaretBlink; + UINT ucWheelScrollLines; + UINT ucWheelScrollChars; + INT wMaxLeftOverlapChars; + INT wMaxRightOverlapChars; + INT cxSysFontChar; + INT cySysFontChar; + TEXTMETRICW tmSysFont; DPISERVERINFO dpiSystem; - HICON hIconSmWindows; - HICON hIcoWindows; - DWORD dwKeyCache; - DWORD dwAsyncKeyCache; - ULONG cCaptures; - OEMBITMAPINFO oembmi[93]; - RECT rcScreenReal; - USHORT BitCount; - USHORT dmLogPixels; - BYTE Planes; - BYTE BitsPixel; - ULONG PUSIFlags; - UINT uCaretWidth; - USHORT UILangID; - DWORD dwLastSystemRITEventTickCountUpdate; - ULONG adwDBGTAGFlags[35]; - DWORD dwTagCount; - DWORD dwRIPFlags; + HICON hIconSmWindows; + HICON hIconWindows; + DWORD dwKeyCache; + DWORD dwAsyncKeyCache; + ULONG cCaptures; + OEMBITMAPINFO oembmi[OBI_CTYPES]; + RECT rcScreenReal; + USHORT BitCount; + USHORT dmLogPixels; + BYTE Planes; + BYTE BitsPixel; + ULONG PUSIFlags; + UINT uCaretWidth; + USHORT UILangID; + DWORD dwLastSystemRITEventTickCountUpdate; + ULONG adwDBGTAGFlags[35]; + DWORD dwTagCount; + DWORD dwRIPFlags; } PERUSERSERVERINFO, *PPERUSERSERVERINFO; +/* + * SERVERINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO + */ typedef struct tagSERVERINFO { - DWORD dwSRVIFlags; - ULONG_PTR cHandleEntries; - PFN_FNID mpFnidPfn[FNID_NUM]; - WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]; - USHORT mpFnid_serverCBWndProc[FNID_NUM]; - PFNCLIENT apfnClientA; - PFNCLIENT apfnClientW; + DWORD dwSRVIFlags; + ULONG_PTR cHandleEntries; + PFN_FNID mpFnidPfn[FNID_NUM]; + WNDPROC aStoCidPfn[FNID_NUMSERVERPROC]; + USHORT mpFnid_serverCBWndProc[FNID_NUM]; + PFNCLIENT apfnClientA; + PFNCLIENT apfnClientW; PFNCLIENTWORKER apfnClientWorker; - ULONG cbHandleTable; - ATOM atomSysClass[ICLS_NOTUSED+1]; - DWORD dwDefaultHeapBase; - DWORD dwDefaultHeapSize; - UINT uiShellMsg; - MBSTRING MBStrings[MAX_MB_STRINGS]; - ATOM atomIconSmProp; - ATOM atomIconProp; - ATOM atomContextHelpIdProp; - ATOM atomFrostedWindowProp; - CHAR acOemToAnsi[256]; - CHAR acAnsiToOem[256]; - DWORD dwInstalledEventHooks; + ULONG cbHandleTable; + ATOM atomSysClass[ICLS_NOTUSED+1]; + DWORD dwDefaultHeapBase; + DWORD dwDefaultHeapSize; + UINT uiShellMsg; + MBSTRING MBStrings[MAX_MB_STRINGS]; + ATOM atomIconSmProp; + ATOM atomIconProp; + ATOM atomContextHelpIdProp; + ATOM atomFrostedWindowProp; + CHAR acOemToAnsi[256]; + CHAR acAnsiToOem[256]; + DWORD dwInstalledEventHooks; PERUSERSERVERINFO; } SERVERINFO, *PSERVERINFO; +#ifdef _M_IX86 +C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE); +#endif + -// Server event activity bits. +/* Server event activity bits. */ #define SRV_EVENT_MENU 0x0001 #define SRV_EVENT_END_APPLICATION 0x0002 #define SRV_EVENT_RUNNING 0x0004 @@ -912,63 +1089,78 @@ typedef struct tagSERVERINFO typedef struct _PROPLISTITEM { - ATOM Atom; - HANDLE Data; + ATOM Atom; + HANDLE Data; } PROPLISTITEM, *PPROPLISTITEM; +#define PROPERTY_FLAG_SYSTEM 1 + typedef struct _PROPERTY { - LIST_ENTRY PropListEntry; - HANDLE Data; - ATOM Atom; + LIST_ENTRY PropListEntry; + HANDLE Data; + ATOM Atom; + WORD fs; } PROPERTY, *PPROPERTY; typedef struct _BROADCASTPARM { - DWORD flags; - DWORD recipients; - HDESK hDesk; - HWND hWnd; - LUID luid; + DWORD flags; + DWORD recipients; + HDESK hDesk; + HWND hWnd; + LUID luid; } BROADCASTPARM, *PBROADCASTPARM; -PTHREADINFO GetW32ThreadInfo(VOID); -PPROCESSINFO GetW32ProcessInfo(VOID); +struct _THREADINFO *GetW32ThreadInfo(VOID); +struct _PROCESSINFO *GetW32ProcessInfo(VOID); typedef struct _WNDMSG { - DWORD maxMsgs; - PINT abMsgs; + DWORD maxMsgs; + PINT abMsgs; } WNDMSG, *PWNDMSG; +/* + * SHAREDINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/SHAREDINFO + */ typedef struct _SHAREDINFO { - PSERVERINFO psi; // global Server Info - PVOID aheList; // Handle Entry List - PVOID pDispInfo; // global PDISPLAYINFO pointer - ULONG_PTR ulSharedDelta; // Heap delta - WNDMSG awmControl[FNID_LAST - FNID_FIRST]; - WNDMSG DefWindowMsgs; - WNDMSG DefWindowSpecMsgs; + PSERVERINFO psi; /* Global Server Info */ + PVOID aheList; /* Handle Entry List */ + PVOID pDispInfo; /* Global PDISPLAYINFO pointer */ + ULONG_PTR ulSharedDelta; /* Shared USER mapped section delta */ + WNDMSG awmControl[FNID_NUM]; + WNDMSG DefWindowMsgs; + WNDMSG DefWindowSpecMsgs; } SHAREDINFO, *PSHAREDINFO; +/* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */ typedef struct _USERCONNECT { - ULONG ulVersion; - ULONG ulCurrentVersion; - DWORD dwDispatchCount; - SHAREDINFO siClient; + ULONG ulVersion; + ULONG ulCurrentVersion; + DWORD dwDispatchCount; + SHAREDINFO siClient; } USERCONNECT, *PUSERCONNECT; +/* WinNT 5.0 compatible user32 / win32k */ +#define USER_VERSION MAKELONG(0x0000, 0x0005) + +#if defined(_M_IX86) +C_ASSERT(sizeof(USERCONNECT) == 0x124); +#endif + typedef struct tagGETCLIPBDATA { - UINT uFmtRet; - BOOL fGlobalHandle; - union - { - HANDLE hLocale; - HANDLE hPalette; - }; + UINT uFmtRet; + BOOL fGlobalHandle; + union + { + HANDLE hLocale; + HANDLE hPalette; + }; } GETCLIPBDATA, *PGETCLIPBDATA; typedef struct tagSETCLIPBDATA @@ -977,33 +1169,33 @@ typedef struct tagSETCLIPBDATA BOOL fIncSerialNumber; } SETCLIPBDATA, *PSETCLIPBDATA; -// Used with NtUserSetCursorIconData, last parameter. +/* Used with NtUserSetCursorIconData, last parameter. */ typedef struct tagCURSORDATA { - LPWSTR lpName; - LPWSTR lpModName; - USHORT rt; - USHORT dummy; - ULONG CURSORF_flags; - SHORT xHotspot; - SHORT yHotspot; - HBITMAP hbmMask; - HBITMAP hbmColor; - HBITMAP hbmAlpha; - RECT rcBounds; - HBITMAP hbmUserAlpha; // Could be in W7U, not in W2k - ULONG bpp; - ULONG cx; - ULONG cy; - INT cpcur; - INT cicur; - struct tagCURSORDATA * aspcur; - DWORD * aicur; - INT * ajifRate; - INT iicur; + LPWSTR lpName; + LPWSTR lpModName; + USHORT rt; + USHORT dummy; + ULONG CURSORF_flags; + SHORT xHotspot; + SHORT yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; + HBITMAP hbmAlpha; + RECT rcBounds; + HBITMAP hbmUserAlpha; /* Could be in W7U, not in W2k */ + ULONG bpp; + ULONG cx; + ULONG cy; + UINT cpcur; + UINT cicur; + struct tagCURSORDATA *aspcur; + DWORD *aicur; + INT *ajifRate; + UINT iicur; } CURSORDATA, *PCURSORDATA; /* !dso CURSORDATA */ -// CURSORF_flags: +/* CURSORF_flags: */ #define CURSORF_FROMRESOURCE 0x0001 #define CURSORF_GLOBAL 0x0002 #define CURSORF_LRSHARED 0x0004 @@ -1014,36 +1206,60 @@ typedef struct tagCURSORDATA #define CURSORF_LINKED 0x0100 #define CURSORF_CURRENT 0x0200 +#define IS_IMM_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_IMM32)) +#define IS_CICERO_MODE() (gpsi && (gpsi->dwSRVIFlags & SRVINFO_CICERO_ENABLED)) +#define IS_16BIT_MODE() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT) + +typedef struct tagIMEUI +{ + PWND spwnd; + HIMC hIMC; + HWND hwndIMC; + HKL hKL; + HWND hwndUI; + LONG nCntInIMEProc; + struct { + UINT fShowStatus:1; + UINT fActivate:1; + UINT fDestroy:1; + UINT fDefault:1; + UINT fChildThreadDef:1; + UINT fCtrlShowStatus:1; + UINT fFreeActiveEvent:1; + }; + DWORD dwLastStatus; +} IMEUI, *PIMEUI; + +/* Window Extra data container. */ +typedef struct _IMEWND +{ + WND wnd; + PIMEUI pimeui; +} IMEWND, *PIMEWND; + DWORD NTAPI -NtUserAssociateInputContext( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3); +NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags); -DWORD +NTSTATUS NTAPI -NtUserBuildHimcList( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3, - DWORD dwUnknown4); +NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount); DWORD NTAPI NtUserCalcMenuBar( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3, - DWORD dwUnknown4, - DWORD dwUnknown5); + HWND hwnd, + DWORD x, + DWORD width, + DWORD y, + LPRECT prc); DWORD NTAPI NtUserCheckMenuItem( - HMENU hmenu, - UINT uIDCheckItem, - UINT uCheck); + HMENU hmenu, + UINT uIDCheckItem, + UINT uCheck); DWORD NTAPI @@ -1052,33 +1268,45 @@ NtUserCtxDisplayIOCtl( DWORD dwUnknown2, DWORD dwUnknown3); +DWORD +APIENTRY +NtUserDbgWin32HeapFail( + DWORD Unknown0, + DWORD Unknown1); + +DWORD +APIENTRY +NtUserDbgWin32HeapStat( + DWORD Unknown0, + DWORD Unknown1); + BOOL NTAPI NtUserDeleteMenu( - HMENU hMenu, - UINT uPosition, - UINT uFlags); + HMENU hMenu, + UINT uPosition, + UINT uFlags); BOOL NTAPI NtUserDestroyMenu( - HMENU hMenu); + HMENU hMenu); DWORD NTAPI NtUserDrawMenuBarTemp( - HWND hWnd, - HDC hDC, - PRECT hRect, - HMENU hMenu, - HFONT hFont); + HWND hWnd, + HDC hDC, + PRECT hRect, + HMENU hMenu, + HFONT hFont); UINT NTAPI NtUserEnableMenuItem( - HMENU hMenu, - UINT uIDEnableItem, - UINT uEnable); + HMENU hMenu, + UINT uIDEnableItem, + UINT uEnable); BOOL NTAPI @@ -1087,461 +1315,463 @@ NtUserEndMenu(VOID); BOOL NTAPI NtUserGetMenuBarInfo( - HWND hwnd, - LONG idObject, - LONG idItem, - PMENUBARINFO pmbi); + HWND hwnd, + LONG idObject, + LONG idItem, + PMENUBARINFO pmbi); UINT NTAPI NtUserGetMenuIndex( - HMENU hMenu, - HMENU hSubMenu); + HMENU hMenu, + HMENU hSubMenu); BOOL NTAPI NtUserGetMenuItemRect( - HWND hWnd, - HMENU hMenu, - UINT uItem, - LPRECT lprcItem); + HWND hWnd, + HMENU hMenu, + UINT uItem, + LPRECT lprcItem); HMENU NTAPI NtUserGetSystemMenu( - HWND hWnd, - BOOL bRevert); + HWND hWnd, + BOOL bRevert); BOOL NTAPI NtUserHiliteMenuItem( - HWND hWnd, - HMENU hMenu, - UINT uItemHilite, - UINT uHilite); + HWND hWnd, + HMENU hMenu, + UINT uItemHilite, + UINT uHilite); int NTAPI NtUserMenuItemFromPoint( - HWND hWnd, - HMENU hMenu, - DWORD X, - DWORD Y); + HWND hWnd, + HMENU hMenu, + DWORD X, + DWORD Y); BOOL NTAPI NtUserRemoveMenu( - HMENU hMenu, - UINT uPosition, - UINT uFlags); + HMENU hMenu, + UINT uPosition, + UINT uFlags); BOOL NTAPI NtUserSetMenu( - HWND hWnd, - HMENU hMenu, - BOOL bRepaint); + HWND hWnd, + HMENU hMenu, + BOOL bRepaint); BOOL NTAPI NtUserSetMenuContextHelpId( - HMENU hmenu, - DWORD dwContextHelpId); + HMENU hmenu, + DWORD dwContextHelpId); BOOL NTAPI NtUserSetMenuDefaultItem( - HMENU hMenu, - UINT uItem, - UINT fByPos); + HMENU hMenu, + UINT uItem, + UINT fByPos); BOOL NTAPI NtUserSetMenuFlagRtoL( - HMENU hMenu); + HMENU hMenu); BOOL NTAPI NtUserSetSystemMenu( - HWND hWnd, - HMENU hMenu); + HWND hWnd, + HMENU hMenu); BOOL NTAPI NtUserThunkedMenuInfo( - HMENU hMenu, - LPCMENUINFO lpcmi); + HMENU hMenu, + LPCMENUINFO lpcmi); BOOL NTAPI NtUserThunkedMenuItemInfo( - HMENU hMenu, - UINT uItem, - BOOL fByPosition, - BOOL bInsert, - LPMENUITEMINFOW lpmii, - PUNICODE_STRING lpszCaption); + HMENU hMenu, + UINT uItem, + BOOL fByPosition, + BOOL bInsert, + LPMENUITEMINFOW lpmii, + PUNICODE_STRING lpszCaption); BOOL NTAPI NtUserTrackPopupMenuEx( - HMENU hmenu, - UINT fuFlags, - int x, - int y, - HWND hwnd, - LPTPMPARAMS lptpm); + HMENU hmenu, + UINT fuFlags, + int x, + int y, + HWND hwnd, + LPTPMPARAMS lptpm); HKL NTAPI NtUserActivateKeyboardLayout( - HKL hKl, - ULONG Flags); + HKL hKL, + ULONG Flags); DWORD NTAPI NtUserAlterWindowStyle( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2); + HWND hWnd, + DWORD Index, + LONG NewValue); BOOL NTAPI NtUserAttachThreadInput( - IN DWORD idAttach, - IN DWORD idAttachTo, - IN BOOL fAttach); + IN DWORD idAttach, + IN DWORD idAttachTo, + IN BOOL fAttach); HDC NTAPI -NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* lPs); +NtUserBeginPaint( + HWND hWnd, + PAINTSTRUCT *lPs); BOOL NTAPI NtUserBitBltSysBmp( - HDC hdc, - INT nXDest, - INT nYDest, - INT nWidth, - INT nHeight, - INT nXSrc, - INT nYSrc, - DWORD dwRop ); + HDC hdc, + INT nXDest, + INT nYDest, + INT nWidth, + INT nHeight, + INT nXSrc, + INT nYSrc, + DWORD dwRop); BOOL NTAPI NtUserBlockInput( - BOOL BlockIt); + BOOL BlockIt); NTSTATUS NTAPI NtUserBuildHwndList( - HDESK hDesktop, - HWND hwndParent, - BOOLEAN bChildren, - ULONG dwThreadId, - ULONG lParam, - HWND* pWnd, - ULONG* pBufSize); - -NTSTATUS NTAPI + HDESK hDesktop, + HWND hwndParent, + BOOLEAN bChildren, + ULONG dwThreadId, + ULONG cHwnd, + HWND *phwndList, + ULONG *pcHwndNeeded); + +NTSTATUS +NTAPI NtUserBuildNameList( - HWINSTA hWinSta, - ULONG dwSize, - PVOID lpBuffer, - PULONG pRequiredSize); + HWINSTA hWinSta, + ULONG dwSize, + PVOID lpBuffer, + PULONG pRequiredSize); NTSTATUS NTAPI NtUserBuildPropList( - HWND hWnd, - LPVOID Buffer, - DWORD BufferSize, - DWORD *Count); + HWND hWnd, + LPVOID Buffer, + DWORD BufferSize, + DWORD *Count); /* apfnSimpleCall indices from Windows XP SP 2 */ /* TODO: Check for differences in Windows 2000, 2003 and 2008 */ -#define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else +#define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */ enum SimpleCallRoutines { - NOPARAM_ROUTINE_CREATEMENU, - NOPARAM_ROUTINE_CREATEMENUPOPUP, + NOPARAM_ROUTINE_CREATEMENU, + NOPARAM_ROUTINE_CREATEMENUPOPUP, #if (WIN32K_VERSION >= NTDDI_VISTA) - NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION, - NOPARAM_ROUTINE_MSQCLEARWAKEMASK, - NOPARAM_ROUTINE_CREATESYSTEMTHREADS, - NOPARAM_ROUTINE_DESTROY_CARET, + NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION, + NOPARAM_ROUTINE_MSQCLEARWAKEMASK, + NOPARAM_ROUTINE_CREATESYSTEMTHREADS, + NOPARAM_ROUTINE_DESTROY_CARET, #endif - NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING, + NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING, #if (WIN32K_VERSION < NTDDI_VISTA) - NOPARAM_ROUTINE_MSQCLEARWAKEMASK, - NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION, - NOPARAM_ROUTINE_DESTROY_CARET, + NOPARAM_ROUTINE_MSQCLEARWAKEMASK, + NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION, + NOPARAM_ROUTINE_DESTROY_CARET, #endif - NOPARAM_ROUTINE_GETDEVICECHANGEINFO, - NOPARAM_ROUTINE_GETIMESHOWSTATUS, - NOPARAM_ROUTINE_GETINPUTDESKTOP, - NOPARAM_ROUTINE_GETMSESSAGEPOS, + NOPARAM_ROUTINE_GETDEVICECHANGEINFO, + NOPARAM_ROUTINE_GETIMESHOWSTATUS, + NOPARAM_ROUTINE_GETINPUTDESKTOP, + NOPARAM_ROUTINE_GETMSESSAGEPOS, #if (WIN32K_VERSION >= NTDDI_VISTA) - NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL, + NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL, #else - NOPARAM_ROUTINE_GETREMOTEPROCID, + NOPARAM_ROUTINE_GETREMOTEPROCESSID, #endif - NOPARAM_ROUTINE_HIDECURSORNOCAPTURE, - NOPARAM_ROUTINE_LOADCURSANDICOS, + NOPARAM_ROUTINE_HIDECURSORNOCAPTURE, + NOPARAM_ROUTINE_LOADCURSANDICOS, #if (WIN32K_VERSION >= NTDDI_VISTA) - NOPARAM_ROUTINE_LOADUSERAPIHOOK, - NOPARAM_ROUTINE_PREPAREFORLOGOFF, /* 0x0f */ + NOPARAM_ROUTINE_LOADUSERAPIHOOK, + NOPARAM_ROUTINE_PREPAREFORLOGOFF, /* 0x0f */ #endif - NOPARAM_ROUTINE_RELEASECAPTURE, - NOPARAM_ROUTINE_RESETDBLCLICK, - NOPARAM_ROUTINE_ZAPACTIVEANDFOUS, - NOPARAM_ROUTINE_REMOTECONSHDWSTOP, - NOPARAM_ROUTINE_REMOTEDISCONNECT, - NOPARAM_ROUTINE_REMOTELOGOFF, - NOPARAM_ROUTINE_REMOTENTSECURITY, - NOPARAM_ROUTINE_REMOTESHDWSETUP, - NOPARAM_ROUTINE_REMOTESHDWSTOP, - NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE, - NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE, - NOPARAM_ROUTINE_REMOTECONNECTSTATE, - NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING, - NOPARAM_ROUTINE_USERPWRCALLOUTWORKER, + NOPARAM_ROUTINE_RELEASECAPTURE, + NOPARAM_ROUTINE_RESETDBLCLICK, + NOPARAM_ROUTINE_ZAPACTIVEANDFOUS, + NOPARAM_ROUTINE_REMOTECONSHDWSTOP, + NOPARAM_ROUTINE_REMOTEDISCONNECT, + NOPARAM_ROUTINE_REMOTELOGOFF, + NOPARAM_ROUTINE_REMOTENTSECURITY, + NOPARAM_ROUTINE_REMOTESHDWSETUP, + NOPARAM_ROUTINE_REMOTESHDWSTOP, + NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE, + NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE, + NOPARAM_ROUTINE_REMOTECONNECTSTATE, + NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING, + NOPARAM_ROUTINE_USERPWRCALLOUTWORKER, #if (WIN32K_VERSION >= NTDDI_VISTA) - NOPARAM_ROUTINE_WAKERITFORSHTDWN, + NOPARAM_ROUTINE_WAKERITFORSHTDWN, #endif - NOPARAM_ROUTINE_INIT_MESSAGE_PUMP, - NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP, + NOPARAM_ROUTINE_INIT_MESSAGE_PUMP, + NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP, #if (WIN32K_VERSION < NTDDI_VISTA) - NOPARAM_ROUTINE_LOADUSERAPIHOOK, + NOPARAM_ROUTINE_LOADUSERAPIHOOK, #endif - ONEPARAM_ROUTINE_BEGINDEFERWNDPOS, + ONEPARAM_ROUTINE_BEGINDEFERWNDPOS, #if (WIN32K_VERSION >= NTDDI_VISTA) - ONEPARAM_ROUTINE_GETSENDMSGRECVR, + ONEPARAM_ROUTINE_GETSENDMSGRECVR, #endif - ONEPARAM_ROUTINE_WINDOWFROMDC, - ONEPARAM_ROUTINE_ALLOWSETFOREGND, - ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT, + ONEPARAM_ROUTINE_WINDOWFROMDC, + ONEPARAM_ROUTINE_ALLOWSETFOREGND, + ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT, #if (WIN32K_VERSION < NTDDI_VISTA) - ONEPARAM_ROUTINE_CREATESYSTEMTHREADS, + ONEPARAM_ROUTINE_CREATESYSTEMTHREADS, #endif - ONEPARAM_ROUTINE_CSDDEUNINITIALIZE, - ONEPARAM_ROUTINE_DIRECTEDYIELD, - ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS, + ONEPARAM_ROUTINE_CSDDEUNINITIALIZE, + ONEPARAM_ROUTINE_DIRECTEDYIELD, + ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS, #if (WIN32K_VERSION < NTDDI_VISTA) - ONEPARAM_ROUTINE_GETCURSORPOS, + ONEPARAM_ROUTINE_GETCURSORPOS, #endif - ONEPARAM_ROUTINE_GETINPUTEVENT, - ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT, - ONEPARAM_ROUTINE_GETKEYBOARDTYPE, - ONEPARAM_ROUTINE_GETPROCDEFLAYOUT, - ONEPARAM_ROUTINE_GETQUEUESTATUS, - ONEPARAM_ROUTINE_GETWINSTAINFO, + ONEPARAM_ROUTINE_GETINPUTEVENT, + ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT, + ONEPARAM_ROUTINE_GETKEYBOARDTYPE, + ONEPARAM_ROUTINE_GETPROCDEFLAYOUT, + ONEPARAM_ROUTINE_GETQUEUESTATUS, + ONEPARAM_ROUTINE_GETWINSTAINFO, #if (WIN32K_VERSION < NTDDI_VISTA) - ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL, + ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL, #endif - ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW, - ONEPARAM_ROUTINE_LOADFONTS, - ONEPARAM_ROUTINE_MAPDEKTOPOBJECT, - ONEPARAM_ROUTINE_MESSAGEBEEP, - ONEPARAM_ROUTINE_PLAYEVENTSOUND, - ONEPARAM_ROUTINE_POSTQUITMESSAGE, + ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW, + ONEPARAM_ROUTINE_LOADFONTS, + ONEPARAM_ROUTINE_MAPDEKTOPOBJECT, + ONEPARAM_ROUTINE_MESSAGEBEEP, + ONEPARAM_ROUTINE_PLAYEVENTSOUND, + ONEPARAM_ROUTINE_POSTQUITMESSAGE, #if (WIN32K_VERSION < NTDDI_VISTA) - ONEPARAM_ROUTINE_PREPAREFORLOGOFF, + ONEPARAM_ROUTINE_PREPAREFORLOGOFF, #endif - ONEPARAM_ROUTINE_REALIZEPALETTE, - ONEPARAM_ROUTINE_REGISTERLPK, + ONEPARAM_ROUTINE_REALIZEPALETTE, + ONEPARAM_ROUTINE_REGISTERLPK, #if (WIN32K_VERSION >= NTDDI_VISTA) - ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD, + ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD, #endif - ONEPARAM_ROUTINE_REMOTERECONNECT, - ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS, - ONEPARAM_ROUTINE_RELEASEDC, + ONEPARAM_ROUTINE_REMOTERECONNECT, + ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS, + ONEPARAM_ROUTINE_RELEASEDC, #if (WIN32K_VERSION >= NTDDI_VISTA) - ONEPARAM_ROUTINE_REMOTENOTIFY, + ONEPARAM_ROUTINE_REMOTENOTIFY, #endif - ONEPARAM_ROUTINE_REPLYMESSAGE, - ONEPARAM_ROUTINE_SETCARETBLINKTIME, - ONEPARAM_ROUTINE_SETDBLCLICKTIME, + ONEPARAM_ROUTINE_REPLYMESSAGE, + ONEPARAM_ROUTINE_SETCARETBLINKTIME, + ONEPARAM_ROUTINE_SETDBLCLICKTIME, #if (WIN32K_VERSION < NTDDI_VISTA) - ONEPARAM_ROUTINE_SETIMESHOWSTATUS, + ONEPARAM_ROUTINE_SETIMESHOWSTATUS, #endif - ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO, - ONEPARAM_ROUTINE_SETPROCDEFLAYOUT, + ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO, + ONEPARAM_ROUTINE_SETPROCDEFLAYOUT, #if (WIN32K_VERSION >= NTDDI_VISTA) - ONEPARAM_ROUTINE_SETWATERMARKSTRINGS, + ONEPARAM_ROUTINE_SETWATERMARKSTRINGS, #endif - ONEPARAM_ROUTINE_SHOWCURSOR, - ONEPARAM_ROUTINE_SHOWSTARTGLASS, - ONEPARAM_ROUTINE_SWAPMOUSEBUTTON, - X_ROUTINE_WOWMODULEUNLOAD, + ONEPARAM_ROUTINE_SHOWCURSOR, + ONEPARAM_ROUTINE_SHOWSTARTGLASS, + ONEPARAM_ROUTINE_SWAPMOUSEBUTTON, + X_ROUTINE_WOWMODULEUNLOAD, #if (WIN32K_VERSION < NTDDI_VISTA) - X_ROUTINE_REMOTENOTIFY, + X_ROUTINE_REMOTENOTIFY, #endif - HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW, - HWND_ROUTINE_DWP_GETENABLEDPOPUP, - HWND_ROUTINE_GETWNDCONTEXTHLPID, - HWND_ROUTINE_REGISTERSHELLHOOKWINDOW, - HWND_ROUTINE_SETMSGBOX, - HWNDOPT_ROUTINE_SETPROGMANWINDOW, - HWNDOPT_ROUTINE_SETTASKMANWINDOW, - HWNDPARAM_ROUTINE_GETCLASSICOCUR, - HWNDPARAM_ROUTINE_CLEARWINDOWSTATE, - HWNDPARAM_ROUTINE_KILLSYSTEMTIMER, - HWNDPARAM_ROUTINE_SETDIALOGPOINTER, - HWNDPARAM_ROUTINE_SETVISIBLE, - HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID, - HWNDPARAM_ROUTINE_SETWINDOWSTATE, - HWNDLOCK_ROUTINE_WINDOWHASSHADOW, /* correct prefix ? */ - HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS, - HWNDLOCK_ROUTINE_DRAWMENUBAR, - HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD, - HWNDLOCK_ROUTINE_GETSYSMENUHANDLE, - HWNDLOCK_ROUTINE_REDRAWFRAME, - HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK, - HWNDLOCK_ROUTINE_SETDLGSYSMENU, - HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW, - HWNDLOCK_ROUTINE_SETSYSMENU, - HWNDLOCK_ROUTINE_UPDATECKIENTRECT, - HWNDLOCK_ROUTINE_UPDATEWINDOW, - X_ROUTINE_IMESHOWSTATUSCHANGE, - TWOPARAM_ROUTINE_ENABLEWINDOW, - TWOPARAM_ROUTINE_REDRAWTITLE, - TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS, - TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW, - TWOPARAM_ROUTINE_UPDATEWINDOWS, - TWOPARAM_ROUTINE_VALIDATERGN, + HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW, + HWND_ROUTINE_DWP_GETENABLEDPOPUP, + HWND_ROUTINE_GETWNDCONTEXTHLPID, + HWND_ROUTINE_REGISTERSHELLHOOKWINDOW, + HWND_ROUTINE_SETMSGBOX, + HWNDOPT_ROUTINE_SETPROGMANWINDOW, + HWNDOPT_ROUTINE_SETTASKMANWINDOW, + HWNDPARAM_ROUTINE_GETCLASSICOCUR, + HWNDPARAM_ROUTINE_CLEARWINDOWSTATE, + HWNDPARAM_ROUTINE_KILLSYSTEMTIMER, + HWNDPARAM_ROUTINE_SETDIALOGPOINTER, + HWNDPARAM_ROUTINE_SETVISIBLE, + HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID, + HWNDPARAM_ROUTINE_SETWINDOWSTATE, + HWNDLOCK_ROUTINE_WINDOWHASSHADOW, /* correct prefix ? */ + HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS, + HWNDLOCK_ROUTINE_DRAWMENUBAR, + HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD, + HWNDLOCK_ROUTINE_GETSYSMENUHANDLE, + HWNDLOCK_ROUTINE_REDRAWFRAME, + HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK, + HWNDLOCK_ROUTINE_SETDLGSYSMENU, + HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW, + HWNDLOCK_ROUTINE_SETSYSMENU, + HWNDLOCK_ROUTINE_UPDATECKIENTRECT, + HWNDLOCK_ROUTINE_UPDATEWINDOW, + TWOPARAM_ROUTINE_IMESHOWSTATUSCHANGE, + TWOPARAM_ROUTINE_ENABLEWINDOW, + TWOPARAM_ROUTINE_REDRAWTITLE, + TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS, + TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW, + TWOPARAM_ROUTINE_UPDATEWINDOWS, + TWOPARAM_ROUTINE_VALIDATERGN, #if (WIN32K_VERSION >= NTDDI_VISTA) - TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER, - TWOPARAM_ROUTINE_GETCURSORPOS, + TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER, + TWOPARAM_ROUTINE_GETCURSORPOS, #endif - TWOPARAM_ROUTINE_GETHDEVNAME, - TWOPARAM_ROUTINE_INITANSIOEM, - TWOPARAM_ROUTINE_NLSSENDIMENOTIFY, + TWOPARAM_ROUTINE_GETHDEVNAME, + TWOPARAM_ROUTINE_INITANSIOEM, + TWOPARAM_ROUTINE_NLSSENDIMENOTIFY, #if (WIN32K_VERSION >= NTDDI_VISTA) - TWOPARAM_ROUTINE_REGISTERGHSTWND, + TWOPARAM_ROUTINE_REGISTERGHSTWND, #endif - TWOPARAM_ROUTINE_REGISTERLOGONPROCESS, + TWOPARAM_ROUTINE_REGISTERLOGONPROCESS, #if (WIN32K_VERSION >= NTDDI_VISTA) - TWOPARAM_ROUTINE_REGISTERSBLFROSTWND, + TWOPARAM_ROUTINE_REGISTERSBLFROSTWND, #else - TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD, + TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD, #endif - TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS, - TWOPARAM_ROUTINE_SHADOWCLEANUP, - TWOPARAM_ROUTINE_REMOTESHADOWSTART, - TWOPARAM_ROUTINE_SETCARETPOS, - TWOPARAM_ROUTINE_SETCURSORPOS, + TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS, + TWOPARAM_ROUTINE_SHADOWCLEANUP, + TWOPARAM_ROUTINE_REMOTESHADOWSTART, + TWOPARAM_ROUTINE_SETCARETPOS, + TWOPARAM_ROUTINE_SETCURSORPOS, #if (WIN32K_VERSION >= NTDDI_VISTA) - TWOPARAM_ROUTINE_SETPHYSCURSORPOS, + TWOPARAM_ROUTINE_SETPHYSCURSORPOS, #endif - TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK, - TWOPARAM_ROUTINE_WOWCLEANUP + TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK, + TWOPARAM_ROUTINE_WOWCLEANUP }; DWORD NTAPI NtUserCallHwnd( - HWND hWnd, - DWORD Routine); + HWND hWnd, + DWORD Routine); BOOL NTAPI NtUserCallHwndLock( - HWND hWnd, - DWORD Routine); + HWND hWnd, + DWORD Routine); HWND NTAPI NtUserCallHwndOpt( - HWND hWnd, - DWORD Routine); + HWND hWnd, + DWORD Routine); DWORD NTAPI NtUserCallHwndParam( - HWND hWnd, - DWORD Param, - DWORD Routine); + HWND hWnd, + DWORD_PTR Param, + DWORD Routine); DWORD NTAPI NtUserCallHwndParamLock( - HWND hWnd, - DWORD Param, - DWORD Routine); + HWND hWnd, + DWORD_PTR Param, + DWORD Routine); BOOL NTAPI NtUserCallMsgFilter( - LPMSG msg, - INT code); + LPMSG msg, + INT code); LRESULT NTAPI NtUserCallNextHookEx( - int Code, - WPARAM wParam, - LPARAM lParam, - BOOL Ansi); + int Code, + WPARAM wParam, + LPARAM lParam, + BOOL Ansi); DWORD_PTR NTAPI NtUserCallNoParam( - DWORD Routine); + DWORD Routine); DWORD_PTR NTAPI NtUserCallOneParam( - DWORD_PTR Param, - DWORD Routine); + DWORD_PTR Param, + DWORD Routine); DWORD_PTR NTAPI NtUserCallTwoParam( - DWORD_PTR Param1, - DWORD_PTR Param2, - DWORD Routine); + DWORD_PTR Param1, + DWORD_PTR Param2, + DWORD Routine); BOOL NTAPI NtUserChangeClipboardChain( - HWND hWndRemove, - HWND hWndNewNext); + HWND hWndRemove, + HWND hWndNewNext); LONG NTAPI NtUserChangeDisplaySettings( - PUNICODE_STRING lpszDeviceName, - LPDEVMODEW lpDevMode, - HWND hwnd, - DWORD dwflags, - LPVOID lParam); + PUNICODE_STRING lpszDeviceName, + LPDEVMODEW lpDevMode, + DWORD dwflags, + LPVOID lParam); BOOL NTAPI NtUserCheckDesktopByThreadId( - DWORD dwThreadId); + DWORD dwThreadId); BOOL NTAPI NtUserCheckWindowThreadDesktop( - HWND hwnd, - DWORD dwThreadId, - ULONG ReturnValue); + HWND hwnd, + DWORD dwThreadId, + ULONG ReturnValue); DWORD NTAPI NtUserCheckImeHotKey( - DWORD dwUnknown1, - DWORD dwUnknown2); + UINT uVirtualKey, + LPARAM lParam); HWND NTAPI NtUserChildWindowFromPointEx( - HWND Parent, - LONG x, - LONG y, - UINT Flags); + HWND Parent, + LONG x, + LONG y, + UINT Flags); BOOL NTAPI @@ -1555,39 +1785,47 @@ NtUserCloseClipboard(VOID); BOOL NTAPI NtUserCloseDesktop( - HDESK hDesktop); + HDESK hDesktop); BOOL NTAPI NtUserCloseWindowStation( - HWINSTA hWinSta); + HWINSTA hWinSta); /* Console commands for NtUserConsoleControl */ typedef enum _CONSOLECONTROL { - GuiConsoleWndClassAtom, - TuiConsoleWndClassAtom, + ConsoleCtrlDesktopConsoleThread = 0, + GuiConsoleWndClassAtom = 1, + ConsoleMakePalettePublic = 5, + ConsoleAcquireDisplayOwnership, } CONSOLECONTROL, *PCONSOLECONTROL; +typedef struct _DESKTOP_CONSOLE_THREAD +{ + HDESK DesktopHandle; + ULONG_PTR ThreadId; +} DESKTOP_CONSOLE_THREAD, *PDESKTOP_CONSOLE_THREAD; + NTSTATUS APIENTRY NtUserConsoleControl( IN CONSOLECONTROL ConsoleCtrl, IN PVOID ConsoleCtrlInfo, - IN DWORD ConsoleCtrlInfoLength); + IN ULONG ConsoleCtrlInfoLength); HANDLE NTAPI NtUserConvertMemHandle( - PVOID pData, - DWORD cbData); + PVOID pData, + DWORD cbData); ULONG NTAPI NtUserCopyAcceleratorTable( - HACCEL Table, - LPACCEL Entries, - ULONG EntriesCount); + HACCEL Table, + LPACCEL Entries, + ULONG EntriesCount); DWORD NTAPI @@ -1596,199 +1834,204 @@ NtUserCountClipboardFormats(VOID); HACCEL NTAPI NtUserCreateAcceleratorTable( - LPACCEL Entries, - ULONG EntriesCount); + LPACCEL Entries, + ULONG EntriesCount); BOOL NTAPI NtUserCreateCaret( - HWND hWnd, - HBITMAP hBitmap, - int nWidth, - int nHeight); + HWND hWnd, + HBITMAP hBitmap, + int nWidth, + int nHeight); HDESK NTAPI NtUserCreateDesktop( - POBJECT_ATTRIBUTES poa, - PUNICODE_STRING lpszDesktopDevice, - LPDEVMODEW lpdmw, - DWORD dwFlags, - ACCESS_MASK dwDesiredAccess); + POBJECT_ATTRIBUTES poa, + PUNICODE_STRING lpszDesktopDevice, + LPDEVMODEW lpdmw, + DWORD dwFlags, + ACCESS_MASK dwDesiredAccess); -DWORD +HIMC NTAPI -NtUserCreateInputContext( - DWORD dwUnknown1); +NtUserCreateInputContext(ULONG_PTR dwClientImcData); NTSTATUS NTAPI NtUserCreateLocalMemHandle( - HANDLE hMem, - PVOID pData, - DWORD cbData, - DWORD *pcbData); + HANDLE hMem, + PVOID pData, + DWORD cbData, + DWORD *pcbData); HWND NTAPI NtUserCreateWindowEx( - DWORD dwExStyle, - PLARGE_STRING plstrClassName, - PLARGE_STRING plstrClsVersion, - PLARGE_STRING plstrWindowName, - DWORD dwStyle, - int x, - int y, - int nWidth, - int nHeight, - HWND hWndParent, - HMENU hMenu, - HINSTANCE hInstance, - LPVOID lpParam, - DWORD dwFlags, - PVOID acbiBuffer); + DWORD dwExStyle, + PLARGE_STRING plstrClassName, + PLARGE_STRING plstrClsVersion, + PLARGE_STRING plstrWindowName, + DWORD dwStyle, + int x, + int y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam, + DWORD dwFlags, + PVOID acbiBuffer); HWINSTA NTAPI NtUserCreateWindowStation( - POBJECT_ATTRIBUTES ObjectAttributes, - ACCESS_MASK dwDesiredAccess, - DWORD Unknown2, - DWORD Unknown3, - DWORD Unknown4, - DWORD Unknown5, - DWORD Unknown6); + POBJECT_ATTRIBUTES ObjectAttributes, + ACCESS_MASK dwDesiredAccess, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6); BOOL NTAPI NtUserDdeGetQualityOfService( - IN HWND hwndClient, - IN HWND hWndServer, - OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev); + IN HWND hwndClient, + IN HWND hWndServer, + OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev); DWORD NTAPI NtUserDdeInitialize( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3, - DWORD Unknown4); + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4); BOOL NTAPI NtUserDdeSetQualityOfService( - IN HWND hwndClient, - IN PSECURITY_QUALITY_OF_SERVICE pqosNew, - OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev); + IN HWND hwndClient, + IN PSECURITY_QUALITY_OF_SERVICE pqosNew, + OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev); -HDWP NTAPI +HDWP +NTAPI NtUserDeferWindowPos( - HDWP WinPosInfo, - HWND Wnd, - HWND WndInsertAfter, - int x, - int y, - int cx, - int cy, - UINT Flags); - -BOOL NTAPI -NtUserDefSetText(HWND WindowHandle, PLARGE_STRING WindowText); + HDWP WinPosInfo, + HWND Wnd, + HWND WndInsertAfter, + int x, + int y, + int cx, + int cy, + UINT Flags); + +BOOL +NTAPI +NtUserDefSetText( + HWND WindowHandle, + PLARGE_STRING WindowText); BOOLEAN NTAPI NtUserDestroyAcceleratorTable( - HACCEL Table); + HACCEL Table); BOOL NTAPI NtUserDestroyCursor( - _In_ HANDLE Handle, - _In_ BOOL bForce); + _In_ HANDLE Handle, + _In_ BOOL bForce); -DWORD +BOOL NTAPI -NtUserDestroyInputContext( - DWORD dwUnknown1); +NtUserDestroyInputContext(HIMC hIMC); -BOOLEAN NTAPI -NtUserDestroyWindow(HWND Wnd); +BOOLEAN +NTAPI +NtUserDestroyWindow( + HWND Wnd); -DWORD +BOOL NTAPI NtUserDisableThreadIme( - DWORD dwUnknown1); + DWORD dwThreadID); LRESULT NTAPI -NtUserDispatchMessage(PMSG pMsg); +NtUserDispatchMessage( + PMSG pMsg); BOOL NTAPI NtUserDragDetect( - HWND hWnd, - POINT pt); + HWND hWnd, + POINT pt); DWORD NTAPI NtUserDragObject( - HWND hwnd1, - HWND hwnd2, - UINT u1, - DWORD dw1, - HCURSOR hc1); + HWND hwnd1, + HWND hwnd2, + UINT u1, + DWORD dw1, + HCURSOR hc1); BOOL NTAPI NtUserDrawAnimatedRects( - HWND hwnd, - INT idAni, - RECT *lprcFrom, - RECT *lprcTo); + HWND hwnd, + INT idAni, + RECT *lprcFrom, + RECT *lprcTo); BOOL NTAPI NtUserDrawCaption( - HWND hWnd, - HDC hDc, - LPCRECT lpRc, - UINT uFlags); + HWND hWnd, + HDC hDc, + LPCRECT lpRc, + UINT uFlags); BOOL NTAPI NtUserDrawCaptionTemp( - HWND hWnd, - HDC hDC, - LPCRECT lpRc, - HFONT hFont, - HICON hIcon, - const PUNICODE_STRING str, - UINT uFlags); - -// Used with NtUserDrawIconEx, last parameter. + HWND hWnd, + HDC hDC, + LPCRECT lpRc, + HFONT hFont, + HICON hIcon, + const PUNICODE_STRING str, + UINT uFlags); + +/* Used with NtUserDrawIconEx, last parameter. */ typedef struct _DRAWICONEXDATA { - HBITMAP hbmMask; - HBITMAP hbmColor; - int cx; - int cy; + HBITMAP hbmMask; + HBITMAP hbmColor; + int cx; + int cy; } DRAWICONEXDATA, *PDRAWICONEXDATA; BOOL NTAPI NtUserDrawIconEx( - HDC hdc, - int xLeft, - int yTop, - HICON hIcon, - int cxWidth, - int cyWidth, - UINT istepIfAniCur, - HBRUSH hbrFlickerFreeDraw, - UINT diFlags, - BOOL bMetaHDC, - PVOID pDIXData); + HDC hdc, + int xLeft, + int yTop, + HICON hIcon, + int cxWidth, + int cyWidth, + UINT istepIfAniCur, + HBRUSH hbrFlickerFreeDraw, + UINT diFlags, + BOOL bMetaHDC, + PVOID pDIXData); BOOL NTAPI @@ -1797,112 +2040,118 @@ NtUserEmptyClipboard(VOID); BOOL NTAPI NtUserEnableScrollBar( - HWND hWnd, - UINT wSBflags, - UINT wArrows); + HWND hWnd, + UINT wSBflags, + UINT wArrows); BOOL NTAPI NtUserEndDeferWindowPosEx( - HDWP WinPosInfo, - DWORD Unknown1); + HDWP WinPosInfo, + BOOL bAsync); -BOOL NTAPI -NtUserEndPaint(HWND hWnd, CONST PAINTSTRUCT* lPs); +BOOL +NTAPI +NtUserEndPaint( + HWND hWnd, + CONST PAINTSTRUCT *lPs); BOOL NTAPI -NtUserEnumDisplayDevices ( - PUNICODE_STRING lpDevice, /* device name */ - DWORD iDevNum, /* display device */ - PDISPLAY_DEVICEW lpDisplayDevice, /* device information */ - DWORD dwFlags ); /* reserved */ +NtUserEnumDisplayDevices( + PUNICODE_STRING lpDevice, /* device name */ + DWORD iDevNum, /* display device */ + PDISPLAY_DEVICEW lpDisplayDevice, /* device information */ + DWORD dwFlags); /* reserved */ -/*BOOL +/* +BOOL NTAPI -NtUserEnumDisplayMonitors ( - HDC hdc, - LPCRECT lprcClip, - MONITORENUMPROC lpfnEnum, - LPARAM dwData );*/ -/* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */ +NtUserEnumDisplayMonitors( + HDC hdc, + LPCRECT lprcClip, + MONITORENUMPROC lpfnEnum, + LPARAM dwData); +*/ +/* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */ INT NTAPI NtUserEnumDisplayMonitors( - OPTIONAL IN HDC hDC, - OPTIONAL IN LPCRECT pRect, - OPTIONAL OUT HMONITOR *hMonitorList, - OPTIONAL OUT LPRECT monitorRectList, - OPTIONAL IN DWORD listSize ); + OPTIONAL IN HDC hDC, + OPTIONAL IN LPCRECT pRect, + OPTIONAL OUT HMONITOR *hMonitorList, + OPTIONAL OUT LPRECT monitorRectList, + OPTIONAL IN DWORD listSize); NTSTATUS NTAPI NtUserEnumDisplaySettings( - PUNICODE_STRING lpszDeviceName, - DWORD iModeNum, - LPDEVMODEW lpDevMode, /* FIXME is this correct? */ - DWORD dwFlags ); + PUNICODE_STRING lpszDeviceName, + DWORD iModeNum, + LPDEVMODEW lpDevMode, /* FIXME is this correct? */ + DWORD dwFlags); DWORD NTAPI NtUserEvent( - DWORD Unknown0); + DWORD Unknown0); -DWORD +INT NTAPI NtUserExcludeUpdateRgn( - HDC hDC, - HWND hWnd); + HDC hDC, + HWND hWnd); BOOL NTAPI NtUserFillWindow( - HWND hWndPaint, - HWND hWndPaint1, - HDC hDC, - HBRUSH hBrush); + HWND hWndPaint, + HWND hWndPaint1, + HDC hDC, + HBRUSH hBrush); HWND NTAPI NtUserFindWindowEx( - HWND hwndParent, - HWND hwndChildAfter, - PUNICODE_STRING ucClassName, - PUNICODE_STRING ucWindowName, - DWORD dwUnknown - ); + HWND hwndParent, + HWND hwndChildAfter, + PUNICODE_STRING ucClassName, + PUNICODE_STRING ucWindowName, + DWORD dwUnknown); BOOL NTAPI NtUserFlashWindowEx( - IN PFLASHWINFO pfwi); + IN PFLASHWINFO pfwi); BOOL NTAPI NtUserGetAltTabInfo( - HWND hwnd, - INT iItem, - PALTTABINFO pati, - LPWSTR pszItemText, - UINT cchItemText, - BOOL Ansi); + HWND hwnd, + INT iItem, + PALTTABINFO pati, + LPWSTR pszItemText, + UINT cchItemText, + BOOL Ansi); -HWND NTAPI -NtUserGetAncestor(HWND hWnd, UINT Flags); +HWND +NTAPI +NtUserGetAncestor( + HWND hWnd, + UINT Flags); DWORD NTAPI -NtUserGetAppImeLevel( - DWORD dwUnknown1); +NtUserGetAppImeLevel(HWND hWnd); SHORT NTAPI NtUserGetAsyncKeyState( - INT Key); + INT Key); -_Success_(return!=0) -_At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return*2+2)) +_Success_(return != 0) +_At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return * 2 + 2)) ULONG APIENTRY NtUserGetAtomName( @@ -1916,33 +2165,36 @@ NtUserGetCaretBlinkTime(VOID); BOOL NTAPI NtUserGetCaretPos( - LPPOINT lpPoint); + LPPOINT lpPoint); -BOOL NTAPI -NtUserGetClassInfo(HINSTANCE hInstance, - PUNICODE_STRING ClassName, - LPWNDCLASSEXW wcex, - LPWSTR *ppszMenuName, - BOOL Ansi); +BOOL +NTAPI +NtUserGetClassInfo( + HINSTANCE hInstance, + PUNICODE_STRING ClassName, + LPWNDCLASSEXW wcex, + LPWSTR *ppszMenuName, + BOOL Ansi); INT NTAPI -NtUserGetClassName(HWND hWnd, - BOOL Real, // 0 GetClassNameW, 1 RealGetWindowClassA/W - PUNICODE_STRING ClassName); +NtUserGetClassName( + HWND hWnd, + BOOL Real, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */ + PUNICODE_STRING ClassName); HANDLE NTAPI NtUserGetClipboardData( - UINT fmt, - PGETCLIPBDATA pgcd); + UINT fmt, + PGETCLIPBDATA pgcd); INT NTAPI NtUserGetClipboardFormatName( - UINT uFormat, - LPWSTR lpszFormatName, - INT cchMaxCount); + UINT uFormat, + LPWSTR lpszFormatName, + INT cchMaxCount); HWND NTAPI @@ -1959,60 +2211,60 @@ NtUserGetClipboardViewer(VOID); BOOL NTAPI NtUserGetClipCursor( - RECT *lpRect); + RECT *lpRect); BOOL NTAPI NtUserGetComboBoxInfo( - HWND hWnd, - PCOMBOBOXINFO pcbi); + HWND hWnd, + PCOMBOBOXINFO pcbi); HBRUSH NTAPI NtUserGetControlBrush( - HWND hwnd, - HDC hdc, - UINT ctlType); + HWND hwnd, + HDC hdc, + UINT ctlType); HBRUSH NTAPI NtUserGetControlColor( - HWND hwndParent, - HWND hwnd, - HDC hdc, - UINT CtlMsg); + HWND hwndParent, + HWND hwnd, + HDC hdc, + UINT CtlMsg); ULONG_PTR NTAPI NtUserGetCPD( - HWND hWnd, - GETCPD Flags, - ULONG_PTR Proc); + HWND hWnd, + GETCPD Flags, + ULONG_PTR Proc); HCURSOR NTAPI NtUserGetCursorFrameInfo( - HCURSOR hCursor, - DWORD istep, - PDWORD rate_jiffies, - INT *num_steps); + HCURSOR hCursor, + DWORD istep, + INT *rate_jiffies, + DWORD *num_steps); BOOL NTAPI NtUserGetCursorInfo( - PCURSORINFO pci); + PCURSORINFO pci); HDC NTAPI NtUserGetDC( - HWND hWnd); + HWND hWnd); HDC NTAPI NtUserGetDCEx( - HWND hWnd, - HANDLE hRegion, - ULONG Flags); + HWND hWnd, + HANDLE hRegion, + ULONG Flags); UINT NTAPI @@ -2025,89 +2277,91 @@ NtUserGetForegroundWindow(VOID); DWORD NTAPI NtUserGetGuiResources( - HANDLE hProcess, - DWORD uiFlags); + HANDLE hProcess, + DWORD uiFlags); BOOL NTAPI NtUserGetGUIThreadInfo( - DWORD idThread, - LPGUITHREADINFO lpgui); + DWORD idThread, + LPGUITHREADINFO lpgui); -_Success_(return!=FALSE) +_Success_(return != FALSE) BOOL NTAPI NtUserGetIconInfo( - _In_ HANDLE hCurIcon, - _Out_opt_ PICONINFO IconInfo, - _Inout_opt_ PUNICODE_STRING lpInstName, - _Inout_opt_ PUNICODE_STRING lpResName, - _Out_opt_ LPDWORD pbpp, - _In_ BOOL bInternal); + _In_ HANDLE hCurIcon, + _Out_opt_ PICONINFO IconInfo, + _Inout_opt_ PUNICODE_STRING lpInstName, + _Inout_opt_ PUNICODE_STRING lpResName, + _Out_opt_ LPDWORD pbpp, + _In_ BOOL bInternal); BOOL NTAPI NtUserGetIconSize( HANDLE Handle, UINT istepIfAniCur, - LONG *plcx, - LONG *plcy); + LONG *plcx, + LONG *plcy); -DWORD +BOOL NTAPI -NtUserGetImeHotKey( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3); +NtUserGetImeHotKey(DWORD dwHotKeyId, + LPUINT lpuModifiers, + LPUINT lpuVirtualKey, + LPHKL lphKL); -DWORD +BOOL NTAPI NtUserGetImeInfoEx( - DWORD dwUnknown1, - DWORD dwUnknown2); + PIMEINFOEX pImeInfoEx, + IMEINFOEXCLASS SearchType); DWORD NTAPI NtUserGetInternalWindowPos( - HWND hwnd, - LPRECT rectWnd, - LPPOINT ptIcon); + HWND hwnd, + LPRECT rectWnd, + LPPOINT ptIcon); HKL NTAPI NtUserGetKeyboardLayout( - DWORD dwThreadid); + DWORD dwThreadid); UINT NTAPI NtUserGetKeyboardLayoutList( - ULONG nItems, - HKL *pHklBuff); + ULONG nItems, + HKL *pHklBuff); BOOL NTAPI NtUserGetKeyboardLayoutName( - LPWSTR lpszName); + _Inout_ PUNICODE_STRING pustrName); DWORD NTAPI NtUserGetKeyboardState( - LPBYTE Unknown0); + LPBYTE Unknown0); DWORD NTAPI NtUserGetKeyboardType( - DWORD TypeFlag); + DWORD TypeFlag); DWORD NTAPI -NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ); +NtUserGetKeyNameText( + LONG lParam, + LPWSTR lpString, + int nSize); SHORT NTAPI NtUserGetKeyState( - INT VirtKey); + INT VirtKey); BOOL NTAPI @@ -2120,31 +2374,33 @@ NtUserGetLayeredWindowAttributes( DWORD NTAPI NtUserGetListBoxInfo( - HWND hWnd); + HWND hWnd); -BOOL APIENTRY -NtUserGetMessage(PMSG pMsg, - HWND hWnd, - UINT MsgFilterMin, - UINT MsgFilterMax); +BOOL +APIENTRY +NtUserGetMessage( + PMSG pMsg, + HWND hWnd, + UINT MsgFilterMin, + UINT MsgFilterMax); DWORD NTAPI NtUserGetMouseMovePointsEx( - UINT cbSize, - LPMOUSEMOVEPOINT lppt, - LPMOUSEMOVEPOINT lpptBuf, - int nBufPoints, - DWORD resolution); + UINT cbSize, + LPMOUSEMOVEPOINT lppt, + LPMOUSEMOVEPOINT lpptBuf, + int nBufPoints, + DWORD resolution); BOOL NTAPI NtUserGetObjectInformation( - HANDLE hObject, - DWORD nIndex, - PVOID pvInformation, - DWORD nLength, - PDWORD nLengthNeeded); + HANDLE hObject, + DWORD nIndex, + PVOID pvInformation, + DWORD nLength, + PDWORD nLengthNeeded); HWND NTAPI @@ -2153,8 +2409,8 @@ NtUserGetOpenClipboardWindow(VOID); INT NTAPI NtUserGetPriorityClipboardFormat( - UINT *paFormatPriorityList, - INT cFormats); + UINT *paFormatPriorityList, + INT cFormats); HWINSTA NTAPI @@ -2170,11 +2426,11 @@ NtUserGetRawInputBuffer( DWORD NTAPI NtUserGetRawInputData( - HRAWINPUT hRawInput, - UINT uiCommand, - LPVOID pData, - PUINT pcbSize, - UINT cbSizeHeader); + HRAWINPUT hRawInput, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize, + UINT cbSizeHeader); DWORD NTAPI @@ -2201,70 +2457,82 @@ NtUserGetRegisteredRawInputDevices( BOOL NTAPI NtUserGetScrollBarInfo( - HWND hWnd, - LONG idObject, - PSCROLLBARINFO psbi); + HWND hWnd, + LONG idObject, + PSCROLLBARINFO psbi); HDESK NTAPI NtUserGetThreadDesktop( - DWORD dwThreadId, - DWORD Unknown1); - + DWORD dwThreadId, + HDESK hConsoleDesktop); enum ThreadStateRoutines { - THREADSTATE_GETTHREADINFO, - THREADSTATE_INSENDMESSAGE, - THREADSTATE_FOCUSWINDOW, + THREADSTATE_FOCUSWINDOW = 0, THREADSTATE_ACTIVEWINDOW, THREADSTATE_CAPTUREWINDOW, - THREADSTATE_PROGMANWINDOW, - THREADSTATE_TASKMANWINDOW, - THREADSTATE_GETMESSAGETIME, + THREADSTATE_DEFAULTIMEWINDOW, + THREADSTATE_DEFAULTINPUTCONTEXT, THREADSTATE_GETINPUTSTATE, + THREADSTATE_GETCURSOR, + THREADSTATE_CHANGEBITS, THREADSTATE_UPTIMELASTREAD, + THREADSTATE_GETMESSAGEEXTRAINFO, + THREADSTATE_INSENDMESSAGE, + THREADSTATE_GETMESSAGETIME, THREADSTATE_FOREGROUNDTHREAD, - THREADSTATE_GETCURSOR + THREADSTATE_IMECOMPATFLAGS, + THREADSTATE_OLDKEYBOARDLAYOUT, + THREADSTATE_ISWINLOGON, + THREADSTATE_ISWINLOGON2, + THREADSTATE_CHECKCONIME, + THREADSTATE_GETTHREADINFO, + THREADSTATE_PROGMANWINDOW, /* FIXME: Delete this HACK */ + THREADSTATE_TASKMANWINDOW, /* FIXME: Delete this HACK */ }; DWORD_PTR NTAPI NtUserGetThreadState( - DWORD Routine); + DWORD Routine); BOOLEAN NTAPI NtUserGetTitleBarInfo( - HWND hwnd, - PTITLEBARINFO pti); + HWND hwnd, + PTITLEBARINFO pti); -BOOL NTAPI -NtUserGetUpdateRect(HWND hWnd, LPRECT lpRect, BOOL fErase); +BOOL +NTAPI +NtUserGetUpdateRect( + HWND hWnd, + LPRECT lpRect, + BOOL fErase); -int +INT NTAPI NtUserGetUpdateRgn( - HWND hWnd, - HRGN hRgn, - BOOL bErase); + HWND hWnd, + HRGN hRgn, + BOOL bErase); HDC NTAPI NtUserGetWindowDC( - HWND hWnd); + HWND hWnd); BOOL NTAPI NtUserGetWindowPlacement( - HWND hWnd, - WINDOWPLACEMENT *lpwndpl); + HWND hWnd, + WINDOWPLACEMENT *lpwndpl); PCLS NTAPI NtUserGetWOWClass( - HINSTANCE hInstance, - PUNICODE_STRING ClassName); + HINSTANCE hInstance, + PUNICODE_STRING ClassName); DWORD NTAPI @@ -2276,46 +2544,46 @@ NtUserHardErrorControl( BOOL NTAPI NtUserImpersonateDdeClientWindow( - HWND hWndClient, - HWND hWndServer); + HWND hWndClient, + HWND hWndServer); NTSTATUS NTAPI NtUserInitialize( - DWORD dwWinVersion, - HANDLE hPowerRequestEvent, - HANDLE hMediaRequestEvent); + DWORD dwWinVersion, + HANDLE hPowerRequestEvent, + HANDLE hMediaRequestEvent); NTSTATUS NTAPI NtUserInitializeClientPfnArrays( - PPFNCLIENT pfnClientA, - PPFNCLIENT pfnClientW, - PPFNCLIENTWORKER pfnClientWorker, - HINSTANCE hmodUser); + PPFNCLIENT pfnClientA, + PPFNCLIENT pfnClientW, + PPFNCLIENTWORKER pfnClientWorker, + HINSTANCE hmodUser); DWORD NTAPI NtUserInitTask( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3, - DWORD Unknown4, - DWORD Unknown5, - DWORD Unknown6, - DWORD Unknown7, - DWORD Unknown8, - DWORD Unknown9, - DWORD Unknown10, - DWORD Unknown11); + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6, + DWORD Unknown7, + DWORD Unknown8, + DWORD Unknown9, + DWORD Unknown10, + DWORD Unknown11); INT NTAPI NtUserInternalGetWindowText( - HWND hWnd, - LPWSTR lpString, - INT nMaxCount); + HWND hWnd, + LPWSTR lpString, + INT nMaxCount); BOOL NTAPI @@ -2334,36 +2602,34 @@ NtUserInvalidateRgn( BOOL NTAPI NtUserIsClipboardFormatAvailable( - UINT format); + UINT format); BOOL NTAPI -NtUserKillTimer -( - HWND hWnd, - UINT_PTR uIDEvent -); +NtUserKillTimer( + HWND hWnd, + UINT_PTR uIDEvent); HKL NTAPI NtUserLoadKeyboardLayoutEx( - IN HANDLE Handle, - IN DWORD offTable, - IN PUNICODE_STRING puszKeyboardName, - IN HKL hKL, - IN PUNICODE_STRING puszKLID, - IN DWORD dwKLID, - IN UINT Flags); + IN HANDLE hFile, + IN DWORD offTable, + IN PVOID pTables, + IN HKL hOldKL, + IN PUNICODE_STRING puszKLID, + IN DWORD dwNewKL, + IN UINT Flags); BOOL NTAPI NtUserLockWindowStation( - HWINSTA hWindowStation); + HWINSTA hWindowStation); BOOL NTAPI NtUserLockWindowUpdate( - HWND hWnd); + HWND hWnd); BOOL NTAPI @@ -2371,35 +2637,36 @@ NtUserLockWorkStation(VOID); UINT NTAPI -NtUserMapVirtualKeyEx( UINT keyCode, - UINT transType, - DWORD keyboardId, - HKL dwhkl ); +NtUserMapVirtualKeyEx( + UINT keyCode, + UINT transType, + DWORD keyboardId, + HKL dwhkl); typedef struct tagDOSENDMESSAGE { - UINT uFlags; - UINT uTimeout; - ULONG_PTR Result; + UINT uFlags; + UINT uTimeout; + ULONG_PTR Result; } DOSENDMESSAGE, *PDOSENDMESSAGE; BOOL NTAPI NtUserMessageCall( - HWND hWnd, - UINT Msg, - WPARAM wParam, - LPARAM lParam, - ULONG_PTR ResultInfo, - DWORD dwType, // FNID_XX types - BOOL Ansi); + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + ULONG_PTR ResultInfo, + DWORD dwType, /* FNID_XX types */ + BOOL Ansi); DWORD NTAPI NtUserMinMaximize( HWND hWnd, - UINT cmd, // Wine SW_ commands + UINT cmd, /* Wine SW_ commands */ BOOL Hide); DWORD @@ -2409,14 +2676,14 @@ NtUserMNDragLeave(VOID); DWORD NTAPI NtUserMNDragOver( - DWORD Unknown0, - DWORD Unknown1); + DWORD Unknown0, + DWORD Unknown1); DWORD NTAPI NtUserModifyUserStartupInfoFlags( - DWORD Unknown0, - DWORD Unknown1); + DWORD Unknown0, + DWORD Unknown1); BOOL NTAPI @@ -2431,146 +2698,148 @@ NtUserMoveWindow( DWORD NTAPI -NtUserNotifyIMEStatus( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2); +NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion); -DWORD +BOOL NTAPI NtUserNotifyProcessCreate( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3, - DWORD dwUnknown4); + HANDLE NewProcessId, + HANDLE ParentThreadId, + ULONG dwUnknown, + ULONG CreateFlags); VOID NTAPI NtUserNotifyWinEvent( - DWORD Event, - HWND hWnd, - LONG idObject, - LONG idChild); + DWORD Event, + HWND hWnd, + LONG idObject, + LONG idChild); BOOL NTAPI NtUserOpenClipboard( - HWND hWnd, - DWORD Unknown1); + HWND hWnd, + DWORD Unknown1); HDESK NTAPI NtUserOpenDesktop( - POBJECT_ATTRIBUTES ObjectAttributes, - DWORD dwFlags, - ACCESS_MASK dwDesiredAccess); + POBJECT_ATTRIBUTES ObjectAttributes, + DWORD dwFlags, + ACCESS_MASK dwDesiredAccess); HDESK NTAPI NtUserOpenInputDesktop( - DWORD dwFlags, - BOOL fInherit, - ACCESS_MASK dwDesiredAccess); + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); HWINSTA NTAPI NtUserOpenWindowStation( - POBJECT_ATTRIBUTES ObjectAttributes, - ACCESS_MASK dwDesiredAccess); + POBJECT_ATTRIBUTES ObjectAttributes, + ACCESS_MASK dwDesiredAccess); BOOL NTAPI NtUserPaintDesktop( - HDC hDC); + HDC hDC); DWORD NTAPI NtUserPaintMenuBar( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3, - DWORD dwUnknown4, - DWORD dwUnknown5, - DWORD dwUnknown6); + HWND hWnd, + HDC hDC, + ULONG left, // x, + ULONG right, // width, // Scale the edge thickness, offset? + ULONG top, // y, + BOOL bActive); // DWORD Flags); DC_ACTIVE or WS_ACTIVECAPTION, by checking WNDS_ACTIVEFRAME and foreground. -BOOL APIENTRY -NtUserPeekMessage( PMSG pMsg, - HWND hWnd, - UINT MsgFilterMin, - UINT MsgFilterMax, - UINT RemoveMsg); +BOOL +APIENTRY +NtUserPeekMessage( + PMSG pMsg, + HWND hWnd, + UINT MsgFilterMin, + UINT MsgFilterMax, + UINT RemoveMsg); BOOL NTAPI NtUserPostMessage( - HWND hWnd, - UINT Msg, - WPARAM wParam, - LPARAM lParam); + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); BOOL NTAPI NtUserPostThreadMessage( - DWORD idThread, - UINT Msg, - WPARAM wParam, - LPARAM lParam); + DWORD idThread, + UINT Msg, + WPARAM wParam, + LPARAM lParam); BOOL NTAPI NtUserPrintWindow( HWND hwnd, - HDC hdcBlt, + HDC hdcBlt, UINT nFlags); NTSTATUS NTAPI NtUserProcessConnect( - IN HANDLE Process, + IN HANDLE ProcessHandle, OUT PUSERCONNECT pUserConnect, - IN DWORD dwSize); // sizeof(USERCONNECT) + IN ULONG Size); /* sizeof(USERCONNECT) */ -DWORD +NTSTATUS NTAPI NtUserQueryInformationThread( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3, - DWORD dwUnknown4, - DWORD dwUnknown5); + IN HANDLE ThreadHandle, + IN USERTHREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength); -DWORD +DWORD_PTR NTAPI NtUserQueryInputContext( - DWORD dwUnknown1, - DWORD dwUnknown2); + HIMC hIMC, + DWORD dwType); DWORD NTAPI NtUserQuerySendMessage( - DWORD Unknown0); + DWORD Unknown0); DWORD NTAPI NtUserQueryUserCounters( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3, - DWORD Unknown4); + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4); + +#define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00 +#define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01 +#define QUERY_WINDOW_ACTIVE 0x02 +#define QUERY_WINDOW_FOCUS 0x03 +#define QUERY_WINDOW_ISHUNG 0x04 +#define QUERY_WINDOW_REAL_ID 0x05 +#define QUERY_WINDOW_FOREGROUND 0x06 +#define QUERY_WINDOW_DEFAULT_IME 0x07 +#define QUERY_WINDOW_DEFAULT_ICONTEXT 0x08 +#define QUERY_WINDOW_ACTIVE_IME 0x09 -#define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00 -#define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01 -#define QUERY_WINDOW_ACTIVE 0x02 -#define QUERY_WINDOW_FOCUS 0x03 -#define QUERY_WINDOW_ISHUNG 0x04 -#define QUERY_WINDOW_REAL_ID 0x05 -#define QUERY_WINDOW_FOREGROUND 0x06 -DWORD +DWORD_PTR NTAPI NtUserQueryWindow( - HWND hWnd, - DWORD Index); + HWND hWnd, + DWORD Index); BOOL NTAPI @@ -2597,20 +2866,18 @@ NtUserRealWaitMessageEx( BOOL NTAPI -NtUserRedrawWindow -( - HWND hWnd, - CONST RECT *lprcUpdate, - HRGN hrgnUpdate, - UINT flags -); +NtUserRedrawWindow( + HWND hWnd, + CONST RECT *lprcUpdate, + HRGN hrgnUpdate, + UINT flags); RTL_ATOM NTAPI NtUserRegisterClassExWOW( WNDCLASSEXW* lpwcx, PUNICODE_STRING pustrClassName, - PUNICODE_STRING pustrCNVersion, + PUNICODE_STRING pustrCVersion, PCLSMENUNAME pClassMenuName, DWORD fnID, DWORD Flags, @@ -2633,18 +2900,21 @@ NtUserRegisterUserApiHook( BOOL NTAPI -NtUserRegisterHotKey(HWND hWnd, - int id, - UINT fsModifiers, - UINT vk); +NtUserRegisterHotKey( + HWND hWnd, + int id, + UINT fsModifiers, + UINT vk); DWORD NTAPI NtUserRegisterTasklist( - DWORD Unknown0); + DWORD Unknown0); -UINT NTAPI -NtUserRegisterWindowMessage(PUNICODE_STRING MessageName); +UINT +NTAPI +NtUserRegisterWindowMessage( + PUNICODE_STRING MessageName); DWORD NTAPI @@ -2669,123 +2939,137 @@ DWORD NTAPI NtUserRemoteStopScreenUpdates(VOID); -HANDLE NTAPI -NtUserRemoveProp(HWND hWnd, ATOM Atom); +HANDLE +NTAPI +NtUserRemoveProp( + HWND hWnd, + ATOM Atom); -DWORD +HDESK NTAPI NtUserResolveDesktop( - DWORD dwUnknown1, - DWORD dwUnknown2, - DWORD dwUnknown3, - DWORD dwUnknown4); + IN HANDLE ProcessHandle, + IN PUNICODE_STRING DesktopPath, + IN BOOL bInherit, + OUT HWINSTA* phWinSta); DWORD NTAPI NtUserResolveDesktopForWOW( - DWORD Unknown0); + DWORD Unknown0); BOOL NTAPI NtUserSBGetParms( - HWND hwnd, - int fnBar, - PSBDATA pSBData, - LPSCROLLINFO lpsi); + HWND hwnd, + int fnBar, + PSBDATA pSBData, + LPSCROLLINFO lpsi); BOOL NTAPI NtUserScrollDC( - HDC hDC, - int dx, - int dy, - CONST RECT *lprcScroll, - CONST RECT *lprcClip , - HRGN hrgnUpdate, - LPRECT lprcUpdate); - -DWORD NTAPI -NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *rect, - const RECT *clipRect, HRGN hrgnUpdate, LPRECT rcUpdate, UINT flags); + HDC hDC, + int dx, + int dy, + CONST RECT *lprcScroll, + CONST RECT *lprcClip , + HRGN hrgnUpdate, + LPRECT lprcUpdate); + +DWORD +NTAPI +NtUserScrollWindowEx( + HWND hWnd, + INT dx, + INT dy, + const RECT *rect, + const RECT *clipRect, + HRGN hrgnUpdate, + LPRECT rcUpdate, + UINT flags); UINT NTAPI NtUserSendInput( - UINT nInputs, - LPINPUT pInput, - INT cbSize); + UINT nInputs, + LPINPUT pInput, + INT cbSize); -HWND NTAPI -NtUserSetActiveWindow(HWND Wnd); +HWND +NTAPI +NtUserSetActiveWindow( + HWND Wnd); -DWORD +BOOL NTAPI NtUserSetAppImeLevel( - DWORD dwUnknown1, - DWORD dwUnknown2); + HWND hWnd, + DWORD dwLevel); -HWND NTAPI -NtUserSetCapture(HWND Wnd); +HWND +NTAPI +NtUserSetCapture( + HWND Wnd); -ULONG_PTR NTAPI +ULONG_PTR +NTAPI NtUserSetClassLong( - HWND hWnd, - INT Offset, - ULONG_PTR dwNewLong, - BOOL Ansi ); + HWND hWnd, + INT Offset, + ULONG_PTR dwNewLong, + BOOL Ansi); WORD NTAPI NtUserSetClassWord( - HWND hWnd, - INT nIndex, - WORD wNewWord); + HWND hWnd, + INT nIndex, + WORD wNewWord); HANDLE NTAPI NtUserSetClipboardData( - UINT fmt, - HANDLE hMem, - PSETCLIPBDATA scd); + UINT fmt, + HANDLE hMem, + PSETCLIPBDATA scd); HWND NTAPI NtUserSetClipboardViewer( - HWND hWndNewViewer); + HWND hWndNewViewer); HPALETTE NTAPI NtUserSelectPalette( HDC hDC, - HPALETTE hpal, - BOOL ForceBackground -); + HPALETTE hpal, + BOOL ForceBackground); DWORD NTAPI NtUserSetConsoleReserveKeys( - DWORD Unknown0, - DWORD Unknown1); + DWORD Unknown0, + DWORD Unknown1); HCURSOR NTAPI NtUserSetCursor( - HCURSOR hCursor); + HCURSOR hCursor); BOOL NTAPI NtUserSetCursorContents( - HANDLE Handle, - PICONINFO IconInfo); + HANDLE Handle, + PICONINFO IconInfo); -#ifdef NEW_CURSORICON BOOL NTAPI NtUserSetCursorIconData( - _In_ HCURSOR hCursor, - _In_ PUNICODE_STRING pustrModule, - _In_ PUNICODE_STRING puSrcName, - _In_ PCURSORDATA pCursorData); + _In_ HCURSOR hCursor, + _In_opt_ PUNICODE_STRING pustrModule, + _In_opt_ PUNICODE_STRING puSrcName, + _In_ const CURSORDATA *pCursorData); typedef struct _tagFINDEXISTINGCURICONPARAM { @@ -2797,59 +3081,48 @@ typedef struct _tagFINDEXISTINGCURICONPARAM HICON NTAPI NtUserFindExistingCursorIcon( - _In_ PUNICODE_STRING pustrModule, - _In_ PUNICODE_STRING pustrRsrc, - _In_ FINDEXISTINGCURICONPARAM* param); -#else -BOOL -NTAPI -NtUserSetCursorIconData( - HANDLE Handle, - PBOOL fIcon, - POINT *Hotspot, - HMODULE hModule, - HRSRC hRsrc, - HRSRC hGroupRsrc); + _In_ PUNICODE_STRING pustrModule, + _In_ PUNICODE_STRING pustrRsrc, + _In_ FINDEXISTINGCURICONPARAM *param); -HICON -NTAPI -NtUserFindExistingCursorIcon( - HMODULE hModule, - HRSRC hRsrc, - LONG cx, - LONG cy); -#endif +LONG_PTR +APIENTRY +NtUserSetClassLongPtr( + VOID); DWORD NTAPI NtUserSetDbgTag( - DWORD Unknown0, - DWORD Unknown1); + DWORD Unknown0, + DWORD Unknown1); + +DWORD +APIENTRY +NtUserSetDbgTagCount( + DWORD Unknown0); HWND NTAPI NtUserSetFocus( - HWND hWnd); + HWND hWnd); -DWORD +BOOL NTAPI NtUserSetImeHotKey( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3, - DWORD Unknown4); + DWORD dwHotKeyId, + UINT uModifiers, + UINT uVirtualKey, + HKL hKL, + DWORD dwAction); -DWORD +BOOL NTAPI NtUserSetImeInfoEx( - DWORD dwUnknown1); + PIMEINFOEX pImeInfoEx); -DWORD +BOOL NTAPI -NtUserSetImeOwnerWindow( - DWORD Unknown0, - DWORD Unknown1); +NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus); DWORD NTAPI @@ -2865,231 +3138,246 @@ NtUserSetInformationThread( IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, - IN ULONG ThreadInformationLength -); + IN ULONG ThreadInformationLength); DWORD NTAPI NtUserSetInternalWindowPos( - HWND hwnd, - UINT showCmd, - LPRECT rect, - LPPOINT pt); + HWND hwnd, + UINT showCmd, + LPRECT rect, + LPPOINT pt); BOOL NTAPI NtUserSetKeyboardState( - LPBYTE lpKeyState); + LPBYTE lpKeyState); BOOL NTAPI NtUserSetLayeredWindowAttributes( - HWND hwnd, - COLORREF crKey, - BYTE bAlpha, - DWORD dwFlags); + HWND hwnd, + COLORREF crKey, + BYTE bAlpha, + DWORD dwFlags); BOOL NTAPI NtUserSetLogonNotifyWindow( - HWND hWnd); + HWND hWnd); BOOL NTAPI NtUserSetObjectInformation( - HANDLE hObject, - DWORD nIndex, - PVOID pvInformation, - DWORD nLength); + HANDLE hObject, + DWORD nIndex, + PVOID pvInformation, + DWORD nLength); HWND NTAPI NtUserSetParent( - HWND hWndChild, - HWND hWndNewParent); + HWND hWndChild, + HWND hWndNewParent); BOOL NTAPI NtUserSetProcessWindowStation( - HWINSTA hWindowStation); + HWINSTA hWindowStation); -BOOL NTAPI -NtUserSetProp(HWND hWnd, ATOM Atom, HANDLE Data); +BOOL +NTAPI +NtUserSetProp( + HWND hWnd, + ATOM Atom, + HANDLE Data); DWORD NTAPI NtUserSetRipFlags( - DWORD Unknown0, - DWORD Unknown1); + DWORD Unknown0); DWORD NTAPI NtUserSetScrollInfo( - HWND hwnd, - int fnBar, - LPCSCROLLINFO lpsi, - BOOL bRedraw); + HWND hwnd, + int fnBar, + LPCSCROLLINFO lpsi, + BOOL bRedraw); BOOL NTAPI NtUserSetShellWindowEx( - HWND hwndShell, - HWND hwndShellListView); + HWND hwndShell, + HWND hwndShellListView); BOOL NTAPI NtUserSetSysColors( - int cElements, - IN CONST INT *lpaElements, - IN CONST COLORREF *lpaRgbValues, - FLONG Flags); + int cElements, + IN CONST INT *lpaElements, + IN CONST COLORREF *lpaRgbValues, + FLONG Flags); BOOL NTAPI NtUserSetSystemCursor( - HCURSOR hcur, - DWORD id); + HCURSOR hcur, + DWORD id); BOOL NTAPI NtUserSetThreadDesktop( - HDESK hDesktop); + HDESK hDesktop); DWORD NTAPI NtUserSetThreadState( - DWORD Unknown0, - DWORD Unknown1); + DWORD Unknown0, + DWORD Unknown1); UINT_PTR NTAPI -NtUserSetSystemTimer -( - HWND hWnd, - UINT_PTR nIDEvent, - UINT uElapse, - TIMERPROC lpTimerFunc -); +NtUserSetSystemTimer( + HWND hWnd, + UINT_PTR nIDEvent, + UINT uElapse, + TIMERPROC lpTimerFunc); DWORD NTAPI -NtUserSetThreadLayoutHandles( - DWORD dwUnknown1, - DWORD dwUnknown2); +NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL); UINT_PTR NTAPI -NtUserSetTimer -( - HWND hWnd, - UINT_PTR nIDEvent, - UINT uElapse, - TIMERPROC lpTimerFunc -); +NtUserSetTimer( + HWND hWnd, + UINT_PTR nIDEvent, + UINT uElapse, + TIMERPROC lpTimerFunc); BOOL NTAPI NtUserSetWindowFNID( - HWND hWnd, - WORD fnID); + HWND hWnd, + WORD fnID); LONG NTAPI NtUserSetWindowLong( - HWND hWnd, - DWORD Index, - LONG NewValue, - BOOL Ansi); + HWND hWnd, + DWORD Index, + LONG NewValue, + BOOL Ansi); + +#ifdef _WIN64 +LONG_PTR +NTAPI +NtUserSetWindowLongPtr( + HWND hWnd, + DWORD Index, + LONG_PTR NewValue, + BOOL Ansi); +#else +#define NtUserSetWindowLongPtr NtUserSetWindowLong +#endif // _WIN64 BOOL NTAPI NtUserSetWindowPlacement( - HWND hWnd, - WINDOWPLACEMENT *lpwndpl); + HWND hWnd, + WINDOWPLACEMENT *lpwndpl); BOOL -NTAPI NtUserSetWindowPos( +NTAPI +NtUserSetWindowPos( HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, - UINT uFlags -); + UINT uFlags); INT NTAPI NtUserSetWindowRgn( - HWND hWnd, - HRGN hRgn, - BOOL bRedraw); + HWND hWnd, + HRGN hRgn, + BOOL bRedraw); HHOOK NTAPI NtUserSetWindowsHookAW( - int idHook, - HOOKPROC lpfn, - BOOL Ansi); + int idHook, + HOOKPROC lpfn, + BOOL Ansi); HHOOK NTAPI NtUserSetWindowsHookEx( - HINSTANCE Mod, - PUNICODE_STRING ModuleName, - DWORD ThreadId, - int HookId, - HOOKPROC HookProc, - BOOL Ansi); + HINSTANCE Mod, + PUNICODE_STRING ModuleName, + DWORD ThreadId, + int HookId, + HOOKPROC HookProc, + BOOL Ansi); -DWORD +BOOL NTAPI NtUserSetWindowStationUser( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3); + IN HWINSTA hWindowStation, + IN PLUID pluid, + IN PSID psid OPTIONAL, + IN DWORD size); -WORD NTAPI -NtUserSetWindowWord(HWND hWnd, INT Index, WORD NewVal); +WORD +NTAPI +NtUserSetWindowWord( + HWND hWnd, + INT Index, + WORD NewVal); HWINEVENTHOOK NTAPI NtUserSetWinEventHook( - UINT eventMin, - UINT eventMax, - HMODULE hmodWinEventProc, - PUNICODE_STRING puString, - WINEVENTPROC lpfnWinEventProc, - DWORD idProcess, - DWORD idThread, - UINT dwflags); + UINT eventMin, + UINT eventMax, + HMODULE hmodWinEventProc, + PUNICODE_STRING puString, + WINEVENTPROC lpfnWinEventProc, + DWORD idProcess, + DWORD idThread, + UINT dwflags); BOOL NTAPI NtUserShowCaret( - HWND hWnd); + HWND hWnd); BOOL NTAPI NtUserHideCaret( - HWND hWnd); + HWND hWnd); DWORD NTAPI -NtUserShowScrollBar(HWND hWnd, int wBar, DWORD bShow); +NtUserShowScrollBar( + HWND hWnd, + int wBar, + DWORD bShow); BOOL NTAPI NtUserShowWindow( - HWND hWnd, - LONG nCmdShow); + HWND hWnd, + LONG nCmdShow); BOOL NTAPI NtUserShowWindowAsync( - HWND hWnd, - LONG nCmdShow); + HWND hWnd, + LONG nCmdShow); BOOL NTAPI @@ -3098,15 +3386,15 @@ NtUserSoundSentry(VOID); BOOL NTAPI NtUserSwitchDesktop( - HDESK hDesktop); + HDESK hDesktop); BOOL NTAPI NtUserSystemParametersInfo( - UINT uiAction, - UINT uiParam, - PVOID pvParam, - UINT fWinIni); + UINT uiAction, + UINT uiParam, + PVOID pvParam, + UINT fWinIni); DWORD NTAPI @@ -3116,114 +3404,114 @@ NtUserTestForInteractiveUser( INT NTAPI NtUserToUnicodeEx( - UINT wVirtKey, - UINT wScanCode, - PBYTE lpKeyState, - LPWSTR pwszBuff, - int cchBuff, - UINT wFlags, - HKL dwhkl ); + UINT wVirtKey, + UINT wScanCode, + PBYTE lpKeyState, + LPWSTR pwszBuff, + int cchBuff, + UINT wFlags, + HKL dwhkl); BOOL NTAPI NtUserTrackMouseEvent( - LPTRACKMOUSEEVENT lpEventTrack); + LPTRACKMOUSEEVENT lpEventTrack); int NTAPI NtUserTranslateAccelerator( - HWND Window, - HACCEL Table, - LPMSG Message); + HWND Window, + HACCEL Table, + LPMSG Message); BOOL NTAPI NtUserTranslateMessage( - LPMSG lpMsg, - UINT flags ); + LPMSG lpMsg, + UINT flags ); BOOL NTAPI NtUserUnhookWindowsHookEx( - HHOOK Hook); + HHOOK Hook); BOOL NTAPI NtUserUnhookWinEvent( - HWINEVENTHOOK hWinEventHook); + HWINEVENTHOOK hWinEventHook); BOOL NTAPI NtUserUnloadKeyboardLayout( - HKL hKl); + HKL hKl); BOOL NTAPI NtUserUnlockWindowStation( - HWINSTA hWindowStation); + HWINSTA hWindowStation); BOOL NTAPI NtUserUnregisterClass( - PUNICODE_STRING ClassNameOrAtom, - HINSTANCE hInstance, - PCLSMENUNAME pClassMenuName); + PUNICODE_STRING ClassNameOrAtom, + HINSTANCE hInstance, + PCLSMENUNAME pClassMenuName); BOOL NTAPI -NtUserUnregisterHotKey(HWND hWnd, - int id); +NtUserUnregisterHotKey( + HWND hWnd, + int id); BOOL NTAPI NtUserUnregisterUserApiHook(VOID); -DWORD +BOOL NTAPI NtUserUpdateInputContext( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2); + HIMC hIMC, + DWORD dwType, + DWORD_PTR dwValue); DWORD NTAPI NtUserUpdateInstance( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2); + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2); BOOL NTAPI NtUserUpdateLayeredWindow( - HWND hwnd, - HDC hdcDst, - POINT *pptDst, - SIZE *psize, - HDC hdcSrc, - POINT *pptSrc, - COLORREF crKey, - BLENDFUNCTION *pblend, - DWORD dwFlags, - RECT *prcDirty); + HWND hwnd, + HDC hdcDst, + POINT *pptDst, + SIZE *psize, + HDC hdcSrc, + POINT *pptSrc, + COLORREF crKey, + BLENDFUNCTION *pblend, + DWORD dwFlags, + RECT *prcDirty); BOOL NTAPI NtUserUpdatePerUserSystemParameters( - DWORD dwReserved, - BOOL bEnable); + DWORD dwReserved, + BOOL bEnable); BOOL NTAPI NtUserUserHandleGrantAccess( - IN HANDLE hUserHandle, - IN HANDLE hJob, - IN BOOL bGrant); + IN HANDLE hUserHandle, + IN HANDLE hJob, + IN BOOL bGrant); BOOL NTAPI NtUserValidateHandleSecure( - HANDLE hHdl, - BOOL Restricted); + HANDLE hHdl); BOOL NTAPI @@ -3234,28 +3522,26 @@ NtUserValidateRect( BOOL APIENTRY NtUserValidateTimerCallback( - HWND hWnd, - WPARAM wParam, LPARAM lParam); DWORD NTAPI NtUserVkKeyScanEx( - WCHAR wChar, - HKL KeyboardLayout, - BOOL bUsehHK); + WCHAR wChar, + HKL KeyboardLayout, + BOOL bUsehHK); DWORD NTAPI NtUserWaitForInputIdle( - IN HANDLE hProcess, - IN DWORD dwMilliseconds, - IN BOOL Unknown2); // Always FALSE + IN HANDLE hProcess, + IN DWORD dwMilliseconds, + IN BOOL bSharedWow); /* Always FALSE */ DWORD NTAPI NtUserWaitForMsgAndEvent( - DWORD Unknown0); + DWORD Unknown0); BOOL NTAPI @@ -3264,188 +3550,83 @@ NtUserWaitMessage(VOID); DWORD NTAPI NtUserWin32PoolAllocationStats( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3, - DWORD Unknown4, - DWORD Unknown5); - -HWND -NTAPI -NtUserWindowFromPhysicalPoint( - POINT Point); + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5); HWND NTAPI NtUserWindowFromPoint( - LONG X, - LONG Y); + LONG X, + LONG Y); DWORD NTAPI NtUserYieldTask(VOID); -/* lParam of DDE messages */ -typedef struct tagKMDDEEXECUTEDATA -{ - HWND Sender; - HGLOBAL ClientMem; - /* BYTE Data[DataSize] */ -} KMDDEEXECUTEDATA, *PKMDDEEXECUTEDATA; - -typedef struct tagKMDDELPARAM -{ - UINT_PTR uiLo; - UINT_PTR uiHi; -} KMDDELPARAM, *PKMDDELPARAM; - - - - - /* NtUserBad * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist. */ -#define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005 -#define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008 -#define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008 -#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d -#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e -#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050 -#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052 - #define MSQ_STATE_CAPTURE 0x1 - #define MSQ_STATE_ACTIVE 0x2 - #define MSQ_STATE_FOCUS 0x3 - #define MSQ_STATE_MENUOWNER 0x4 - #define MSQ_STATE_MOVESIZE 0x5 - #define MSQ_STATE_CARET 0x6 -#define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060 -#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004 +#define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001 +#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d +#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e +#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050 +#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051 +#define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052 + +#define MSQ_STATE_CAPTURE 0x1 +#define MSQ_STATE_ACTIVE 0x2 +#define MSQ_STATE_FOCUS 0x3 +#define MSQ_STATE_MENUOWNER 0x4 +#define MSQ_STATE_MOVESIZE 0x5 +#define MSQ_STATE_CARET 0x6 + +#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005 -DWORD -NTAPI -NtUserBuildMenuItemList( - HMENU hMenu, - PVOID Buffer, - ULONG nBufSize, - DWORD Reserved); - -UINT -NTAPI -NtUserGetMenuDefaultItem( - HMENU hMenu, - UINT fByPos, - UINT gmdiFlags); - BOOL NTAPI NtUserGetMonitorInfo( - IN HMONITOR hMonitor, - OUT LPMONITORINFO pMonitorInfo); + IN HMONITOR hMonitor, + OUT LPMONITORINFO pMonitorInfo); /* Should be done in usermode */ -/* (other FocusedItem values give the position of the focused item) */ -#define NO_SELECTED_ITEM 0xffff - -typedef struct tagROSMENUINFO -{ - /* ----------- MENUINFO ----------- */ - DWORD cbSize; - DWORD fMask; - DWORD dwStyle; - UINT cyMax; - HBRUSH hbrBack; - DWORD dwContextHelpID; - ULONG_PTR dwMenuData; - /* ----------- Extra ----------- */ - HMENU Self; /* Handle of this menu */ - WORD Flags; /* Menu flags (MF_POPUP, MF_SYSMENU) */ - UINT FocusedItem; /* Currently focused item */ - UINT MenuItemCount; /* Number of items in the menu */ - HWND Wnd; /* Window containing the menu */ - WORD Width; /* Width of the whole menu */ - WORD Height; /* Height of the whole menu */ - HWND WndOwner; /* window receiving the messages for ownerdraw */ - BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */ - SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */ -} ROSMENUINFO, *PROSMENUINFO; - -BOOL -NTAPI -NtUserMenuInfo( - HMENU hmenu, - PROSMENUINFO lpmi, - BOOL fsog -); - -typedef struct tagROSMENUITEMINFO -{ - /* ----------- MENUITEMINFOW ----------- */ - UINT cbSize; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - LPWSTR dwTypeData; - UINT cch; - HBITMAP hbmpItem; - /* ----------- Extra ----------- */ - RECT Rect; /* Item area (relative to menu window) */ - UINT dxTab; /* X position of text after Tab */ - LPWSTR lpstr; /* Copy of the text pointer in MenuItem->Text */ -} ROSMENUITEMINFO, *PROSMENUITEMINFO; - -BOOL -NTAPI -NtUserMenuItemInfo( - HMENU hMenu, - UINT uItem, - BOOL fByPosition, - PROSMENUITEMINFO lpmii, - BOOL fsog -); - HMONITOR NTAPI NtUserMonitorFromPoint( - IN POINT point, - IN DWORD dwFlags); + IN POINT point, + IN DWORD dwFlags); HMONITOR NTAPI NtUserMonitorFromRect( - IN LPCRECT pRect, - IN DWORD dwFlags); + IN LPCRECT pRect, + IN DWORD dwFlags); HMONITOR NTAPI NtUserMonitorFromWindow( - IN HWND hWnd, - IN DWORD dwFlags); + IN HWND hWnd, + IN DWORD dwFlags); typedef struct _SETSCROLLBARINFO { - int nTrackPos; - int reserved; - DWORD rgstate[CCHILDREN_SCROLLBAR+1]; + int nTrackPos; + int reserved; + DWORD rgstate[CCHILDREN_SCROLLBAR + 1]; } SETSCROLLBARINFO, *PSETSCROLLBARINFO; BOOL NTAPI NtUserSetScrollBarInfo( - HWND hwnd, - LONG idObject, - SETSCROLLBARINFO *info); - - + HWND hwnd, + LONG idObject, + SETSCROLLBARINFO *info); #endif /* __WIN32K_NTUSER_H */