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
RegisterServicesProcess(DWORD ServicesProcessId)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
RegisterLogonProcess(DWORD dwProcessId,BOOL bRegister)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
Logon(BOOL IsLogon)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
SetLogonNotifyWindow(HWND Wnd)91 SetLogonNotifyWindow(HWND Wnd)
92 {
93 return NtUserSetLogonNotifyWindow(Wnd);
94 }
95
96 /*
97 * @implemented
98 */
99 BOOL
100 WINAPI
UpdatePerUserSystemParameters(DWORD dwReserved,BOOL bEnable)101 UpdatePerUserSystemParameters(DWORD dwReserved,
102 BOOL bEnable)
103 {
104 // Update Imm support and load Imm32.dll.
105 UpdatePerUserImmEnabling();
106
107 /* Initialize the IME hotkeys */
108 CliImmInitializeHotKeys(SETIMEHOTKEY_INITIALIZE, NULL);
109
110 /* Load Preload keyboard layouts */
111 IntLoadPreloadKeyboardLayouts();
112
113 return NtUserUpdatePerUserSystemParameters(dwReserved, bEnable);
114 }
115