mirror of
https://github.com/reactos/reactos.git
synced 2024-10-07 18:04:41 +00:00
[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
This commit is contained in:
parent
002ef4e66b
commit
7d4a765fe0
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include <debug.h>
|
||||
|
||||
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;
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
/*++
|
||||
|
|
|
@ -313,7 +313,8 @@ CSR_API(CsrAllocConsole)
|
|||
|
||||
CSR_API(CsrFreeConsole)
|
||||
{
|
||||
return Win32CsrReleaseConsole(ProcessData, 0, 0);
|
||||
Win32CsrReleaseConsole(ProcessData);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
VOID WINAPI
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue