1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _WINWLX_
7#define _WINWLX_
8
9#define WLX_VERSION_1_0 (0X00010000)
10#define WLX_VERSION_1_1 (0X00010001)
11#define WLX_VERSION_1_2 (0X00010002)
12#define WLX_VERSION_1_3 (0X00010003)
13#define WLX_VERSION_1_4 (0X00010004)
14#define WLX_CURRENT_VERSION (WLX_VERSION_1_4)
15
16#define WLX_SAS_TYPE_TIMEOUT (0)
17#define WLX_SAS_TYPE_CTRL_ALT_DEL (1)
18#define WLX_SAS_TYPE_SCRNSVR_TIMEOUT (2)
19#define WLX_SAS_TYPE_SCRNSVR_ACTIVITY (3)
20#define WLX_SAS_TYPE_USER_LOGOFF (4)
21#define WLX_SAS_TYPE_SC_INSERT (5)
22#define WLX_SAS_TYPE_SC_REMOVE (6)
23#define WLX_SAS_TYPE_AUTHENTICATED (7)
24#define WLX_SAS_TYPE_SC_FIRST_READER_ARRIVED (8)
25#define WLX_SAS_TYPE_SC_LAST_READER_REMOVED (9)
26#define WLX_SAS_TYPE_SWITCHUSER (10)
27#define WLX_SAS_TYPE_MAX_MSFT_VALUE (127)
28
29typedef struct _WLX_SC_NOTIFICATION_INFO {
30  PWSTR pszCard;
31  PWSTR pszReader;
32  PWSTR pszContainer;
33  PWSTR pszCryptoProvider;
34} WLX_SC_NOTIFICATION_INFO,*PWLX_SC_NOTIFICATION_INFO;
35
36#define WLX_LOGON_OPT_NO_PROFILE (0x00000001)
37
38#define WLX_PROFILE_TYPE_V1_0 (1)
39#define WLX_PROFILE_TYPE_V2_0 (2)
40
41#define WLX_SAS_ACTION_LOGON (1)
42#define WLX_SAS_ACTION_NONE (2)
43#define WLX_SAS_ACTION_LOCK_WKSTA (3)
44#define WLX_SAS_ACTION_LOGOFF (4)
45#define WLX_SAS_ACTION_SHUTDOWN (5)
46#define WLX_SAS_ACTION_PWD_CHANGED (6)
47#define WLX_SAS_ACTION_TASKLIST (7)
48#define WLX_SAS_ACTION_UNLOCK_WKSTA (8)
49#define WLX_SAS_ACTION_FORCE_LOGOFF (9)
50#define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF (10)
51#define WLX_SAS_ACTION_SHUTDOWN_REBOOT (11)
52#define WLX_SAS_ACTION_SHUTDOWN_SLEEP (12)
53#define WLX_SAS_ACTION_SHUTDOWN_SLEEP2 (13)
54#define WLX_SAS_ACTION_SHUTDOWN_HIBERNATE (14)
55#define WLX_SAS_ACTION_RECONNECTED (15)
56#define WLX_SAS_ACTION_DELAYED_FORCE_LOGOFF (16)
57#define WLX_SAS_ACTION_SWITCH_CONSOLE (17)
58
59#define WLX_WM_SAS (WM_USER + 601)
60
61#define WLX_DLG_SAS 101
62#define WLX_DLG_INPUT_TIMEOUT 102
63#define WLX_DLG_SCREEN_SAVER_TIMEOUT 103
64#define WLX_DLG_USER_LOGOFF 104
65
66typedef struct _WLX_PROFILE_V1_0 {
67  DWORD dwType;
68  PWSTR pszProfile;
69} WLX_PROFILE_V1_0,*PWLX_PROFILE_V1_0;
70
71typedef struct _WLX_PROFILE_V2_0 {
72  DWORD dwType;
73  PWSTR pszProfile;
74  PWSTR pszPolicy;
75  PWSTR pszNetworkDefaultUserProfile;
76  PWSTR pszServerName;
77  PWSTR pszEnvironment;
78} WLX_PROFILE_V2_0,*PWLX_PROFILE_V2_0;
79
80typedef struct _WLX_MPR_NOTIFY_INFO {
81  PWSTR pszUserName;
82  PWSTR pszDomain;
83  PWSTR pszPassword;
84  PWSTR pszOldPassword;
85} WLX_MPR_NOTIFY_INFO,*PWLX_MPR_NOTIFY_INFO;
86
87#define WLX_DIRECTORY_LENGTH 256
88
89typedef struct _WLX_TERMINAL_SERVICES_DATA {
90  WCHAR ProfilePath[WLX_DIRECTORY_LENGTH + 1];
91  WCHAR HomeDir[WLX_DIRECTORY_LENGTH + 1];
92  WCHAR HomeDirDrive[4];
93} WLX_TERMINAL_SERVICES_DATA,*PWLX_TERMINAL_SERVICES_DATA;
94
95#define WLX_CREDENTIAL_TYPE_V1_0 (1)
96#define WLX_CREDENTIAL_TYPE_V2_0 (2)
97
98typedef struct _WLX_CLIENT_CREDENTIALS_INFO {
99  DWORD dwType;
100  PWSTR pszUserName;
101  PWSTR pszDomain;
102  PWSTR pszPassword;
103  WINBOOL fPromptForPassword;
104} WLX_CLIENT_CREDENTIALS_INFO_V1_0,*PWLX_CLIENT_CREDENTIALS_INFO_V1_0;
105
106typedef struct _WLX_CLIENT_CREDENTIALS_INFO_2_0 {
107  DWORD dwType;
108  PWSTR pszUserName;
109  PWSTR pszDomain;
110  PWSTR pszPassword;
111  WINBOOL fPromptForPassword;
112  WINBOOL fDisconnectOnLogonFailure;
113} WLX_CLIENT_CREDENTIALS_INFO_V2_0,*PWLX_CLIENT_CREDENTIALS_INFO_V2_0;
114
115#define WLX_CONSOLESWITCHCREDENTIAL_TYPE_V1_0 (1)
116
117typedef struct _WLX_CONSOLESWITCH_CREDENTIALS_INFO {
118  DWORD dwType;
119  HANDLE UserToken;
120  LUID LogonId;
121  QUOTA_LIMITS Quotas;
122  PWSTR UserName;
123  PWSTR Domain;
124  LARGE_INTEGER LogonTime;
125  WINBOOL SmartCardLogon;
126  ULONG ProfileLength;
127  DWORD MessageType;
128  USHORT LogonCount;
129  USHORT BadPasswordCount;
130  LARGE_INTEGER ProfileLogonTime;
131  LARGE_INTEGER LogoffTime;
132  LARGE_INTEGER KickOffTime;
133  LARGE_INTEGER PasswordLastSet;
134  LARGE_INTEGER PasswordCanChange;
135  LARGE_INTEGER PasswordMustChange;
136  PWSTR LogonScript;
137  PWSTR HomeDirectory;
138  PWSTR FullName;
139  PWSTR ProfilePath;
140  PWSTR HomeDirectoryDrive;
141  PWSTR LogonServer;
142  ULONG UserFlags;
143  ULONG PrivateDataLen;
144  PBYTE PrivateData;
145} WLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0,*PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0;
146
147WINBOOL WINAPI WlxNegotiate(DWORD dwWinlogonVersion,PDWORD pdwDllVersion);
148WINBOOL WINAPI WlxInitialize(LPWSTR lpWinsta,HANDLE hWlx,PVOID pvReserved,PVOID pWinlogonFunctions,PVOID *pWlxContext);
149VOID WINAPI WlxDisplaySASNotice(PVOID pWlxContext);
150int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,DWORD dwSasType,PLUID pAuthenticationId,PSID pLogonSid,PDWORD pdwOptions,PHANDLE phToken,PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,PVOID *pProfile);
151WINBOOL WINAPI WlxActivateUserShell(PVOID pWlxContext,PWSTR pszDesktopName,PWSTR pszMprLogonScript,PVOID pEnvironment);
152int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,DWORD dwSasType,PVOID pReserved);
153VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext);
154int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext,DWORD dwSasType);
155WINBOOL WINAPI WlxIsLockOk(PVOID pWlxContext);
156WINBOOL WINAPI WlxIsLogoffOk(PVOID pWlxContext);
157VOID WINAPI WlxLogoff(PVOID pWlxContext);
158VOID WINAPI WlxShutdown(PVOID pWlxContext,DWORD ShutdownType);
159WINBOOL WINAPI WlxScreenSaverNotify(PVOID pWlxContext,WINBOOL *pSecure);
160WINBOOL WINAPI WlxStartApplication(PVOID pWlxContext,PWSTR pszDesktopName,PVOID pEnvironment,PWSTR pszCmdLine);
161WINBOOL WINAPI WlxNetworkProviderLoad(PVOID pWlxContext,PWLX_MPR_NOTIFY_INFO pNprNotifyInfo);
162
163#define STATUSMSG_OPTION_NOANIMATION 0x00000001
164#define STATUSMSG_OPTION_SETFOREGROUND 0x00000002
165
166WINBOOL WINAPI WlxDisplayStatusMessage(PVOID pWlxContext,HDESK hDesktop,DWORD dwOptions,PWSTR pTitle,PWSTR pMessage);
167WINBOOL WINAPI WlxGetStatusMessage(PVOID pWlxContext,DWORD *pdwOptions,PWSTR pMessage,DWORD dwBufferSize);
168WINBOOL WINAPI WlxRemoveStatusMessage(PVOID pWlxContext);
169WINBOOL WINAPI WlxGetConsoleSwitchCredentials (PVOID pWlxContext,PVOID pCredInfo);
170VOID WINAPI WlxReconnectNotify (PVOID pWlxContext);
171VOID WINAPI WlxDisconnectNotify (PVOID pWlxContext);
172
173typedef struct _WLX_DESKTOP {
174  DWORD Size;
175  DWORD Flags;
176  HDESK hDesktop;
177  PWSTR pszDesktopName;
178} WLX_DESKTOP,*PWLX_DESKTOP;
179
180#define WLX_DESKTOP_NAME 0x00000001
181#define WLX_DESKTOP_HANDLE 0x00000002
182
183typedef VOID (WINAPI *PWLX_USE_CTRL_ALT_DEL)(HANDLE hWlx);
184typedef VOID (WINAPI *PWLX_SET_CONTEXT_POINTER)(HANDLE hWlx,PVOID pWlxContext);
185typedef VOID (WINAPI *PWLX_SAS_NOTIFY)(HANDLE hWlx,DWORD dwSasType);
186typedef WINBOOL (WINAPI *PWLX_SET_TIMEOUT)(HANDLE hWlx,DWORD Timeout);
187typedef int (WINAPI *PWLX_ASSIGN_SHELL_PROTECTION)(HANDLE hWlx,HANDLE hToken,HANDLE hProcess,HANDLE hThread);
188typedef int (WINAPI *PWLX_MESSAGE_BOX)(HANDLE hWlx,HWND hwndOwner,LPWSTR lpszText,LPWSTR lpszTitle,UINT fuStyle);
189typedef int (WINAPI *PWLX_DIALOG_BOX)(HANDLE hWlx,HANDLE hInst,LPWSTR lpszTemplate,HWND hwndOwner,DLGPROC dlgprc);
190typedef int (WINAPI *PWLX_DIALOG_BOX_INDIRECT)(HANDLE hWlx,HANDLE hInst,LPCDLGTEMPLATE hDialogTemplate,HWND hwndOwner,DLGPROC dlgprc);
191typedef int (WINAPI *PWLX_DIALOG_BOX_PARAM)(HANDLE hWlx,HANDLE hInst,LPWSTR lpszTemplate,HWND hwndOwner,DLGPROC dlgprc,LPARAM dwInitParam);
192typedef int (WINAPI *PWLX_DIALOG_BOX_INDIRECT_PARAM)(HANDLE hWlx,HANDLE hInst,LPCDLGTEMPLATE hDialogTemplate,HWND hwndOwner,DLGPROC dlgprc,LPARAM dwInitParam);
193typedef int (WINAPI *PWLX_SWITCH_DESKTOP_TO_USER)(HANDLE hWlx);
194typedef int (WINAPI *PWLX_SWITCH_DESKTOP_TO_WINLOGON)(HANDLE hWlx);
195typedef int (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY)(HANDLE hWlx,PWLX_MPR_NOTIFY_INFO pMprInfo,DWORD dwChangeInfo);
196typedef WINBOOL (WINAPI *PWLX_GET_SOURCE_DESKTOP)(HANDLE hWlx,PWLX_DESKTOP *ppDesktop);
197typedef WINBOOL (WINAPI *PWLX_SET_RETURN_DESKTOP)(HANDLE hWlx,PWLX_DESKTOP pDesktop);
198typedef WINBOOL (WINAPI *PWLX_CREATE_USER_DESKTOP)(HANDLE hWlx,HANDLE hToken,DWORD Flags,PWSTR pszDesktopName,PWLX_DESKTOP *ppDesktop);
199
200#define WLX_CREATE_INSTANCE_ONLY 0x00000001
201#define WLX_CREATE_USER 0x00000002
202
203typedef int (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY_EX)(HANDLE hWlx,PWLX_MPR_NOTIFY_INFO pMprInfo,DWORD dwChangeInfo,PWSTR ProviderName,PVOID Reserved);
204typedef WINBOOL (WINAPI *PWLX_CLOSE_USER_DESKTOP)(HANDLE hWlx,PWLX_DESKTOP pDesktop,HANDLE hToken);
205typedef WINBOOL (WINAPI *PWLX_SET_OPTION)(HANDLE hWlx,DWORD Option,ULONG_PTR Value,ULONG_PTR *OldValue);
206typedef WINBOOL (WINAPI *PWLX_GET_OPTION)(HANDLE hWlx,DWORD Option,ULONG_PTR *Value);
207typedef VOID (WINAPI *PWLX_WIN31_MIGRATE)(HANDLE hWlx);
208typedef WINBOOL (WINAPI *PWLX_QUERY_CLIENT_CREDENTIALS)(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred);
209typedef WINBOOL (WINAPI *PWLX_QUERY_IC_CREDENTIALS)(PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred);
210typedef WINBOOL (WINAPI *PWLX_QUERY_TS_LOGON_CREDENTIALS)(PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred);
211typedef WINBOOL (WINAPI *PWLX_DISCONNECT)();
212typedef DWORD (WINAPI *PWLX_QUERY_TERMINAL_SERVICES_DATA)(HANDLE hWlx,PWLX_TERMINAL_SERVICES_DATA pTSData,WCHAR *UserName,WCHAR *Domain);
213typedef DWORD (WINAPI *PWLX_QUERY_CONSOLESWITCH_CREDENTIALS)(PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred);
214
215#define WLX_OPTION_USE_CTRL_ALT_DEL 0x00000001
216#define WLX_OPTION_CONTEXT_POINTER 0x00000002
217#define WLX_OPTION_USE_SMART_CARD 0x00000003
218#define WLX_OPTION_FORCE_LOGOFF_TIME 0x00000004
219#define WLX_OPTION_IGNORE_AUTO_LOGON 0x00000008
220#define WLX_OPTION_NO_SWITCH_ON_SAS 0x00000009
221
222#define WLX_OPTION_SMART_CARD_PRESENT 0x00010001
223#define WLX_OPTION_SMART_CARD_INFO 0x00010002
224#define WLX_OPTION_DISPATCH_TABLE_SIZE 0x00010003
225
226typedef struct _WLX_DISPATCH_VERSION_1_0 {
227  PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
228  PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
229  PWLX_SAS_NOTIFY WlxSasNotify;
230  PWLX_SET_TIMEOUT WlxSetTimeout;
231  PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
232  PWLX_MESSAGE_BOX WlxMessageBox;
233  PWLX_DIALOG_BOX WlxDialogBox;
234  PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
235  PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
236  PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
237  PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
238  PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
239  PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
240} WLX_DISPATCH_VERSION_1_0,*PWLX_DISPATCH_VERSION_1_0;
241
242typedef struct _WLX_DISPATCH_VERSION_1_1 {
243  PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
244  PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
245  PWLX_SAS_NOTIFY WlxSasNotify;
246  PWLX_SET_TIMEOUT WlxSetTimeout;
247  PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
248  PWLX_MESSAGE_BOX WlxMessageBox;
249  PWLX_DIALOG_BOX WlxDialogBox;
250  PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
251  PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
252  PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
253  PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
254  PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
255  PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
256  PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
257  PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
258  PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
259  PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
260} WLX_DISPATCH_VERSION_1_1,*PWLX_DISPATCH_VERSION_1_1;
261
262typedef struct _WLX_DISPATCH_VERSION_1_2 {
263  PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
264  PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
265  PWLX_SAS_NOTIFY WlxSasNotify;
266  PWLX_SET_TIMEOUT WlxSetTimeout;
267  PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
268  PWLX_MESSAGE_BOX WlxMessageBox;
269  PWLX_DIALOG_BOX WlxDialogBox;
270  PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
271  PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
272  PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
273  PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
274  PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
275  PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
276  PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
277  PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
278  PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
279  PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
280  PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop;
281} WLX_DISPATCH_VERSION_1_2,*PWLX_DISPATCH_VERSION_1_2;
282
283typedef struct _WLX_DISPATCH_VERSION_1_3 {
284  PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
285  PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
286  PWLX_SAS_NOTIFY WlxSasNotify;
287  PWLX_SET_TIMEOUT WlxSetTimeout;
288  PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
289  PWLX_MESSAGE_BOX WlxMessageBox;
290  PWLX_DIALOG_BOX WlxDialogBox;
291  PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
292  PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
293  PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
294  PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
295  PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
296  PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
297  PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
298  PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
299  PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
300  PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
301  PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop;
302  PWLX_SET_OPTION WlxSetOption;
303  PWLX_GET_OPTION WlxGetOption;
304  PWLX_WIN31_MIGRATE WlxWin31Migrate;
305  PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
306  PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
307  PWLX_DISCONNECT WlxDisconnect;
308  PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
309} WLX_DISPATCH_VERSION_1_3,*PWLX_DISPATCH_VERSION_1_3;
310
311typedef struct _WLX_DISPATCH_VERSION_1_4 {
312  PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
313  PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
314  PWLX_SAS_NOTIFY WlxSasNotify;
315  PWLX_SET_TIMEOUT WlxSetTimeout;
316  PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
317  PWLX_MESSAGE_BOX WlxMessageBox;
318  PWLX_DIALOG_BOX WlxDialogBox;
319  PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
320  PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
321  PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
322  PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
323  PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
324  PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
325  PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
326  PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
327  PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
328  PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
329  PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop;
330  PWLX_SET_OPTION WlxSetOption;
331  PWLX_GET_OPTION WlxGetOption;
332  PWLX_WIN31_MIGRATE WlxWin31Migrate;
333  PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
334  PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
335  PWLX_DISCONNECT WlxDisconnect;
336  PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
337  PWLX_QUERY_CONSOLESWITCH_CREDENTIALS WlxQueryConsoleSwitchCredentials;
338  PWLX_QUERY_TS_LOGON_CREDENTIALS WlxQueryTsLogonCredentials;
339} WLX_DISPATCH_VERSION_1_4,*PWLX_DISPATCH_VERSION_1_4;
340
341typedef DWORD (*PFNMSGECALLBACK)(WINBOOL bVerbose,LPWSTR lpMessage);
342
343typedef struct _WLX_NOTIFICATION_INFO {
344  ULONG Size;
345  ULONG Flags;
346  PWSTR UserName;
347  PWSTR Domain;
348  PWSTR WindowStation;
349  HANDLE hToken;
350  HDESK hDesktop;
351  PFNMSGECALLBACK pStatusCallback;
352} WLX_NOTIFICATION_INFO,*PWLX_NOTIFICATION_INFO;
353#endif
354