Bye bye NtUserCreateCursorHandle.
[reactos.git] / reactos / include / reactos / win32k / ntuser.h
index 798980a..fec4e9b 100644 (file)
@@ -2,9 +2,25 @@
 #define __WIN32K_NTUSER_H
 
 typedef struct _PROCESSINFO *PPROCESSINFO;
+typedef struct _THREADINFO *PTHREADINFO;
 struct _DESKTOP;
 struct _WND;
 
+typedef enum _USERTHREADINFOCLASS
+{
+    UserThreadShutdownInformation,
+    UserThreadFlags,
+    UserThreadTaskName,
+    UserThreadWOWInformation,
+    UserThreadHungStatus,
+    UserThreadInitiateShutdown,
+    UserThreadEndShutdown,
+    UserThreadUseActiveDesktop,
+    UserThreadUseDesktop,
+    UserThreadRestoreDesktop,
+    UserThreadCsrApiPort,
+} USERTHREADINFOCLASS;
+
 typedef struct _LARGE_UNICODE_STRING
 {
   ULONG Length;
@@ -39,13 +55,13 @@ typedef struct _DESKTOPINFO
 {
     PVOID pvDesktopBase;
     PVOID pvDesktopLimit;
+    struct _WND *spwnd;
+    DWORD fsHooks;
+    struct tagHOOK * aphkStart[16];
 
-    HANDLE hKernelHeap;
-    ULONG_PTR HeapLimit;
     HWND hTaskManWindow;
     HWND hProgmanWindow;
     HWND hShellWindow;
-    struct _WND *Wnd;
 
     union
     {
@@ -72,37 +88,40 @@ typedef struct _CLIENTTHREADINFO
     DWORD dwcPumpHook;
 } CLIENTTHREADINFO, *PCLIENTTHREADINFO;
 
-typedef struct _W32THREADINFO
-{
-    PPROCESSINFO ppi; /* [KERNEL] */
-    PDESKTOPINFO pDeskInfo;
-    ULONG fsHooks;
-} W32THREADINFO, *PW32THREADINFO;
-
 typedef struct _HEAD
 {
   HANDLE h;
   DWORD  cLockObj;
 } HEAD, *PHEAD;
 
+typedef struct _THROBJHEAD
+{
+  HEAD;
+  PTHREADINFO pti;
+} THROBJHEAD, *PTHROBJHEAD;
+
 typedef struct _THRDESKHEAD
 {
-  HANDLE h;
-  DWORD  cLockObj;
-  PW32THREADINFO pti;
+  THROBJHEAD;
   struct _DESKTOP *rpdesk;
   PVOID       pSelf;
 } THRDESKHEAD, *PTHRDESKHEAD;
 
 typedef struct _PROCDESKHEAD
 {
-  HANDLE h;
-  DWORD  cLockObj;  
+  HEAD;
   DWORD hTaskWow;
   struct _DESKTOP *rpdesk;
   PVOID       pSelf;
 } PROCDESKHEAD, *PPROCDESKHEAD;
 
+typedef struct _PROCMARKHEAD
+{
+  HEAD;
+  ULONG hTaskWow;
+  PPROCESSINFO ppi;
+} PROCMARKHEAD, *PPROCMARKHEAD;
+
 #define UserHMGetHandle(obj) ((obj)->head.h)
 
 /* Window Client Information structure */
@@ -120,13 +139,50 @@ typedef struct tagHOOK
   UNICODE_STRING ModuleName; /* Module name for global hooks */
 } HOOK, *PHOOK;
 
+/* 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;
      PVOID pvWnd;
 } CALLBACKWND, *PCALLBACKWND;
 
-#define CI_CURTHPRHOOK    0x00000010
+#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
 
 typedef struct _CLIENTINFO
 {
@@ -135,7 +191,7 @@ typedef struct _CLIENTINFO
     DWORD dwExpWinVer;
     DWORD dwCompatFlags;
     DWORD dwCompatFlags2;
-    DWORD dwTIFlags;
+    DWORD dwTIFlags; // ThreadInfo TIF_Xxx flags for User space.
     PDESKTOPINFO pDeskInfo;
     ULONG_PTR ulClientDelta;
     PHOOK phkCurrent;
@@ -160,23 +216,86 @@ typedef struct _CLIENTINFO
     PPROCESSINFO ppi;
 } CLIENTINFO, *PCLIENTINFO;
 
-/* Make sure it fits exactly into the TEB */
-C_ASSERT(sizeof(CLIENTINFO) == FIELD_OFFSET(TEB, glDispatchTable) - FIELD_OFFSET(TEB, Win32ClientInfo));
+/* Make sure it fits into the TEB */
+C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
 
 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
 
+/* Menu Item fType. */
+#define MFT_RTOL 0x6000
+
+typedef struct tagITEM
+{
+    UINT fType;
+    UINT fState;
+    UINT wID;
+    struct tagMENU* spSubMenu; /* Pop-up menu. */
+    HANDLE hbmpChecked;
+    HANDLE hbmpUnchecked;
+    USHORT* lpstr; /* 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 " */
+} 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
+
+typedef struct tagMENU
+{
+    PROCDESKHEAD head;
+    ULONG fFlags;             /* [Style flags | Menu flags] */
+    INT iItem;                /* nPos of selected item, if -1 not selected. */
+    UINT cAlloced;            /* Number of allocated items. Inc's of 8 */
+    UINT cItems;              /* Number of items in the menu */
+    ULONG cxMenu;             /* Width of the whole menu */
+    ULONG cyMenu;             /* Height of the whole menu */
+    ULONG cxTextAlign;        /* Offset of text when items have both bitmaps and text */
+    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. */
+} MENU, *PMENU;
+
 typedef struct _REGISTER_SYSCLASS
 {
     /* This is a reactos specific class used to initialize the
        system window classes during user32 initialization */
-    UNICODE_STRING ClassName;
+    PWSTR ClassName;
     UINT Style;
     WNDPROC ProcW;
-    WNDPROC ProcA;
     UINT ExtraBytes;
     HICON hCursor;
     HBRUSH hBrush;
-    UINT ClassId;
+    WORD fiId;
+    WORD iCls;
 } REGISTER_SYSCLASS, *PREGISTER_SYSCLASS;
 
 typedef struct _CLSMENUNAME
@@ -203,8 +322,8 @@ typedef struct tagSBINFO
 
 typedef enum _GETCPD
 {
-    UserGetCPDU2A      = 0x01,
-    UserGetCPDA2U      = 0X02,
+    UserGetCPDA2U      = 0x01, // " Unicode "
+    UserGetCPDU2A      = 0X02, // " Ansi "
     UserGetCPDClass    = 0X10,
     UserGetCPDWindow   = 0X20,
     UserGetCPDDialog   = 0X40,
@@ -216,11 +335,7 @@ typedef struct _CALLPROCDATA
     PROCDESKHEAD head;
     struct _CALLPROCDATA *spcpdNext;
     WNDPROC pfnClientPrevious;
-    union
-    {
-       GETCPD wType;
-       UINT Unicode : 1;
-    };
+    GETCPD wType;
 } CALLPROCDATA, *PCALLPROCDATA;
 
 #define CSF_SERVERSIDEPROC      0x0001
@@ -249,11 +364,6 @@ typedef struct _CLS
     ULONG cWndReferenceCount;
     UINT style;
     WNDPROC lpfnWndProc;
-    union
-    {
-        WNDPROC WndProcExtra;
-        PCALLPROCDATA CallProc;
-    };
     INT cbclsExtra;
     INT cbwndExtra;
     HINSTANCE hModule;
@@ -267,12 +377,10 @@ typedef struct _CLS
     HANDLE hIconSm; /* FIXME - Use pointer! */
     //PCURSOR spicnSm;
 
-    UINT Destroying : 1; // CSF_WOWDEFERDESTROY
     UINT Unicode : 1; // !CSF_ANSIPROC
-    UINT System : 1;  // CSF_SYSTEMCLASS
-    UINT Global : 1;  // CS_GLOBALCLASS
+    UINT Global : 1;  // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
     UINT MenuNameIsString : 1;
-    UINT NotUsed : 27;
+    UINT NotUsed : 29;
 } CLS, *PCLS;
 
 
