[USER32] Add support for navigating a group of radio buttons using a keyboard.
[reactos.git] / win32ss / user / user32 / misc / logon.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS user32.dll
4 * FILE: win32ss/user/user32/misc/logon.c
5 * PURPOSE: Logon functions
6 * PROGRAMMER: Thomas Weidenmueller (w3seek@users.sourceforge.net)
7 */
8
9 #include <user32.h>
10
11 WINE_DEFAULT_DEBUG_CHANNEL(user32);
12
13 /*
14 * @implemented
15 */
16 BOOL
17 WINAPI
18 RegisterServicesProcess(DWORD ServicesProcessId)
19 {
20 USER_API_MESSAGE ApiMessage;
21 PUSER_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest = &ApiMessage.Data.RegisterServicesProcessRequest;
22
23 RegisterServicesProcessRequest->ProcessId = ServicesProcessId;
24
25 CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
26 NULL,
27 CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpRegisterServicesProcess),
28 sizeof(*RegisterServicesProcessRequest));
29 if (!NT_SUCCESS(ApiMessage.Status))
30 {
31 UserSetLastNTError(ApiMessage.Status);
32 return FALSE;
33 }
34
35 return TRUE;
36 }
37
38 /*
39 * @implemented
40 */
41 BOOL
42 WINAPI
43 RegisterLogonProcess(DWORD dwProcessId,
44 BOOL bRegister)
45 {
46 gfLogonProcess = NtUserxRegisterLogonProcess(dwProcessId, bRegister);
47
48 if (gfLogonProcess)
49 {
50 USER_API_MESSAGE ApiMessage;
51 PUSER_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest = &ApiMessage.Data.RegisterLogonProcessRequest;
52
53 RegisterLogonProcessRequest->ProcessId = dwProcessId;
54 RegisterLogonProcessRequest->Register = bRegister;
55
56 CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
57 NULL,
58 CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpRegisterLogonProcess),
59 sizeof(*RegisterLogonProcessRequest));
60 if (!NT_SUCCESS(ApiMessage.Status))
61 {
62 ERR("Failed to register logon process with CSRSS\n");
63 UserSetLastNTError(ApiMessage.Status);
64 }
65 }
66
67 return gfLogonProcess;
68 }
69
70 /*
71 * Helper function used by SetWindowStationUser (see winsta.c)
72 */
73 VOID FASTCALL
74 Logon(BOOL IsLogon)
75 {
76 USER_API_MESSAGE ApiMessage;
77 PUSER_LOGON LogonRequest = &ApiMessage.Data.LogonRequest;
78
79 LogonRequest->IsLogon = IsLogon;
80 CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
81 NULL,
82 CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpLogon),
83 sizeof(*LogonRequest));
84 }
85
86 /*
87 * @implemented
88 */
89 BOOL
90 WINAPI
91 SetLogonNotifyWindow(HWND Wnd)
92 {
93 return NtUserSetLogonNotifyWindow(Wnd);
94 }
95
96 /*
97 * @implemented
98 */
99 BOOL
100 WINAPI
101 UpdatePerUserSystemParameters(DWORD dwReserved,
102 BOOL bEnable)
103 {
104 // Update Imm support and load Imm32.dll.
105 UpdatePerUserImmEnabling();
106
107 return NtUserUpdatePerUserSystemParameters(dwReserved, bEnable);
108 }