- On Win2k3, the EXIT_(ROS)_EX csr message has 3 parameters, instead of 2 (as on win2k), and the dwReserved is in fact unused.
[USERSRV]
- Add CSR shutdown callback UserClientShutdown (stub).
[CONSRV|USERSRV]
- The CSR shutdown callbacks are just stubs currently.

Part 5/X
CORE-8322

svn path=/trunk/; revision=65528
This commit is contained in:
Hermès Bélusca-Maïto 2014-11-29 21:19:01 +00:00
parent e85718fec8
commit bac6bdb719
7 changed files with 36 additions and 9 deletions

View file

@ -38,8 +38,9 @@ typedef enum _USERSRV_API_NUMBER
typedef struct _USER_EXIT_REACTOS
{
UINT Flags;
DWORD Reserved;
DWORD LastError;
UINT Flags;
BOOL Success;
} USER_EXIT_REACTOS, *PUSER_EXIT_REACTOS;
typedef struct _USER_END_TASK

View file

@ -60,6 +60,7 @@
* - when every environment subsystem has gone to bed, the SM actually initiates
* the kernel and executive shutdown by calling NtShutdownSystem.
*/
/*
* @implemented
*/
@ -71,7 +72,7 @@ ExitWindowsEx(UINT uFlags,
USER_API_MESSAGE ApiMessage;
ApiMessage.Data.ExitReactosRequest.Flags = uFlags;
ApiMessage.Data.ExitReactosRequest.Reserved = dwReserved;
// ApiMessage.Data.ExitReactosRequest.Reserved = dwReserved;
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
NULL,
@ -79,7 +80,7 @@ ExitWindowsEx(UINT uFlags,
sizeof(USER_EXIT_REACTOS));
if (!NT_SUCCESS(Status))
{
SetLastError(RtlNtStatusToDosError(Status));
UserSetLastNTError(Status);
return FALSE;
}

View file

@ -24,6 +24,8 @@ ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
{
PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
UNIMPLEMENTED;
if ( ProcessData->ConsoleHandle != NULL ||
ProcessData->HandleTable != NULL )
{

View file

@ -16,14 +16,22 @@ CSR_API(SrvGetThreadConsoleDesktop);
CSR_API(SrvDeviceEvent);
/* harderror.c */
VOID WINAPI UserServerHardError(IN PCSR_THREAD ThreadData,
IN PHARDERROR_MSG Message);
VOID
NTAPI
UserServerHardError(IN PCSR_THREAD ThreadData,
IN PHARDERROR_MSG Message);
/* register.c */
CSR_API(SrvRegisterServicesProcess);
CSR_API(SrvRegisterLogonProcess);
/* shutdown.c */
ULONG
NTAPI
UserClientShutdown(IN PCSR_PROCESS CsrProcess,
IN ULONG Flags,
IN BOOLEAN FirstPhase);
CSR_API(SrvExitWindowsEx);
CSR_API(SrvEndTask);
CSR_API(SrvLogon);

View file

@ -510,7 +510,7 @@ UserpMessageBox(
}
VOID
WINAPI
NTAPI
UserServerHardError(
IN PCSR_THREAD ThreadData,
IN PHARDERROR_MSG Message)

View file

@ -151,7 +151,7 @@ CSR_SERVER_DLL_INIT(UserServerDllInitialization)
UserServerHeap = RtlGetProcessHeap();
/* Initialize the video */
NtUserInitialize(0, NULL, NULL); //
NtUserInitialize(0, NULL, NULL);
PrivateCsrssManualGuiCheck(0);
/* Setup the DLL Object */
@ -166,7 +166,7 @@ CSR_SERVER_DLL_INIT(UserServerDllInitialization)
LoadedServerDll->ConnectCallback = NULL;
LoadedServerDll->DisconnectCallback = NULL;
LoadedServerDll->HardErrorCallback = UserServerHardError;
LoadedServerDll->ShutdownProcessCallback = NULL;
LoadedServerDll->ShutdownProcessCallback = UserClientShutdown;
UserServerDllInstance = LoadedServerDll->ServerHandle;

View file

@ -919,6 +919,21 @@ UserExitReactos(DWORD UserProcessId, UINT Flags)
}
ULONG
NTAPI
UserClientShutdown(IN PCSR_PROCESS CsrProcess,
IN ULONG Flags,
IN BOOLEAN FirstPhase)
{
DPRINT1("UserClientShutdown(0x%p, 0x%x, %s)\n",
CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase");
UNIMPLEMENTED;
return CsrShutdownNonCsrProcess;
}
/* PUBLIC SERVER APIS *********************************************************/
CSR_API(SrvExitWindowsEx)