Get correct window station for CSRSS Modified: trunk/reactos/subsys/win32k/ntuser/desktop.c _____
Modified: trunk/reactos/subsys/win32k/ntuser/desktop.c --- trunk/reactos/subsys/win32k/ntuser/desktop.c 2005-12-01 20:09:38 UTC (rev 19803) +++ trunk/reactos/subsys/win32k/ntuser/desktop.c 2005-12-01 20:12:00 UTC (rev 19804) @@ -948,6 +948,7 @@
ACCESS_MASK dwDesiredAccess) { OBJECT_ATTRIBUTES ObjectAttributes; + HWINSTA WinSta; PWINSTATION_OBJECT WinStaObject; UNICODE_STRING DesktopName; NTSTATUS Status; @@ -962,16 +963,16 @@ * qualified desktop name */
+ WinSta = UserGetProcessWindowStation(); Status = IntValidateWindowStationHandle( - PsGetCurrentProcess()->Win32WindowStation, + WinSta, KernelMode, 0, &WinStaObject);
if (!NT_SUCCESS(Status)) { - DPRINT1("Failed validation of window station handle (0x%X)\n", - PsGetCurrentProcess()->Win32WindowStation); + DPRINT1("Failed validation of window station handle (0x%X)\n", WinSta); SetLastNtError(Status); RETURN( 0); } @@ -986,7 +987,7 @@
ObDereferenceObject(WinStaObject);
- DPRINT1("Trying to open desktop (%wZ)\n", &DesktopName); + DPRINT("Trying to open desktop (%wZ)\n", &DesktopName);
/* Initialize ObjectAttributes for the desktop object */ InitializeObjectAttributes( @@ -1000,7 +1001,7 @@ &ObjectAttributes, ExDesktopObjectType, NULL, - UserMode, + KernelMode, dwDesiredAccess, NULL, (HANDLE*)&Desktop);