Author: ion
Date: Fri Feb 17 05:15:13 2012
New Revision: 55665

URL: http://svn.reactos.org/svn/reactos?rev=55665&view=rev
Log:
[WIN32CSR/CSRSRV]: Make the outdated CSR_PLUGIN architecture as close to the 
CSR_SERVER_DLL architecture as possible for easier migration later. Main 
changes are return values/number of parameters, importing csrsrv functions 
instead of using a manual export table, and other similar small changes. Also, 
add win32csr.dll to the registry command-line for CSRSS, but still load it 
hard-coded for now.

Modified:
    trunk/reactos/boot/bootdata/hivesys_amd64.inf
    trunk/reactos/boot/bootdata/hivesys_arm.inf
    trunk/reactos/boot/bootdata/hivesys_i386.inf
    trunk/reactos/subsystems/win32/csrss/csrsrv/api/process.c
    trunk/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c
    trunk/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec
    trunk/reactos/subsystems/win32/csrss/csrsrv/init.c
    trunk/reactos/subsystems/win32/csrss/include/api.h
    trunk/reactos/subsystems/win32/csrss/include/csrplugin.h
    trunk/reactos/subsystems/win32/csrss/win32csr/console.c
    trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c
    trunk/reactos/subsystems/win32/csrss/win32csr/handle.c
    trunk/reactos/subsystems/win32/csrss/win32csr/harderror.c
    trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h
    trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h
    trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.spec

Modified: trunk/reactos/boot/bootdata/hivesys_amd64.inf
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesys_amd64.inf?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/boot/bootdata/hivesys_amd64.inf [iso-8859-1] (original)
+++ trunk/reactos/boot/bootdata/hivesys_amd64.inf [iso-8859-1] Fri Feb 17 
05:15:13 2012
@@ -1077,7 +1077,7 @@
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Optional",0x00010000,"Posix"
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Required",0x00010000,"Debug","Windows"
-HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On 
SubSystemType=Windows ServerDll=basesrv,1 
ServerDll=winsrv:UserServerDllInitialization,3 
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off 
MaxRequestThreads=16"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On 
SubSystemType=Windows ServerDll=basesrv,1 
ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off 
MaxRequestThreads=16"
 
 ; WOW Support
 HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""

Modified: trunk/reactos/boot/bootdata/hivesys_arm.inf
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesys_arm.inf?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/boot/bootdata/hivesys_arm.inf [iso-8859-1] (original)
+++ trunk/reactos/boot/bootdata/hivesys_arm.inf [iso-8859-1] Fri Feb 17 
05:15:13 2012
@@ -793,7 +793,7 @@
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Optional",0x00010000,"Posix"
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Required",0x00010000,"Debug","Windows"
-HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On 
SubSystemType=Windows ServerDll=basesrv,1 
ServerDll=winsrv:UserServerDllInitialization,3 
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off 
MaxRequestThreads=16"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On 
SubSystemType=Windows ServerDll=basesrv,1 
ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off 
MaxRequestThreads=16"
 
 ; WOW Support
 HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""

Modified: trunk/reactos/boot/bootdata/hivesys_i386.inf
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesys_i386.inf?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/boot/bootdata/hivesys_i386.inf [iso-8859-1] (original)
+++ trunk/reactos/boot/bootdata/hivesys_i386.inf [iso-8859-1] Fri Feb 17 
05:15:13 2012
@@ -1228,7 +1228,7 @@
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Optional",0x00010000,"Posix"
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
 HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Required",0x00010000,"Debug","Windows"
-HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On 
SubSystemType=Windows ServerDll=basesrv,1 
ServerDll=winsrv:UserServerDllInitialization,3 
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off 
MaxRequestThreads=16"
+HKLM,"SYSTEM\CurrentControlSet\Control\Session 
Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On 
SubSystemType=Windows ServerDll=basesrv,1 
ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off 
MaxRequestThreads=16"
 
 ; WOW Support
 HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""