@@ -344,14 +452,16 @@ typedef struct _CLS
 
 /* Non SDK ExStyles */
 #define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
+#define WS_EX_FORCELEGACYRESIZENCMETR  0x00800000
 #define WS_EX_UISTATEACTIVE            0x04000000
 #define WS_EX_REDIRECTED               0X20000000
 #define WS_EX_UISTATEKBACCELHIDDEN     0X40000000
 #define WS_EX_UISTATEFOCUSRECTHIDDEN   0X80000000
+#define WS_EX_SETANSICREATOR           0x80000000 // For WNDS_ANSICREATOR
 
 /* Non SDK Styles */
-#define WS_MAXIMIZED  0X01000000
-#define WS_MINIMIZED  0X20000000
+#define WS_MAXIMIZED  WS_MAXIMIZE
+#define WS_MINIMIZED  WS_MINIMIZE
 
 /* ExStyles2 */
 #define WS_EX2_CLIPBOARDLISTENER        0X00000001
@@ -387,14 +497,6 @@ typedef struct _WND
     RECT rcWindow;
     RECT rcClient;
     WNDPROC lpfnWndProc;
-    union
-    {
-        /* Pointer to a call procedure handle */
-        PCALLPROCDATA CallProc;
-        /* Extra Wnd proc (windows of system classes) */
-        WNDPROC WndProcExtra;
-    };
-
     /* Pointer to the window class. */
     PCLS pcls;
     HRGN hrgnUpdate;
