menu: code cleanup, naming changes, simplify refcounting, make internal func take objects and not handles
Modified: trunk/reactos/subsys/win32k/include/menu.h
Modified: trunk/reactos/subsys/win32k/include/userfuncs.h
Modified: trunk/reactos/subsys/win32k/ntuser/accelerator.c
Modified: trunk/reactos/subsys/win32k/ntuser/menu.c
Modified: trunk/reactos/subsys/win32k/ntuser/window.c

Modified: trunk/reactos/subsys/win32k/include/menu.h
--- trunk/reactos/subsys/win32k/include/menu.h	2005-09-06 23:16:18 UTC (rev 17709)
+++ trunk/reactos/subsys/win32k/include/menu.h	2005-09-06 23:21:40 UTC (rev 17710)
@@ -90,9 +90,6 @@
 IntCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT uCheck);
 
 BOOL FASTCALL
-IntSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos);
-
-BOOL FASTCALL
 IntSetMenuItemRect(PMENU_OBJECT MenuObject, UINT Item, BOOL fByPos, RECT *rcRect);
 
 BOOL FASTCALL

Modified: trunk/reactos/subsys/win32k/include/userfuncs.h
--- trunk/reactos/subsys/win32k/include/userfuncs.h	2005-09-06 23:16:18 UTC (rev 17709)
+++ trunk/reactos/subsys/win32k/include/userfuncs.h	2005-09-06 23:21:40 UTC (rev 17710)
@@ -86,7 +86,7 @@
 
 /*************** WINDOW.C ***************/
 
-PWINDOW_OBJECT FASTCALL UserGetWindowObjectNoRef(HWND hWnd);
+PWINDOW_OBJECT FASTCALL UserGetWindowObject(HWND hWnd);
 
 VOID FASTCALL
 co_DestroyThreadWindows(struct _ETHREAD *Thread);
@@ -112,25 +112,14 @@
 
 BOOL FASTCALL
 UserSetMenuDefaultItem(
-  HMENU hMenu,
+  PMENU_OBJECT Menu,
   UINT uItem,
   UINT fByPos);
 
 BOOL FASTCALL UserDestroyMenu(HMENU hMenu);
 
-BOOL FASTCALL
-UserMenuItemInfo(
- HMENU Menu,
- UINT Item,
- BOOL ByPosition,
- PROSMENUITEMINFO UnsafeItemInfo,
- BOOL SetOrGet);
 
-BOOL FASTCALL
-UserMenuInfo(
- HMENU Menu,
- PROSMENUINFO UnsafeMenuInfo,
- BOOL SetOrGet);
+
  
  
 /*************** SCROLLBAR.C ***************/

Modified: trunk/reactos/subsys/win32k/ntuser/accelerator.c
--- trunk/reactos/subsys/win32k/ntuser/accelerator.c	2005-09-06 23:16:18 UTC (rev 17709)
+++ trunk/reactos/subsys/win32k/ntuser/accelerator.c	2005-09-06 23:21:40 UTC (rev 17710)
@@ -516,7 +516,7 @@
 
   UserReferenceAccelObjectCo(Accel); 
 
-  if (!(Window = UserGetWindowObjectNoRef(hWnd)))
+  if (!(Window = UserGetWindowObject(hWnd)))
   {
     RETURN( 0);
   }

Modified: trunk/reactos/subsys/win32k/ntuser/menu.c
--- trunk/reactos/subsys/win32k/ntuser/menu.c	2005-09-06 23:16:18 UTC (rev 17709)
+++ trunk/reactos/subsys/win32k/ntuser/menu.c	2005-09-06 23:21:40 UTC (rev 17710)
@@ -33,6 +33,25 @@
 #define NDEBUG
 #include <debug.h>
 
+
+/* STATIC FUNCTION ***********************************************************/
+
+static
+BOOL FASTCALL
+UserMenuItemInfo(
+ PMENU_OBJECT Menu,
+ UINT Item,
+ BOOL ByPosition,
+ PROSMENUITEMINFO UnsafeItemInfo,
+ BOOL SetOrGet);
+
+static
+BOOL FASTCALL
+UserMenuInfo(
+ PMENU_OBJECT Menu,
+ PROSMENUINFO UnsafeMenuInfo,
+ BOOL SetOrGet);
+ 
 /* INTERNAL ******************************************************************/
 
 /* maximum number of menu items a menu can contain */
@@ -94,6 +113,23 @@
   return(STATUS_SUCCESS);
 }
 
+PMENU_OBJECT FASTCALL UserGetMenuObject(HMENU hMenu)
+{
+  PMENU_OBJECT Menu;
+  NTSTATUS Status;
+
+  Status = ObmReferenceObjectByHandle(gHandleTable,
+                             hMenu, otMenu, (PVOID*)&Menu);
+  if (!NT_SUCCESS(Status))
+  {
+    SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
+    return NULL;
+  }
+  ObmDereferenceObject(Menu);
+  return Menu;   
+}
+
+
 #if 0
 void FASTCALL
 DumpMenuItemList(PMENU_ITEM MenuItem)
