e2b6b5bfb46984e3c5849db8ab16d269e16eb98d
[reactos.git] / dll / win32 / msgina / msgina.h
1 #ifndef _MSGINA_H
2 #define _MSGINA_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #include <stdarg.h>
9 #include <stdlib.h>
10 #include <tchar.h>
11
12 #define WIN32_NO_STATUS
13 #define _INC_WINDOWS
14 #define COM_NO_WINDOWS_H
15
16 #include <windef.h>
17 #include <winbase.h>
18 #include <winreg.h>
19 #include <winuser.h>
20 #include <winwlx.h>
21 #include <ndk/rtlfuncs.h>
22 #include <ntsecapi.h>
23
24 #include <strsafe.h>
25
26 #include <wine/debug.h>
27 WINE_DEFAULT_DEBUG_CHANNEL(msgina);
28
29 #include "resource.h"
30
31
32 typedef struct
33 {
34 HANDLE hWlx;
35 LPWSTR station;
36 PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
37 HANDLE hDllInstance;
38 HWND hStatusWindow;
39 HANDLE LsaHandle;
40 ULONG AuthenticationPackage;
41 BOOL bDisableCAD;
42 BOOL bAutoAdminLogon;
43 BOOL bDontDisplayLastUserName;
44 BOOL bShutdownWithoutLogon;
45 BOOL bIgnoreShiftOverride;
46
47 ULONG nShutdownAction;
48
49 /* Information to be filled during logon */
50 WCHAR UserName[256];
51 WCHAR DomainName[256];
52 WCHAR Password[256];
53 SYSTEMTIME LogonTime;
54 HANDLE UserToken;
55 PLUID pAuthenticationId;
56 PDWORD pdwOptions;
57 PWLX_MPR_NOTIFY_INFO pMprNotifyInfo;
58 PVOID *pProfile;
59
60 /* Current logo to display */
61 HBITMAP hBitmap;
62 } GINA_CONTEXT, *PGINA_CONTEXT;
63
64 extern HINSTANCE hDllInstance;
65
66 typedef BOOL (*PFGINA_INITIALIZE)(PGINA_CONTEXT);
67 typedef BOOL (*PFGINA_DISPLAYSTATUSMESSAGE)(PGINA_CONTEXT, HDESK, DWORD, PWSTR, PWSTR);
68 typedef BOOL (*PFGINA_REMOVESTATUSMESSAGE)(PGINA_CONTEXT);
69 typedef VOID (*PFGINA_DISPLAYSASNOTICE)(PGINA_CONTEXT);
70 typedef INT (*PFGINA_LOGGEDONSAS)(PGINA_CONTEXT, DWORD);
71 typedef INT (*PFGINA_LOGGEDOUTSAS)(PGINA_CONTEXT);
72 typedef INT (*PFGINA_LOCKEDSAS)(PGINA_CONTEXT);
73 typedef VOID (*PFGINA_DISPLAYLOCKEDNOTICE)(PGINA_CONTEXT);
74
75 typedef struct _GINA_UI
76 {
77 PFGINA_INITIALIZE Initialize;
78 PFGINA_DISPLAYSTATUSMESSAGE DisplayStatusMessage;
79 PFGINA_REMOVESTATUSMESSAGE RemoveStatusMessage;
80 PFGINA_DISPLAYSASNOTICE DisplaySASNotice;
81 PFGINA_LOGGEDONSAS LoggedOnSAS;
82 PFGINA_LOGGEDOUTSAS LoggedOutSAS;
83 PFGINA_LOCKEDSAS LockedSAS;
84 PFGINA_DISPLAYLOCKEDNOTICE DisplayLockedNotice;
85 } GINA_UI, *PGINA_UI;
86
87 /* lsa.c */
88
89 NTSTATUS
90 ConnectToLsa(
91 PGINA_CONTEXT pgContext);
92
93 NTSTATUS
94 MyLogonUser(
95 HANDLE LsaHandle,
96 ULONG AuthenticationPackage,
97 LPWSTR lpszUsername,
98 LPWSTR lpszDomain,
99 LPWSTR lpszPassword,
100 PHANDLE phToken,
101 PNTSTATUS SubStatus);
102
103 /* msgina.c */
104
105 LONG
106 ReadRegSzValue(
107 IN HKEY hKey,
108 IN LPCWSTR pszValue,
109 OUT LPWSTR *pValue);
110
111 BOOL
112 DoAdminUnlock(
113 IN PGINA_CONTEXT pgContext,
114 IN PWSTR UserName,
115 IN PWSTR Domain,
116 IN PWSTR Password);
117
118 NTSTATUS
119 DoLoginTasks(
120 IN OUT PGINA_CONTEXT pgContext,
121 IN PWSTR UserName,
122 IN PWSTR Domain,
123 IN PWSTR Password,
124 OUT PNTSTATUS SubStatus);
125
126 BOOL
127 CreateProfile(
128 IN OUT PGINA_CONTEXT pgContext,
129 IN PWSTR UserName,
130 IN PWSTR Domain,
131 IN PWSTR Password);
132
133 /* shutdown.c */
134
135 DWORD
136 GetDefaultShutdownSelState(VOID);
137
138 DWORD
139 LoadShutdownSelState(VOID);
140
141 VOID
142 SaveShutdownSelState(DWORD ShutdownCode);
143
144 DWORD
145 GetDefaultShutdownOptions(VOID);
146
147 DWORD
148 GetAllowedShutdownOptions(VOID);
149
150 INT_PTR
151 ShutdownDialog(
152 IN HWND hwndDlg,
153 IN DWORD ShutdownOptions,
154 IN PGINA_CONTEXT pgContext);
155
156
157 #ifdef __cplusplus
158 } // extern "C"
159 #endif
160
161 #endif /* _MSGINA_H */