@@ -412,7 +514,7 @@ typedef struct _WND
     HRGN hrgnClip;
     HRGN hrgnNewFrame;
     /* Window name. */
-    UNICODE_STRING strName;
+    LARGE_UNICODE_STRING strName;
     /* Size of the extra data associated with the window. */
     ULONG cbwndExtra;
     HWND hWndLastActive;
@@ -433,7 +535,6 @@ typedef struct _WND
 
     UINT Unicode : 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
     /* Indicates whether the window is derived from a system class */
-    UINT IsSystem : 1; // System class ?
     UINT InternalPosInitialized : 1;
     UINT HideFocus : 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
     UINT HideAccel : 1; // WS_EX_UISTATEKBACCELHIDDEN ?
@@ -527,10 +628,21 @@ typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR);
 #define FNID_LAST                   0x02B9
 
 #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
@@ -549,19 +661,19 @@ typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR);
 #define ICLS_DDEMLSERVERA 13
 #define ICLS_DDEMLSERVERW 14
 #define ICLS_IME          15
-#define ICLS_DESKTOP      16
-#define ICLS_DIALOG       17
-#define ICLS_MENU         18
-#define ICLS_SWITCH       19
-#define ICLS_ICONTITLE    20
-#define ICLS_TOOLTIPS     21
+#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    22
-#define ICLS_HWNDMESSAGE  23
-#define ICLS_UNKNOWN      24
+#define ICLS_SYSSHADOW    23
+#define ICLS_HWNDMESSAGE  24
 #define ICLS_NOTUSED      25
 #endif
 #define ICLS_END          31
@@ -569,6 +681,7 @@ typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR);
 #define COLOR_LAST COLOR_MENUBAR
 #define MAX_MB_STRINGS 11
 
+#define SRVINFO_APIHOOK 0x0010
 #define SRVINFO_METRICS 0x0020
 
 typedef struct tagOEMBITMAPINFO
