Author: hbelusca Date: Fri Nov 9 23:39:45 2012 New Revision: 57694 URL: http://svn.reactos.org/svn/reactos?rev=57694&view=rev Log: [BASESRV] - Remove the unneeded CallProcessCreated function since the same functionality is programmed and executed in CSRSRV when CsrInsertProcess is called via a call of CsrCreateProcess. - Remove some hacks in process creation. - In BaseSrvExitProcess, use the 'Reply = 2' value instead of the old hack 'ApiMessage->ApiNumber = 0xBABE'.
[USER32/WINSRV] - Make SetLogonNotifyWindow call our 'RosSetLogonNotifyWindow' hack and explicitely mark it as a hack. - CsrSetLogonNotifyWindow --> RosSetLogonNotifyWindow to emphasize that it is a ReactOS-specific hack. Modified: branches/ros-csrss/include/reactos/subsys/win/winmsg.h branches/ros-csrss/subsystems/win/basesrv/server.c branches/ros-csrss/win32ss/user/user32/misc/misc.c branches/ros-csrss/win32ss/user/winsrv/init.c branches/ros-csrss/win32ss/user/winsrv/shutdown.c branches/ros-csrss/win32ss/user/winsrv/winsrv.h Modified: branches/ros-csrss/include/reactos/subsys/win/winmsg.h URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/include/reactos/subsys/win/winmsg.h?rev=57694&r1=57693&r2=57694&view=diff ============================================================================== --- branches/ros-csrss/include/reactos/subsys/win/winmsg.h [iso-8859-1] (original) +++ branches/ros-csrss/include/reactos/subsys/win/winmsg.h [iso-8859-1] Fri Nov 9 23:39:45 2012 @@ -33,6 +33,9 @@ // UserpConsoleHandleOperation, // Added in Win7 // UserpGetSetShutdownBlockReason, // Added in Vista + /// HACK: ReactOS-specific + UserpRosSetLogonNotifyWindow, + UserpMaxApiNumber } USERSRV_API_NUMBER, *PUSERSRV_API_NUMBER; @@ -54,6 +57,7 @@ BOOL Register; } CSRSS_REGISTER_LOGON_PROCESS, *PCSRSS_REGISTER_LOGON_PROCESS; +/// HACK: ReactOS-specific typedef struct { HWND LogonNotifyWindow; @@ -73,6 +77,8 @@ 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; Modified: branches/ros-csrss/subsystems/win/basesrv/server.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/subsystems/win/basesrv/server.c?rev=57694&r1=57693&r2=57694&view=diff ============================================================================== --- branches/ros-csrss/subsystems/win/basesrv/server.c [iso-8859-1] (original) +++ branches/ros-csrss/subsystems/win/basesrv/server.c [iso-8859-1] Fri Nov 9 23:39:45 2012 @@ -11,45 +11,14 @@ #define NDEBUG #include <debug.h> - -// extern NTSTATUS CallProcessCreated(PCSR_PROCESS, PCSR_PROCESS); // TODO: Import it from csrsrv/init.c -// Remove it and correct csrsrv instead... -#if 0 -NTSTATUS -CallProcessCreated(IN PCSR_PROCESS SourceProcessData, - IN PCSR_PROCESS TargetProcessData) -{ - NTSTATUS Status = STATUS_SUCCESS; - ULONG i; - PCSR_SERVER_DLL ServerDll; - - DPRINT("CSR: %s called\n", __FUNCTION__); - - /* Notify the Server DLLs */ - for (i = 0; i < CSR_SERVER_DLL_MAX; i++) - { - /* Get the current Server DLL */ - ServerDll = CsrLoadedServerDll[i]; - - /* Make sure it's valid and that it has callback */ - if ((ServerDll) && (ServerDll->NewProcessCallback)) - { - Status = ServerDll->NewProcessCallback(SourceProcessData, TargetProcessData); - } - } - - return Status; -} -#endif - CSR_API(BaseSrvCreateProcess) { NTSTATUS Status; PBASE_CREATE_PROCESS CreateProcessRequest = &((PBASE_API_MESSAGE)ApiMessage)->Data.CreateProcessRequest; HANDLE ProcessHandle, ThreadHandle; PCSR_THREAD CsrThread; - PCSR_PROCESS Process; // , NewProcess; - ULONG /* Flags, */ VdmPower = 0, DebugFlags = 0; + PCSR_PROCESS Process; + ULONG Flags = 0, VdmPower = 0, DebugFlags = 0; /* Get the current client thread */ CsrThread = CsrGetClientThread(); @@ -58,7 +27,7 @@ Process = CsrThread->Process; /* Extract the flags out of the process handle */ - // Flags = (ULONG_PTR)CreateProcessRequest->ProcessHandle & 3; + Flags = (ULONG_PTR)CreateProcessRequest->ProcessHandle & 3; CreateProcessRequest->ProcessHandle = (HANDLE)((ULONG_PTR)CreateProcessRequest->ProcessHandle & ~3); /* Duplicate the process handle */ @@ -107,7 +76,7 @@ } } - /* Convert some flags. FIXME: More need conversion */ + /* Flags conversion. FIXME: More need conversion */ if (CreateProcessRequest->CreationFlags & CREATE_NEW_PROCESS_GROUP) { DebugFlags |= CsrProcessCreateNewGroup; @@ -139,20 +108,6 @@ /* FIXME: VDM vodoo */ - /* ReactOS Compatibility */ -#if 0 - Status = CsrLockProcessByClientId(CreateProcessRequest->ClientId.UniqueProcess, &NewProcess); - ASSERT(Status == STATUS_SUCCESS); - if (!(CreateProcessRequest->CreationFlags & (CREATE_NEW_CONSOLE | DETACHED_PROCESS))) - { - NewProcess->ParentConsole = Process->Console; - NewProcess->bInheritHandles = CreateProcessRequest->bInheritHandles; - } - RtlInitializeCriticalSection(&NewProcess->HandleTableLock); - CallProcessCreated(Process, NewProcess); - CsrUnlockProcess(NewProcess); -#endif - /* Return the result of this operation */ return Status; } @@ -206,7 +161,8 @@ /* Call CSRSRV to tell it about the new thread */ Status = CsrCreateThread(CsrProcess, ThreadHandle, - &CreateThreadRequest->ClientId); + &CreateThreadRequest->ClientId, + TRUE); } /* Unlock the process and return */ @@ -232,8 +188,8 @@ PCSR_THREAD CsrThread = CsrGetClientThread(); ASSERT(CsrThread != NULL); - /* Set magic flag so we don't reply this message back */ - ApiMessage->ApiNumber = 0xBABE; + /* Set the special reply value so we don't reply this message back */ + *Reply = 2; /* Remove the CSR_THREADs and CSR_PROCESS */ return CsrDestroyProcess(&CsrThread->ClientId, Modified: branches/ros-csrss/win32ss/user/user32/misc/misc.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/user32/misc/misc.c?rev=57694&r1=57693&r2=57694&view=diff ============================================================================== --- branches/ros-csrss/win32ss/user/user32/misc/misc.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/user32/misc/misc.c [iso-8859-1] Fri Nov 9 23:39:45 2012 @@ -74,26 +74,25 @@ WINAPI SetLogonNotifyWindow(HWND Wnd, HWINSTA WinSta) { -#if 0 +/// HACK: Windows does not do this !! ReactOS-specific /* Maybe we should call NtUserSetLogonNotifyWindow and let that one inform CSRSS??? */ - CSR_API_MESSAGE Request; + USER_API_MESSAGE Request; NTSTATUS Status; Request.Data.SetLogonNotifyWindowRequest.LogonNotifyWindow = Wnd; - Status = CsrClientCallServer(&Request, + Status = CsrClientCallServer((PCSR_API_MESSAGE)&Request, NULL, - CSR_CREATE_API_NUMBER(CSR_GUI, SET_LOGON_NOTIFY_WINDOW), - sizeof(CSR_API_MESSAGE)); + 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); -#endif - return TRUE; } /* Modified: branches/ros-csrss/win32ss/user/winsrv/init.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/winsrv/init.c?rev=57694&r1=57693&r2=57694&view=diff ============================================================================== --- branches/ros-csrss/win32ss/user/winsrv/init.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/winsrv/init.c [iso-8859-1] Fri Nov 9 23:39:45 2012 @@ -40,6 +40,9 @@ // SrvCancelShutdown, // Added in Vista // SrvConsoleHandleOperation, // Added in Win7 // SrvGetSetShutdownBlockReason, // Added in Vista + + /// HACK: ReactOS-specific + RosSetLogonNotifyWindow }; BOOLEAN UserServerApiServerValidTable[UserpMaxApiNumber] = @@ -58,6 +61,9 @@ // FALSE, // SrvConsoleHandleOperation // FALSE, // SrvGetSetShutdownBlockReason + /// HACK: ReactOS-specific + FALSE, // RosSetLogonNotifyWindow + // FALSE }; @@ -76,6 +82,9 @@ // "SrvCancelShutdown", // "SrvConsoleHandleOperation", // "SrvGetSetShutdownBlockReason", + + /// HACK: ReactOS-specific + "RosSetLogonNotifyWindow", // NULL }; Modified: branches/ros-csrss/win32ss/user/winsrv/shutdown.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/winsrv/shutdown.c?rev=57694&r1=57693&r2=57694&view=diff ============================================================================== --- branches/ros-csrss/win32ss/user/winsrv/shutdown.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/winsrv/shutdown.c [iso-8859-1] Fri Nov 9 23:39:45 2012 @@ -56,7 +56,8 @@ return STATUS_SUCCESS; } -CSR_API(CsrSetLogonNotifyWindow) +/// HACK: ReactOS-specific +CSR_API(RosSetLogonNotifyWindow) { PCSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.SetLogonNotifyWindowRequest; DWORD WindowCreator; Modified: branches/ros-csrss/win32ss/user/winsrv/winsrv.h URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/winsrv/winsrv.h?rev=57694&r1=57693&r2=57694&view=diff ============================================================================== --- branches/ros-csrss/win32ss/user/winsrv/winsrv.h [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/winsrv/winsrv.h [iso-8859-1] Fri Nov 9 23:39:45 2012 @@ -53,11 +53,12 @@ /* shutdown.c */ CSR_API(SrvExitWindowsEx); -CSR_API(CsrSetLogonNotifyWindow); +// CSR_API(CsrRegisterSystemClasses); +CSR_API(SrvRegisterServicesProcess); CSR_API(SrvRegisterLogonProcess); -// CSR_API(CsrRegisterSystemClasses); -CSR_API(SrvRegisterServicesProcess); +/// HACK: ReactOS-specific +CSR_API(RosSetLogonNotifyWindow); /*****************************