update for HEAD-2003091401
[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  * @implemented
17  */
18 WINBOOL STDCALL
19 ExitWindowsEx(UINT uFlags,
20               DWORD dwReserved)
21 {
22   CSRSS_API_REQUEST Request;
23   CSRSS_API_REPLY Reply;
24   NTSTATUS Status;
25
26   Request.Type = CSRSS_EXIT_REACTOS;
27   Request.Data.ExitReactosRequest.Flags = uFlags;
28   Request.Data.ExitReactosRequest.Reserved = dwReserved;
29
30   Status = CsrClientCallServer(&Request,
31                                &Reply,
32                                sizeof(CSRSS_API_REQUEST),
33                                sizeof(CSRSS_API_REPLY));
34   if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Reply.Status))
35     {
36       SetLastError(RtlNtStatusToDosError(Status));
37       return(FALSE);
38     }
39
40   return(TRUE);
41 }
42
43
44 /*
45  * @implemented
46  */
47 WINBOOL STDCALL
48 RegisterServicesProcess(DWORD ServicesProcessId)
49 {
50   CSRSS_API_REQUEST Request;
51   CSRSS_API_REPLY Reply;
52   NTSTATUS Status;
53
54   Request.Type = CSRSS_REGISTER_SERVICES_PROCESS;
55   Request.Data.RegisterServicesProcessRequest.ProcessId = ServicesProcessId;
56
57   Status = CsrClientCallServer(&Request,
58                                &Reply,
59                                sizeof(CSRSS_API_REQUEST),
60                                sizeof(CSRSS_API_REPLY));
61   if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Reply.Status))
62     {
63       SetLastError(RtlNtStatusToDosError(Status));
64       return(FALSE);
65     }
66
67   return(TRUE);
68 }
69
70 /* EOF */