@@ -643,7 +756,7 @@ typedef struct tagSERVERINFO
     DWORD           dwSRVIFlags;
     ULONG_PTR       cHandleEntries;
     PFN_FNID        mpFnidPfn[FNID_NUM];
-    WNDPROC         aStoCidPfn[7];
+    WNDPROC         aStoCidPfn[FNID_NUMSERVERPROC];
     USHORT          mpFnid_serverCBWndProc[FNID_NUM];
     PFNCLIENT       apfnClientA;
     PFNCLIENT       apfnClientW;
@@ -697,7 +810,7 @@ typedef struct _BROADCASTPARM
   LUID  luid;
 } BROADCASTPARM, *PBROADCASTPARM;
 
-PW32THREADINFO GetW32ThreadInfo(VOID);
+PTHREADINFO GetW32ThreadInfo(VOID);
 PPROCESSINFO GetW32ProcessInfo(VOID);
 
 typedef struct _WNDMSG
@@ -740,6 +853,8 @@ typedef struct _USERCONNECT
 //
 #define DCX_USESTYLE     0x00010000
 #define DCX_KEEPCLIPRGN  0x00040000
+#define DCX_KEEPLAYOUT   0x40000000
+#define DCX_PROCESSOWNED 0x80000000
 
 //
 // Non SDK Queue message types.
@@ -1217,22 +1332,22 @@ NtUserCallNextHookEx(
   LPARAM lParam,
   BOOL Ansi);
 
-DWORD
+DWORD_PTR
 NTAPI
 NtUserCallNoParam(
   DWORD Routine);
 
-DWORD
+DWORD_PTR
 NTAPI
 NtUserCallOneParam(
-  DWORD Param,
+  DWORD_PTR Param,
   DWORD Routine);
 
-DWORD
+DWORD_PTR
 NTAPI
 NtUserCallTwoParam(
-  DWORD Param1,
-  DWORD Param2,
+  DWORD_PTR Param1,
+  DWORD_PTR Param2,
   DWORD Routine);
 
 BOOL