Modified: trunk/reactos/subsystems/win32/csrss/csrsrv/api/process.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/csrsrv/api/process.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/csrsrv/api/process.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/csrsrv/api/process.c [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -13,7 +13,7 @@
 #define NDEBUG
 #include <debug.h>
     
-extern NTSTATUS CallProcessInherit(PCSR_PROCESS, PCSR_PROCESS);
+extern NTSTATUS CallProcessCreated(PCSR_PROCESS, PCSR_PROCESS);
 extern NTSTATUS CallProcessDeleted(PCSR_PROCESS);
 
 /* GLOBALS *******************************************************************/
@@ -154,11 +154,9 @@
      {
        NewProcessData->ParentConsole = ProcessData->Console;
        NewProcessData->bInheritHandles = 
Request->Data.CreateProcessRequest.bInheritHandles;
-       if (Request->Data.CreateProcessRequest.bInheritHandles)
-         {
-           CallProcessInherit(ProcessData, NewProcessData);
-         }
-     }
+     }
+     
+     CallProcessCreated(ProcessData, NewProcessData);
 
    if (Request->Data.CreateProcessRequest.Flags & CREATE_NEW_PROCESS_GROUP)
      {

Modified: trunk/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/csrsrv/api/wapi.c [iso-8859-1] Fri Feb 
17 05:15:13 2012
@@ -97,20 +97,20 @@
   Request->Status = STATUS_INVALID_SYSTEM_SERVICE;
 }
 