@@ -152,23 +188,23 @@
 }
 
 BOOL FASTCALL
-IntFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem,
+IntFreeMenuItem(PMENU_OBJECT Menu, PMENU_ITEM MenuItem,
     BOOL RemoveFromList, BOOL bRecurse)
 {
   FreeMenuText(MenuItem);
   if(RemoveFromList)
   {
     /* FIXME - Remove from List */
-    MenuObject->MenuInfo.MenuItemCount--;
+    Menu->MenuInfo.MenuItemCount--;
   }
   if(bRecurse && MenuItem->hSubMenu)
   {
-    PMENU_OBJECT SubMenuObject;
-    SubMenuObject = IntGetMenuObject(MenuItem->hSubMenu );
-    if(SubMenuObject)
+    PMENU_OBJECT SubMenu;
+    SubMenu = IntGetMenuObject(MenuItem->hSubMenu );
+    if(SubMenu)
     {
-      IntDestroyMenuObject(SubMenuObject, bRecurse, TRUE);
-      IntReleaseMenuObject(SubMenuObject);
+      IntDestroyMenuObject(SubMenu, bRecurse, TRUE);
+      IntReleaseMenuObject(SubMenu);
     }
   }
 
@@ -179,11 +215,11 @@
 }
 
 BOOL FASTCALL