@@ -1357,28 +1472,9 @@ NtUserCreateLocalMemHandle(
 HWND
 NTAPI
 NtUserCreateWindowEx(
-  DWORD dwExStyle,
-  PUNICODE_STRING lpClassName,
-  PUNICODE_STRING lpWindowName,
-  DWORD dwStyle,
-  LONG x,
-  LONG y,
-  LONG nWidth,
-  LONG nHeight,
-  HWND hWndParent,
-  HMENU hMenu,
-  HINSTANCE hInstance,
-  LPVOID lpParam,
-  DWORD dwShowMode,
-  BOOL bUnicodeWindow,
-  DWORD dwUnknown);
-#if 0
-HWND
-NTAPI
-NtUserCreateWindowEx(
-  DWORD dwExStyle,
+  DWORD dwExStyle, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
   PLARGE_STRING plstrClassName,
-  PLARGE_STRING plstrClsVesrion,
+  PLARGE_STRING plstrClsVersion,
   PLARGE_STRING plstrWindowName,
   DWORD dwStyle,
   int x,
@@ -1389,9 +1485,8 @@ NtUserCreateWindowEx(
   HMENU hMenu,
   HINSTANCE hInstance,
   LPVOID lpParam,
-  DWORD dwFlags, // |= 1 == Ansi
+  DWORD dwFlags,
   PVOID acbiBuffer);
-#endif
 
 HWINSTA
 NTAPI
@@ -1511,6 +1606,15 @@ NtUserDrawCaptionTemp(
   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(
@@ -1523,8 +1627,8 @@ NtUserDrawIconEx(
   UINT istepIfAniCur,
   HBRUSH hbrFlickerFreeDraw,
   UINT diFlags,
-  DWORD Unknown0,
-  DWORD Unknown1);
+  BOOL bMetaHDC,
+  PVOID pDIXData);
 
 DWORD
 NTAPI
@@ -1981,7 +2085,7 @@ enum ThreadStateRoutines
     THREADSTATE_GETINPUTSTATE
 };
 
-DWORD
+DWORD_PTR
 NTAPI
 NtUserGetThreadState(
   DWORD Routine);
@@ -2310,6 +2414,7 @@ NtUserQueryUserCounters(
 #define QUERY_WINDOW_ACTIVE     0x02
 #define QUERY_WINDOW_FOCUS      0x03
 #define QUERY_WINDOW_ISHUNG    0x04
+#define QUERY_WINDOW_REAL_ID   0x05
 DWORD
 NTAPI
 NtUserQueryWindow(
@@ -2367,11 +2472,13 @@ NtUserRegisterRawInputDevices(
     IN UINT uiNumDevices,
     IN UINT cbSize);
 
-DWORD
+BOOL
 NTAPI
 NtUserRegisterUserApiHook(
-    DWORD dwUnknown1,
-    DWORD dwUnknown2);
+    PUNICODE_STRING m_dllname1,
+    PUNICODE_STRING m_funname1,
+    DWORD dwUnknown3,
+    DWORD dwUnknown4);
 
 BOOL
 NTAPI
@@ -2427,13 +2534,13 @@ NTAPI
 NtUserResolveDesktopForWOW(
   DWORD Unknown0);
 
-DWORD
+BOOL
 NTAPI
 NtUserSBGetParms(
-  DWORD Unknown0,
-  DWORD Unknown1,
-  DWORD Unknown2,
-  DWORD Unknown3);
+  HWND hwnd,
+  int fnBar,
+  PSBDATA pSBData,
+  LPSCROLLINFO lpsi);
 
 BOOL
 NTAPI
@@ -2569,13 +2676,14 @@ NtUserSetInformationProcess(
     DWORD dwUnknown3,
     DWORD dwUnknown4);
 
-DWORD
+NTSTATUS
 NTAPI
 NtUserSetInformationThread(
-    DWORD dwUnknown1,
-    DWORD dwUnknown2,
-    DWORD dwUnknown3,
-    DWORD dwUnknown4);
+    IN HANDLE ThreadHandle,
+    IN USERTHREADINFOCLASS ThreadInformationClass,
+    IN PVOID ThreadInformation,
+    IN ULONG ThreadInformationLength
+);
 
 DWORD
 NTAPI
@@ -2849,7 +2957,7 @@ BOOL
 NTAPI
 NtUserTranslateMessage(
   LPMSG lpMsg,
-  HKL dwhkl );
+  UINT flags );
 
 BOOL
 NTAPI
@@ -2883,7 +2991,7 @@ NTAPI
 NtUserUnregisterHotKey(HWND hWnd,
                       int id);
 
-DWORD
+BOOL
 NTAPI
 NtUserUnregisterUserApiHook(VOID);
 
@@ -3010,8 +3118,8 @@ typedef struct tagKMDDELPARAM
     {
       struct
         {
-          UINT uiLo;
-          UINT uiHi;
+          UINT_PTR uiLo;
+          UINT_PTR uiHi;
         } Packed;
       LPARAM Unpacked;
     } Value;
@@ -3027,23 +3135,17 @@ typedef struct tagKMDDELPARAM
 
 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO   0xffff0005
 #define NOPARAM_ROUTINE_ANYPOPUP              0xffff0006
-#define NOPARAM_ROUTINE_CSRSS_INITIALIZED     0xffff0007
 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK       0xffff0008
-#define ONEPARAM_ROUTINE_GETMENU              0xfffe0001 // usermode
-#define ONEPARAM_ROUTINE_ISWINDOWUNICODE      0xfffe0002
-#define ONEPARAM_ROUTINE_GETCARETINFO         0xfffe0007
 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING   0xfffe0008
 #define ONEPARAM_ROUTINE_ISWINDOWINDESTROY    0xfffe000c
 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING    0xfffe000e
