2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS User API Server DLL
4 * FILE: win32ss/user/winsrv/usersrv/register.c
5 * PURPOSE: Register logon window and services process
6 * PROGRAMMERS: Eric Kohl
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
10 /* INCLUDES *******************************************************************/
17 /* GLOBALS ********************************************************************/
19 static BOOLEAN ServicesProcessIdValid
= FALSE
;
20 static ULONG_PTR ServicesProcessId
= 0;
22 ULONG_PTR LogonProcessId
= 0;
24 /* PUBLIC SERVER APIS *********************************************************/
26 CSR_API(SrvRegisterLogonProcess
)
28 PUSER_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest
= &((PUSER_API_MESSAGE
)ApiMessage
)->Data
.RegisterLogonProcessRequest
;
30 if (RegisterLogonProcessRequest
->Register
)
32 if (LogonProcessId
!= 0)
33 return STATUS_LOGON_SESSION_EXISTS
;
35 LogonProcessId
= RegisterLogonProcessRequest
->ProcessId
;
39 if (ApiMessage
->Header
.ClientId
.UniqueProcess
!= (HANDLE
)LogonProcessId
)
41 DPRINT1("Current logon process 0x%x, can't deregister from process 0x%x\n",
42 LogonProcessId
, ApiMessage
->Header
.ClientId
.UniqueProcess
);
43 return STATUS_NOT_LOGON_PROCESS
;
49 return STATUS_SUCCESS
;
52 CSR_API(SrvRegisterServicesProcess
)
54 PUSER_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest
= &((PUSER_API_MESSAGE
)ApiMessage
)->Data
.RegisterServicesProcessRequest
;
56 if (ServicesProcessIdValid
== TRUE
)
58 /* Only accept a single call */
59 return STATUS_INVALID_PARAMETER
;
63 ServicesProcessId
= RegisterServicesProcessRequest
->ProcessId
;
64 ServicesProcessIdValid
= TRUE
;
65 return STATUS_SUCCESS
;