- don't use the UNIMPLEMENTED macro in ObFindHandleForObject because it's actually used by win32k already
- set the right generic mapping for desktop and window station handles during win32k startup
Modified: trunk/reactos/ntoskrnl/ob/handle.c
Modified: trunk/reactos/subsys/win32k/ntuser/desktop.c
Modified: trunk/reactos/subsys/win32k/ntuser/winsta.c

Modified: trunk/reactos/ntoskrnl/ob/handle.c
--- trunk/reactos/ntoskrnl/ob/handle.c	2005-06-26 21:32:48 UTC (rev 16302)
+++ trunk/reactos/ntoskrnl/ob/handle.c	2005-06-26 21:42:30 UTC (rev 16303)
@@ -1206,7 +1206,7 @@
                       IN POBJECT_HANDLE_INFORMATION HandleInformation,
                       OUT PHANDLE HandleReturn)
 {
-  UNIMPLEMENTED;
+  DPRINT("ObFindHandleForObject is unimplemented!\n");
   return STATUS_UNSUCCESSFUL;
 }
 

Modified: trunk/reactos/subsys/win32k/ntuser/desktop.c
--- trunk/reactos/subsys/win32k/ntuser/desktop.c	2005-06-26 21:32:48 UTC (rev 16302)
+++ trunk/reactos/subsys/win32k/ntuser/desktop.c	2005-06-26 21:42:30 UTC (rev 16303)
@@ -41,12 +41,23 @@
 
 /* INITALIZATION FUNCTIONS ****************************************************/
 
+static GENERIC_MAPPING IntDesktopMapping =
+{
+   STANDARD_RIGHTS_READ     | DESKTOP_ENUMERATE       | DESKTOP_READOBJECTS,
+   STANDARD_RIGHTS_WRITE    | DESKTOP_CREATEMENU      | DESKTOP_CREATEWINDOW    | DESKTOP_HOOKCONTROL   |
+                              DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD   | DESKTOP_WRITEOBJECTS,
+   STANDARD_RIGHTS_EXECUTE  | DESKTOP_SWITCHDESKTOP,
+   STANDARD_RIGHTS_REQUIRED | DESKTOP_CREATEMENU      | DESKTOP_CREATEWINDOW    | DESKTOP_ENUMERATE     |
+                              DESKTOP_HOOKCONTROL     | DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD |
+                              DESKTOP_READOBJECTS     | DESKTOP_SWITCHDESKTOP   | DESKTOP_WRITEOBJECTS
+};
+
 NTSTATUS FASTCALL
 InitDesktopImpl(VOID)
 {
    /* Set Desktop Object Attributes */
    ExDesktopObjectType->TypeInfo.DefaultNonPagedPoolCharge = sizeof(DESKTOP_OBJECT);
-   /* FIXME: Set Generic Mapping correctly */
+   ExDesktopObjectType->TypeInfo.GenericMapping = IntDesktopMapping;
    
   return STATUS_SUCCESS;
 }

Modified: trunk/reactos/subsys/win32k/ntuser/winsta.c
--- trunk/reactos/subsys/win32k/ntuser/winsta.c	2005-06-26 21:32:48 UTC (rev 16302)
+++ trunk/reactos/subsys/win32k/ntuser/winsta.c	2005-06-26 21:42:30 UTC (rev 16303)
@@ -47,6 +47,16 @@
 
 /* INITALIZATION FUNCTIONS ****************************************************/
 
+static GENERIC_MAPPING IntWindowStationMapping =
+{
+   STANDARD_RIGHTS_READ     | WINSTA_ENUMDESKTOPS      | WINSTA_ENUMERATE         | WINSTA_READATTRIBUTES | WINSTA_READSCREEN,
+   STANDARD_RIGHTS_WRITE    | WINSTA_ACCESSCLIPBOARD   | WINSTA_CREATEDESKTOP     | WINSTA_WRITEATTRIBUTES,
+   STANDARD_RIGHTS_EXECUTE  | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS,
+   STANDARD_RIGHTS_REQUIRED | WINSTA_ACCESSCLIPBOARD   | WINSTA_ACCESSGLOBALATOMS | WINSTA_CREATEDESKTOP  |
+                              WINSTA_ENUMDESKTOPS      | WINSTA_ENUMERATE         | WINSTA_EXITWINDOWS    |
+                              WINSTA_READATTRIBUTES    | WINSTA_READSCREEN        | WINSTA_WRITEATTRIBUTES
+};
+
 NTSTATUS FASTCALL
 InitWindowStationImpl(VOID)
 {
@@ -72,8 +82,8 @@
    }
    
    /* Set Winsta Object Attributes */
-   ExWindowStationObjectType->TypeInfo.DefaultNonPagedPoolCharge =   sizeof(WINSTATION_OBJECT);
-   /* FIXME: Set Generic Mapping correctly */
+   ExWindowStationObjectType->TypeInfo.DefaultNonPagedPoolCharge = sizeof(WINSTATION_OBJECT);
+   ExWindowStationObjectType->TypeInfo.GenericMapping = IntWindowStationMapping;
    
    return STATUS_SUCCESS;
 }