-IntRemoveMenuItem(PMENU_OBJECT MenuObject, UINT uPosition, UINT uFlags,
+IntRemoveMenuItem(PMENU_OBJECT Menu, UINT uPosition, UINT uFlags,
                    BOOL bRecurse)
 {
   PMENU_ITEM PrevMenuItem, MenuItem;
-  if(IntGetMenuItemByFlag(MenuObject, uPosition, uFlags, &MenuItem,
+  if(IntGetMenuItemByFlag(Menu, uPosition, uFlags, &MenuItem,
                            &PrevMenuItem) > -1)
   {
     if(MenuItem)
@@ -192,50 +228,50 @@
         PrevMenuItem->Next = MenuItem->Next;
       else
       {
-        MenuObject->MenuItemList = MenuItem->Next;
+        Menu->MenuItemList = MenuItem->Next;
       }
-      return IntFreeMenuItem(MenuObject, MenuItem, TRUE, bRecurse);
+      return IntFreeMenuItem(Menu, MenuItem, TRUE, bRecurse);
     }
   }
   return FALSE;
 }
 
 UINT FASTCALL
-IntDeleteMenuItems(PMENU_OBJECT MenuObject, BOOL bRecurse)
+IntDeleteMenuItems(PMENU_OBJECT Menu, BOOL bRecurse)
 {
   UINT res = 0;
   PMENU_ITEM NextItem;
-  PMENU_ITEM CurItem = MenuObject->MenuItemList;
+  PMENU_ITEM CurItem = Menu->MenuItemList;
   while(CurItem)
   {
     NextItem = CurItem->Next;
-    IntFreeMenuItem(MenuObject, CurItem, FALSE, bRecurse);
+    IntFreeMenuItem(Menu, CurItem, FALSE, bRecurse);
     CurItem = NextItem;
     res++;
   }
-  MenuObject->MenuInfo.MenuItemCount = 0;
-  MenuObject->MenuItemList = NULL;
+  Menu->MenuInfo.MenuItemCount = 0;
+  Menu->MenuItemList = NULL;
   return res;
 }
 
 BOOL FASTCALL
-IntDestroyMenuObject(PMENU_OBJECT MenuObject,
+IntDestroyMenuObject(PMENU_OBJECT Menu,
                      BOOL bRecurse, BOOL RemoveFromProcess)
 {
-  if(MenuObject)
+  if(Menu)
   {
     PWINSTATION_OBJECT WindowStation;
     NTSTATUS Status;
 
     /* remove all menu items */
-    IntDeleteMenuItems(MenuObject, bRecurse); /* do not destroy submenus */
+    IntDeleteMenuItems(Menu, bRecurse); /* do not destroy submenus */
 
     if(RemoveFromProcess)
     {
-      RemoveEntryList(&MenuObject->ListEntry);
+      RemoveEntryList(&Menu->ListEntry);
     }
 
-    Status = ObReferenceObjectByHandle(MenuObject->Process->Win32WindowStation,
+    Status = ObReferenceObjectByHandle(Menu->Process->Win32WindowStation,
                                        0,
                                        ExWindowStationObjectType,
                                        KernelMode,
@@ -243,7 +279,7 @@
                                        NULL);
     if(NT_SUCCESS(Status))
     {
-      ObmCloseHandle(gHandleTable, MenuObject->MenuInfo.Self);
+      ObmCloseHandle(gHandleTable, Menu->MenuInfo.Self);
       ObDereferenceObject(WindowStation);
       return TRUE;
     }
@@ -254,44 +290,44 @@
 PMENU_OBJECT FASTCALL
 IntCreateMenu(PHANDLE Handle, BOOL IsMenuBar)
 {
-  PMENU_OBJECT MenuObject;
+  PMENU_OBJECT Menu;
 
-  MenuObject = (PMENU_OBJECT)ObmCreateObject(
+  Menu = (PMENU_OBJECT)ObmCreateObject(
       gHandleTable, Handle,
       otMenu, sizeof(MENU_OBJECT));
 
-  if(!MenuObject)
+  if(!Menu)
   {
     *Handle = 0;
     return NULL;
   }
 
-  MenuObject->Process = PsGetCurrentProcess();
-  MenuObject->RtoL = FALSE; /* default */
-  MenuObject->MenuInfo.cbSize = sizeof(MENUINFO); /* not used */
-  MenuObject->MenuInfo.fMask = 0; /* not used */
-  MenuObject->MenuInfo.dwStyle = 0; /* FIXME */
-  MenuObject->MenuInfo.cyMax = 0; /* default */
-  MenuObject->MenuInfo.hbrBack =
+  Menu->Process = PsGetCurrentProcess();
+  Menu->RtoL = FALSE; /* default */
+  Menu->MenuInfo.cbSize = sizeof(MENUINFO); /* not used */
+  Menu->MenuInfo.fMask = 0; /* not used */
+  Menu->MenuInfo.dwStyle = 0; /* FIXME */
+  Menu->MenuInfo.cyMax = 0; /* default */
+  Menu->MenuInfo.hbrBack =
      NtGdiCreateSolidBrush(RGB(192, 192, 192)); /* FIXME: default background color */
-  MenuObject->MenuInfo.dwContextHelpID = 0; /* default */
-  MenuObject->MenuInfo.dwMenuData = 0; /* default */
-  MenuObject->MenuInfo.Self = *Handle;
-  MenuObject->MenuInfo.FocusedItem = NO_SELECTED_ITEM;
-  MenuObject->MenuInfo.Flags = (IsMenuBar ? 0 : MF_POPUP);
-  MenuObject->MenuInfo.Wnd = NULL;
-  MenuObject->MenuInfo.WndOwner = NULL;
-  MenuObject->MenuInfo.Height = 0;
-  MenuObject->MenuInfo.Width = 0;
-  MenuObject->MenuInfo.TimeToHide = FALSE;
+  Menu->MenuInfo.dwContextHelpID = 0; /* default */
+  Menu->MenuInfo.dwMenuData = 0; /* default */
+  Menu->MenuInfo.Self = *Handle;
+  Menu->MenuInfo.FocusedItem = NO_SELECTED_ITEM;
+  Menu->MenuInfo.Flags = (IsMenuBar ? 0 : MF_POPUP);
+  Menu->MenuInfo.Wnd = NULL;
+  Menu->MenuInfo.WndOwner = NULL;
+  Menu->MenuInfo.Height = 0;
+  Menu->MenuInfo.Width = 0;
+  Menu->MenuInfo.TimeToHide = FALSE;
 
-  MenuObject->MenuInfo.MenuItemCount = 0;
-  MenuObject->MenuItemList = NULL;
+  Menu->MenuInfo.MenuItemCount = 0;
+  Menu->MenuItemList = NULL;
 
   /* Insert menu item into process menu handle list */
-  InsertTailList(&PsGetWin32Process()->MenuListHead, &MenuObject->ListEntry);
+  InsertTailList(&PsGetWin32Process()->MenuListHead, &Menu->ListEntry);
 
-  return MenuObject;
+  return Menu;
 }
 
 BOOL FASTCALL
@@ -359,77 +395,78 @@
 PMENU_OBJECT FASTCALL
 IntCloneMenu(PMENU_OBJECT Source)
 {
-  HANDLE Handle;
-  PMENU_OBJECT MenuObject;
+  HANDLE hMenu;
+  PMENU_OBJECT Menu;
 
   if(!Source)
     return NULL;
 
-  MenuObject = (PMENU_OBJECT)ObmCreateObject(
-    gHandleTable, &Handle,
+  Menu = (PMENU_OBJECT)ObmCreateObject(
+    gHandleTable, &hMenu,
     otMenu, sizeof(MENU_OBJECT));
-  if(!MenuObject)
+  
+  if(!Menu)
     return NULL;
 
-  MenuObject->Process = PsGetCurrentProcess();
-  MenuObject->RtoL = Source->RtoL;
-  MenuObject->MenuInfo.cbSize = sizeof(MENUINFO); /* not used */
-  MenuObject->MenuInfo.fMask = Source->MenuInfo.fMask;
-  MenuObject->MenuInfo.dwStyle = Source->MenuInfo.dwStyle;
-  MenuObject->MenuInfo.cyMax = Source->MenuInfo.cyMax;
-  MenuObject->MenuInfo.hbrBack = Source->MenuInfo.hbrBack;
-  MenuObject->MenuInfo.dwContextHelpID = Source->MenuInfo.dwContextHelpID;
-  MenuObject->MenuInfo.dwMenuData = Source->MenuInfo.dwMenuData;
-  MenuObject->MenuInfo.Self = Handle;
-  MenuObject->MenuInfo.FocusedItem = NO_SELECTED_ITEM;
-  MenuObject->MenuInfo.Wnd = NULL;
-  MenuObject->MenuInfo.WndOwner = NULL;
-  MenuObject->MenuInfo.Height = 0;
-  MenuObject->MenuInfo.Width = 0;
-  MenuObject->MenuInfo.TimeToHide = FALSE;
+  Menu->Process = PsGetCurrentProcess();
+  Menu->RtoL = Source->RtoL;
+  Menu->MenuInfo.cbSize = sizeof(MENUINFO); /* not used */
+  Menu->MenuInfo.fMask = Source->MenuInfo.fMask;
+  Menu->MenuInfo.dwStyle = Source->MenuInfo.dwStyle;
+  Menu->MenuInfo.cyMax = Source->MenuInfo.cyMax;
+  Menu->MenuInfo.hbrBack = Source->MenuInfo.hbrBack;
+  Menu->MenuInfo.dwContextHelpID = Source->MenuInfo.dwContextHelpID;
+  Menu->MenuInfo.dwMenuData = Source->MenuInfo.dwMenuData;
+  Menu->MenuInfo.Self = hMenu;
+  Menu->MenuInfo.FocusedItem = NO_SELECTED_ITEM;
+  Menu->MenuInfo.Wnd = NULL;
+  Menu->MenuInfo.WndOwner = NULL;
+  Menu->MenuInfo.Height = 0;
+  Menu->MenuInfo.Width = 0;
+  Menu->MenuInfo.TimeToHide = FALSE;
 
-  MenuObject->MenuInfo.MenuItemCount = 0;
-  MenuObject->MenuItemList = NULL;
+  Menu->MenuInfo.MenuItemCount = 0;
+  Menu->MenuItemList = NULL;
 
   /* Insert menu item into process menu handle list */
-  InsertTailList(&PsGetWin32Process()->MenuListHead, &MenuObject->ListEntry);
+  InsertTailList(&PsGetWin32Process()->MenuListHead, &Menu->ListEntry);
 
-  IntCloneMenuItems(MenuObject, Source);
+  IntCloneMenuItems(Menu, Source);
 
-  return MenuObject;
+  return Menu;
 }
 
 BOOL FASTCALL
-IntSetMenuFlagRtoL(PMENU_OBJECT MenuObject)
+IntSetMenuFlagRtoL(PMENU_OBJECT Menu)
 {
-  MenuObject->RtoL = TRUE;
+  Menu->RtoL = TRUE;
   return TRUE;
 }
 
 BOOL FASTCALL
-IntSetMenuContextHelpId(PMENU_OBJECT MenuObject, DWORD dwContextHelpId)
+IntSetMenuContextHelpId(PMENU_OBJECT Menu, DWORD dwContextHelpId)
 {
-  MenuObject->MenuInfo.dwContextHelpID = dwContextHelpId;
+  Menu->MenuInfo.dwContextHelpID = dwContextHelpId;
   return TRUE;
 }
 
 BOOL FASTCALL
-IntGetMenuInfo(PMENU_OBJECT MenuObject, PROSMENUINFO lpmi)
+IntGetMenuInfo(PMENU_OBJECT Menu, PROSMENUINFO lpmi)
 {
   if(lpmi->fMask & MIM_BACKGROUND)
-    lpmi->hbrBack = MenuObject->MenuInfo.hbrBack;
+    lpmi->hbrBack = Menu->MenuInfo.hbrBack;
   if(lpmi->fMask & MIM_HELPID)
-    lpmi->dwContextHelpID = MenuObject->MenuInfo.dwContextHelpID;
+    lpmi->dwContextHelpID = Menu->MenuInfo.dwContextHelpID;
   if(lpmi->fMask & MIM_MAXHEIGHT)
-    lpmi->cyMax = MenuObject->MenuInfo.cyMax;
+    lpmi->cyMax = Menu->MenuInfo.cyMax;
   if(lpmi->fMask & MIM_MENUDATA)
-    lpmi->dwMenuData = MenuObject->MenuInfo.dwMenuData;
+    lpmi->dwMenuData = Menu->MenuInfo.dwMenuData;
   if(lpmi->fMask & MIM_STYLE)
-    lpmi->dwStyle = MenuObject->MenuInfo.dwStyle;
+    lpmi->dwStyle = Menu->MenuInfo.dwStyle;
   if (sizeof(MENUINFO) < lpmi->cbSize)
     {
       RtlCopyMemory((char *) lpmi + sizeof(MENUINFO),
-                    (char *) &MenuObject->MenuInfo + sizeof(MENUINFO),
+                    (char *) &Menu->MenuInfo + sizeof(MENUINFO),
                     lpmi->cbSize - sizeof(MENUINFO));
     }
 
@@ -452,30 +489,30 @@
 
 
 BOOL FASTCALL
-IntSetMenuInfo(PMENU_OBJECT MenuObject, PROSMENUINFO lpmi)
+IntSetMenuInfo(PMENU_OBJECT Menu, PROSMENUINFO lpmi)
 {
   if(lpmi->fMask & MIM_BACKGROUND)
-    MenuObject->MenuInfo.hbrBack = lpmi->hbrBack;
+    Menu->MenuInfo.hbrBack = lpmi->hbrBack;
   if(lpmi->fMask & MIM_HELPID)
-    MenuObject->MenuInfo.dwContextHelpID = lpmi->dwContextHelpID;
+    Menu->MenuInfo.dwContextHelpID = lpmi->dwContextHelpID;
   if(lpmi->fMask & MIM_MAXHEIGHT)
-    MenuObject->MenuInfo.cyMax = lpmi->cyMax;
+    Menu->MenuInfo.cyMax = lpmi->cyMax;
   if(lpmi->fMask & MIM_MENUDATA)
-    MenuObject->MenuInfo.dwMenuData = lpmi->dwMenuData;
+    Menu->MenuInfo.dwMenuData = lpmi->dwMenuData;
   if(lpmi->fMask & MIM_STYLE)
-    MenuObject->MenuInfo.dwStyle = lpmi->dwStyle;
+    Menu->MenuInfo.dwStyle = lpmi->dwStyle;
   if(lpmi->fMask & MIM_APPLYTOSUBMENUS)
     {
     /* FIXME */
     }
   if (sizeof(MENUINFO) < lpmi->cbSize)
     {
-      MenuObject->MenuInfo.FocusedItem = lpmi->FocusedItem;
-      MenuObject->MenuInfo.Height = lpmi->Height;
-      MenuObject->MenuInfo.Width = lpmi->Width;
-      MenuObject->MenuInfo.Wnd = lpmi->Wnd;
-      MenuObject->MenuInfo.WndOwner = lpmi->WndOwner;
-      MenuObject->MenuInfo.TimeToHide = lpmi->TimeToHide;
+      Menu->MenuInfo.FocusedItem = lpmi->FocusedItem;
+      Menu->MenuInfo.Height = lpmi->Height;
+      Menu->MenuInfo.Width = lpmi->Width;
+      Menu->MenuInfo.Wnd = lpmi->Wnd;
+      Menu->MenuInfo.WndOwner = lpmi->WndOwner;
+      Menu->MenuInfo.TimeToHide = lpmi->TimeToHide;
     }
 
   return TRUE;
@@ -483,11 +520,11 @@
 
 
 int FASTCALL
-IntGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT fFlag,
+IntGetMenuItemByFlag(PMENU_OBJECT Menu, UINT uSearchBy, UINT fFlag,
                      PMENU_ITEM *MenuItem, PMENU_ITEM *PrevMenuItem)
 {
   PMENU_ITEM PrevItem = NULL;
-  PMENU_ITEM CurItem = MenuObject->MenuItemList;
+  PMENU_ITEM CurItem = Menu->MenuItemList;
   int p;
   int ret;
 
@@ -527,18 +564,16 @@
       }
       else if (0 != (CurItem->fType & MF_POPUP))
       {
-        MenuObject = IntGetMenuObject(CurItem->hSubMenu);
-        if (NULL != MenuObject)
+        Menu = UserGetMenuObject(CurItem->hSubMenu);
+        if (NULL != Menu)
         {
-          ret = IntGetMenuItemByFlag(MenuObject, uSearchBy, fFlag,
+          ret = IntGetMenuItemByFlag(Menu, uSearchBy, fFlag,
                                      MenuItem, PrevMenuItem);
           if (-1 != ret)
           {
-            IntReleaseMenuObject(MenuObject);
             return ret;
           }
         }
-        IntReleaseMenuObject(MenuObject);
       }
       PrevItem = CurItem;
       CurItem = CurItem->Next;
@@ -550,13 +585,13 @@
 
 
 int FASTCALL
-IntInsertMenuItemToList(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, int pos)
+IntInsertMenuItemToList(PMENU_OBJECT Menu, PMENU_ITEM MenuItem, int pos)
 {
   PMENU_ITEM CurItem;
   PMENU_ITEM LastItem = NULL;
   UINT npos = 0;
 
-  CurItem = MenuObject->MenuItemList;
+  CurItem = Menu->MenuItemList;
   if(pos <= -1)
   {
     while(CurItem)
@@ -588,7 +623,7 @@
     else
     {
       /* insert at the beginning */
-      MenuObject->MenuItemList = MenuItem;
+      Menu->MenuItemList = MenuItem;
       MenuItem->Next = CurItem;
     }
   }
@@ -603,17 +638,18 @@
     else
     {
       /* insert first item */
-      MenuObject->MenuItemList = MenuItem;
+      Menu->MenuItemList = MenuItem;
       MenuItem->Next = NULL;
     }
   }
-  MenuObject->MenuInfo.MenuItemCount++;
+  Menu->MenuInfo.MenuItemCount++;
 
   return npos;
 }
 
 BOOL FASTCALL
-IntGetMenuItemInfo(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem, PROSMENUITEMINFO lpmii)
+IntGetMenuItemInfo(PMENU_OBJECT Menu, /* UNUSED PARAM!! */
+   PMENU_ITEM MenuItem, PROSMENUITEMINFO lpmii)
 {
   NTSTATUS Status;
 
@@ -722,7 +758,7 @@
     /* remove MFS_DEFAULT flag from all other menu items if this item
        has the MFS_DEFAULT state */
     if(lpmii->fState & MFS_DEFAULT)
-      IntSetMenuDefaultItem(MenuObject, -1, 0);
+      UserSetMenuDefaultItem(MenuObject, -1, 0);
     /* update the menu item state flags */
     UpdateMenuItemState(MenuItem->fState, lpmii->fState);
   }
@@ -1051,7 +1087,7 @@
 }
 
 BOOL FASTCALL
-IntSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos)
+UserSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT fByPos)
 {
   BOOL ret = FALSE;
   PMENU_ITEM MenuItem = MenuObject->MenuItemList;
@@ -1585,25 +1621,19 @@
   UINT fByPos,
   UINT gmdiFlags)
 {
-  PMENU_OBJECT MenuObject;
-  UINT res = -1;
+  PMENU_OBJECT Menu;
   DWORD gismc = 0;
   DECLARE_RETURN(UINT);  
 
   DPRINT("Enter NtUserGetMenuDefaultItem\n");
   UserEnterExclusive();
 
-  MenuObject = IntGetMenuObject(hMenu);
-  if(!MenuObject)
+  if(!(Menu = UserGetMenuObject(hMenu)))
   {
-    SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
-    RETURN( res);
+    RETURN(-1);
   }
 
-  res = IntGetMenuDefaultItem(MenuObject, fByPos, gmdiFlags, &gismc);
-
-  IntReleaseMenuObject(MenuObject);
-  RETURN(res);
+  RETURN( IntGetMenuDefaultItem(Menu, fByPos, gmdiFlags, &gismc));
   
 CLEANUP:
   DPRINT("Leave NtUserGetMenuDefaultItem, ret=%i\n",_ret_);
@@ -1661,19 +1691,25 @@
      LONG XMove, YMove;
      ULONG i;
      NTSTATUS Status;
+     PMENU_OBJECT Menu;
      DECLARE_RETURN(BOOL);  
 
      DPRINT("Enter NtUserGetMenuItemRect\n");
      UserEnterShared();
+
+   if (!(Menu = UserGetMenuObject(hMenu)))
+   {
+      RETURN(FALSE);
+   }
           
-     if(!UserMenuItemInfo(hMenu, uItem, MF_BYPOSITION, &mii, FALSE))
+     if(!UserMenuItemInfo(Menu, uItem, MF_BYPOSITION, &mii, FALSE))
       RETURN( FALSE);
      	
      referenceHwnd = hWnd;
 
      if(!hWnd)
      {
-   if(!UserMenuInfo(hMenu, &mi, FALSE)) RETURN( FALSE);
+   if(!UserMenuInfo(Menu, &mi, FALSE)) RETURN( FALSE);
     if(mi.Wnd == 0) RETURN( FALSE);
 	 referenceHwnd = mi.Wnd;
      }
@@ -1754,17 +1790,14 @@
 }
 
 
-/*
- * @implemented
- */
+static
 BOOL FASTCALL
 UserMenuInfo(
- HMENU Menu,
+ PMENU_OBJECT Menu,
  PROSMENUINFO UnsafeMenuInfo,
  BOOL SetOrGet)
 {
   BOOL Res;
-  PMENU_OBJECT MenuObject;
   DWORD Size;
   NTSTATUS Status;
   ROSMENUINFO MenuInfo;
@@ -1787,22 +1820,15 @@
       return( FALSE);
     }
 
-  MenuObject = IntGetMenuObject(Menu);
-  if (NULL == MenuObject)
-    {
-      SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
-      return( FALSE);
-    }
-
   if(SetOrGet)
     {
       /* Set MenuInfo */
-      Res = IntSetMenuInfo(MenuObject, &MenuInfo);
+      Res = IntSetMenuInfo(Menu, &MenuInfo);
     }
   else
     {
       /* Get MenuInfo */
-      Res = IntGetMenuInfo(MenuObject, &MenuInfo);
+      Res = IntGetMenuInfo(Menu, &MenuInfo);
       if (Res)
         {
           Status = MmCopyToCaller(UnsafeMenuInfo, &MenuInfo, Size);
@@ -1814,8 +1840,6 @@
         }
     }
 
-  IntReleaseMenuObject(MenuObject);
-
   return( Res);
 }
 
@@ -1829,15 +1853,21 @@
 BOOL
 STDCALL
 NtUserMenuInfo(
- HMENU Menu,
+ HMENU hMenu,
  PROSMENUINFO UnsafeMenuInfo,
  BOOL SetOrGet)
 {
+  PMENU_OBJECT Menu; 
   DECLARE_RETURN(BOOL);  
 
   DPRINT("Enter NtUserMenuInfo\n");
   UserEnterShared();
 
+  if (!(Menu = UserGetMenuObject(hMenu)))
+  {
+     RETURN(FALSE);
+  }
+
   RETURN(UserMenuInfo(Menu, UnsafeMenuInfo, SetOrGet));
   
 CLEANUP:
@@ -1853,13 +1883,13 @@
  */
 int STDCALL
 NtUserMenuItemFromPoint(
-  HWND Wnd,
-  HMENU Menu,
+  HWND hWnd,
+  HMENU hMenu,
   DWORD X,
   DWORD Y)
 {
-  PMENU_OBJECT MenuObject;
-  PWINDOW_OBJECT WindowObject = NULL;
+  PMENU_OBJECT Menu;
+  PWINDOW_OBJECT Window = NULL;
   PMENU_ITEM mi;
   int i;
   DECLARE_RETURN(int);  
@@ -1867,24 +1897,20 @@
   DPRINT("Enter NtUserMenuItemFromPoint\n");
   UserEnterExclusive();
 
-  MenuObject = IntGetMenuObject(Menu);
-  if (NULL == MenuObject)
+  if (!(Menu = UserGetMenuObject(hMenu)))
     {
-      SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
       RETURN( -1);
     }
 
-  WindowObject = IntGetWindowObject(MenuObject->MenuInfo.Wnd);
-  if (NULL == WindowObject)
+  if (!(Window = UserGetWindowObject(Menu->MenuInfo.Wnd)))
     {
-      SetLastWin32Error(ERROR_INVALID_WINDOW_HANDLE);
       RETURN( -1);
     }
-  X -= WindowObject->WindowRect.left;
-  Y -= WindowObject->WindowRect.top;
-  IntReleaseWindowObject(WindowObject);
+    
+  X -= Window->WindowRect.left;
+  Y -= Window->WindowRect.top;
 
-  mi = MenuObject->MenuItemList;
+  mi = Menu->MenuItemList;
   for (i = 0; NULL != mi; i++)
     {
       if (InRect(mi->Rect, X, Y))
@@ -1894,8 +1920,6 @@
       mi = mi->Next;
     }
 
-  IntReleaseMenuObject(MenuObject);
-
   RETURN( (mi ? i : NO_SELECTED_ITEM));
   
 CLEANUP:
@@ -1906,33 +1930,24 @@
 
 
 
-
-
+static
 BOOL FASTCALL
 UserMenuItemInfo(
- HMENU Menu,
+ PMENU_OBJECT Menu,
  UINT Item,
  BOOL ByPosition,
  PROSMENUITEMINFO UnsafeItemInfo,
  BOOL SetOrGet)
 {
-  PMENU_OBJECT MenuObject;
   PMENU_ITEM MenuItem;
   ROSMENUITEMINFO ItemInfo;
   NTSTATUS Status;
   UINT Size;
   BOOL Ret;
 
-  MenuObject = IntGetMenuObject(Menu);
-  if (NULL == MenuObject)
-    {
-      SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
-      return( FALSE);
-    }
   Status = MmCopyFromCaller(&Size, &UnsafeItemInfo->cbSize, sizeof(UINT));
   if (! NT_SUCCESS(Status))
     {
-      IntReleaseMenuObject(MenuObject);
       SetLastNtError(Status);
       return( FALSE);
     }
@@ -1940,14 +1955,12 @@
       && sizeof(MENUITEMINFOW) - sizeof(HBITMAP) != Size
       && sizeof(ROSMENUITEMINFO) != Size)
     {
-      IntReleaseMenuObject(MenuObject);
       SetLastWin32Error(ERROR_INVALID_PARAMETER);
       return( FALSE);
     }
   Status = MmCopyFromCaller(&ItemInfo, UnsafeItemInfo, Size);
   if (! NT_SUCCESS(Status))
     {
-      IntReleaseMenuObject(MenuObject);
       SetLastNtError(Status);
       return( FALSE);
     }
@@ -1956,43 +1969,37 @@
   if (sizeof(MENUITEMINFOW) - sizeof(HBITMAP) == Size
       && 0 != (ItemInfo.fMask & MIIM_BITMAP))
     {
-      IntReleaseMenuObject(MenuObject);
       SetLastWin32Error(ERROR_INVALID_PARAMETER);
       return( FALSE);
     }
 
-  if (IntGetMenuItemByFlag(MenuObject, Item,
+  if (IntGetMenuItemByFlag(Menu, Item,
                            (ByPosition ? MF_BYPOSITION : MF_BYCOMMAND),
                            &MenuItem, NULL) < 0)
     {
-      IntReleaseMenuObject(MenuObject);
       SetLastWin32Error(ERROR_INVALID_PARAMETER);
       return( FALSE);
     }
 
   if (SetOrGet)
     {
-      Ret = IntSetMenuItemInfo(MenuObject, MenuItem, &ItemInfo);
+      Ret = IntSetMenuItemInfo(Menu, MenuItem, &ItemInfo);
     }
   else
     {
-      Ret = IntGetMenuItemInfo(MenuObject, MenuItem, &ItemInfo);
+      Ret = IntGetMenuItemInfo(Menu, MenuItem, &ItemInfo);
       if (Ret)
         {
           Status = MmCopyToCaller(UnsafeItemInfo, &ItemInfo, Size);
           if (! NT_SUCCESS(Status))
             {
-              IntReleaseMenuObject(MenuObject);
               SetLastNtError(Status);
               return( FALSE);
             }
         }
     }
 
-  IntReleaseMenuObject(MenuObject);
-
   return( Ret);
-
 }
 
 
@@ -2003,16 +2010,22 @@
 BOOL
 STDCALL
 NtUserMenuItemInfo(
- HMENU Menu,
+ HMENU hMenu,
  UINT Item,
  BOOL ByPosition,
  PROSMENUITEMINFO UnsafeItemInfo,
  BOOL SetOrGet)
 {
+  PMENU_OBJECT Menu;
   DECLARE_RETURN(BOOL);  
 
   DPRINT("Enter NtUserMenuItemInfo\n");
   UserEnterExclusive();
+  
+  if (!(Menu = UserGetMenuObject(hMenu)))
+  {
+     RETURN(FALSE);
+  }
 
   RETURN( UserMenuItemInfo(Menu, Item, ByPosition, UnsafeItemInfo, SetOrGet));
   
@@ -2033,24 +2046,18 @@
   UINT uPosition,
   UINT uFlags)
 {
-  BOOL res;
-  PMENU_OBJECT MenuObject;
+  PMENU_OBJECT Menu;
   DECLARE_RETURN(BOOL);  
 
   DPRINT("Enter NtUserRemoveMenu\n");
   UserEnterExclusive();
   
-  MenuObject = IntGetMenuObject(hMenu);
-  if(!MenuObject)
+  if(!(Menu = UserGetMenuObject(hMenu)))
   {
-    SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
     RETURN( FALSE);
   }
 
-  res = IntRemoveMenuItem(MenuObject, uPosition, uFlags, FALSE);
-  IntReleaseMenuObject(MenuObject);
-
-  RETURN( res);
+  RETURN(IntRemoveMenuItem(Menu, uPosition, uFlags, FALSE));
   
 CLEANUP:
   DPRINT("Leave NtUserRemoveMenu, ret=%i\n",_ret_);
@@ -2065,26 +2072,21 @@
  */
 BOOL STDCALL
 NtUserSetMenuContextHelpId(
-  HMENU hmenu,
+  HMENU hMenu,
   DWORD dwContextHelpId)
 {
-  BOOL res;
-  PMENU_OBJECT MenuObject;
+  PMENU_OBJECT Menu;
   DECLARE_RETURN(BOOL);  
 
   DPRINT("Enter NtUserSetMenuContextHelpId\n");
   UserEnterExclusive();
   
-  MenuObject = IntGetMenuObject(hmenu);
-  if(!MenuObject)
+  if(!(Menu = UserGetMenuObject(hMenu)))
   {
-    SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
     RETURN( FALSE);
   }
 
-  res = IntSetMenuContextHelpId(MenuObject, dwContextHelpId);
-  IntReleaseMenuObject(MenuObject);
-  RETURN( res);
+  RETURN(IntSetMenuContextHelpId(Menu, dwContextHelpId));
   
 CLEANUP:
   DPRINT("Leave NtUserSetMenuContextHelpId, ret=%i\n",_ret_);
@@ -2094,62 +2096,27 @@
 
 
 
-
 /*
  * @implemented
  */
-BOOL FASTCALL
-UserSetMenuDefaultItem(
-  HMENU hMenu,
-  UINT uItem,
-  UINT fByPos)
-{
-  BOOL res = FALSE;
-  PMENU_OBJECT MenuObject;
-
-  MenuObject = IntGetMenuObject(hMenu);
-  if(!MenuObject)
-  {
-    SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
-    return( FALSE);
-  }
-
-  res = IntSetMenuDefaultItem(MenuObject, uItem, fByPos);
-
-  IntReleaseMenuObject(MenuObject);
-
-  return( res);
-}
-
-
-/*
- * @implemented
- */
 BOOL STDCALL
 NtUserSetMenuDefaultItem(
   HMENU hMenu,
   UINT uItem,
   UINT fByPos)
 {
-  BOOL res = FALSE;
-  PMENU_OBJECT MenuObject;
+  PMENU_OBJECT Menu;
   DECLARE_RETURN(BOOL);  
 
   DPRINT("Enter NtUserSetMenuDefaultItem\n");
   UserEnterExclusive();
 
-  MenuObject = IntGetMenuObject(hMenu);
-  if(!MenuObject)
+  if(!(Menu = UserGetMenuObject(hMenu)))
   {
-    SetLastWin32Error(ERROR_INVALID_MENU_HANDLE);
     RETURN( FALSE);
   }
 
-  res = IntSetMenuDefaultItem(MenuObject, uItem, fByPos);
[truncated at 1000 lines; 145 more skipped]