-#define ONEPARAM_ROUTINE_GETWINDOWINSTANCE    0xfffe0010
 #define ONEPARAM_ROUTINE_CREATECURICONHANDLE  0xfffe0025 // CREATE_EMPTY_CURSOR_OBJECT ?
 #define ONEPARAM_ROUTINE_MSQSETWAKEMASK       0xfffe0027
 #define ONEPARAM_ROUTINE_GETCURSORPOSITION    0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
 #define TWOPARAM_ROUTINE_GETWINDOWRGNBOX    0xfffd0048 // user mode
 #define TWOPARAM_ROUTINE_GETWINDOWRGN       0xfffd0049 // user mode
 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT   0xfffd0050
-#define TWOPARAM_ROUTINE_SETMENUITEMRECT    0xfffd0051
 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE   0xfffd0052
   #define MSQ_STATE_CAPTURE    0x1
   #define MSQ_STATE_ACTIVE     0x2
@@ -3051,13 +3153,8 @@ typedef struct tagKMDDELPARAM
   #define MSQ_STATE_MENUOWNER  0x4
   #define MSQ_STATE_MOVESIZE   0x5
   #define MSQ_STATE_CARET      0x6
-#define TWOPARAM_ROUTINE_SETWNDCONTEXTHLPID 0xfffd0058 // use HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
 #define TWOPARAM_ROUTINE_SETCARETPOS        0xfffd0060
-#define TWOPARAM_ROUTINE_GETWINDOWINFO      0xfffd0061
 #define TWOPARAM_ROUTINE_REGISTERLOGONPROC  0xfffd0062
-#define TWOPARAM_ROUTINE_ROS_ISACTIVEICON   0x1001
-#define TWOPARAM_ROUTINE_ROS_NCDESTROY      0x1002
-#define TWOPARAM_ROUTINE_ROS_REGSYSCLASSES  0x1003
 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE  0x1004
 
 DWORD
@@ -3068,13 +3165,6 @@ NtUserBuildMenuItemList(
  ULONG nBufSize,
  DWORD Reserved);
 
-/* Use ONEPARAM_ROUTINE_CREATEEMPTYCURSOROBJECT (0x21) ? */
-HANDLE
-NTAPI
-NtUserCreateCursorIconHandle(
-  PICONINFO IconInfo,
-  BOOL Indirect);
-
 
 /* Should be done in usermode and use NtUserGetCPD. */
 ULONG_PTR
@@ -3107,22 +3197,6 @@ NtUserGetMonitorInfo(
   OUT LPMONITORINFO pMonitorInfo);
 
 /* Should be done in usermode */
-BOOL
-NTAPI
-NtUserGetScrollInfo(
-  HWND hwnd,
-  int fnBar,
-  LPSCROLLINFO lpsi);
-
-HWND
-NTAPI
-NtUserGetWindow(HWND hWnd, UINT Relationship);
-
-/* Should be done in usermode and use NtUserGetCPD. */
-LONG
-NTAPI
-NtUserGetWindowLong(HWND hWnd, DWORD Index, BOOL Ansi);
-
 
 /* (other FocusedItem values give the position of the focused item) */
 #define NO_SELECTED_ITEM  0xffff
@@ -3177,8 +3251,8 @@ typedef struct tagROSMENUITEMINFO
     HBITMAP hbmpItem;
     /* ----------- Extra ----------- */
     RECT Rect;      /* Item area (relative to menu window) */
-    UINT XTab;      /* X position of text after Tab */
-    LPWSTR Text;    /* Copy of the text pointer in MenuItem->Text */
+    UINT dxTab;      /* X position of text after Tab */
+    LPWSTR lpstr;    /* Copy of the text pointer in MenuItem->Text */
 } ROSMENUITEMINFO, *PROSMENUITEMINFO;
 
 BOOL