X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=win32ss%2Finclude%2Fntuser.h;h=7c30a21d54d14ce7c39d218d396b3adb9fefb74b;hp=cc454ba1e2c99a3a00f755b41cd7ce798863cfbc;hb=HEAD;hpb=97847f20780a79e8148d5d44641b97b634876e69 diff --git a/win32ss/include/ntuser.h b/win32ss/include/ntuser.h index cc454ba1e2c..6c5691bbe8d 100644 --- a/win32ss/include/ntuser.h +++ b/win32ss/include/ntuser.h @@ -6,9 +6,6 @@ struct _THREADINFO; struct _DESKTOP; struct _WND; struct tagPOPUPMENU; -#ifndef HIMC -typedef HANDLE HIMC; -#endif #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 */ @@ -129,6 +126,10 @@ RtlLargeStringToUnicodeString( #define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1) +/* + * DESKTOPINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/DESKTOP + */ typedef struct _DESKTOPINFO { PVOID pvDesktopBase; @@ -160,6 +161,10 @@ 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; @@ -190,6 +195,23 @@ typedef struct _THRDESKHEAD 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; @@ -206,6 +228,7 @@ typedef struct _PROCMARKHEAD } PROCMARKHEAD, *PPROCMARKHEAD; #define UserHMGetHandle(obj) ((obj)->head.h) +#define UserHMSetHandle(obj, handle) ((obj)->head.h = (handle)) /* Window Client Information structure */ struct _ETHREAD; @@ -280,9 +303,17 @@ typedef struct _CALLBACKWND #define CI_INITTHREAD 0x00000008 #define CI_CURTHPRHOOK 0x00000010 #define CI_CLASSESREGISTERED 0x00000020 -#define CI_IMMACTIVATE 0x00000040 -#define CI_TFSDISABLED 0x00000400 +#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; @@ -570,7 +601,7 @@ typedef struct _SBINFOEX 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 @@ -606,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 @@ -655,6 +686,10 @@ typedef struct _SBINFOEX #define WPF_MININIT 0x0008 #define WPF_MAXINIT 0x0010 +/* + * WND structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/WND + */ typedef struct _WND { THRDESKHEAD head; @@ -853,10 +888,11 @@ typedef LONG_PTR #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. */ @@ -912,7 +948,7 @@ typedef LONG_PTR #define SRVINFO_DBCSENABLED 0x0002 #define SRVINFO_IMM32 0x0004 #define SRVINFO_APIHOOK 0x0010 -#define SRVINFO_METRICS 0x0020 +#define SRVINFO_CICERO_ENABLED 0x0020 #define SRVINFO_KBDPREF 0x0080 #define NUM_SYSCOLORS 31 @@ -960,6 +996,10 @@ typedef struct tagDPISERVERINFO #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]; @@ -1002,6 +1042,10 @@ typedef struct _PERUSERSERVERINFO DWORD dwRIPFlags; } PERUSERSERVERINFO, *PPERUSERSERVERINFO; +/* + * SERVERINFO structure. + * See also: https://reactos.org/wiki/Techwiki:Win32k/SERVERINFO + */ typedef struct tagSERVERINFO { DWORD dwSRVIFlags; @@ -1077,13 +1121,17 @@ typedef struct _WNDMSG 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]; + 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; @@ -1158,33 +1206,9 @@ typedef struct tagCURSORDATA #define CURSORF_LINKED 0x0100 #define CURSORF_CURRENT 0x0200 -typedef struct tagIMEINFOEX -{ - HKL hkl; - IMEINFO ImeInfo; - WCHAR wszUIClass[16]; - ULONG fdwInitConvMode; - INT fInitOpen; - INT fLoadFlag; - DWORD dwProdVersion; - DWORD dwImeWinVersion; - WCHAR wszImeDescription[50]; - WCHAR wszImeFile[80]; - struct - { - INT fSysWow64Only:1; - INT fCUASLayer:1; - }; -} IMEINFOEX, *PIMEINFOEX; - -typedef enum IMEINFOEXCLASS -{ - ImeInfoExKeyboardLayout, - ImeInfoExImeWindow, - ImeInfoExImeFileName -} IMEINFOEXCLASS; - -#define IS_IME_HKL(hkl) ((((ULONG_PTR)(hkl)) & 0xF0000000) == 0xE0000000) +#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 { @@ -1193,7 +1217,7 @@ typedef struct tagIMEUI HWND hwndIMC; HKL hKL; HWND hwndUI; - INT nCntInIMEProc; + LONG nCntInIMEProc; struct { UINT fShowStatus:1; UINT fActivate:1; @@ -1203,29 +1227,23 @@ typedef struct tagIMEUI UINT fCtrlShowStatus:1; UINT fFreeActiveEvent:1; }; + DWORD dwLastStatus; } IMEUI, *PIMEUI; /* Window Extra data container. */ typedef struct _IMEWND { - WND; + 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 @@ -1249,7 +1267,7 @@ NtUserCtxDisplayIOCtl( DWORD dwUnknown1, DWORD dwUnknown2, DWORD dwUnknown3); - + DWORD APIENTRY NtUserDbgWin32HeapFail( @@ -1405,7 +1423,7 @@ NtUserTrackPopupMenuEx( HKL NTAPI NtUserActivateKeyboardLayout( - HKL hKl, + HKL hKL, ULONG Flags); DWORD @@ -1451,9 +1469,9 @@ NtUserBuildHwndList( HWND hwndParent, BOOLEAN bChildren, ULONG dwThreadId, - ULONG lParam, - HWND *pWnd, - ULONG *pBufSize); + ULONG cHwnd, + HWND *phwndList, + ULONG *pcHwndNeeded); NTSTATUS NTAPI @@ -1617,7 +1635,7 @@ enum SimpleCallRoutines HWNDLOCK_ROUTINE_SETSYSMENU, HWNDLOCK_ROUTINE_UPDATECKIENTRECT, HWNDLOCK_ROUTINE_UPDATEWINDOW, - X_ROUTINE_IMESHOWSTATUSCHANGE, + TWOPARAM_ROUTINE_IMESHOWSTATUSCHANGE, TWOPARAM_ROUTINE_ENABLEWINDOW, TWOPARAM_ROUTINE_REDRAWTITLE, TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS, @@ -1745,8 +1763,8 @@ NtUserCheckWindowThreadDesktop( DWORD NTAPI NtUserCheckImeHotKey( - DWORD dwUnknown1, - LPARAM dwUnknown2); + UINT uVirtualKey, + LPARAM lParam); HWND NTAPI NtUserChildWindowFromPointEx( @@ -1836,10 +1854,9 @@ NtUserCreateDesktop( DWORD dwFlags, ACCESS_MASK dwDesiredAccess); -DWORD +HIMC NTAPI -NtUserCreateInputContext( - DWORD dwUnknown1); +NtUserCreateInputContext(ULONG_PTR dwClientImcData); NTSTATUS NTAPI @@ -1931,20 +1948,19 @@ NtUserDestroyCursor( _In_ HANDLE Handle, _In_ BOOL bForce); -DWORD +BOOL NTAPI -NtUserDestroyInputContext( - DWORD dwUnknown1); +NtUserDestroyInputContext(HIMC hIMC); BOOLEAN NTAPI NtUserDestroyWindow( HWND Wnd); -DWORD +BOOL NTAPI NtUserDisableThreadIme( - DWORD dwUnknown1); + DWORD dwThreadID); LRESULT NTAPI @@ -2032,7 +2048,7 @@ BOOL NTAPI NtUserEndDeferWindowPosEx( HDWP WinPosInfo, - DWORD Unknown1); + BOOL bAsync); BOOL NTAPI @@ -2127,8 +2143,7 @@ NtUserGetAncestor( DWORD NTAPI -NtUserGetAppImeLevel( - DWORD dwUnknown1); +NtUserGetAppImeLevel(HWND hWnd); SHORT NTAPI @@ -2290,11 +2305,12 @@ NtUserGetIconSize( LONG *plcx, LONG *plcy); -BOOL NTAPI -NtUserGetImeHotKey(IN DWORD dwHotKey, - OUT LPUINT lpuModifiers, - OUT LPUINT lpuVKey, - OUT LPHKL lphKL); +BOOL +NTAPI +NtUserGetImeHotKey(DWORD dwHotKeyId, + LPUINT lpuModifiers, + LPUINT lpuVirtualKey, + LPHKL lphKL); BOOL NTAPI @@ -2323,7 +2339,7 @@ NtUserGetKeyboardLayoutList( BOOL NTAPI NtUserGetKeyboardLayoutName( - LPWSTR lpszName); + _Inout_ PUNICODE_STRING pustrName); DWORD NTAPI @@ -2453,20 +2469,27 @@ NtUserGetThreadDesktop( 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_UPTIMELASTREAD, - THREADSTATE_FOREGROUNDTHREAD, THREADSTATE_GETCURSOR, + THREADSTATE_CHANGEBITS, + THREADSTATE_UPTIMELASTREAD, THREADSTATE_GETMESSAGEEXTRAINFO, - THREADSTATE_UNKNOWN13 + THREADSTATE_INSENDMESSAGE, + THREADSTATE_GETMESSAGETIME, + THREADSTATE_FOREGROUNDTHREAD, + 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 @@ -2590,12 +2613,12 @@ NtUserKillTimer( HKL NTAPI NtUserLoadKeyboardLayoutEx( - IN HANDLE Handle, + IN HANDLE hFile, IN DWORD offTable, - IN PUNICODE_STRING puszKeyboardName, - IN HKL hKL, + IN PVOID pTables, + IN HKL hOldKL, IN PUNICODE_STRING puszKLID, - IN DWORD dwKLID, + IN DWORD dwNewKL, IN UINT Flags); BOOL @@ -2675,10 +2698,7 @@ NtUserMoveWindow( DWORD NTAPI -NtUserNotifyIMEStatus( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2); +NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion); BOOL NTAPI @@ -2734,7 +2754,7 @@ NtUserPaintMenuBar( HDC hDC, ULONG left, // x, ULONG right, // width, // Scale the edge thickness, offset? - ULONG top, // y, + ULONG top, // y, BOOL bActive); // DWORD Flags); DC_ACTIVE or WS_ACTIVECAPTION, by checking WNDS_ACTIVEFRAME and foreground. BOOL @@ -2784,11 +2804,11 @@ NtUserQueryInformationThread( OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength); -DWORD +DWORD_PTR NTAPI NtUserQueryInputContext( - DWORD dwUnknown1, - DWORD dwUnknown2); + HIMC hIMC, + DWORD dwType); DWORD NTAPI @@ -2981,11 +3001,11 @@ NTAPI NtUserSetActiveWindow( HWND Wnd); -DWORD +BOOL NTAPI NtUserSetAppImeLevel( - DWORD dwUnknown1, - DWORD dwUnknown2); + HWND hWnd, + DWORD dwLevel); HWND NTAPI @@ -3065,12 +3085,17 @@ NtUserFindExistingCursorIcon( _In_ PUNICODE_STRING pustrRsrc, _In_ FINDEXISTINGCURICONPARAM *param); +LONG_PTR +APIENTRY +NtUserSetClassLongPtr( + VOID); + DWORD NTAPI NtUserSetDbgTag( DWORD Unknown0, DWORD Unknown1); - + DWORD APIENTRY NtUserSetDbgTagCount( @@ -3081,25 +3106,23 @@ NTAPI NtUserSetFocus( 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( PIMEINFOEX pImeInfoEx); -DWORD +BOOL NTAPI -NtUserSetImeOwnerWindow( - DWORD Unknown0, - DWORD Unknown1); +NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus); DWORD NTAPI @@ -3223,9 +3246,7 @@ NtUserSetSystemTimer( DWORD NTAPI -NtUserSetThreadLayoutHandles( - DWORD dwUnknown1, - DWORD dwUnknown2); +NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL); UINT_PTR NTAPI @@ -3257,6 +3278,8 @@ NtUserSetWindowLongPtr( DWORD Index, LONG_PTR NewValue, BOOL Ansi); +#else +#define NtUserSetWindowLongPtr NtUserSetWindowLong #endif // _WIN64 BOOL @@ -3444,12 +3467,12 @@ BOOL NTAPI NtUserUnregisterUserApiHook(VOID); -DWORD +BOOL NTAPI NtUserUpdateInputContext( HIMC hIMC, - DWORD Unknown1, - LPVOID pClientImc); + DWORD dwType, + DWORD_PTR dwValue); DWORD NTAPI