mirror of
https://github.com/reactos/reactos.git
synced 2024-11-01 20:32:36 +00:00
3643 lines
72 KiB
C
3643 lines
72 KiB
C
#ifndef __WIN32K_NTUSER_H
|
|
#define __WIN32K_NTUSER_H
|
|
|
|
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 HANDLEENTRY_DESTROY 1
|
|
#define HANDLEENTRY_INDESTROY 2
|
|
|
|
typedef struct _USER_HANDLE_ENTRY
|
|
{
|
|
void *ptr; /* pointer to object */
|
|
union
|
|
{
|
|
PVOID pi;
|
|
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;
|
|
|
|
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;
|
|
|
|
typedef enum _HANDLE_TYPE
|
|
{
|
|
TYPE_FREE = 0,
|
|
TYPE_WINDOW = 1,
|
|
TYPE_MENU = 2,
|
|
TYPE_CURSOR = 3,
|
|
TYPE_SETWINDOWPOS = 4,
|
|
TYPE_HOOK = 5,
|
|
TYPE_CLIPDATA = 6,
|
|
TYPE_CALLPROC = 7,
|
|
TYPE_ACCELTABLE = 8,
|
|
TYPE_DDEACCESS = 9,
|
|
TYPE_DDECONV = 10,
|
|
TYPE_DDEXACT = 11,
|
|
TYPE_MONITOR = 12,
|
|
TYPE_KBDLAYOUT = 13,
|
|
TYPE_KBDFILE = 14,
|
|
TYPE_WINEVENTHOOK = 15,
|
|
TYPE_TIMER = 16,
|
|
TYPE_INPUTCONTEXT = 17,
|
|
TYPE_HIDDATA = 18,
|
|
TYPE_DEVICEINFO = 19,
|
|
TYPE_TOUCHINPUTINFO = 20,
|
|
TYPE_GESTUREINFOOBJ = 21,
|
|
TYPE_CTYPES,
|
|
TYPE_GENERIC = 255
|
|
} HANDLE_TYPE, *PHANDLE_TYPE;
|
|
|
|
typedef enum _USERTHREADINFOCLASS
|
|
{
|
|
UserThreadShutdownInformation,
|
|
UserThreadFlags,
|
|
UserThreadTaskName,
|
|
UserThreadWOWInformation,
|
|
UserThreadHungStatus,
|
|
UserThreadInitiateShutdown,
|
|
UserThreadEndShutdown,
|
|
UserThreadUseActiveDesktop,
|
|
UserThreadUseDesktop,
|
|
UserThreadRestoreDesktop,
|
|
UserThreadCsrApiPort,
|
|
} USERTHREADINFOCLASS;
|
|
|
|
typedef struct _LARGE_UNICODE_STRING
|
|
{
|
|
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;
|
|
} LARGE_STRING, *PLARGE_STRING;
|
|
|
|
|
|
/* Based on ANSI_STRING */
|
|
typedef struct _LARGE_ANSI_STRING
|
|
{
|
|
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);
|
|
|
|
#define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1)
|
|
|
|
/*
|
|
* DESKTOPINFO structure.
|
|
* See also: https://reactos.org/wiki/Techwiki:Win32k/DESKTOP
|
|
*/
|
|
typedef struct _DESKTOPINFO
|
|
{
|
|
PVOID pvDesktopBase;
|
|
PVOID pvDesktopLimit;
|
|
struct _WND *spwnd;
|
|
DWORD fsHooks;
|
|
LIST_ENTRY aphkStart[NB_HOOKS];
|
|
|
|
HWND hTaskManWindow;
|
|
HWND hProgmanWindow;
|
|
HWND hShellWindow;
|
|
struct _WND *spwndShell;
|
|
struct _WND *spwndBkGnd;
|
|
|
|
struct _PROCESSINFO *ppiShellProcess;
|
|
|
|
union
|
|
{
|
|
UINT Dummy;
|
|
struct
|
|
{
|
|
UINT LastInputWasKbd:1;
|
|
};
|
|
};
|
|
|
|
WCHAR szDesktopName[1];
|
|
} DESKTOPINFO, *PDESKTOPINFO;
|
|
|
|
#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 timeLastRead; // Last time the message queue was read.
|
|
DWORD dwcPumpHook;
|
|
} CLIENTTHREADINFO, *PCLIENTTHREADINFO;
|
|
|
|
typedef struct _HEAD
|
|
{
|
|
HANDLE h;
|
|
DWORD cLockObj;
|
|
} HEAD, *PHEAD;
|
|
|
|
typedef struct _THROBJHEAD
|
|
{
|
|
HEAD;
|
|
struct _THREADINFO *pti;
|
|
} THROBJHEAD, *PTHROBJHEAD;
|
|
|
|
typedef struct _THRDESKHEAD
|
|
{
|
|
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_PTR hTaskWow;
|
|
struct _DESKTOP *rpdesk;
|
|
PVOID pSelf;
|
|
} PROCDESKHEAD, *PPROCDESKHEAD;
|
|
|
|
typedef struct _PROCMARKHEAD
|
|
{
|
|
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;
|
|
|
|
#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_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];
|
|
} CLIPBOARDDATA, *PCLIPBOARDDATA;
|
|
|
|
/* THREADINFO Flags */
|
|
#define TIF_INCLEANUP 0x00000001
|
|
#define TIF_16BIT 0x00000002
|
|
#define TIF_SYSTEMTHREAD 0x00000004
|
|
#define TIF_CSRSSTHREAD 0x00000008
|
|
#define TIF_TRACKRECTVISIBLE 0x00000010
|
|
#define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
|
|
#define TIF_DONTATTACHQUEUE 0x00000040
|
|
#define TIF_DONTJOURNALATTACH 0x00000080
|
|
#define TIF_WOW64 0x00000100
|
|
#define TIF_INACTIVATEAPPMSG 0x00000200
|
|
#define TIF_SPINNING 0x00000400
|
|
#define TIF_PALETTEAWARE 0x00000800
|
|
#define TIF_SHAREDWOW 0x00001000
|
|
#define TIF_FIRSTIDLE 0x00002000
|
|
#define TIF_WAITFORINPUTIDLE 0x00004000
|
|
#define TIF_MOVESIZETRACKING 0x00008000
|
|
#define TIF_VDMAPP 0x00010000
|
|
#define TIF_DOSEMULATOR 0x00020000
|
|
#define TIF_GLOBALHOOKER 0x00040000
|
|
#define TIF_DELAYEDEVENT 0x00080000
|
|
#define TIF_MSGPOSCHANGED 0x00100000
|
|
#define TIF_SHUTDOWNCOMPLETE 0x00200000
|
|
#define TIF_IGNOREPLAYBACKDELAY 0x00400000
|
|
#define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
|
|
#define TIF_GUITHREADINITIALIZED 0x02000000
|
|
#define TIF_DISABLEIME 0x04000000
|
|
#define TIF_INGETTEXTLENGTH 0x08000000
|
|
#define TIF_ANSILENGTH 0x10000000
|
|
#define TIF_DISABLEHOOKS 0x20000000
|
|
|
|
typedef struct _CALLBACKWND
|
|
{
|
|
HWND hWnd;
|
|
struct _WND *pWnd;
|
|
PVOID pActCtx;
|
|
} CALLBACKWND, *PCALLBACKWND;
|
|
|
|
#define CI_TRANSACTION 0x00000001
|
|
#define CI_QUEUEMSG 0x00000002
|
|
#define CI_WOW 0x00000004
|
|
#define CI_INITTHREAD 0x00000008
|
|
#define CI_CURTHPRHOOK 0x00000010
|
|
#define CI_CLASSESREGISTERED 0x00000020
|
|
#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;
|
|
ULONG_PTR cSpins;
|
|
DWORD dwExpWinVer;
|
|
DWORD dwCompatFlags;
|
|
DWORD dwCompatFlags2;
|
|
DWORD dwTIFlags; /* ThreadInfo TIF_Xxx flags for User space. */
|
|
PDESKTOPINFO pDeskInfo;
|
|
ULONG_PTR ulClientDelta;
|
|
PHOOK phkCurrent;
|
|
ULONG fsHooks;
|
|
CALLBACKWND CallbackWnd;
|
|
DWORD dwHookCurrent;
|
|
INT cInDDEMLCallback;
|
|
PCLIENTTHREADINFO pClientThreadInfo;
|
|
ULONG_PTR dwHookData;
|
|
DWORD dwKeyCache;
|
|
BYTE afKeyState[8];
|
|
DWORD dwAsyncKeyCache;
|
|
BYTE afAsyncKeyState[8];
|
|
BYTE afAsyncKeyStateRecentDow[8];
|
|
HKL hKL;
|
|
USHORT CodePage;
|
|
UCHAR achDbcsCF[2];
|
|
MSG msgDbcsCB;
|
|
LPDWORD lpdwRegisteredClasses;
|
|
ULONG Win32ClientInfo3[26];
|
|
/* It's just a pointer reference not to be used w the structure in user space. */
|
|
struct _PROCESSINFO *ppi;
|
|
} CLIENTINFO, *PCLIENTINFO;
|
|
|
|
/* Make sure it fits into the TEB */
|
|
C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
|
|
|
|
#define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
|
|
|
|
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. */
|
|
HANDLE hbmpChecked;
|
|
HANDLE hbmpUnchecked;
|
|
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 ulWidth; /* underline.. width */
|
|
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;
|
|
} 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
|
|
/* 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. 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. */
|
|
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. */
|
|
/* 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
|
|
system window classes during user32 initialization */
|
|
PWSTR ClassName;
|
|
UINT Style;
|
|
WNDPROC ProcW;
|
|
UINT ExtraBytes;
|
|
HICON hCursor;
|
|
HBRUSH hBrush;
|
|
WORD fiId;
|
|
WORD iCls;
|
|
} REGISTER_SYSCLASS, *PREGISTER_SYSCLASS;
|
|
|
|
typedef struct _CLSMENUNAME
|
|
{
|
|
LPSTR pszClientAnsiMenuName;
|
|
LPWSTR pwszClientUnicodeMenuName;
|
|
PUNICODE_STRING pusMenuName;
|
|
} CLSMENUNAME, *PCLSMENUNAME;
|
|
|
|
typedef struct tagSBDATA
|
|
{
|
|
INT posMin;
|
|
INT posMax;
|
|
INT page;
|
|
INT pos;
|
|
} SBDATA, *PSBDATA;
|
|
|
|
typedef struct tagSBINFO
|
|
{
|
|
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;
|
|
} SBCALC, *PSBCALC;
|
|
|
|
typedef enum _GETCPD
|
|
{
|
|
UserGetCPDA2U = 0x01, /* " Unicode " */
|
|
UserGetCPDU2A = 0X02, /* " Ansi " */
|
|
UserGetCPDClass = 0X10,
|
|
UserGetCPDWindow = 0X20,
|
|
UserGetCPDDialog = 0X40,
|
|
UserGetCPDWndtoCls = 0X80
|
|
} GETCPD, *PGETCPD;
|
|
|
|
typedef struct _CALLPROCDATA
|
|
{
|
|
PROCDESKHEAD head;
|
|
struct _CALLPROCDATA *spcpdNext;
|
|
WNDPROC pfnClientPrevious;
|
|
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
|
|
|
|
typedef struct _CLS
|
|
{
|
|
struct _CLS *pclsNext;
|
|
RTL_ATOM atomClassName;
|
|
ATOM atomNVClassName;
|
|
DWORD fnid;
|
|
struct _DESKTOP *rpdeskParent;
|
|
PVOID pdce;
|
|
DWORD CSF_flags;
|
|
PSTR lpszClientAnsiMenuName; /* For client use */
|
|
PWSTR lpszClientUnicodeMenuName; /* " " " */
|
|
PCALLPROCDATA spcpdFirst;
|
|
struct _CLS *pclsBase;
|
|
struct _CLS *pclsClone;
|
|
ULONG cWndReferenceCount;
|
|
UINT style;
|
|
WNDPROC lpfnWndProc;
|
|
INT cbclsExtra;
|
|
INT cbwndExtra;
|
|
HINSTANCE hModule;
|
|
struct _CURICON_OBJECT *spicn;
|
|
struct _CURICON_OBJECT *spcur;
|
|
HBRUSH hbrBackground;
|
|
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;
|
|
} SBINFOEX, *PSBINFOEX;
|
|
|
|
/* State Flags !Not ALL Implemented! */
|
|
#define WNDS_HASMENU 0X00000001
|
|
#define WNDS_HASVERTICALSCROOLLBAR 0X00000002
|
|
#define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
|
|
#define WNDS_HASCAPTION 0X00000008
|
|
#define WNDS_SENDSIZEMOVEMSGS 0X00000010
|
|
#define WNDS_MSGBOX 0X00000020
|
|
#define WNDS_ACTIVEFRAME 0X00000040
|
|
#define WNDS_HASSPB 0X00000080
|
|
#define WNDS_NONCPAINT 0X00000100
|
|
#define WNDS_SENDERASEBACKGROUND 0X00000200
|
|
#define WNDS_ERASEBACKGROUND 0X00000400
|
|
#define WNDS_SENDNCPAINT 0X00000800
|
|
#define WNDS_INTERNALPAINT 0X00001000
|
|
#define WNDS_UPDATEDIRTY 0X00002000
|
|
#define WNDS_HIDDENPOPUP 0X00004000
|
|
#define WNDS_FORCEMENUDRAW 0X00008000
|
|
#define WNDS_DIALOGWINDOW 0X00010000
|
|
#define WNDS_HASCREATESTRUCTNAME 0X00020000
|
|
#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_RECEIVEDQUERYSUSPENDMSG 0x01000000
|
|
#define WNDS_RECEIVEDSUSPENDMSG 0x02000000
|
|
#define WNDS_TOGGLETOPMOST 0x04000000
|
|
#define WNDS_REDRAWIFHUNG 0x08000000
|
|
#define WNDS_REDRAWFRAMEIFHUNG 0x10000000
|
|
#define WNDS_ANSICREATOR 0x20000000
|
|
#define WNDS_MAXIMIZESTOMONITOR 0x40000000
|
|
#define WNDS_DESTROYED 0x80000000
|
|
|
|
#define WNDSACTIVEFRAME 0x00000006
|
|
|
|
/* State2 Flags !Not ALL Implemented! */
|
|
#define WNDS2_WMPAINTSENT 0X00000001
|
|
#define WNDS2_ENDPAINTINVALIDATE 0X00000002
|
|
#define WNDS2_STARTPAINT 0X00000004
|
|
#define WNDS2_OLDUI 0X00000008
|
|
#define WNDS2_HASCLIENTEDGE 0X00000010
|
|
#define WNDS2_BOTTOMMOST 0X00000020
|
|
#define WNDS2_FULLSCREEN 0X00000040
|
|
#define WNDS2_INDESTROY 0X00000080
|
|
#define WNDS2_WIN31COMPAT 0X00000100
|
|
#define WNDS2_WIN40COMPAT 0X00000200
|
|
#define WNDS2_WIN50COMPAT 0X00000400
|
|
#define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
|
|
#define WNDS2_CLOSEBUTTONDOWN 0X00001000
|
|
#define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
|
|
#define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
|
|
#define WNDS2_HELPBUTTONDOWN 0X00008000
|
|
#define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
|
|
#define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
|
|
#define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
|
|
#define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
|
|
#define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
|
|
#define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
|
|
#define WNDS2_FORCENCPAINT 0X00400000
|
|
#define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
|
|
#define WNDS2_FULLSCREENMODE 0X01000000
|
|
#define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
|
|
#define WNDS2_NOMINMAXANIMATERECTS 0X10000000
|
|
#define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
|
|
#define WNDS2_SHELLHOOKREGISTERED 0X40000000
|
|
#define WNDS2_WMCREATEMSGPROCESSED 0X80000000
|
|
|
|
/* ExStyles2 */
|
|
#define WS_EX2_CLIPBOARDLISTENER 0X00000001
|
|
#define WS_EX2_LAYEREDINVALIDATE 0X00000002
|
|
#define WS_EX2_REDIRECTEDFORPRINT 0X00000004
|
|
#define WS_EX2_LINKED 0X00000008
|
|
#define WS_EX2_LAYEREDFORDWM 0X00000010
|
|
#define WS_EX2_LAYEREDLIMBO 0X00000020
|
|
#define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
|
|
#define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
|
|
#define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
|
|
#define WS_EX2_HASOVERLAY 0X00000200
|
|
#define WS_EX2_CONSOLEWINDOW 0X00000400
|
|
#define WS_EX2_CHILDNOACTIVATE 0X00000800
|
|
|
|
#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. */
|
|
DWORD ExStyle;
|
|
/* Style. */
|
|
DWORD style;
|
|
/* Handle of the module that created the window. */
|
|
HINSTANCE hModule;
|
|
DWORD fnid;
|
|
#endif
|
|
struct _WND *spwndNext;
|
|
struct _WND *spwndPrev;
|
|
struct _WND *spwndParent;
|
|
struct _WND *spwndChild;
|
|
struct _WND *spwndOwner;
|
|
RECT rcWindow;
|
|
RECT rcClient;
|
|
WNDPROC lpfnWndProc;
|
|
/* Pointer to the window class. */
|
|
PCLS pcls;
|
|
HRGN hrgnUpdate;
|
|
/* Property list head.*/
|
|
LIST_ENTRY PropListHead;
|
|
ULONG PropListItems;
|
|
/* Scrollbar info */
|
|
PSBINFO pSBInfo;
|
|
/* system menu handle. */
|
|
HMENU SystemMenu;
|
|
//PMENU spmenuSys;
|
|
/* Window menu handle or window id */
|
|
UINT_PTR IDMenu; // Use spmenu
|
|
//PMENU spmenu;
|
|
HRGN hrgnClip;
|
|
HRGN hrgnNewFrame;
|
|
/* Window name. */
|
|
LARGE_UNICODE_STRING strName;
|
|
/* Size of the extra data associated with the window. */
|
|
ULONG cbwndExtra;
|
|
struct _WND *spwndLastActive;
|
|
HIMC hImc; // Input context associated with this window.
|
|
LONG_PTR dwUserData;
|
|
PVOID pActCtx;
|
|
//PD3DMATRIX pTransForm;
|
|
struct _WND *spwndClipboardListener;
|
|
DWORD ExStyle2;
|
|
|
|
/* ReactOS */
|
|
struct
|
|
{
|
|
RECT NormalRect;
|
|
POINT IconPos;
|
|
POINT MaxPos;
|
|
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 ? */
|
|
|
|
/* 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;
|
|
} 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;
|
|
WNDPROC pfnTitleWndProc;
|
|
WNDPROC pfnMenuWndProc;
|
|
WNDPROC pfnDesktopWndProc;
|
|
WNDPROC pfnDefWindowProc;
|
|
WNDPROC pfnMessageWindowProc;
|
|
WNDPROC pfnSwitchWindowProc;
|
|
WNDPROC pfnButtonWndProc;
|
|
WNDPROC pfnComboBoxWndProc;
|
|
WNDPROC pfnComboListBoxProc;
|
|
WNDPROC pfnDialogWndProc;
|
|
WNDPROC pfnEditWndProc;
|
|
WNDPROC pfnListBoxWndProc;
|
|
WNDPROC pfnMDIClientWndProc;
|
|
WNDPROC pfnStaticWndProc;
|
|
WNDPROC pfnImeWndProc;
|
|
WNDPROC pfnGhostWndProc;
|
|
WNDPROC pfnHkINLPCWPSTRUCT;
|
|
WNDPROC pfnHkINLPCWPRETSTRUCT;
|
|
WNDPROC pfnDispatchHook;
|
|
WNDPROC pfnDispatchDefWindowProc;
|
|
WNDPROC pfnDispatchMessage;
|
|
WNDPROC pfnMDIActivateDlgProc;
|
|
} PFNCLIENT, *PPFNCLIENT;
|
|
|
|
/*
|
|
Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
|
|
Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
|
|
*/
|
|
|
|
typedef LRESULT
|
|
(CALLBACK *WNDPROC_EX)(
|
|
HWND,
|
|
UINT,
|
|
WPARAM,
|
|
LPARAM,
|
|
BOOL);
|
|
|
|
typedef struct _PFNCLIENTWORKER
|
|
{
|
|
WNDPROC_EX pfnButtonWndProc;
|
|
WNDPROC_EX pfnComboBoxWndProc;
|
|
WNDPROC_EX pfnComboListBoxProc;
|
|
WNDPROC_EX pfnDialogWndProc;
|
|
WNDPROC_EX pfnEditWndProc;
|
|
WNDPROC_EX pfnListBoxWndProc;
|
|
WNDPROC_EX pfnMDIClientWndProc;
|
|
WNDPROC_EX pfnStaticWndProc;
|
|
WNDPROC_EX pfnImeWndProc;
|
|
WNDPROC_EX pfnGhostWndProc;
|
|
WNDPROC_EX pfnCtfHookProc;
|
|
} PFNCLIENTWORKER, *PPFNCLIENTWORKER;
|
|
|
|
typedef LONG_PTR
|
|
(NTAPI *PFN_FNID)(
|
|
PWND,
|
|
UINT,
|
|
WPARAM,
|
|
LPARAM,
|
|
ULONG_PTR);
|
|
|
|
/* FNID's for NtUserSetWindowFNID, NtUserMessageCall */
|
|
#define FNID_FIRST 0x029A
|
|
#define FNID_SCROLLBAR 0x029A
|
|
#define FNID_ICONTITLE 0x029B
|
|
#define FNID_MENU 0x029C
|
|
#define FNID_DESKTOP 0x029D
|
|
#define FNID_DEFWINDOWPROC 0x029E
|
|
#define FNID_MESSAGEWND 0x029F
|
|
#define FNID_SWITCH 0x02A0
|
|
#define FNID_BUTTON 0x02A1
|
|
#define FNID_COMBOBOX 0x02A2
|
|
#define FNID_COMBOLBOX 0x02A3
|
|
#define FNID_DIALOG 0x02A4
|
|
#define FNID_EDIT 0x02A5
|
|
#define FNID_LISTBOX 0x02A6
|
|
#define FNID_MDICLIENT 0x02A7
|
|
#define FNID_STATIC 0x02A8
|
|
#define FNID_IME 0x02A9
|
|
#define FNID_GHOST 0x02AA
|
|
#define FNID_CALLWNDPROC 0x02AB
|
|
#define FNID_CALLWNDPROCRET 0x02AC
|
|
#define FNID_HKINLPCWPEXSTRUCT 0x02AD
|
|
#define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
|
|
#define FNID_MB_DLGPROC 0x02AF
|
|
#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. */
|
|
#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 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 ICLASS_TO_MASK(iCls) (1 << ((iCls)))
|
|
|
|
#define GETPFNCLIENTA(fnid) \
|
|
(WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
|
|
#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 */
|
|
#define ICLS_BUTTON 0
|
|
#define ICLS_EDIT 1
|
|
#define ICLS_STATIC 2
|
|
#define ICLS_LISTBOX 3
|
|
#define ICLS_SCROLLBAR 4
|
|
#define ICLS_COMBOBOX 5
|
|
#define ICLS_MDICLIENT 6
|
|
#define ICLS_COMBOLBOX 7
|
|
#define ICLS_DDEMLEVENT 8
|
|
#define ICLS_DDEMLMOTHER 9
|
|
#define ICLS_DDEML16BIT 10
|
|
#define ICLS_DDEMLCLIENTA 11
|
|
#define ICLS_DDEMLCLIENTW 12
|
|
#define ICLS_DDEMLSERVERA 13
|
|
#define ICLS_DDEMLSERVERW 14
|
|
#define ICLS_IME 15
|
|
#define ICLS_GHOST 16
|
|
#define ICLS_DESKTOP 17
|
|
#define ICLS_DIALOG 18
|
|
#define ICLS_MENU 19
|
|
#define ICLS_SWITCH 20
|
|
#define ICLS_ICONTITLE 21
|
|
#define ICLS_TOOLTIPS 22
|
|
#if (_WIN32_WINNT <= 0x0501)
|
|
#define ICLS_UNKNOWN 22
|
|
#define ICLS_NOTUSED 23
|
|
#else
|
|
#define ICLS_SYSSHADOW 23
|
|
#define ICLS_HWNDMESSAGE 24
|
|
#define ICLS_NOTUSED 25
|
|
#endif
|
|
#define ICLS_END 31
|
|
|
|
#define COLOR_LAST COLOR_MENUBAR
|
|
#define MAX_MB_STRINGS 11
|
|
|
|
#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
|
|
|
|
typedef struct tagOEMBITMAPINFO
|
|
{
|
|
INT x;
|
|
INT y;
|
|
INT cx;
|
|
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];
|
|
UINT uID;
|
|
UINT uStr;
|
|
} MBSTRING, *PMBSTRING;
|
|
|
|
typedef struct tagDPISERVERINFO
|
|
{
|
|
INT gclBorder; /* 000 */
|
|
HFONT hCaptionFont; /* 004 */
|
|
HFONT hMsgFont; /* 008 */
|
|
INT cxMsgFontChar; /* 00C */
|
|
INT cyMsgFontChar; /* 010 */
|
|
UINT wMaxBtnSize; /* 014 */
|
|
} DPISERVERINFO, *PDPISERVERINFO;
|
|
|
|
/* 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;
|
|
DPISERVERINFO dpiSystem;
|
|
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;
|
|
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;
|
|
PERUSERSERVERINFO;
|
|
} SERVERINFO, *PSERVERINFO;
|
|
|
|
#ifdef _M_IX86
|
|
C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE);
|
|
#endif
|
|
|
|
|
|
/* Server event activity bits. */
|
|
#define SRV_EVENT_MENU 0x0001
|
|
#define SRV_EVENT_END_APPLICATION 0x0002
|
|
#define SRV_EVENT_RUNNING 0x0004
|
|
#define SRV_EVENT_NAMECHANGE 0x0008
|
|
#define SRV_EVENT_VALUECHANGE 0x0010
|
|
#define SRV_EVENT_STATECHANGE 0x0020
|
|
#define SRV_EVENT_LOCATIONCHANGE 0x0040
|
|
#define SRV_EVENT_CREATE 0x8000
|
|
|
|
typedef struct _PROPLISTITEM
|
|
{
|
|
ATOM Atom;
|
|
HANDLE Data;
|
|
} PROPLISTITEM, *PPROPLISTITEM;
|
|
|
|
#define PROPERTY_FLAG_SYSTEM 1
|
|
|
|
typedef struct _PROPERTY
|
|
{
|
|
LIST_ENTRY PropListEntry;
|
|
HANDLE Data;
|
|
ATOM Atom;
|
|
WORD fs;
|
|
} PROPERTY, *PPROPERTY;
|
|
|
|
typedef struct _BROADCASTPARM
|
|
{
|
|
DWORD flags;
|
|
DWORD recipients;
|
|
HDESK hDesk;
|
|
HWND hWnd;
|
|
LUID luid;
|
|
} BROADCASTPARM, *PBROADCASTPARM;
|
|
|
|
struct _THREADINFO *GetW32ThreadInfo(VOID);
|
|
struct _PROCESSINFO *GetW32ProcessInfo(VOID);
|
|
|
|
typedef struct _WNDMSG
|
|
{
|
|
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; /* 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;
|
|
} 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;
|
|
};
|
|
} GETCLIPBDATA, *PGETCLIPBDATA;
|
|
|
|
typedef struct tagSETCLIPBDATA
|
|
{
|
|
BOOL fGlobalHandle;
|
|
BOOL fIncSerialNumber;
|
|
} SETCLIPBDATA, *PSETCLIPBDATA;
|
|
|
|
/* 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;
|
|
UINT cpcur;
|
|
UINT cicur;
|
|
struct tagCURSORDATA *aspcur;
|
|
DWORD *aicur;
|
|
INT *ajifRate;
|
|
UINT iicur;
|
|
} CURSORDATA, *PCURSORDATA; /* !dso CURSORDATA */
|
|
|
|
/* CURSORF_flags: */
|
|
#define CURSORF_FROMRESOURCE 0x0001
|
|
#define CURSORF_GLOBAL 0x0002
|
|
#define CURSORF_LRSHARED 0x0004
|
|
#define CURSORF_ACON 0x0008
|
|
#define CURSORF_WOWCLEANUP 0x0010
|
|
#define CURSORF_ACONFRAME 0x0040
|
|
#define CURSORF_SECRET 0x0080
|
|
#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(HWND hWnd, HIMC hIMC, DWORD dwFlags);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCalcMenuBar(
|
|
HWND hwnd,
|
|
DWORD x,
|
|
DWORD width,
|
|
DWORD y,
|
|
LPRECT prc);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCheckMenuItem(
|
|
HMENU hmenu,
|
|
UINT uIDCheckItem,
|
|
UINT uCheck);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCtxDisplayIOCtl(
|
|
DWORD dwUnknown1,
|
|
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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDestroyMenu(
|
|
HMENU hMenu);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserDrawMenuBarTemp(
|
|
HWND hWnd,
|
|
HDC hDC,
|
|
PRECT hRect,
|
|
HMENU hMenu,
|
|
HFONT hFont);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserEnableMenuItem(
|
|
HMENU hMenu,
|
|
UINT uIDEnableItem,
|
|
UINT uEnable);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserEndMenu(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetMenuBarInfo(
|
|
HWND hwnd,
|
|
LONG idObject,
|
|
LONG idItem,
|
|
PMENUBARINFO pmbi);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserGetMenuIndex(
|
|
HMENU hMenu,
|
|
HMENU hSubMenu);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetMenuItemRect(
|
|
HWND hWnd,
|
|
HMENU hMenu,
|
|
UINT uItem,
|
|
LPRECT lprcItem);
|
|
|
|
HMENU
|
|
NTAPI
|
|
NtUserGetSystemMenu(
|
|
HWND hWnd,
|
|
BOOL bRevert);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserHiliteMenuItem(
|
|
HWND hWnd,
|
|
HMENU hMenu,
|
|
UINT uItemHilite,
|
|
UINT uHilite);
|
|
|
|
int
|
|
NTAPI
|
|
NtUserMenuItemFromPoint(
|
|
HWND hWnd,
|
|
HMENU hMenu,
|
|
DWORD X,
|
|
DWORD Y);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRemoveMenu(
|
|
HMENU hMenu,
|
|
UINT uPosition,
|
|
UINT uFlags);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetMenu(
|
|
HWND hWnd,
|
|
HMENU hMenu,
|
|
BOOL bRepaint);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetMenuContextHelpId(
|
|
HMENU hmenu,
|
|
DWORD dwContextHelpId);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetMenuDefaultItem(
|
|
HMENU hMenu,
|
|
UINT uItem,
|
|
UINT fByPos);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetMenuFlagRtoL(
|
|
HMENU hMenu);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetSystemMenu(
|
|
HWND hWnd,
|
|
HMENU hMenu);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserThunkedMenuInfo(
|
|
HMENU hMenu,
|
|
LPCMENUINFO lpcmi);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserThunkedMenuItemInfo(
|
|
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);
|
|
|
|
HKL
|
|
NTAPI
|
|
NtUserActivateKeyboardLayout(
|
|
HKL hKL,
|
|
ULONG Flags);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserAlterWindowStyle(
|
|
HWND hWnd,
|
|
DWORD Index,
|
|
LONG NewValue);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserAttachThreadInput(
|
|
IN DWORD idAttach,
|
|
IN DWORD idAttachTo,
|
|
IN BOOL fAttach);
|
|
|
|
HDC NTAPI
|
|
NtUserBeginPaint(
|
|
HWND hWnd,
|
|
PAINTSTRUCT *lPs);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserBitBltSysBmp(
|
|
HDC hdc,
|
|
INT nXDest,
|
|
INT nYDest,
|
|
INT nWidth,
|
|
INT nHeight,
|
|
INT nXSrc,
|
|
INT nYSrc,
|
|
DWORD dwRop);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserBlockInput(
|
|
BOOL BlockIt);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserBuildHwndList(
|
|
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);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserBuildPropList(
|
|
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 */
|
|
|
|
enum SimpleCallRoutines
|
|
{
|
|
NOPARAM_ROUTINE_CREATEMENU,
|
|
NOPARAM_ROUTINE_CREATEMENUPOPUP,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
|
|
NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
|
|
NOPARAM_ROUTINE_CREATESYSTEMTHREADS,
|
|
NOPARAM_ROUTINE_DESTROY_CARET,
|
|
#endif
|
|
NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING,
|
|
#if (WIN32K_VERSION < NTDDI_VISTA)
|
|
NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
|
|
NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
|
|
NOPARAM_ROUTINE_DESTROY_CARET,
|
|
#endif
|
|
NOPARAM_ROUTINE_GETDEVICECHANGEINFO,
|
|
NOPARAM_ROUTINE_GETIMESHOWSTATUS,
|
|
NOPARAM_ROUTINE_GETINPUTDESKTOP,
|
|
NOPARAM_ROUTINE_GETMSESSAGEPOS,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
|
|
#else
|
|
NOPARAM_ROUTINE_GETREMOTEPROCESSID,
|
|
#endif
|
|
NOPARAM_ROUTINE_HIDECURSORNOCAPTURE,
|
|
NOPARAM_ROUTINE_LOADCURSANDICOS,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
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,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
NOPARAM_ROUTINE_WAKERITFORSHTDWN,
|
|
#endif
|
|
NOPARAM_ROUTINE_INIT_MESSAGE_PUMP,
|
|
NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP,
|
|
#if (WIN32K_VERSION < NTDDI_VISTA)
|
|
NOPARAM_ROUTINE_LOADUSERAPIHOOK,
|
|
#endif
|
|
ONEPARAM_ROUTINE_BEGINDEFERWNDPOS,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_GETSENDMSGRECVR,
|
|
#endif
|
|
ONEPARAM_ROUTINE_WINDOWFROMDC,
|
|
ONEPARAM_ROUTINE_ALLOWSETFOREGND,
|
|
ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT,
|
|
#if (WIN32K_VERSION < NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_CREATESYSTEMTHREADS,
|
|
#endif
|
|
ONEPARAM_ROUTINE_CSDDEUNINITIALIZE,
|
|
ONEPARAM_ROUTINE_DIRECTEDYIELD,
|
|
ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS,
|
|
#if (WIN32K_VERSION < NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_GETCURSORPOS,
|
|
#endif
|
|
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,
|
|
#endif
|
|
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,
|
|
#endif
|
|
ONEPARAM_ROUTINE_REALIZEPALETTE,
|
|
ONEPARAM_ROUTINE_REGISTERLPK,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
|
|
#endif
|
|
ONEPARAM_ROUTINE_REMOTERECONNECT,
|
|
ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS,
|
|
ONEPARAM_ROUTINE_RELEASEDC,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_REMOTENOTIFY,
|
|
#endif
|
|
ONEPARAM_ROUTINE_REPLYMESSAGE,
|
|
ONEPARAM_ROUTINE_SETCARETBLINKTIME,
|
|
ONEPARAM_ROUTINE_SETDBLCLICKTIME,
|
|
#if (WIN32K_VERSION < NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_SETIMESHOWSTATUS,
|
|
#endif
|
|
ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO,
|
|
ONEPARAM_ROUTINE_SETPROCDEFLAYOUT,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
ONEPARAM_ROUTINE_SETWATERMARKSTRINGS,
|
|
#endif
|
|
ONEPARAM_ROUTINE_SHOWCURSOR,
|
|
ONEPARAM_ROUTINE_SHOWSTARTGLASS,
|
|
ONEPARAM_ROUTINE_SWAPMOUSEBUTTON,
|
|
X_ROUTINE_WOWMODULEUNLOAD,
|
|
#if (WIN32K_VERSION < NTDDI_VISTA)
|
|
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,
|
|
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,
|
|
#endif
|
|
TWOPARAM_ROUTINE_GETHDEVNAME,
|
|
TWOPARAM_ROUTINE_INITANSIOEM,
|
|
TWOPARAM_ROUTINE_NLSSENDIMENOTIFY,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
TWOPARAM_ROUTINE_REGISTERGHSTWND,
|
|
#endif
|
|
TWOPARAM_ROUTINE_REGISTERLOGONPROCESS,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
TWOPARAM_ROUTINE_REGISTERSBLFROSTWND,
|
|
#else
|
|
TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
|
|
#endif
|
|
TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS,
|
|
TWOPARAM_ROUTINE_SHADOWCLEANUP,
|
|
TWOPARAM_ROUTINE_REMOTESHADOWSTART,
|
|
TWOPARAM_ROUTINE_SETCARETPOS,
|
|
TWOPARAM_ROUTINE_SETCURSORPOS,
|
|
#if (WIN32K_VERSION >= NTDDI_VISTA)
|
|
TWOPARAM_ROUTINE_SETPHYSCURSORPOS,
|
|
#endif
|
|
TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK,
|
|
TWOPARAM_ROUTINE_WOWCLEANUP
|
|
};
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCallHwnd(
|
|
HWND hWnd,
|
|
DWORD Routine);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCallHwndLock(
|
|
HWND hWnd,
|
|
DWORD Routine);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserCallHwndOpt(
|
|
HWND hWnd,
|
|
DWORD Routine);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCallHwndParam(
|
|
HWND hWnd,
|
|
DWORD_PTR Param,
|
|
DWORD Routine);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCallHwndParamLock(
|
|
HWND hWnd,
|
|
DWORD_PTR Param,
|
|
DWORD Routine);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCallMsgFilter(
|
|
LPMSG msg,
|
|
INT code);
|
|
|
|
LRESULT
|
|
NTAPI
|
|
NtUserCallNextHookEx(
|
|
int Code,
|
|
WPARAM wParam,
|
|
LPARAM lParam,
|
|
BOOL Ansi);
|
|
|
|
DWORD_PTR
|
|
NTAPI
|
|
NtUserCallNoParam(
|
|
DWORD Routine);
|
|
|
|
DWORD_PTR
|
|
NTAPI
|
|
NtUserCallOneParam(
|
|
DWORD_PTR Param,
|
|
DWORD Routine);
|
|
|
|
DWORD_PTR
|
|
NTAPI
|
|
NtUserCallTwoParam(
|
|
DWORD_PTR Param1,
|
|
DWORD_PTR Param2,
|
|
DWORD Routine);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserChangeClipboardChain(
|
|
HWND hWndRemove,
|
|
HWND hWndNewNext);
|
|
|
|
LONG
|
|
NTAPI
|
|
NtUserChangeDisplaySettings(
|
|
PUNICODE_STRING lpszDeviceName,
|
|
LPDEVMODEW lpDevMode,
|
|
DWORD dwflags,
|
|
LPVOID lParam);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCheckDesktopByThreadId(
|
|
DWORD dwThreadId);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCheckWindowThreadDesktop(
|
|
HWND hwnd,
|
|
DWORD dwThreadId,
|
|
ULONG ReturnValue);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCheckImeHotKey(
|
|
UINT uVirtualKey,
|
|
LPARAM lParam);
|
|
|
|
HWND NTAPI
|
|
NtUserChildWindowFromPointEx(
|
|
HWND Parent,
|
|
LONG x,
|
|
LONG y,
|
|
UINT Flags);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserClipCursor(
|
|
RECT *lpRect);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCloseClipboard(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCloseDesktop(
|
|
HDESK hDesktop);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCloseWindowStation(
|
|
HWINSTA hWinSta);
|
|
|
|
/* Console commands for NtUserConsoleControl */
|
|
typedef enum _CONSOLECONTROL
|
|
{
|
|
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 ULONG ConsoleCtrlInfoLength);
|
|
|
|
HANDLE
|
|
NTAPI
|
|
NtUserConvertMemHandle(
|
|
PVOID pData,
|
|
DWORD cbData);
|
|
|
|
ULONG
|
|
NTAPI
|
|
NtUserCopyAcceleratorTable(
|
|
HACCEL Table,
|
|
LPACCEL Entries,
|
|
ULONG EntriesCount);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserCountClipboardFormats(VOID);
|
|
|
|
HACCEL
|
|
NTAPI
|
|
NtUserCreateAcceleratorTable(
|
|
LPACCEL Entries,
|
|
ULONG EntriesCount);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserCreateCaret(
|
|
HWND hWnd,
|
|
HBITMAP hBitmap,
|
|
int nWidth,
|
|
int nHeight);
|
|
|
|
HDESK
|
|
NTAPI
|
|
NtUserCreateDesktop(
|
|
POBJECT_ATTRIBUTES poa,
|
|
PUNICODE_STRING lpszDesktopDevice,
|
|
LPDEVMODEW lpdmw,
|
|
DWORD dwFlags,
|
|
ACCESS_MASK dwDesiredAccess);
|
|
|
|
HIMC
|
|
NTAPI
|
|
NtUserCreateInputContext(ULONG_PTR dwClientImcData);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserCreateLocalMemHandle(
|
|
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);
|
|
|
|
HWINSTA
|
|
NTAPI
|
|
NtUserCreateWindowStation(
|
|
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);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserDdeInitialize(
|
|
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);
|
|
|
|
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);
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
NtUserDestroyAcceleratorTable(
|
|
HACCEL Table);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDestroyCursor(
|
|
_In_ HANDLE Handle,
|
|
_In_ BOOL bForce);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDestroyInputContext(HIMC hIMC);
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
NtUserDestroyWindow(
|
|
HWND Wnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDisableThreadIme(
|
|
DWORD dwThreadID);
|
|
|
|
LRESULT
|
|
NTAPI
|
|
NtUserDispatchMessage(
|
|
PMSG pMsg);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDragDetect(
|
|
HWND hWnd,
|
|
POINT pt);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserDragObject(
|
|
HWND hwnd1,
|
|
HWND hwnd2,
|
|
UINT u1,
|
|
DWORD dw1,
|
|
HCURSOR hc1);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDrawAnimatedRects(
|
|
HWND hwnd,
|
|
INT idAni,
|
|
RECT *lprcFrom,
|
|
RECT *lprcTo);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserDrawCaption(
|
|
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. */
|
|
typedef struct _DRAWICONEXDATA
|
|
{
|
|
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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserEmptyClipboard(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserEnableScrollBar(
|
|
HWND hWnd,
|
|
UINT wSBflags,
|
|
UINT wArrows);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserEndDeferWindowPosEx(
|
|
HDWP WinPosInfo,
|
|
BOOL bAsync);
|
|
|
|
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 */
|
|
|
|
/*
|
|
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. */
|
|
INT
|
|
NTAPI
|
|
NtUserEnumDisplayMonitors(
|
|
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);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserEvent(
|
|
DWORD Unknown0);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserExcludeUpdateRgn(
|
|
HDC hDC,
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserFillWindow(
|
|
HWND hWndPaint,
|
|
HWND hWndPaint1,
|
|
HDC hDC,
|
|
HBRUSH hBrush);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserFindWindowEx(
|
|
HWND hwndParent,
|
|
HWND hwndChildAfter,
|
|
PUNICODE_STRING ucClassName,
|
|
PUNICODE_STRING ucWindowName,
|
|
DWORD dwUnknown);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserFlashWindowEx(
|
|
IN PFLASHWINFO pfwi);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetAltTabInfo(
|
|
HWND hwnd,
|
|
INT iItem,
|
|
PALTTABINFO pati,
|
|
LPWSTR pszItemText,
|
|
UINT cchItemText,
|
|
BOOL Ansi);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserGetAncestor(
|
|
HWND hWnd,
|
|
UINT Flags);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetAppImeLevel(HWND hWnd);
|
|
|
|
SHORT
|
|
NTAPI
|
|
NtUserGetAsyncKeyState(
|
|
INT Key);
|
|
|
|
_Success_(return != 0)
|
|
_At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return * 2 + 2))
|
|
ULONG
|
|
APIENTRY
|
|
NtUserGetAtomName(
|
|
_In_ ATOM atom,
|
|
_Inout_ PUNICODE_STRING pustrName);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserGetCaretBlinkTime(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetCaretPos(
|
|
LPPOINT lpPoint);
|
|
|
|
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);
|
|
|
|
HANDLE
|
|
NTAPI
|
|
NtUserGetClipboardData(
|
|
UINT fmt,
|
|
PGETCLIPBDATA pgcd);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserGetClipboardFormatName(
|
|
UINT uFormat,
|
|
LPWSTR lpszFormatName,
|
|
INT cchMaxCount);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserGetClipboardOwner(VOID);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetClipboardSequenceNumber(VOID);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserGetClipboardViewer(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetClipCursor(
|
|
RECT *lpRect);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetComboBoxInfo(
|
|
HWND hWnd,
|
|
PCOMBOBOXINFO pcbi);
|
|
|
|
HBRUSH
|
|
NTAPI
|
|
NtUserGetControlBrush(
|
|
HWND hwnd,
|
|
HDC hdc,
|
|
UINT ctlType);
|
|
|
|
HBRUSH
|
|
NTAPI
|
|
NtUserGetControlColor(
|
|
HWND hwndParent,
|
|
HWND hwnd,
|
|
HDC hdc,
|
|
UINT CtlMsg);
|
|
|
|
ULONG_PTR
|
|
NTAPI
|
|
NtUserGetCPD(
|
|
HWND hWnd,
|
|
GETCPD Flags,
|
|
ULONG_PTR Proc);
|
|
|
|
HCURSOR
|
|
NTAPI
|
|
NtUserGetCursorFrameInfo(
|
|
HCURSOR hCursor,
|
|
DWORD istep,
|
|
INT *rate_jiffies,
|
|
DWORD *num_steps);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetCursorInfo(
|
|
PCURSORINFO pci);
|
|
|
|
HDC
|
|
NTAPI
|
|
NtUserGetDC(
|
|
HWND hWnd);
|
|
|
|
HDC
|
|
NTAPI
|
|
NtUserGetDCEx(
|
|
HWND hWnd,
|
|
HANDLE hRegion,
|
|
ULONG Flags);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserGetDoubleClickTime(VOID);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserGetForegroundWindow(VOID);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetGuiResources(
|
|
HANDLE hProcess,
|
|
DWORD uiFlags);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetGUIThreadInfo(
|
|
DWORD idThread,
|
|
LPGUITHREADINFO lpgui);
|
|
|
|
_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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetIconSize(
|
|
HANDLE Handle,
|
|
UINT istepIfAniCur,
|
|
LONG *plcx,
|
|
LONG *plcy);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetImeHotKey(DWORD dwHotKeyId,
|
|
LPUINT lpuModifiers,
|
|
LPUINT lpuVirtualKey,
|
|
LPHKL lphKL);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetImeInfoEx(
|
|
PIMEINFOEX pImeInfoEx,
|
|
IMEINFOEXCLASS SearchType);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetInternalWindowPos(
|
|
HWND hwnd,
|
|
LPRECT rectWnd,
|
|
LPPOINT ptIcon);
|
|
|
|
HKL
|
|
NTAPI
|
|
NtUserGetKeyboardLayout(
|
|
DWORD dwThreadid);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserGetKeyboardLayoutList(
|
|
ULONG nItems,
|
|
HKL *pHklBuff);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetKeyboardLayoutName(
|
|
_Inout_ PUNICODE_STRING pustrName);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetKeyboardState(
|
|
LPBYTE Unknown0);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetKeyboardType(
|
|
DWORD TypeFlag);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetKeyNameText(
|
|
LONG lParam,
|
|
LPWSTR lpString,
|
|
int nSize);
|
|
|
|
SHORT
|
|
NTAPI
|
|
NtUserGetKeyState(
|
|
INT VirtKey);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetLayeredWindowAttributes(
|
|
HWND hwnd,
|
|
COLORREF *pcrKey,
|
|
BYTE *pbAlpha,
|
|
DWORD *pdwFlags);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetListBoxInfo(
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
APIENTRY
|
|
NtUserGetMessage(
|
|
PMSG pMsg,
|
|
HWND hWnd,
|
|
UINT MsgFilterMin,
|
|
UINT MsgFilterMax);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetMouseMovePointsEx(
|
|
UINT cbSize,
|
|
LPMOUSEMOVEPOINT lppt,
|
|
LPMOUSEMOVEPOINT lpptBuf,
|
|
int nBufPoints,
|
|
DWORD resolution);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetObjectInformation(
|
|
HANDLE hObject,
|
|
DWORD nIndex,
|
|
PVOID pvInformation,
|
|
DWORD nLength,
|
|
PDWORD nLengthNeeded);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserGetOpenClipboardWindow(VOID);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserGetPriorityClipboardFormat(
|
|
UINT *paFormatPriorityList,
|
|
INT cFormats);
|
|
|
|
HWINSTA
|
|
NTAPI
|
|
NtUserGetProcessWindowStation(VOID);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetRawInputBuffer(
|
|
PRAWINPUT pData,
|
|
PUINT pcbSize,
|
|
UINT cbSizeHeader);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetRawInputData(
|
|
HRAWINPUT hRawInput,
|
|
UINT uiCommand,
|
|
LPVOID pData,
|
|
PUINT pcbSize,
|
|
UINT cbSizeHeader);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetRawInputDeviceInfo(
|
|
HANDLE hDevice,
|
|
UINT uiCommand,
|
|
LPVOID pData,
|
|
PUINT pcbSize);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetRawInputDeviceList(
|
|
PRAWINPUTDEVICELIST pRawInputDeviceList,
|
|
PUINT puiNumDevices,
|
|
UINT cbSize);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserGetRegisteredRawInputDevices(
|
|
PRAWINPUTDEVICE pRawInputDevices,
|
|
PUINT puiNumDevices,
|
|
UINT cbSize);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetScrollBarInfo(
|
|
HWND hWnd,
|
|
LONG idObject,
|
|
PSCROLLBARINFO psbi);
|
|
|
|
HDESK
|
|
NTAPI
|
|
NtUserGetThreadDesktop(
|
|
DWORD dwThreadId,
|
|
HDESK hConsoleDesktop);
|
|
|
|
enum ThreadStateRoutines
|
|
{
|
|
THREADSTATE_FOCUSWINDOW = 0,
|
|
THREADSTATE_ACTIVEWINDOW,
|
|
THREADSTATE_CAPTUREWINDOW,
|
|
THREADSTATE_DEFAULTIMEWINDOW,
|
|
THREADSTATE_DEFAULTINPUTCONTEXT,
|
|
THREADSTATE_GETINPUTSTATE,
|
|
THREADSTATE_GETCURSOR,
|
|
THREADSTATE_CHANGEBITS,
|
|
THREADSTATE_UPTIMELASTREAD,
|
|
THREADSTATE_GETMESSAGEEXTRAINFO,
|
|
THREADSTATE_INSENDMESSAGE,
|
|
THREADSTATE_GETMESSAGETIME,
|
|
THREADSTATE_FOREGROUNDTHREAD,
|
|
THREADSTATE_IMECOMPATFLAGS,
|
|
THREADSTATE_OLDKEYBOARDLAYOUT,
|
|
THREADSTATE_ISWINLOGON,
|
|
THREADSTATE_UNKNOWN_0x10,
|
|
THREADSTATE_CHECKCONIME,
|
|
THREADSTATE_GETTHREADINFO,
|
|
THREADSTATE_PROGMANWINDOW, /* FIXME: Delete this HACK */
|
|
THREADSTATE_TASKMANWINDOW, /* FIXME: Delete this HACK */
|
|
};
|
|
|
|
DWORD_PTR
|
|
NTAPI
|
|
NtUserGetThreadState(
|
|
DWORD Routine);
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
NtUserGetTitleBarInfo(
|
|
HWND hwnd,
|
|
PTITLEBARINFO pti);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetUpdateRect(
|
|
HWND hWnd,
|
|
LPRECT lpRect,
|
|
BOOL fErase);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserGetUpdateRgn(
|
|
HWND hWnd,
|
|
HRGN hRgn,
|
|
BOOL bErase);
|
|
|
|
HDC
|
|
NTAPI
|
|
NtUserGetWindowDC(
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetWindowPlacement(
|
|
HWND hWnd,
|
|
WINDOWPLACEMENT *lpwndpl);
|
|
|
|
PCLS
|
|
NTAPI
|
|
NtUserGetWOWClass(
|
|
HINSTANCE hInstance,
|
|
PUNICODE_STRING ClassName);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserHardErrorControl(
|
|
DWORD dwUnknown1,
|
|
DWORD dwUnknown2,
|
|
DWORD dwUnknown3);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserImpersonateDdeClientWindow(
|
|
HWND hWndClient,
|
|
HWND hWndServer);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserInitialize(
|
|
DWORD dwWinVersion,
|
|
HANDLE hPowerRequestEvent,
|
|
HANDLE hMediaRequestEvent);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserInitializeClientPfnArrays(
|
|
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);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserInternalGetWindowText(
|
|
HWND hWnd,
|
|
LPWSTR lpString,
|
|
INT nMaxCount);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserInvalidateRect(
|
|
HWND hWnd,
|
|
CONST RECT *lpRect,
|
|
BOOL bErase);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserInvalidateRgn(
|
|
HWND hWnd,
|
|
HRGN hRgn,
|
|
BOOL bErase);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserIsClipboardFormatAvailable(
|
|
UINT format);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserKillTimer(
|
|
HWND hWnd,
|
|
UINT_PTR uIDEvent);
|
|
|
|
HKL
|
|
NTAPI
|
|
NtUserLoadKeyboardLayoutEx(
|
|
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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserLockWindowUpdate(
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserLockWorkStation(VOID);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserMapVirtualKeyEx(
|
|
UINT keyCode,
|
|
UINT transType,
|
|
DWORD keyboardId,
|
|
HKL dwhkl);
|
|
|
|
typedef struct tagDOSENDMESSAGE
|
|
{
|
|
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);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserMinMaximize(
|
|
HWND hWnd,
|
|
UINT cmd, /* Wine SW_ commands */
|
|
BOOL Hide);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserMNDragLeave(VOID);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserMNDragOver(
|
|
DWORD Unknown0,
|
|
DWORD Unknown1);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserModifyUserStartupInfoFlags(
|
|
DWORD Unknown0,
|
|
DWORD Unknown1);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserMoveWindow(
|
|
HWND hWnd,
|
|
int X,
|
|
int Y,
|
|
int nWidth,
|
|
int nHeight,
|
|
BOOL bRepaint
|
|
);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserNotifyProcessCreate(
|
|
HANDLE NewProcessId,
|
|
HANDLE ParentThreadId,
|
|
ULONG dwUnknown,
|
|
ULONG CreateFlags);
|
|
|
|
VOID
|
|
NTAPI
|
|
NtUserNotifyWinEvent(
|
|
DWORD Event,
|
|
HWND hWnd,
|
|
LONG idObject,
|
|
LONG idChild);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserOpenClipboard(
|
|
HWND hWnd,
|
|
DWORD Unknown1);
|
|
|
|
HDESK
|
|
NTAPI
|
|
NtUserOpenDesktop(
|
|
POBJECT_ATTRIBUTES ObjectAttributes,
|
|
DWORD dwFlags,
|
|
ACCESS_MASK dwDesiredAccess);
|
|
|
|
HDESK
|
|
NTAPI
|
|
NtUserOpenInputDesktop(
|
|
DWORD dwFlags,
|
|
BOOL fInherit,
|
|
ACCESS_MASK dwDesiredAccess);
|
|
|
|
HWINSTA
|
|
NTAPI
|
|
NtUserOpenWindowStation(
|
|
POBJECT_ATTRIBUTES ObjectAttributes,
|
|
ACCESS_MASK dwDesiredAccess);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserPaintDesktop(
|
|
HDC hDC);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserPaintMenuBar(
|
|
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
|
|
NTAPI
|
|
NtUserPostMessage(
|
|
HWND hWnd,
|
|
UINT Msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserPostThreadMessage(
|
|
DWORD idThread,
|
|
UINT Msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserPrintWindow(
|
|
HWND hwnd,
|
|
HDC hdcBlt,
|
|
UINT nFlags);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserProcessConnect(
|
|
IN HANDLE ProcessHandle,
|
|
OUT PUSERCONNECT pUserConnect,
|
|
IN ULONG Size); /* sizeof(USERCONNECT) */
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserQueryInformationThread(
|
|
IN HANDLE ThreadHandle,
|
|
IN USERTHREADINFOCLASS ThreadInformationClass,
|
|
OUT PVOID ThreadInformation,
|
|
IN ULONG ThreadInformationLength);
|
|
|
|
DWORD_PTR
|
|
NTAPI
|
|
NtUserQueryInputContext(
|
|
HIMC hIMC,
|
|
DWORD dwType);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserQuerySendMessage(
|
|
DWORD Unknown0);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserQueryUserCounters(
|
|
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
|
|
|
|
DWORD_PTR
|
|
NTAPI
|
|
NtUserQueryWindow(
|
|
HWND hWnd,
|
|
DWORD Index);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRealInternalGetMessage(
|
|
LPMSG lpMsg,
|
|
HWND hWnd,
|
|
UINT wMsgFilterMin,
|
|
UINT wMsgFilterMax,
|
|
UINT wRemoveMsg,
|
|
BOOL bGMSG);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserRealChildWindowFromPoint(
|
|
HWND Parent,
|
|
LONG x,
|
|
LONG y);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRealWaitMessageEx(
|
|
DWORD dwWakeMask,
|
|
UINT uTimeout);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRedrawWindow(
|
|
HWND hWnd,
|
|
CONST RECT *lprcUpdate,
|
|
HRGN hrgnUpdate,
|
|
UINT flags);
|
|
|
|
RTL_ATOM
|
|
NTAPI
|
|
NtUserRegisterClassExWOW(
|
|
WNDCLASSEXW* lpwcx,
|
|
PUNICODE_STRING pustrClassName,
|
|
PUNICODE_STRING pustrCVersion,
|
|
PCLSMENUNAME pClassMenuName,
|
|
DWORD fnID,
|
|
DWORD Flags,
|
|
LPDWORD pWow);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRegisterRawInputDevices(
|
|
IN PCRAWINPUTDEVICE pRawInputDevices,
|
|
IN UINT uiNumDevices,
|
|
IN UINT cbSize);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRegisterUserApiHook(
|
|
PUNICODE_STRING m_dllname1,
|
|
PUNICODE_STRING m_funname1,
|
|
DWORD dwUnknown3,
|
|
DWORD dwUnknown4);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserRegisterHotKey(
|
|
HWND hWnd,
|
|
int id,
|
|
UINT fsModifiers,
|
|
UINT vk);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserRegisterTasklist(
|
|
DWORD Unknown0);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserRegisterWindowMessage(
|
|
PUNICODE_STRING MessageName);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserRemoteConnect(
|
|
DWORD dwUnknown1,
|
|
DWORD dwUnknown2,
|
|
DWORD dwUnknown3);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserRemoteRedrawRectangle(
|
|
DWORD dwUnknown1,
|
|
DWORD dwUnknown2,
|
|
DWORD dwUnknown3,
|
|
DWORD dwUnknown4);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserRemoteRedrawScreen(VOID);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserRemoteStopScreenUpdates(VOID);
|
|
|
|
HANDLE
|
|
NTAPI
|
|
NtUserRemoveProp(
|
|
HWND hWnd,
|
|
ATOM Atom);
|
|
|
|
HDESK
|
|
NTAPI
|
|
NtUserResolveDesktop(
|
|
IN HANDLE ProcessHandle,
|
|
IN PUNICODE_STRING DesktopPath,
|
|
IN BOOL bInherit,
|
|
OUT HWINSTA* phWinSta);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserResolveDesktopForWOW(
|
|
DWORD Unknown0);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSBGetParms(
|
|
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);
|
|
|
|
UINT
|
|
NTAPI
|
|
NtUserSendInput(
|
|
UINT nInputs,
|
|
LPINPUT pInput,
|
|
INT cbSize);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserSetActiveWindow(
|
|
HWND Wnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetAppImeLevel(
|
|
HWND hWnd,
|
|
DWORD dwLevel);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserSetCapture(
|
|
HWND Wnd);
|
|
|
|
ULONG_PTR
|
|
NTAPI
|
|
NtUserSetClassLong(
|
|
_In_ HWND hWnd,
|
|
_In_ INT Offset,
|
|
_In_ ULONG dwNewLong,
|
|
_In_ BOOL Ansi);
|
|
|
|
#ifdef _WIN64
|
|
|
|
ULONG_PTR
|
|
APIENTRY
|
|
NtUserSetClassLongPtr(
|
|
_In_ HWND hWnd,
|
|
_In_ INT Offset,
|
|
_In_ ULONG_PTR dwNewLong,
|
|
_In_ BOOL Ansi);
|
|
|
|
#endif // _WIN64
|
|
WORD
|
|
NTAPI
|
|
NtUserSetClassWord(
|
|
HWND hWnd,
|
|
INT nIndex,
|
|
WORD wNewWord);
|
|
|
|
HANDLE
|
|
NTAPI
|
|
NtUserSetClipboardData(
|
|
UINT fmt,
|
|
HANDLE hMem,
|
|
PSETCLIPBDATA scd);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserSetClipboardViewer(
|
|
HWND hWndNewViewer);
|
|
|
|
HPALETTE
|
|
NTAPI
|
|
NtUserSelectPalette(
|
|
HDC hDC,
|
|
HPALETTE hpal,
|
|
BOOL ForceBackground);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetConsoleReserveKeys(
|
|
DWORD Unknown0,
|
|
DWORD Unknown1);
|
|
|
|
HCURSOR
|
|
NTAPI
|
|
NtUserSetCursor(
|
|
HCURSOR hCursor);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetCursorContents(
|
|
HANDLE Handle,
|
|
PICONINFO IconInfo);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetCursorIconData(
|
|
_In_ HCURSOR hCursor,
|
|
_In_opt_ PUNICODE_STRING pustrModule,
|
|
_In_opt_ PUNICODE_STRING puSrcName,
|
|
_In_ const CURSORDATA *pCursorData);
|
|
|
|
typedef struct _tagFINDEXISTINGCURICONPARAM
|
|
{
|
|
BOOL bIcon;
|
|
LONG cx;
|
|
LONG cy;
|
|
} FINDEXISTINGCURICONPARAM;
|
|
|
|
HICON
|
|
NTAPI
|
|
NtUserFindExistingCursorIcon(
|
|
_In_ PUNICODE_STRING pustrModule,
|
|
_In_ PUNICODE_STRING pustrRsrc,
|
|
_In_ FINDEXISTINGCURICONPARAM *param);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetDbgTag(
|
|
DWORD Unknown0,
|
|
DWORD Unknown1);
|
|
|
|
DWORD
|
|
APIENTRY
|
|
NtUserSetDbgTagCount(
|
|
DWORD Unknown0);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserSetFocus(
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetImeHotKey(
|
|
DWORD dwHotKeyId,
|
|
UINT uModifiers,
|
|
UINT uVirtualKey,
|
|
HKL hKL,
|
|
DWORD dwAction);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetImeInfoEx(
|
|
PIMEINFOEX pImeInfoEx);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetInformationProcess(
|
|
DWORD dwUnknown1,
|
|
DWORD dwUnknown2,
|
|
DWORD dwUnknown3,
|
|
DWORD dwUnknown4);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
NtUserSetInformationThread(
|
|
IN HANDLE ThreadHandle,
|
|
IN USERTHREADINFOCLASS ThreadInformationClass,
|
|
IN PVOID ThreadInformation,
|
|
IN ULONG ThreadInformationLength);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetInternalWindowPos(
|
|
HWND hwnd,
|
|
UINT showCmd,
|
|
LPRECT rect,
|
|
LPPOINT pt);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetKeyboardState(
|
|
LPBYTE lpKeyState);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetLayeredWindowAttributes(
|
|
HWND hwnd,
|
|
COLORREF crKey,
|
|
BYTE bAlpha,
|
|
DWORD dwFlags);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetLogonNotifyWindow(
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetObjectInformation(
|
|
HANDLE hObject,
|
|
DWORD nIndex,
|
|
PVOID pvInformation,
|
|
DWORD nLength);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserSetParent(
|
|
HWND hWndChild,
|
|
HWND hWndNewParent);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetProcessWindowStation(
|
|
HWINSTA hWindowStation);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetProp(
|
|
HWND hWnd,
|
|
ATOM Atom,
|
|
HANDLE Data);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetRipFlags(
|
|
DWORD Unknown0);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetScrollInfo(
|
|
HWND hwnd,
|
|
int fnBar,
|
|
LPCSCROLLINFO lpsi,
|
|
BOOL bRedraw);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetShellWindowEx(
|
|
HWND hwndShell,
|
|
HWND hwndShellListView);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetSysColors(
|
|
int cElements,
|
|
IN CONST INT *lpaElements,
|
|
IN CONST COLORREF *lpaRgbValues,
|
|
FLONG Flags);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetSystemCursor(
|
|
HCURSOR hcur,
|
|
DWORD id);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetThreadDesktop(
|
|
HDESK hDesktop);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetThreadState(
|
|
DWORD Unknown0,
|
|
DWORD Unknown1);
|
|
|
|
UINT_PTR
|
|
NTAPI
|
|
NtUserSetSystemTimer(
|
|
HWND hWnd,
|
|
UINT_PTR nIDEvent,
|
|
UINT uElapse,
|
|
TIMERPROC lpTimerFunc);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL);
|
|
|
|
UINT_PTR
|
|
NTAPI
|
|
NtUserSetTimer(
|
|
HWND hWnd,
|
|
UINT_PTR nIDEvent,
|
|
UINT uElapse,
|
|
TIMERPROC lpTimerFunc);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetWindowFNID(
|
|
HWND hWnd,
|
|
WORD fnID);
|
|
|
|
LONG
|
|
NTAPI
|
|
NtUserSetWindowLong(
|
|
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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetWindowPos(
|
|
HWND hWnd,
|
|
HWND hWndInsertAfter,
|
|
int X,
|
|
int Y,
|
|
int cx,
|
|
int cy,
|
|
UINT uFlags);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserSetWindowRgn(
|
|
HWND hWnd,
|
|
HRGN hRgn,
|
|
BOOL bRedraw);
|
|
|
|
HHOOK
|
|
NTAPI
|
|
NtUserSetWindowsHookAW(
|
|
int idHook,
|
|
HOOKPROC lpfn,
|
|
BOOL Ansi);
|
|
|
|
HHOOK
|
|
NTAPI
|
|
NtUserSetWindowsHookEx(
|
|
HINSTANCE Mod,
|
|
PUNICODE_STRING ModuleName,
|
|
DWORD ThreadId,
|
|
int HookId,
|
|
HOOKPROC HookProc,
|
|
BOOL Ansi);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetWindowStationUser(
|
|
IN HWINSTA hWindowStation,
|
|
IN PLUID pluid,
|
|
IN PSID psid OPTIONAL,
|
|
IN DWORD size);
|
|
|
|
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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserShowCaret(
|
|
HWND hWnd);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserHideCaret(
|
|
HWND hWnd);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserShowScrollBar(
|
|
HWND hWnd,
|
|
int wBar,
|
|
DWORD bShow);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserShowWindow(
|
|
HWND hWnd,
|
|
LONG nCmdShow);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserShowWindowAsync(
|
|
HWND hWnd,
|
|
LONG nCmdShow);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSoundSentry(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSwitchDesktop(
|
|
HDESK hDesktop);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSystemParametersInfo(
|
|
UINT uiAction,
|
|
UINT uiParam,
|
|
PVOID pvParam,
|
|
UINT fWinIni);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserTestForInteractiveUser(
|
|
DWORD dwUnknown1);
|
|
|
|
INT
|
|
NTAPI
|
|
NtUserToUnicodeEx(
|
|
UINT wVirtKey,
|
|
UINT wScanCode,
|
|
PBYTE lpKeyState,
|
|
LPWSTR pwszBuff,
|
|
int cchBuff,
|
|
UINT wFlags,
|
|
HKL dwhkl);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserTrackMouseEvent(
|
|
LPTRACKMOUSEEVENT lpEventTrack);
|
|
|
|
int
|
|
NTAPI
|
|
NtUserTranslateAccelerator(
|
|
HWND Window,
|
|
HACCEL Table,
|
|
LPMSG Message);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserTranslateMessage(
|
|
LPMSG lpMsg,
|
|
UINT flags );
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnhookWindowsHookEx(
|
|
HHOOK Hook);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnhookWinEvent(
|
|
HWINEVENTHOOK hWinEventHook);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnloadKeyboardLayout(
|
|
HKL hKl);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnlockWindowStation(
|
|
HWINSTA hWindowStation);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnregisterClass(
|
|
PUNICODE_STRING ClassNameOrAtom,
|
|
HINSTANCE hInstance,
|
|
PCLSMENUNAME pClassMenuName);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnregisterHotKey(
|
|
HWND hWnd,
|
|
int id);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUnregisterUserApiHook(VOID);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUpdateInputContext(
|
|
HIMC hIMC,
|
|
DWORD dwType,
|
|
DWORD_PTR dwValue);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserUpdateInstance(
|
|
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);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUpdatePerUserSystemParameters(
|
|
DWORD dwReserved,
|
|
BOOL bEnable);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserUserHandleGrantAccess(
|
|
IN HANDLE hUserHandle,
|
|
IN HANDLE hJob,
|
|
IN BOOL bGrant);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserValidateHandleSecure(
|
|
HANDLE hHdl);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserValidateRect(
|
|
HWND hWnd,
|
|
CONST RECT *lpRect);
|
|
|
|
BOOL
|
|
APIENTRY
|
|
NtUserValidateTimerCallback(
|
|
LPARAM lParam);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserVkKeyScanEx(
|
|
WCHAR wChar,
|
|
HKL KeyboardLayout,
|
|
BOOL bUsehHK);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserWaitForInputIdle(
|
|
IN HANDLE hProcess,
|
|
IN DWORD dwMilliseconds,
|
|
IN BOOL bSharedWow); /* Always FALSE */
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserWaitForMsgAndEvent(
|
|
DWORD Unknown0);
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserWaitMessage(VOID);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserWin32PoolAllocationStats(
|
|
DWORD Unknown0,
|
|
DWORD Unknown1,
|
|
DWORD Unknown2,
|
|
DWORD Unknown3,
|
|
DWORD Unknown4,
|
|
DWORD Unknown5);
|
|
|
|
HWND
|
|
NTAPI
|
|
NtUserWindowFromPoint(
|
|
LONG X,
|
|
LONG Y);
|
|
|
|
DWORD
|
|
NTAPI
|
|
NtUserYieldTask(VOID);
|
|
|
|
/* NtUserBad
|
|
* ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
|
|
*/
|
|
|
|
#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
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserGetMonitorInfo(
|
|
IN HMONITOR hMonitor,
|
|
OUT LPMONITORINFO pMonitorInfo);
|
|
|
|
/* Should be done in usermode */
|
|
|
|
HMONITOR
|
|
NTAPI
|
|
NtUserMonitorFromPoint(
|
|
IN POINT point,
|
|
IN DWORD dwFlags);
|
|
|
|
HMONITOR
|
|
NTAPI
|
|
NtUserMonitorFromRect(
|
|
IN LPCRECT pRect,
|
|
IN DWORD dwFlags);
|
|
|
|
HMONITOR
|
|
NTAPI
|
|
NtUserMonitorFromWindow(
|
|
IN HWND hWnd,
|
|
IN DWORD dwFlags);
|
|
|
|
typedef struct _SETSCROLLBARINFO
|
|
{
|
|
int nTrackPos;
|
|
int reserved;
|
|
DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
|
|
} SETSCROLLBARINFO, *PSETSCROLLBARINFO;
|
|
|
|
BOOL
|
|
NTAPI
|
|
NtUserSetScrollBarInfo(
|
|
HWND hwnd,
|
|
LONG idObject,
|
|
SETSCROLLBARINFO *info);
|
|
|
|
ULONG
|
|
RtlGetExpWinVer(_In_ PVOID BaseAddress);
|
|
|
|
#endif /* __WIN32K_NTUSER_H */
|
|
|
|
/* EOF */
|