[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:
Alex Ionescu 2012-02-19 06:44:09 +00:00
parent 002ef4e66b
commit 7d4a765fe0
8 changed files with 11 additions and 42 deletions

View file

@ -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);
}
}
}

View file

@ -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;

View file

@ -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),

View file

@ -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
}
/*++

View file

@ -313,7 +313,8 @@ CSR_API(CsrAllocConsole)
CSR_API(CsrFreeConsole)
{
return Win32CsrReleaseConsole(ProcessData, 0, 0);
Win32CsrReleaseConsole(ProcessData);
return STATUS_SUCCESS;
}
VOID WINAPI

View file

@ -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;

View file

@ -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

View file

@ -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);