-BOOL
-CallHardError(IN PCSR_PROCESS ProcessData,
+VOID
+CallHardError(IN PCSR_THREAD ThreadData,
               IN PHARDERROR_MSG HardErrorMessage);
 
 static
 VOID
 NTAPI
-CsrHandleHardError(IN PCSR_PROCESS ProcessData,
+CsrHandleHardError(IN PCSR_THREAD ThreadData,
                    IN OUT PHARDERROR_MSG Message)
 {
     DPRINT1("CSR: received hard error %lx\n", Message->Status);
 
     /* Call the hard error handler in win32csr */
-    (VOID)CallHardError(ProcessData, Message);
+    CallHardError(ThreadData, Message);
 }
 
 /*++
@@ -935,7 +935,9 @@
         if (MessageType == LPC_ERROR_EVENT)
         {
             /* Call the Handler */
-            CsrHandleHardError(ProcessData, (PHARDERROR_MSG)Request);
+            PCSR_THREAD Thread;
+            Thread = CsrLocateThreadByClientId(NULL, 
&Request->Header.ClientId);
+            CsrHandleHardError(Thread, (PHARDERROR_MSG)Request);
         }
         else
         {

Modified: trunk/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/csrsrv/csrsrv.spec [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -12,6 +12,7 @@
 ;@ stdcall CsrDereferenceWait(ptr)
 ;@ stdcall CsrDestroyProcess(ptr long)
 ;@ stdcall CsrDestroyThread(ptr)
+@ stdcall CsrEnumProcesses(ptr ptr) ; Temporary hack
 ;@ stdcall CsrExecServerThread(ptr long)
 @ stdcall CsrGetProcessLuid(ptr ptr)
 @ stdcall CsrImpersonateClient(ptr)

Modified: trunk/reactos/subsystems/win32/csrss/csrsrv/init.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/csrsrv/init.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/csrsrv/init.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/csrss/csrsrv/init.c [iso-8859-1] Fri Feb 17 
05:15:13 2012
@@ -64,26 +64,22 @@
   return STATUS_SUCCESS;
 }
 
-BOOL
-CallHardError(IN PCSR_PROCESS ProcessData,
+VOID
+CallHardError(IN PCSR_THREAD ThreadData,
               IN PHARDERROR_MSG HardErrorMessage)
 {
-    BOOL Ok;
     unsigned i;
 
     DPRINT("CSR: %s called\n", __FUNCTION__);
 
-    Ok = TRUE;
-    for (i = 0; i < ServerProcCount && Ok; i++)
-    {
-        Ok = (*ServerProcs[i].HardErrorProc)(ProcessData, HardErrorMessage);
-    }
-
-    return Ok;
+    for (i = 0; i < ServerProcCount; i++)
+    {
+        ServerProcs[i].HardErrorProc(ThreadData, HardErrorMessage);
+    }
 }
 
 NTSTATUS
-CallProcessInherit(IN PCSR_PROCESS SourceProcessData,
+CallProcessCreated(IN PCSR_PROCESS SourceProcessData,
                    IN PCSR_PROCESS TargetProcessData)
 {
     NTSTATUS Status = STATUS_SUCCESS;
@@ -91,8 +87,11 @@
 
     DPRINT("CSR: %s called\n", __FUNCTION__);
 
-    for (i = 0; i < ServerProcCount && NT_SUCCESS(Status); i++)
-        Status = (*ServerProcs[i].ProcessInheritProc)(SourceProcessData, 
TargetProcessData);
+    for (i = 0; i < ServerProcCount; i++)
+    {
+        Status = ServerProcs[i].ProcessInheritProc(SourceProcessData, 
TargetProcessData);
+        if (!NT_SUCCESS(Status)) break;
+    }
 
     return Status;
 }
@@ -100,15 +99,15 @@
 NTSTATUS
 CallProcessDeleted(IN PCSR_PROCESS ProcessData)
 {
-    NTSTATUS Status = STATUS_SUCCESS;
+    ULONG Result = 0;
     unsigned i;
 
     DPRINT("CSR: %s called\n", __FUNCTION__);
 
-    for (i = 0; i < ServerProcCount && NT_SUCCESS(Status); i++)
-        Status = (*ServerProcs[i].ProcessDeletedProc)(ProcessData);
-
-    return Status;
+    for (i = 0; i < ServerProcCount; i++)
+        Result = ServerProcs[i].ProcessDeletedProc(ProcessData, 0, FALSE);
+
+    return Result;
 }
 
 /**********************************************************************
@@ -131,7 +130,6 @@
   HINSTANCE hInst;
   ANSI_STRING ProcName;
   CSRPLUGIN_INITIALIZE_PROC InitProc;
-  CSRSS_EXPORTED_FUNCS Exports;
   PCSRSS_API_DEFINITION ApiDefinitions;
   CSRPLUGIN_SERVER_PROCS ServerProcs;
 
@@ -149,8 +147,8 @@
     {
       return Status;
     }
-  Exports.CsrEnumProcessesProc = CsrEnumProcesses;
-  if (! (*InitProc)(&ApiDefinitions, &ServerProcs, &Exports, CsrHeap))
+    
+  if (! (*InitProc)(&ApiDefinitions, &ServerProcs))
     {
       return STATUS_UNSUCCESSFUL;
     }

Modified: trunk/reactos/subsystems/win32/csrss/include/api.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/include/api.h?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/include/api.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/csrss/include/api.h [iso-8859-1] Fri Feb 17 
05:15:13 2012
@@ -312,6 +312,7 @@
 extern PVOID CsrSrvSharedSectionHeap;
 extern PVOID *CsrSrvSharedStaticServerData;
 extern HANDLE CsrInitializationEvent;
+extern PCSR_SERVER_DLL CsrLoadedServerDll[CSR_SERVER_DLL_MAX];
 
 NTSTATUS
 NTAPI

Modified: trunk/reactos/subsystems/win32/csrss/include/csrplugin.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/include/csrplugin.h?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/include/csrplugin.h [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/include/csrplugin.h [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -31,13 +31,13 @@
 
 typedef BOOL (WINAPI *CSRPLUGIN_INIT_COMPLETE_PROC)(void);
 
-typedef BOOL (WINAPI *CSRPLUGIN_HARDERROR_PROC)(IN PCSR_PROCESS ProcessData,
+typedef VOID (WINAPI *CSRPLUGIN_HARDERROR_PROC)(IN PCSR_THREAD ThreadData,
                                                  IN PHARDERROR_MSG 
HardErrorMessage);
 
 typedef NTSTATUS (WINAPI *CSRPLUGIN_PROCESS_INHERIT_PROC)(IN PCSR_PROCESS 
SourceProcessData,
                                                           IN PCSR_PROCESS 
TargetProcessData);
 
-typedef NTSTATUS (WINAPI *CSRPLUGIN_PROCESS_DELETED_PROC)(IN PCSR_PROCESS 
ProcessData);
+typedef ULONG (WINAPI *CSRPLUGIN_PROCESS_DELETED_PROC)(IN PCSR_PROCESS 
ProcessData, IN ULONG Unused, IN BOOLEAN Flag);
 
 typedef struct tagCSRSS_SERVER_PROCS
 {
@@ -48,8 +48,6 @@
 } CSRPLUGIN_SERVER_PROCS, *PCSRPLUGIN_SERVER_PROCS;
 
 typedef BOOL (WINAPI *CSRPLUGIN_INITIALIZE_PROC)(PCSRSS_API_DEFINITION 
*ApiDefinitions,
-                                                  PCSRPLUGIN_SERVER_PROCS 
ServerProcs,
-                                                  PCSRSS_EXPORTED_FUNCS 
Exports,
-                                                  HANDLE CsrssApiHeap);
+                                                  PCSRPLUGIN_SERVER_PROCS 
ServerProcs);
 
 /* EOF */

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/console.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/console.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/console.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/console.c [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -319,7 +319,7 @@
     Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE);
     Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - 
sizeof(PORT_MESSAGE);
 
-    return Win32CsrReleaseConsole(ProcessData);
+    return Win32CsrReleaseConsole(ProcessData, 0, 0);
 }
 
 VOID WINAPI

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -21,7 +21,6 @@
 
 HANDLE Win32CsrApiHeap;
 HINSTANCE Win32CsrDllHandle = NULL;
-static CSRSS_EXPORTED_FUNCS CsrExports;
 
 static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
 {
@@ -306,13 +305,7 @@
 Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
                       PVOID Context)
 {
-    return (CsrExports.CsrEnumProcessesProc)(EnumProc, Context);
-}
-
-static BOOL WINAPI
-Win32CsrInitComplete(void)
-{
-    return TRUE;
+    return CsrEnumProcesses(EnumProc, Context);
 }
 
 VOID
@@ -331,18 +324,20 @@
     return 0;
 }
 
-BOOL WINAPI
+NTSTATUS
+WINAPI
+#if 0
+Win32CsrInitialization(IN PCSR_SERVER_DLL ServerDll)
+#else
 Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions,
-                       PCSRPLUGIN_SERVER_PROCS ServerProcs,
-                       PCSRSS_EXPORTED_FUNCS Exports,
-                       HANDLE CsrHeap)
+                       PCSRPLUGIN_SERVER_PROCS ServerProcs)
+#endif
 {
     HANDLE ServerThread;
     CLIENT_ID ClientId;
     NTSTATUS Status;
 
-    CsrExports = *Exports;
-    Win32CsrApiHeap = CsrHeap;
+    Win32CsrApiHeap = RtlGetProcessHeap();
     
     CsrpInitVideo();
 
@@ -351,11 +346,20 @@
     PrivateCsrssManualGuiCheck(0);
     CsrInitConsoleSupport();
 
+    /* HACK */
+#if 0
+    ServerDll->DispatchTable = (PVOID)Win32CsrApiDefinitions;
+    ServerDll->HighestApiSupported = 0xDEADBABE;
+    
+    ServerDll->HardErrorCallback = Win32CsrHardError;
+    ServerDll->NewProcessCallback = Win32CsrDuplicateHandleTable;
+    ServerDll->ShutdownProcessCallback = Win32CsrReleaseConsole;
+#else
     *ApiDefinitions = Win32CsrApiDefinitions;
-    ServerProcs->InitCompleteProc = Win32CsrInitComplete;
     ServerProcs->HardErrorProc = Win32CsrHardError;
     ServerProcs->ProcessInheritProc = Win32CsrDuplicateHandleTable;
     ServerProcs->ProcessDeletedProc = Win32CsrReleaseConsole;
+#endif
 
     RtlInitializeCriticalSection(&Win32CsrDefineDosDeviceCritSec);
     InitializeListHead(&DosDeviceHistory);

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/handle.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/handle.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/handle.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/handle.c [iso-8859-1] Fri Feb 
17 05:15:13 2012
@@ -132,10 +132,10 @@
         ConioDeleteConsole(&Console->Header);
 }
 
