:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / user32 / misc / exit.c
1 /* $Id$
2  *
3  * COPYRIGHT:       See COPYING in the top level directory
4  * PROJECT:         ReactOS user32.dll
5  * FILE:            lib/user32/misc/exit.c
6  * PURPOSE:         Shutdown related functions
7  * PROGRAMMER:      Eric Kohl (ekohl@rz-online.de)
8  */
9
10 #include <windows.h>
11 //#include <user32.h>
12
13 #include <ntdll/csr.h>
14
15
16
17 WINBOOL STDCALL
18 ExitWindowsEx(UINT uFlags,
19               DWORD dwReserved)
20 {
21   CSRSS_API_REQUEST Request;
22   CSRSS_API_REPLY Reply;
23   NTSTATUS Status;
24
25   Request.Type = CSRSS_EXIT_REACTOS;
26   Request.Data.ExitReactosRequest.Flags = uFlags;
27   Request.Data.ExitReactosRequest.Reserved = dwReserved;
28
29   Status = CsrClientCallServer(&Request,
30                                &Reply,
31                                sizeof(CSRSS_API_REQUEST),
32                                sizeof(CSRSS_API_REPLY));
33   if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Reply.Status))
34     {
35       SetLastError(RtlNtStatusToDosError(Status));
36       return(FALSE);
37     }
38
39   return(TRUE);
40 }
41
42
43 WINBOOL STDCALL
44 RegisterServicesProcess(DWORD ServicesProcessId)
45 {
46   CSRSS_API_REQUEST Request;
47   CSRSS_API_REPLY Reply;
48   NTSTATUS Status;
49
50   Request.Type = CSRSS_REGISTER_SERVICES_PROCESS;
51   Request.Data.RegisterServicesProcessRequest.ProcessId = ServicesProcessId;
52
53   Status = CsrClientCallServer(&Request,
54                                &Reply,
55                                sizeof(CSRSS_API_REQUEST),
56                                sizeof(CSRSS_API_REPLY));
57   if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Reply.Status))
58     {
59       SetLastError(RtlNtStatusToDosError(Status));
60       return(FALSE);
61     }
62
63   return(TRUE);
64 }
65
66 /* EOF */