mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
- Added test for unimplemented EnumWindowStations and EnumDesktops functions.
- Small window station cleanup. svn path=/trunk/; revision=6757
This commit is contained in:
parent
83c21d74b3
commit
9daca17473
18 changed files with 1533 additions and 1057 deletions
35
reactos/apps/tests/enumws/enumws.c
Normal file
35
reactos/apps/tests/enumws/enumws.c
Normal file
|
@ -0,0 +1,35 @@
|
|||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
BOOL CALLBACK
|
||||
EnumDesktopProc(LPWSTR lpszWindowStation, LPARAM lParam)
|
||||
{
|
||||
printf("\t%S\n", lpszWindowStation);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CALLBACK
|
||||
EnumWindowStationProc(LPWSTR lpszWindowStation, LPARAM lParam)
|
||||
{
|
||||
HWINSTA hWinSta;
|
||||
|
||||
printf("%S\n", lpszWindowStation);
|
||||
hWinSta = OpenWindowStationW(lpszWindowStation, FALSE,
|
||||
WINSTA_ENUMDESKTOPS);
|
||||
if (hWinSta == NULL)
|
||||
{
|
||||
printf("\tCan't open window station.\n");
|
||||
return TRUE;
|
||||
}
|
||||
EnumDesktopsW(hWinSta, EnumDesktopProc, 0xdede);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
EnumWindowStationsW(EnumWindowStationProc, 0xbadbed);
|
||||
|
||||
return 0;
|
||||
}
|
21
reactos/apps/tests/enumws/makefile
Normal file
21
reactos/apps/tests/enumws/makefile
Normal file
|
@ -0,0 +1,21 @@
|
|||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = enumws
|
||||
|
||||
TARGET_SDKLIBS = user32.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
TARGET_CFLAGS = -Wall -Werror
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
|
@ -92,14 +92,12 @@ NtUserBuildMenuItemList(
|
|||
ULONG nBufSize,
|
||||
DWORD Reserved);
|
||||
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NTSTATUS STDCALL
|
||||
NtUserBuildNameList(
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3);
|
||||
HWINSTA hWinSta,
|
||||
ULONG dwSize,
|
||||
PVOID lpBuffer,
|
||||
PULONG pRequiredSize);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
|
|
|
@ -77,7 +77,11 @@ typedef struct _DESKTOP_OBJECT
|
|||
/* Pointer to the active queue. */
|
||||
PVOID ActiveMessageQueue;
|
||||
/* Rectangle of the work area */
|
||||
struct RECT* WorkArea;
|
||||
#ifdef __WIN32K__
|
||||
RECT WorkArea;
|
||||
#else
|
||||
LONG WorkArea[4];
|
||||
#endif
|
||||
/* Handle of the desktop window. */
|
||||
HANDLE DesktopWindow;
|
||||
HANDLE PrevActiveWindow;
|
||||
|
|
|
@ -7,18 +7,16 @@
|
|||
#include <internal/ps.h>
|
||||
#include "msgqueue.h"
|
||||
|
||||
|
||||
#define PROCESS_WINDOW_STATION() \
|
||||
((HWINSTA)(IoGetCurrentProcess()->Win32WindowStation))
|
||||
|
||||
#define SET_PROCESS_WINDOW_STATION(WinSta) \
|
||||
((IoGetCurrentProcess()->Win32WindowStation) = (PVOID)(WinSta))
|
||||
|
||||
WINSTATION_OBJECT *InputWindowStation;
|
||||
//FAST_MUTEX InputWindowStationLock;
|
||||
|
||||
extern HDC ScreenDeviceContext;
|
||||
#define WINSTA_ROOT_NAME L"\\Windows\\WindowStations"
|
||||
#define WINSTA_ROOT_NAME_LENGTH 23
|
||||
|
||||
extern WINSTATION_OBJECT *InputWindowStation;
|
||||
|
||||
NTSTATUS FASTCALL
|
||||
InitWindowStationImpl(VOID);
|
||||
|
@ -26,41 +24,49 @@ InitWindowStationImpl(VOID);
|
|||
NTSTATUS FASTCALL
|
||||
CleanupWindowStationImpl(VOID);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ValidateWindowStationHandle(HWINSTA WindowStation,
|
||||
KPROCESSOR_MODE AccessMode,
|
||||
ACCESS_MASK DesiredAccess,
|
||||
PWINSTATION_OBJECT *Object);
|
||||
NTSTATUS FASTCALL
|
||||
InitDesktopImpl(VOID);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ValidateDesktopHandle(HDESK Desktop,
|
||||
KPROCESSOR_MODE AccessMode,
|
||||
ACCESS_MASK DesiredAccess,
|
||||
PDESKTOP_OBJECT *Object);
|
||||
LRESULT CALLBACK
|
||||
IntDesktopWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
PDESKTOP_OBJECT FASTCALL
|
||||
IntGetActiveDesktop(VOID);
|
||||
PDESKTOP_OBJECT FASTCALL
|
||||
IntGetDesktopObject ( HDESK hDesk );
|
||||
PUSER_MESSAGE_QUEUE FASTCALL
|
||||
IntGetFocusMessageQueue(VOID);
|
||||
VOID FASTCALL
|
||||
IntInitializeDesktopGraphics(VOID);
|
||||
VOID FASTCALL
|
||||
IntEndDesktopGraphics(VOID);
|
||||
HDC FASTCALL
|
||||
IntGetScreenDC(VOID);
|
||||
VOID STDCALL
|
||||
IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue);
|
||||
struct _WINDOW_OBJECT* STDCALL
|
||||
IntGetCaptureWindow(VOID);
|
||||
VOID STDCALL
|
||||
IntSetCaptureWindow(struct _WINDOW_OBJECT* Window);
|
||||
NTSTATUS FASTCALL
|
||||
CleanupDesktopImpl(VOID);
|
||||
|
||||
NTSTATUS FASTCALL
|
||||
IntValidateWindowStationHandle(
|
||||
HWINSTA WindowStation,
|
||||
KPROCESSOR_MODE AccessMode,
|
||||
ACCESS_MASK DesiredAccess,
|
||||
PWINSTATION_OBJECT *Object);
|
||||
|
||||
BOOL FASTCALL
|
||||
IntGetWindowStationObject(PWINSTATION_OBJECT Object);
|
||||
|
||||
LRESULT CALLBACK
|
||||
IntDesktopWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
HDC FASTCALL
|
||||
IntGetScreenDC(VOID);
|
||||
|
||||
VOID FASTCALL
|
||||
IntInitializeDesktopGraphics(VOID);
|
||||
|
||||
VOID FASTCALL
|
||||
IntEndDesktopGraphics(VOID);
|
||||
|
||||
struct _WINDOW_OBJECT* FASTCALL
|
||||
IntGetCaptureWindow(VOID);
|
||||
|
||||
VOID FASTCALL
|
||||
IntSetCaptureWindow(struct _WINDOW_OBJECT* Window);
|
||||
|
||||
PUSER_MESSAGE_QUEUE FASTCALL
|
||||
IntGetFocusMessageQueue(VOID);
|
||||
|
||||
VOID FASTCALL
|
||||
IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue);
|
||||
|
||||
PDESKTOP_OBJECT FASTCALL
|
||||
IntGetActiveDesktop(VOID);
|
||||
|
||||
#endif /* _WIN32K_WINSTA_H */
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: dllmain.c,v 1.52 2003/11/19 13:19:40 weiden Exp $
|
||||
/* $Id: dllmain.c,v 1.53 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* Entry Point for win32k.sys
|
||||
*/
|
||||
|
@ -77,10 +77,10 @@ Win32kProcessCallback (struct _EPROCESS *Process,
|
|||
if (Process->Win32WindowStation != NULL)
|
||||
{
|
||||
Status =
|
||||
ValidateWindowStationHandle(Process->Win32WindowStation,
|
||||
UserMode,
|
||||
GENERIC_ALL,
|
||||
&Win32Process->WindowStation);
|
||||
IntValidateWindowStationHandle(Process->Win32WindowStation,
|
||||
UserMode,
|
||||
GENERIC_ALL,
|
||||
&Win32Process->WindowStation);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("Win32K: Failed to reference a window station for "
|
||||
|
@ -217,6 +217,13 @@ DllMain (
|
|||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
Status = InitDesktopImpl();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("Failed to initialize window station implementation!\n");
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
Status = InitWindowImpl();
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.82 2003/11/02 16:33:51 ekohl Exp $
|
||||
# $Id: makefile,v 1.83 2003/11/23 11:39:48 navaraf Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -53,7 +53,7 @@ NTUSER_OBJECTS = ntuser/callback.o ntuser/caret.o ntuser/class.o ntuser/guicheck
|
|||
ntuser/menu.o ntuser/message.o ntuser/metric.o ntuser/misc.o \
|
||||
ntuser/msgqueue.o ntuser/painting.o ntuser/prop.o ntuser/scrollbar.o \
|
||||
ntuser/stubs.o ntuser/timer.o ntuser/userobj.o ntuser/vis.o \
|
||||
ntuser/windc.o ntuser/window.o ntuser/winlock.o ntuser/winpos.o\
|
||||
ntuser/windc.o ntuser/window.o ntuser/winlock.o ntuser/winpos.o \
|
||||
ntuser/winsta.o
|
||||
|
||||
OBJECTS_OBJECTS = objects/bitmaps.o objects/brush.o objects/cliprgn.o \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: caret.c,v 1.7 2003/11/22 11:49:09 weiden Exp $
|
||||
/* $Id: caret.c,v 1.8 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -56,10 +56,10 @@ IntSetCaretBlinkTime(UINT uMSeconds)
|
|||
NTSTATUS Status;
|
||||
PWINSTATION_OBJECT WinStaObject;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if(!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastNtError(Status);
|
||||
|
@ -155,10 +155,10 @@ IntGetCaretBlinkTime(VOID)
|
|||
PWINSTATION_OBJECT WinStaObject;
|
||||
UINT Ret;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if(!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastNtError(Status);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: class.c,v 1.39 2003/11/11 20:28:21 gvg Exp $
|
||||
/* $Id: class.c,v 1.40 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -99,10 +99,10 @@ ClassReferenceClassByName(PWNDCLASS_OBJECT *Class,
|
|||
return(STATUS_INVALID_PARAMETER);
|
||||
}
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT("Validation of window station handle (0x%X) failed\n",
|
||||
|
@ -218,7 +218,7 @@ IntGetClassName(struct _WINDOW_OBJECT *WindowObject,
|
|||
{
|
||||
DPRINT("About to open window station handle (0x%X)\n",
|
||||
PROCESS_WINDOW_STATION());
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -399,7 +399,7 @@ NtUserRegisterClassExWOW(
|
|||
RTL_ATOM Atom;
|
||||
DPRINT("About to open window station handle (0x%X)\n",
|
||||
PROCESS_WINDOW_STATION());
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: menu.c,v 1.31 2003/10/04 16:04:01 weiden Exp $
|
||||
/* $Id: menu.c,v 1.32 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -1108,7 +1108,7 @@ NtUserCheckMenuItem(
|
|||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
* @unimplemented
|
||||
*/
|
||||
HMENU STDCALL
|
||||
NtUserCreateMenu(VOID)
|
||||
|
@ -1116,7 +1116,7 @@ NtUserCreateMenu(VOID)
|
|||
PWINSTATION_OBJECT WinStaObject;
|
||||
HANDLE Handle;
|
||||
|
||||
NTSTATUS Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
NTSTATUS Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: metric.c,v 1.14 2003/09/08 18:50:00 weiden Exp $
|
||||
/* $Id: metric.c,v 1.15 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -73,10 +73,10 @@ NtUserGetSystemMetrics(ULONG Index)
|
|||
case SM_CXDOUBLECLK:
|
||||
case SM_CYDOUBLECLK:
|
||||
case SM_SWAPBUTTON:
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return 0xFFFFFFFF;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: misc.c,v 1.27 2003/11/22 11:01:28 navaraf Exp $
|
||||
/* $Id: misc.c,v 1.28 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -137,10 +137,10 @@ NtUserCallOneParam(
|
|||
return Result;
|
||||
|
||||
case ONEPARAM_ROUTINE_SWAPMOUSEBUTTON:
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return (DWORD)FALSE;
|
||||
|
||||
|
@ -216,10 +216,10 @@ NtUserCallTwoParam(
|
|||
case TWOPARAM_ROUTINE_CURSORPOSITION:
|
||||
if(!Param1)
|
||||
return (DWORD)FALSE;
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return (DWORD)FALSE;
|
||||
|
||||
|
@ -321,10 +321,10 @@ NtUserSystemParametersInfo(
|
|||
case SPI_SETDOUBLECLKHEIGHT:
|
||||
case SPI_SETDOUBLECLICKTIME:
|
||||
{
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return (DWORD)FALSE;
|
||||
|
||||
|
@ -441,10 +441,10 @@ NtUserGetDoubleClickTime(VOID)
|
|||
NTSTATUS Status;
|
||||
PWINSTATION_OBJECT WinStaObject;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return (DWORD)FALSE;
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: msgqueue.c,v 1.35 2003/11/22 12:22:07 weiden Exp $
|
||||
/* $Id: msgqueue.c,v 1.36 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -35,6 +35,7 @@
|
|||
#include <include/callback.h>
|
||||
#include <include/window.h>
|
||||
#include <include/winpos.h>
|
||||
#include <include/winsta.h>
|
||||
#include <include/class.h>
|
||||
#include <include/object.h>
|
||||
#include <include/input.h>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: stubs.c,v 1.38 2003/11/22 11:01:28 navaraf Exp $
|
||||
/* $Id: stubs.c,v 1.39 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -65,20 +65,6 @@ NtUserBlockInput(
|
|||
}
|
||||
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserBuildNameList(
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
NtUserCallHwnd(
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: window.c,v 1.142 2003/11/21 21:12:08 navaraf Exp $
|
||||
/* $Id: window.c,v 1.143 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -441,64 +441,6 @@ DestroyThreadWindows(struct _ETHREAD *Thread)
|
|||
}
|
||||
|
||||
|
||||
HWND STDCALL
|
||||
IntCreateDesktopWindow(PWINSTATION_OBJECT WindowStation,
|
||||
PWNDCLASS_OBJECT DesktopClass,
|
||||
ULONG Width, ULONG Height)
|
||||
{
|
||||
PWSTR WindowName;
|
||||
HWND Handle;
|
||||
PWINDOW_OBJECT WindowObject;
|
||||
|
||||
/* Create the window object. */
|
||||
WindowObject = (PWINDOW_OBJECT)ObmCreateObject(WindowStation->HandleTable,
|
||||
&Handle,
|
||||
otWindow,
|
||||
sizeof(WINDOW_OBJECT));
|
||||
if (!WindowObject)
|
||||
{
|
||||
return((HWND)0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill out the structure describing it.
|
||||
*/
|
||||
WindowObject->Class = DesktopClass;
|
||||
WindowObject->ExStyle = 0;
|
||||
WindowObject->Style = WS_VISIBLE;
|
||||
WindowObject->Flags = 0;
|
||||
WindowObject->Parent = NULL;
|
||||
WindowObject->Owner = NULL;
|
||||
WindowObject->IDMenu = 0;
|
||||
WindowObject->Instance = NULL;
|
||||
WindowObject->Self = Handle;
|
||||
WindowObject->MessageQueue = NULL;
|
||||
WindowObject->ExtraData = NULL;
|
||||
WindowObject->ExtraDataSize = 0;
|
||||
WindowObject->WindowRect.left = 0;
|
||||
WindowObject->WindowRect.top = 0;
|
||||
WindowObject->WindowRect.right = Width;
|
||||
WindowObject->WindowRect.bottom = Height;
|
||||
WindowObject->ClientRect = WindowObject->WindowRect;
|
||||
WindowObject->UserData = 0;
|
||||
/*FIXME: figure out what the correct strange value is and what to do with it (and how to set the wndproc values correctly) */
|
||||
WindowObject->WndProcA = DesktopClass->lpfnWndProcA;
|
||||
WindowObject->WndProcW = DesktopClass->lpfnWndProcW;
|
||||
WindowObject->OwnerThread = PsGetCurrentThread();
|
||||
WindowObject->FirstChild = NULL;
|
||||
WindowObject->LastChild = NULL;
|
||||
WindowObject->PrevSibling = NULL;
|
||||
WindowObject->NextSibling = NULL;
|
||||
|
||||
ExInitializeFastMutex(&WindowObject->ChildrenListLock);
|
||||
|
||||
WindowName = ExAllocatePool(NonPagedPool, sizeof(L"DESKTOP"));
|
||||
wcscpy(WindowName, L"DESKTOP");
|
||||
RtlInitUnicodeString(&WindowObject->WindowName, WindowName);
|
||||
|
||||
return(Handle);
|
||||
}
|
||||
|
||||
|
||||
HWND FASTCALL
|
||||
IntGetActiveWindow(VOID)
|
||||
|
@ -655,6 +597,64 @@ IntGetWindowThreadProcessId(PWINDOW_OBJECT Wnd, PDWORD pid)
|
|||
}
|
||||
|
||||
|
||||
HWND STDCALL
|
||||
IntCreateDesktopWindow(PWINSTATION_OBJECT WindowStation,
|
||||
PWNDCLASS_OBJECT DesktopClass,
|
||||
ULONG Width, ULONG Height)
|
||||
{
|
||||
PWSTR WindowName;
|
||||
HWND Handle;
|
||||
PWINDOW_OBJECT WindowObject;
|
||||
|
||||
/* Create the window object. */
|
||||
WindowObject = (PWINDOW_OBJECT)ObmCreateObject(WindowStation->HandleTable,
|
||||
&Handle,
|
||||
otWindow,
|
||||
sizeof(WINDOW_OBJECT));
|
||||
if (!WindowObject)
|
||||
{
|
||||
return((HWND)0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill out the structure describing it.
|
||||
*/
|
||||
WindowObject->Class = DesktopClass;
|
||||
WindowObject->ExStyle = 0;
|
||||
WindowObject->Style = WS_VISIBLE;
|
||||
WindowObject->Flags = 0;
|
||||
WindowObject->Parent = NULL;
|
||||
WindowObject->Owner = NULL;
|
||||
WindowObject->IDMenu = 0;
|
||||
WindowObject->Instance = NULL;
|
||||
WindowObject->Self = Handle;
|
||||
WindowObject->MessageQueue = NULL;
|
||||
WindowObject->ExtraData = NULL;
|
||||
WindowObject->ExtraDataSize = 0;
|
||||
WindowObject->WindowRect.left = 0;
|
||||
WindowObject->WindowRect.top = 0;
|
||||
WindowObject->WindowRect.right = Width;
|
||||
WindowObject->WindowRect.bottom = Height;
|
||||
WindowObject->ClientRect = WindowObject->WindowRect;
|
||||
WindowObject->UserData = 0;
|
||||
/*FIXME: figure out what the correct strange value is and what to do with it (and how to set the wndproc values correctly) */
|
||||
WindowObject->WndProcA = DesktopClass->lpfnWndProcA;
|
||||
WindowObject->WndProcW = DesktopClass->lpfnWndProcW;
|
||||
WindowObject->OwnerThread = PsGetCurrentThread();
|
||||
WindowObject->FirstChild = NULL;
|
||||
WindowObject->LastChild = NULL;
|
||||
WindowObject->PrevSibling = NULL;
|
||||
WindowObject->NextSibling = NULL;
|
||||
|
||||
ExInitializeFastMutex(&WindowObject->ChildrenListLock);
|
||||
|
||||
WindowName = ExAllocatePool(NonPagedPool, sizeof(L"DESKTOP"));
|
||||
wcscpy(WindowName, L"DESKTOP");
|
||||
RtlInitUnicodeString(&WindowObject->WindowName, WindowName);
|
||||
|
||||
return(Handle);
|
||||
}
|
||||
|
||||
VOID FASTCALL
|
||||
IntInitDesktopWindow(ULONG Width, ULONG Height)
|
||||
{
|
||||
|
@ -1236,9 +1236,11 @@ NtUserBuildHwndList(
|
|||
KIRQL OldIrql;
|
||||
PWINDOW_OBJECT Child, WndDesktop;
|
||||
|
||||
#if 0
|
||||
if ( hDesktop )
|
||||
DesktopObject = IntGetDesktopObject ( hDesktop );
|
||||
else
|
||||
#endif
|
||||
DesktopObject = IntGetActiveDesktop();
|
||||
if (!DesktopObject)
|
||||
{
|
||||
|
@ -1387,10 +1389,10 @@ NtUserCreateWindowEx(DWORD dwExStyle,
|
|||
/* Check the window station. */
|
||||
DPRINT("IoGetCurrentProcess() %X\n", IoGetCurrentProcess());
|
||||
DPRINT("PROCESS_WINDOW_STATION %X\n", PROCESS_WINDOW_STATION());
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
RtlFreeUnicodeString(&WindowName);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: winpos.c,v 1.45 2003/11/21 17:01:16 navaraf Exp $
|
||||
/* $Id: winpos.c,v 1.46 2003/11/23 11:39:48 navaraf Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -36,7 +36,6 @@
|
|||
#include <include/class.h>
|
||||
#include <include/error.h>
|
||||
#include <include/winsta.h>
|
||||
#include <windows.h>
|
||||
#include <include/winpos.h>
|
||||
#include <include/rect.h>
|
||||
#include <include/callback.h>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -16,7 +16,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id: cursoricon.c,v 1.24 2003/11/21 22:46:27 weiden Exp $ */
|
||||
/* $Id: cursoricon.c,v 1.25 2003/11/23 11:39:48 navaraf Exp $ */
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
|
||||
|
@ -105,14 +105,14 @@ IntSetCursor(PWINSTATION_OBJECT WinStaObject, PCURICON_OBJECT NewCursor, BOOL Fo
|
|||
goto done;
|
||||
|
||||
/* FIXME use the desktop's HDC instead of using ScreenDeviceContext */
|
||||
dc = DC_LockDc(ScreenDeviceContext);
|
||||
dc = DC_LockDc(IntGetScreenDC());
|
||||
if(!dc)
|
||||
goto done;
|
||||
|
||||
SurfObj = (PSURFOBJ)AccessUserObject((ULONG) dc->Surface);
|
||||
SurfGDI = (PSURFGDI)AccessInternalObject((ULONG) dc->Surface);
|
||||
DevInfo = dc->DevInfo;
|
||||
DC_UnlockDc(ScreenDeviceContext);
|
||||
DC_UnlockDc(IntGetScreenDC());
|
||||
|
||||
if(!NewCursor && (CurInfo->CurrentCursorObject || ForceChange))
|
||||
{
|
||||
|
@ -459,7 +459,7 @@ NtUserCreateCursorIconHandle(PICONINFO IconInfo, BOOL Indirect)
|
|||
NTSTATUS Status;
|
||||
HICON Ret;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -535,7 +535,7 @@ NtUserGetIconInfo(
|
|||
NTSTATUS Status;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -596,7 +596,7 @@ NtUserGetIconSize(
|
|||
NTSTATUS Status;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -686,7 +686,7 @@ NtUserGetCursorInfo(
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -733,7 +733,7 @@ NtUserClipCursor(
|
|||
RECT Rect;
|
||||
PWINDOW_OBJECT DesktopWindow = NULL;
|
||||
|
||||
NTSTATUS Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
NTSTATUS Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -789,7 +789,7 @@ NtUserDestroyCursor(
|
|||
PWINSTATION_OBJECT WinStaObject;
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -826,7 +826,7 @@ NtUserFindExistingCursorIcon(
|
|||
NTSTATUS Status;
|
||||
HICON Ret = (HICON)0;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -870,7 +870,7 @@ NtUserGetClipCursor(
|
|||
if(!lpRect)
|
||||
return FALSE;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -924,7 +924,7 @@ NtUserSetCursor(
|
|||
PWINSTATION_OBJECT WinStaObject;
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -963,7 +963,7 @@ NtUserSetCursorIconContents(
|
|||
NTSTATUS Status;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -1037,7 +1037,7 @@ NtUserSetCursorIconData(
|
|||
POINT SafeHotspot;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
@ -1155,7 +1155,7 @@ NtUserDrawIconEx(
|
|||
INT nStretchMode;
|
||||
#endif
|
||||
|
||||
Status = ValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
|
||||
KernelMode,
|
||||
0,
|
||||
&WinStaObject);
|
||||
|
|
Loading…
Reference in a new issue