-NTSTATUS
+ULONG
 WINAPI
 Win32CsrReleaseConsole(
-    PCSR_PROCESS ProcessData)
+    PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First)
 {
     PCSRSS_CONSOLE Console;
     ULONG i;
@@ -161,10 +161,10 @@
         //CloseHandle(ProcessData->ConsoleEvent);
         //ProcessData->ConsoleEvent = NULL;
         RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
-        return STATUS_SUCCESS;
-    }
-    RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
-    return STATUS_INVALID_PARAMETER;
+        return 0;
+    }
+    RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
+    return -1;
 }
 
 NTSTATUS
@@ -223,6 +223,9 @@
     PCSR_PROCESS TargetProcessData)
 {
     ULONG i;
+    
+    /* Only inherit if the flag was set */
+    if (!TargetProcessData->bInheritHandles) return STATUS_SUCCESS;
 
     if (TargetProcessData->HandleTableSize)
     {

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/harderror.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/harderror.c?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/harderror.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/harderror.c [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -500,12 +500,13 @@
     return ResponseNotHandled;
 }
 
-BOOL
+VOID
 WINAPI
 Win32CsrHardError(
-    IN PCSR_PROCESS ProcessData,
+    IN PCSR_THREAD ThreadData,
     IN PHARDERROR_MSG Message)
 {
+    PCSR_PROCESS ProcessData = ThreadData->Process;
     ULONG_PTR Parameters[MAXIMUM_HARDERROR_PARAMETERS];
     OBJECT_ATTRIBUTES ObjectAttributes;
     UNICODE_STRING TextU, CaptionU;
@@ -514,6 +515,7 @@
     ULONG Size;
 
     /* Default to not handled */
+    ASSERT(ProcessData != NULL);
     Message->Response = ResponseNotHandled;
 
     /* Make sure we don't have too many parameters */
@@ -532,7 +534,7 @@
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("NtOpenProcess failed with code: %lx\n", Status);
-        return FALSE;
+        return;
     }
 
     /* Capture all string parameters from the process memory */
@@ -540,7 +542,7 @@
     if (!NT_SUCCESS(Status))
     {
         NtClose(hProcess);
-        return FALSE;
+        return;
     }
 
     /* Format the caption and message box text */
@@ -557,7 +559,7 @@
 
     if (!NT_SUCCESS(Status))
     {
-        return FALSE;
+        return;
     }
 
     /* Display the message box */
@@ -569,6 +571,6 @@
     RtlFreeUnicodeString(&TextU);
     RtlFreeUnicodeString(&CaptionU);
 
-    return TRUE;
+    return;
 }
 

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h [iso-8859-1] Fri Feb 
17 05:15:13 2012
@@ -23,10 +23,10 @@
 /* shared header with console.dll */
 #include "console.h"
 
-BOOL
+VOID
 WINAPI
 Win32CsrHardError(
-    IN PCSR_PROCESS ProcessData,
+    IN PCSR_THREAD ThreadData,
     IN PHARDERROR_MSG Message);
 
 /* EOF */

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h [iso-8859-1] Fri 
Feb 17 05:15:13 2012
@@ -54,7 +54,7 @@
 VOID FASTCALL Win32CsrUnlockObject(Object_t *Object);
 NTSTATUS FASTCALL Win32CsrReleaseObject(PCSR_PROCESS ProcessData,
                                         HANDLE Object);
-NTSTATUS WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData);
+ULONG WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData, ULONG Flags, 
BOOLEAN First);
 NTSTATUS WINAPI Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData,
                                              PCSR_PROCESS TargetProcessData);
 CSR_API(CsrGetHandle);

Modified: trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.spec
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.spec?rev=55665&r1=55664&r2=55665&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.spec [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.spec [iso-8859-1] 
Fri Feb 17 05:15:13 2012
@@ -1,1 +1,1 @@
-@ stdcall Win32CsrInitialization(ptr ptr ptr ptr)
+@ stdcall Win32CsrInitialization(ptr ptr)


Reply via email to