Author: hbelusca
Date: Sun Nov 23 15:50:49 2014
New Revision: 65463

URL: http://svn.reactos.org/svn/reactos?rev=65463&view=rev
Log:
[WINSRV]: Pave the way for proper ReactOS shutdown. Part 1/X
CORE-8322

Added:
    trunk/reactos/win32ss/user/winsrv/consrv/shutdown.c   (with props)
    trunk/reactos/win32ss/user/winsrv/winsrv.h   (with props)
Modified:
    trunk/reactos/win32ss/user/winsrv/consrv.cmake
    trunk/reactos/win32ss/user/winsrv/consrv/console.c
    trunk/reactos/win32ss/user/winsrv/consrv/consrv.h
    trunk/reactos/win32ss/user/winsrv/consrv/init.c

Modified: trunk/reactos/win32ss/user/winsrv/consrv.cmake
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv.cmake?rev=65463&r1=65462&r2=65463&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/consrv.cmake      [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/winsrv/consrv.cmake      [iso-8859-1] Sun Nov 23 
15:50:49 2014
@@ -16,6 +16,7 @@
     consrv/lineinput.c
     consrv/popup.c
     consrv/settings.c
+    consrv/shutdown.c
     consrv/subsysreg.c
     consrv/condrv/coninput.c
     consrv/condrv/conoutput.c

Modified: trunk/reactos/win32ss/user/winsrv/consrv/console.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/console.c?rev=65463&r1=65462&r2=65463&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/consrv/console.c  [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/winsrv/consrv/console.c  [iso-8859-1] Sun Nov 23 
15:50:49 2014
@@ -11,8 +11,6 @@
 /* INCLUDES 
*******************************************************************/
 
 #include "consrv.h"
-
-#include <ndk/psfuncs.h>
 
 /* This is for COM usage */
 #define COBJMACROS

Modified: trunk/reactos/win32ss/user/winsrv/consrv/consrv.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/consrv.h?rev=65463&r1=65462&r2=65463&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/consrv/consrv.h   [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/winsrv/consrv/consrv.h   [iso-8859-1] Sun Nov 23 
15:50:49 2014
@@ -9,31 +9,21 @@
 #ifndef __CONSRV_H__
 #define __CONSRV_H__
 
+/* Main header */
+#include "../winsrv.h"
+
 /* PSDK/NDK Headers */
-#include <stdarg.h>
 #define WIN32_NO_STATUS
 #define _INC_WINDOWS
 #define COM_NO_WINDOWS_H
-#include <windef.h>
-#include <winbase.h>
+
 #include <winnls.h>
 #include <winreg.h>
 #include <wincon.h>
-#include <winuser.h>
+
 #define NTOS_MODE_USER
 #include <ndk/exfuncs.h>
 #include <ndk/mmfuncs.h>
-#include <ndk/obfuncs.h>
-#include <ndk/rtlfuncs.h>
-
-/* Public Win32K Headers */
-#include <ntuser.h>
-
-/* PSEH for SEH Support */
-#include <pseh/pseh2.h>
-
-/* CSRSS Header */
-#include <csr/csrsrv.h>
 
 /* CONSOLE Headers */
 #include <win/conmsg.h>
@@ -82,4 +72,11 @@
 #include "handle.h"
 #include "lineinput.h"
 
+/* shutdown.c */
+ULONG
+NTAPI
+ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
+                      IN ULONG Flags,
+                      IN BOOLEAN FirstPhase);
+
 #endif /* __CONSRV_H__ */

Modified: trunk/reactos/win32ss/user/winsrv/consrv/init.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/init.c?rev=65463&r1=65462&r2=65463&view=diff
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/consrv/init.c     [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/winsrv/consrv/init.c     [iso-8859-1] Sun Nov 23 
15:50:49 2014
@@ -548,7 +548,7 @@
     LoadedServerDll->DisconnectCallback = ConSrvDisconnect;
     LoadedServerDll->NewProcessCallback = ConSrvNewProcess;
     // LoadedServerDll->HardErrorCallback = ConSrvHardError;
-    LoadedServerDll->ShutdownProcessCallback = NULL;
+    LoadedServerDll->ShutdownProcessCallback = ConsoleClientShutdown;
 
     ConSrvDllInstance = LoadedServerDll->ServerHandle;
 

Added: trunk/reactos/win32ss/user/winsrv/consrv/shutdown.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/shutdown.c?rev=65463
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/consrv/shutdown.c (added)
+++ trunk/reactos/win32ss/user/winsrv/consrv/shutdown.c [iso-8859-1] Sun Nov 23 
15:50:49 2014
@@ -0,0 +1,56 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS Console Server DLL
+ * FILE:            win32ss/user/winsrv/consrv/shutdown.c
+ * PURPOSE:         Processes Shutdown
+ * PROGRAMMERS:     Alex Ionescu
+ */
+
+/* INCLUDES 
*******************************************************************/
+
+#include "consrv.h"
+
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS 
******************************************************************/
+
+// NOTE: See 
http://blogs.msdn.com/b/ntdebugging/archive/2007/06/09/how-windows-shuts-down.aspx
+ULONG
+NTAPI
+ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
+                      IN ULONG Flags,
+                      IN BOOLEAN FirstPhase)
+{
+    PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
+
+    if ( ProcessData->ConsoleHandle != NULL ||
+         ProcessData->HandleTable   != NULL )
+    {
+        DPRINT1("ConsoleClientShutdown(0x%p, 0x%x, %s) - Console process 
[0x%x, 0x%x]\n",
+                CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
+                CsrProcess->ClientId.UniqueProcess, 
CsrProcess->ClientId.UniqueThread);
+
+        /* We are done with the process itself */
+        CsrDereferenceProcess(CsrProcess);
+        return CsrShutdownCsrProcess;
+    }
+    else
+    {
+        DPRINT1("ConsoleClientShutdown(0x%p, 0x%x, %s) - Non-console process 
[0x%x, 0x%x]\n",
+                CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
+                CsrProcess->ClientId.UniqueProcess, 
CsrProcess->ClientId.UniqueThread);
+
+        /* On first pass, ignore the process since the GUI server should take 
it... */
+        if (FirstPhase) return CsrShutdownNonCsrProcess;
+
+        /* ... otherwise, call the generic handler */
+        // FIXME: Should call a generic shutdown handler!!
+        CsrDereferenceProcess(CsrProcess);
+        return CsrShutdownCsrProcess;
+    }
+
+    return CsrShutdownNonCsrProcess;
+}
+
+/* EOF */

Propchange: trunk/reactos/win32ss/user/winsrv/consrv/shutdown.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/win32ss/user/winsrv/winsrv.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/winsrv.h?rev=65463
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/winsrv.h  (added)
+++ trunk/reactos/win32ss/user/winsrv/winsrv.h  [iso-8859-1] Sun Nov 23 
15:50:49 2014
@@ -0,0 +1,42 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS User API Server DLL
+ * FILE:            win32ss/user/winsrv/winsrv.h
+ * PURPOSE:         Main header - Definitions
+ * PROGRAMMERS:     Hermes Belusca-Maito ([email protected])
+ */
+
+#ifndef __WINSRV_H__
+#define __WINSRV_H__
+
+#include <stdarg.h>
+
+/* PSDK/NDK Headers */
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winuser.h>
+/* Undocumented user definitions */
+#include <undocuser.h>
+
+#define NTOS_MODE_USER
+#include <ndk/cmfuncs.h>
+#include <ndk/obfuncs.h>
+#include <ndk/psfuncs.h>
+#include <ndk/rtlfuncs.h>
+
+/* Public Win32K Headers */
+#include <ntuser.h>
+
+/* PSEH for SEH Support */
+#include <pseh/pseh2.h>
+
+/* CSRSS Header */
+#include <csr/csrsrv.h>
+
+#endif /* __WINSRV_H__ */

Propchange: trunk/reactos/win32ss/user/winsrv/winsrv.h
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to