From 5819952ab91ea9822d3f8f73df44fd05955e2b18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 9 Mar 2013 21:52:12 +0000 Subject: [PATCH] [CONSRV-USER32-WINSRV] Pre-synchrosize with trunk, by applying some changes from revision r58411. svn path=/branches/ros-csrss/; revision=58455 --- include/reactos/subsys/win/winmsg.h | 12 ------------ win32ss/user/consrv/console.c | 10 +--------- win32ss/user/user32/misc/misc.c | 24 +++--------------------- win32ss/user/winsrv/register.c | 24 ------------------------ win32ss/user/winsrv/shutdown.c | 21 +++------------------ win32ss/user/winsrv/winsrv.h | 3 --- 6 files changed, 7 insertions(+), 87 deletions(-) diff --git a/include/reactos/subsys/win/winmsg.h b/include/reactos/subsys/win/winmsg.h index 10ed3da39e2..f16e7799f58 100644 --- a/include/reactos/subsys/win/winmsg.h +++ b/include/reactos/subsys/win/winmsg.h @@ -32,9 +32,6 @@ typedef enum _USERSRV_API_NUMBER // UserpConsoleHandleOperation, // Added in Win7 // UserpGetSetShutdownBlockReason, // Added in Vista - /// HACK: ReactOS-specific - UserpRosSetLogonNotifyWindow, - UserpMaxApiNumber } USERSRV_API_NUMBER, *PUSERSRV_API_NUMBER; @@ -56,12 +53,6 @@ typedef struct BOOL Register; } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS; -/// HACK: ReactOS-specific -typedef struct -{ - HWND LogonNotifyWindow; -} CSRSS_SET_LOGON_NOTIFY_WINDOW, *PCSRSS_SET_LOGON_NOTIFY_WINDOW; - typedef struct _USER_API_MESSAGE { @@ -76,9 +67,6 @@ typedef struct _USER_API_MESSAGE CSRSS_EXIT_REACTOS ExitReactosRequest; CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest; CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest; - - /// HACK: ReactOS-specific - CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest; } Data; } USER_API_MESSAGE, *PUSER_API_MESSAGE; diff --git a/win32ss/user/consrv/console.c b/win32ss/user/consrv/console.c index a3ac1147c59..2964792e082 100644 --- a/win32ss/user/consrv/console.c +++ b/win32ss/user/consrv/console.c @@ -31,15 +31,7 @@ BOOL FASTCALL DtbgIsDesktopVisible(VOID) { - HWND VisibleDesktopWindow = GetDesktopWindow(); // DESKTOPWNDPROC - - if (VisibleDesktopWindow != NULL && - !IsWindowVisible(VisibleDesktopWindow)) - { - VisibleDesktopWindow = NULL; - } - - return VisibleDesktopWindow != NULL; + return !((BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_ISCONSOLEMODE)); } VOID FASTCALL diff --git a/win32ss/user/user32/misc/misc.c b/win32ss/user/user32/misc/misc.c index 1d820df931c..7a51f4dcfb6 100644 --- a/win32ss/user/user32/misc/misc.c +++ b/win32ss/user/user32/misc/misc.c @@ -74,24 +74,6 @@ BOOL WINAPI SetLogonNotifyWindow(HWND Wnd, HWINSTA WinSta) { -/// HACK: Windows does not do this !! ReactOS-specific - /* Maybe we should call NtUserSetLogonNotifyWindow and let that one inform CSRSS??? */ - USER_API_MESSAGE Request; - NTSTATUS Status; - - Request.Data.SetLogonNotifyWindowRequest.LogonNotifyWindow = Wnd; - - Status = CsrClientCallServer((PCSR_API_MESSAGE)&Request, - NULL, - CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpRosSetLogonNotifyWindow), - sizeof(CSRSS_SET_LOGON_NOTIFY_WINDOW)); - if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status)) - { - SetLastError(RtlNtStatusToDosError(Status)); - return FALSE; - } -/// END HACK - return NtUserSetLogonNotifyWindow(Wnd); } @@ -100,10 +82,10 @@ SetLogonNotifyWindow(HWND Wnd, HWINSTA WinSta) */ BOOL WINAPI UpdatePerUserSystemParameters( - DWORD dwReserved, - BOOL bEnable) + DWORD dwReserved, + BOOL bEnable) { - return NtUserUpdatePerUserSystemParameters(dwReserved, bEnable); + return NtUserUpdatePerUserSystemParameters(dwReserved, bEnable); } PTHREADINFO diff --git a/win32ss/user/winsrv/register.c b/win32ss/user/winsrv/register.c index 23cf2511f7e..6d8ab90d621 100644 --- a/win32ss/user/winsrv/register.c +++ b/win32ss/user/winsrv/register.c @@ -19,7 +19,6 @@ static BOOLEAN ServicesProcessIdValid = FALSE; static ULONG_PTR ServicesProcessId = 0; -HWND LogonNotifyWindow = NULL; ULONG_PTR LogonProcessId = 0; /* PUBLIC SERVER APIS *********************************************************/ @@ -50,29 +49,6 @@ CSR_API(SrvRegisterLogonProcess) return STATUS_SUCCESS; } -/// HACK: ReactOS-specific -CSR_API(RosSetLogonNotifyWindow) -{ - PCSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.SetLogonNotifyWindowRequest; - DWORD WindowCreator; - - if (0 == GetWindowThreadProcessId(SetLogonNotifyWindowRequest->LogonNotifyWindow, - &WindowCreator)) - { - DPRINT1("Can't get window creator\n"); - return STATUS_INVALID_HANDLE; - } - if (WindowCreator != LogonProcessId) - { - DPRINT1("Trying to register window not created by winlogon as notify window\n"); - return STATUS_ACCESS_DENIED; - } - - LogonNotifyWindow = SetLogonNotifyWindowRequest->LogonNotifyWindow; - - return STATUS_SUCCESS; -} - CSR_API(SrvRegisterServicesProcess) { PCSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.RegisterServicesProcessRequest; diff --git a/win32ss/user/winsrv/shutdown.c b/win32ss/user/winsrv/shutdown.c index 6a88d3335f4..24c9c24a8d8 100644 --- a/win32ss/user/winsrv/shutdown.c +++ b/win32ss/user/winsrv/shutdown.c @@ -426,15 +426,7 @@ NotifyTopLevelWindows(PNOTIFY_CONTEXT Context) BOOL FASTCALL DtbgIsDesktopVisible(VOID) { - HWND VisibleDesktopWindow = GetDesktopWindow(); // DESKTOPWNDPROC - - if (VisibleDesktopWindow != NULL && - !IsWindowVisible(VisibleDesktopWindow)) - { - VisibleDesktopWindow = NULL; - } - - return VisibleDesktopWindow != NULL; + return !((BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_ISCONSOLEMODE)); } /* TODO: Find an other way to do it. */ @@ -894,16 +886,9 @@ UserExitReactos(DWORD UserProcessId, UINT Flags) { NTSTATUS Status; - if (NULL == LogonNotifyWindow) - { - DPRINT1("No LogonNotifyWindow registered\n"); - return STATUS_NOT_FOUND; - } - /* FIXME Inside 2000 says we should impersonate the caller here */ - Status = SendMessageW(LogonNotifyWindow, PM_WINLOGON_EXITWINDOWS, - (WPARAM) UserProcessId, - (LPARAM) Flags); + Status = NtUserCallTwoParam(UserProcessId, Flags, TWOPARAM_ROUTINE_EXITREACTOS); + /* If the message isn't handled, the return value is 0, so 0 doesn't indicate success. Success is indicated by a 1 return value, if anything besides 0 or 1 it's a NTSTATUS value */ diff --git a/win32ss/user/winsrv/winsrv.h b/win32ss/user/winsrv/winsrv.h index 7cec93a68d4..1601ff9ec81 100644 --- a/win32ss/user/winsrv/winsrv.h +++ b/win32ss/user/winsrv/winsrv.h @@ -51,7 +51,6 @@ extern HINSTANCE UserServerDllInstance; extern HANDLE UserServerHeap; -extern HWND LogonNotifyWindow; extern ULONG_PTR LogonProcessId; /* init.c */ @@ -64,8 +63,6 @@ VOID WINAPI UserServerHardError(IN PCSR_THREAD ThreadData, /* register.c */ CSR_API(SrvRegisterServicesProcess); CSR_API(SrvRegisterLogonProcess); -/// HACK: ReactOS-specific -CSR_API(RosSetLogonNotifyWindow); /* shutdown.c */ CSR_API(SrvExitWindowsEx);