From 7d4a765fe07c7d0ecf5fbd862c363104e5fd9f39 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sun, 19 Feb 2012 06:44:09 +0000 Subject: [PATCH] [CSRSRV]: I confused ShutdownCallback with DisconnectCallback. What win32csr needs is actually the later. Fixed that. Also removed CallProcessDeleted since we already call the Disconnectcallback from CsrRemoveProcess, which we do call in CSRSRV. Enabled the code that was disabled. svn path=/trunk/; revision=55699 --- reactos/subsystems/csr/csrsrv/process.c | 4 +-- .../win32/csrss/csrsrv/api/process.c | 2 -- reactos/subsystems/win32/csrss/csrsrv/init.c | 25 ------------------- .../subsystems/win32/csrss/csrsrv/procsup.c | 9 +++---- .../subsystems/win32/csrss/win32csr/console.c | 3 ++- .../subsystems/win32/csrss/win32csr/dllmain.c | 2 +- .../subsystems/win32/csrss/win32csr/handle.c | 6 ++--- .../win32/csrss/win32csr/win32csr.h | 2 +- 8 files changed, 11 insertions(+), 42 deletions(-) diff --git a/reactos/subsystems/csr/csrsrv/process.c b/reactos/subsystems/csr/csrsrv/process.c index 87201a85b3c..1d73bb261bf 100644 --- a/reactos/subsystems/csr/csrsrv/process.c +++ b/reactos/subsystems/csr/csrsrv/process.c @@ -345,10 +345,10 @@ CsrRemoveProcess(IN PCSR_PROCESS CsrProcess) ServerDll = CsrLoadedServerDll[i]; /* Check if it's valid and if it has a Disconnect Callback */ - if (ServerDll && ServerDll->DisconnectCallback) + if ((ServerDll) && (ServerDll->DisconnectCallback)) { /* Call it */ - (ServerDll->DisconnectCallback)(CsrProcess); + ServerDll->DisconnectCallback(CsrProcess); } } } diff --git a/reactos/subsystems/win32/csrss/csrsrv/api/process.c b/reactos/subsystems/win32/csrss/csrsrv/api/process.c index f8810341c40..f8bdd0f54c4 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/api/process.c +++ b/reactos/subsystems/win32/csrss/csrsrv/api/process.c @@ -14,7 +14,6 @@ #include extern NTSTATUS CallProcessCreated(PCSR_PROCESS, PCSR_PROCESS); -extern NTSTATUS CallProcessDeleted(PCSR_PROCESS); /* GLOBALS *******************************************************************/ @@ -97,7 +96,6 @@ NTSTATUS WINAPI CsrFreeProcessData(HANDLE Pid) LOCK; Process = pProcessData->ProcessHandle; - CallProcessDeleted(pProcessData); /* Dereference all process threads */ NextEntry = pProcessData->ThreadList.Flink; diff --git a/reactos/subsystems/win32/csrss/csrsrv/init.c b/reactos/subsystems/win32/csrss/csrsrv/init.c index 7cd9cf70b3f..4ec70eab6a1 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/init.c +++ b/reactos/subsystems/win32/csrss/csrsrv/init.c @@ -84,31 +84,6 @@ CallProcessCreated(IN PCSR_PROCESS SourceProcessData, return Status; } -NTSTATUS -CallProcessDeleted(IN PCSR_PROCESS ProcessData) -{ - ULONG Result = 0; - unsigned 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->ShutdownProcessCallback)) - { - Result = ServerDll->ShutdownProcessCallback(ProcessData, 0, FALSE); - } - } - - return Result; -} - CSRSS_API_DEFINITION NativeDefinitions[] = { CSRSS_DEFINE_API(CREATE_PROCESS, CsrCreateProcess), diff --git a/reactos/subsystems/win32/csrss/csrsrv/procsup.c b/reactos/subsystems/win32/csrss/csrsrv/procsup.c index 712e3b47b4d..f50dd928792 100644 --- a/reactos/subsystems/win32/csrss/csrsrv/procsup.c +++ b/reactos/subsystems/win32/csrss/csrsrv/procsup.c @@ -701,10 +701,8 @@ VOID NTAPI CsrRemoveProcess(IN PCSR_PROCESS CsrProcess) { -#if 0 PCSR_SERVER_DLL ServerDll; ULONG i; -#endif ASSERT(ProcessStructureListLocked()); /* Remove us from the Process List */ @@ -712,7 +710,7 @@ CsrRemoveProcess(IN PCSR_PROCESS CsrProcess) /* Release the lock */ CsrReleaseProcessLock(); -#if 0 + /* Loop every Server DLL */ for (i = 0; i < CSR_SERVER_DLL_MAX; i++) { @@ -720,13 +718,12 @@ CsrRemoveProcess(IN PCSR_PROCESS CsrProcess) ServerDll = CsrLoadedServerDll[i]; /* Check if it's valid and if it has a Disconnect Callback */ - if (ServerDll && ServerDll->DisconnectCallback) + if ((ServerDll) && (ServerDll->DisconnectCallback)) { /* Call it */ - (ServerDll->DisconnectCallback)(CsrProcess); + ServerDll->DisconnectCallback(CsrProcess); } } -#endif } /*++ diff --git a/reactos/subsystems/win32/csrss/win32csr/console.c b/reactos/subsystems/win32/csrss/win32csr/console.c index 29cc46d4c81..cfb1eba4d5f 100644 --- a/reactos/subsystems/win32/csrss/win32csr/console.c +++ b/reactos/subsystems/win32/csrss/win32csr/console.c @@ -313,7 +313,8 @@ CSR_API(CsrAllocConsole) CSR_API(CsrFreeConsole) { - return Win32CsrReleaseConsole(ProcessData, 0, 0); + Win32CsrReleaseConsole(ProcessData); + return STATUS_SUCCESS; } VOID WINAPI diff --git a/reactos/subsystems/win32/csrss/win32csr/dllmain.c b/reactos/subsystems/win32/csrss/win32csr/dllmain.c index 20679423d82..cbfaf15ae21 100644 --- a/reactos/subsystems/win32/csrss/win32csr/dllmain.c +++ b/reactos/subsystems/win32/csrss/win32csr/dllmain.c @@ -353,7 +353,7 @@ Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions, ServerDll->HardErrorCallback = Win32CsrHardError; ServerDll->NewProcessCallback = Win32CsrDuplicateHandleTable; - ServerDll->ShutdownProcessCallback = Win32CsrReleaseConsole; + ServerDll->DisconnectCallback = Win32CsrReleaseConsole; #else *ApiDefinitions = Win32CsrApiDefinitions; ServerProcs->HardErrorProc = Win32CsrHardError; diff --git a/reactos/subsystems/win32/csrss/win32csr/handle.c b/reactos/subsystems/win32/csrss/win32csr/handle.c index 57cc65a0ea7..eeed766896d 100644 --- a/reactos/subsystems/win32/csrss/win32csr/handle.c +++ b/reactos/subsystems/win32/csrss/win32csr/handle.c @@ -132,10 +132,10 @@ Win32CsrUnlockObject(Object_t *Object) ConioDeleteConsole(&Console->Header); } -ULONG +VOID WINAPI Win32CsrReleaseConsole( - PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First) + PCSR_PROCESS ProcessData) { PCSRSS_CONSOLE Console; ULONG i; @@ -161,10 +161,8 @@ Win32CsrReleaseConsole( //CloseHandle(ProcessData->ConsoleEvent); //ProcessData->ConsoleEvent = NULL; RtlLeaveCriticalSection(&ProcessData->HandleTableLock); - return 0; } RtlLeaveCriticalSection(&ProcessData->HandleTableLock); - return -1; } NTSTATUS diff --git a/reactos/subsystems/win32/csrss/win32csr/win32csr.h b/reactos/subsystems/win32/csrss/win32csr/win32csr.h index 68512749ffd..5b4a68eb41b 100644 --- a/reactos/subsystems/win32/csrss/win32csr/win32csr.h +++ b/reactos/subsystems/win32/csrss/win32csr/win32csr.h @@ -54,7 +54,7 @@ NTSTATUS FASTCALL Win32CsrLockObject(PCSR_PROCESS ProcessData, VOID FASTCALL Win32CsrUnlockObject(Object_t *Object); NTSTATUS FASTCALL Win32CsrReleaseObject(PCSR_PROCESS ProcessData, HANDLE Object); -ULONG WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First); +VOID WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData); NTSTATUS WINAPI Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData, PCSR_PROCESS TargetProcessData); CSR_API(CsrGetHandle);