reactos/include/psdk/winwlx.h
2011-05-24 18:40:34 +00:00

663 lines
17 KiB
C

/*
* WinWlx.h
*
* WinLogon eXtension
*
* Contributors:
* Created by Thomas Weidenmueller <w3seek@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __WINWLX_H
#define __WINWLX_H
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#define WLX_VERSION_1_0 (0x00010000)
#define WLX_VERSION_1_1 (0x00010001)
#define WLX_VERSION_1_2 (0x00010002)
#define WLX_VERSION_1_3 (0x00010003)
#define WLX_VERSION_1_4 (0x00010004)
#define WLX_CURRENT_VERSION (WLX_VERSION_1_4)
#define WLX_SAS_TYPE_TIMEOUT (0x0000)
#define WLX_SAS_TYPE_CTRL_ALT_DEL (0x0001)
#define WLX_SAS_TYPE_SCRNSVR_TIMEOUT (0x0002)
#define WLX_SAS_TYPE_SCRNSVR_ACTIVITY (0x0003)
#define WLX_SAS_TYPE_USER_LOGOFF (0x0004)
#define WLX_SAS_TYPE_SC_INSERT (0x0005)
#define WLX_SAS_TYPE_SC_REMOVE (0x0006)
#define WLX_SAS_TYPE_AUTHENTICATED (0x0007)
#define WLX_SAS_TYPE_SC_FIRST_READER_ARRIVED (0x0008)
#define WLX_SAS_TYPE_SC_LAST_READER_REMOVED (0x0009)
#define WLX_SAS_TYPE_SWITCHUSER (0x000A)
#define WLX_SAS_TYPE_MAX_MSFT_VALUE (0x007F)
#define WLX_LOGON_OPT_NO_PROFILE (0x0001)
#define WLX_PROFILE_TYPE_V1_0 (0x0001)
#define WLX_PROFILE_TYPE_V2_0 (0x0002) /* default */
#define WLX_SAS_ACTION_LOGON (0x0001)
#define WLX_SAS_ACTION_NONE (0x0002)
#define WLX_SAS_ACTION_LOCK_WKSTA (0x0003)
#define WLX_SAS_ACTION_LOGOFF (0x0004)
#define WLX_SAS_ACTION_SHUTDOWN (0x0005)
#define WLX_SAS_ACTION_PWD_CHANGED (0x0006)
#define WLX_SAS_ACTION_TASKLIST (0x0007)
#define WLX_SAS_ACTION_UNLOCK_WKSTA (0x0008)
#define WLX_SAS_ACTION_FORCE_LOGOFF (0x0009)
#define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF (0x000A)
#define WLX_SAS_ACTION_SHUTDOWN_REBOOT (0x000B)
#define WLX_SAS_ACTION_SHUTDOWN_SLEEP (0x000C)
#define WLX_SAS_ACTION_SHUTDOWN_SLEEP2 (0x000D)
#define WLX_SAS_ACTION_SHUTDOWN_HIBERNATE (0x000E)
#define WLX_SAS_ACTION_RECONNECTED (0x000F)
#define WLX_SAS_ACTION_DELAYED_FORCE_LOGOFF (0x0010)
#define WLX_SAS_ACTION_SWITCH_CONSOLE (0x0011)
#define WLX_WM_SAS (WM_USER + 0x0259)
#define WLX_DLG_SAS (0x0065)
#define WLX_DLG_INPUT_TIMEOUT (0x0066) /* Input (keys, ...) timed out */
#define WLX_DLG_SCREEN_SAVER_TIMEOUT (0x0067) /* Screen saver activated */
#define WLX_DLG_USER_LOGOFF (0x0068) /* User logged off */
#define WLX_DIRECTORY_LENGTH (0x0100)
#define WLX_CREDENTIAL_TYPE_V1_0 (0x0001)
#define WLX_CREDENTIAL_TYPE_V2_0 (0x0002)
#define WLX_CONSOLESWITCHCREDENTIAL_TYPE_V1_0 (0x0001)
#define STATUSMSG_OPTION_NOANIMATION (0x0001)
#define STATUSMSG_OPTION_SETFOREGROUND (0x0002)
typedef
struct _WLX_CLIENT_CREDENTIALS_INFO
{
DWORD dwType;
PWSTR pszUserName;
PWSTR pszDomain;
PWSTR pszPassword;
BOOL fPromptForPassword;
} WLX_CLIENT_CREDENTIALS_INFO_V1_0, *PWLX_CLIENT_CREDENTIALS_INFO_V1_0;
typedef
struct _WLX_CLIENT_CREDENTIALS_INFO_2_0
{
DWORD dwType;
PWSTR pszUserName;
PWSTR pszDomain;
PWSTR pszPassword;
BOOL fPromptForPassword;
BOOL fDisconnectOnLogonFailure;
} WLX_CLIENT_CREDENTIALS_INFO_V2_0, *PWLX_CLIENT_CREDENTIALS_INFO_V2_0;
typedef
struct _WLX_CONSOLESWITCH_CREDENTIALS_INFO
{
DWORD dwType;
HANDLE UserToken;
LUID LogonId;
QUOTA_LIMITS Quotas;
PWSTR UserName;
PWSTR Domain;
LARGE_INTEGER LogonTime;
BOOL SmartCardLogon;
ULONG ProfileLength;
DWORD MessageType;
USHORT LogonCount;
USHORT BadPasswordCount;
LARGE_INTEGER ProfileLogonTime;
LARGE_INTEGER LogoffTime;
LARGE_INTEGER KickOffTime;
LARGE_INTEGER PasswordLastSet;
LARGE_INTEGER PasswordCanChange;
LARGE_INTEGER PasswordMustChange;
PWSTR LogonScript;
PWSTR HomeDirectory;
PWSTR FullName;
PWSTR ProfilePath;
PWSTR HomeDirectoryDrive;
PWSTR LogonServer;
ULONG UserFlags;
ULONG PrivateDataLen;
PBYTE PrivateData;
} WLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0, *PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0;
typedef
struct _WLX_MPR_NOTIFY_INFO
{
PWSTR pszUserName;
PWSTR pszDomain;
PWSTR pszPassword;
PWSTR pszOldPassword;
} WLX_MPR_NOTIFY_INFO, *PWLX_MPR_NOTIFY_INFO;
typedef
struct _WLX_PROFILE_V1_0
{
DWORD dwType;
PWSTR pszProfile;
} WLX_PROFILE_V1_0, *PWLX_PROFILE_V1_0;
typedef
struct _WLX_PROFILE_V2_0
{
DWORD dwType;
PWSTR pszProfile;
PWSTR pszPolicy;
PWSTR pszNetworkDefaultUserProfile;
PWSTR pszServerName;
PWSTR pszEnvironment;
} WLX_PROFILE_V2_0, *PWLX_PROFILE_V2_0;
typedef
struct _WLX_SC_NOTIFICATION_INFO
{
PWSTR pszCard;
PWSTR pszReader;
PWSTR pszContainer;
PWSTR pszCryptoProvider;
} WLX_SC_NOTIFICATION_INFO, *PWLX_SC_NOTIFICATION_INFO;
typedef
struct _WLX_TERMINAL_SERVICES_DATA
{
WCHAR ProfilePath[WLX_DIRECTORY_LENGTH + 1];
WCHAR HomeDir[WLX_DIRECTORY_LENGTH + 1];
WCHAR HomeDirDrive[4];
} WLX_TERMINAL_SERVICES_DATA, *PWLX_TERMINAL_SERVICES_DATA;
/* GINA Version 1.0 */
BOOL WINAPI
WlxActivateUserShell(
PVOID pWlxContext,
PWSTR pszDesktopName,
PWSTR pszMprLogonScript,
PVOID pEnvironment);
VOID WINAPI
WlxDisplayLockedNotice(
PVOID pWlxContext);
VOID WINAPI
WlxDisplaySASNotice(
PVOID pWlxContext);
BOOL WINAPI
WlxInitialize(
LPWSTR lpWinsta,
HANDLE hWlx,
PVOID pvReserved,
PVOID pWinlogonFunctions,
PVOID *pWlxContext);
BOOL WINAPI
WlxIsLockOk(
PVOID pWlxContext);
BOOL WINAPI
WlxIsLogoffOk(
PVOID pWlxContext);
int WINAPI
WlxLoggedOnSAS(
PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved);
int WINAPI
WlxLoggedOutSAS(
PVOID pWlxContext,
DWORD dwSasType,
PLUID pAuthenticationId,
PSID pLogonSid,
PDWORD pdwOptions,
PHANDLE phToken,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,
PVOID *pProfile);
VOID WINAPI
WlxLogoff(
PVOID pWlxContext);
BOOL WINAPI
WlxNegotiate(
DWORD dwWinlogonVersion,
PDWORD pdwDllVersion);
VOID WINAPI
WlxShutdown(
PVOID pWlxContext,
DWORD ShutdownType);
int WINAPI
WlxWkstaLockedSAS(
PVOID pWlxContext,
DWORD dwSasType);
/* GINA Version 1.1 */
BOOL WINAPI
WlxScreenSaverNotify(
PVOID pWlxContext,
BOOL *pSecure);
BOOL WINAPI
WlxStartApplication(
PVOID pWlxContext,
PWSTR pszDesktopName,
PVOID pEnvironment,
PWSTR pszCmdLine);
/* GINA Version 1.3 */
BOOL WINAPI
WlxDisplayStatusMessage(
PVOID pWlxContext,
HDESK hDesktop,
DWORD dwOptions,
PWSTR pTitle,
PWSTR pMessage);
BOOL WINAPI
WlxGetStatusMessage(
PVOID pWlxContext,
DWORD *pdwOptions,
PWSTR pMessage,
DWORD dwBufferSize);
BOOL
WINAPI
WlxNetworkProviderLoad(
PVOID pWlxContext,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo);
BOOL WINAPI
WlxRemoveStatusMessage(
PVOID pWlxContext);
/* GINA Version 1.4 */
VOID WINAPI
WlxDisconnectNotify(
PVOID pWlxContext);
BOOL WINAPI
WlxGetConsoleSwitchCredentials(
PVOID pWlxContext,
PVOID pCredInfo);
VOID WINAPI
WlxReconnectNotify(
PVOID pWlxContext);
/* Services that Winlogon provides */
#define WLX_DESKTOP_NAME (0x0001) /* Name present */
#define WLX_DESKTOP_HANDLE (0x0002) /* Handle present */
#define WLX_CREATE_INSTANCE_ONLY (0x0001)
#define WLX_CREATE_USER (0x0002)
#define WLX_OPTION_USE_CTRL_ALT_DEL (0x0001)
#define WLX_OPTION_CONTEXT_POINTER (0x0002)
#define WLX_OPTION_USE_SMART_CARD (0x0003)
#define WLX_OPTION_FORCE_LOGOFF_TIME (0x0004)
#define WLX_OPTION_IGNORE_AUTO_LOGON (0x0008)
#define WLX_OPTION_NO_SWITCH_ON_SAS (0x0009)
#define WLX_OPTION_SMART_CARD_PRESENT (0x00010001)
#define WLX_OPTION_SMART_CARD_INFO (0x00010002)
#define WLX_OPTION_DISPATCH_TABLE_SIZE (0x00010003)
typedef
struct _WLX_DESKTOP
{
DWORD Size;
DWORD Flags;
HDESK hDesktop;
PWSTR pszDesktopName;
} WLX_DESKTOP, *PWLX_DESKTOP;
typedef
int (WINAPI *PWLX_ASSIGN_SHELL_PROTECTION)(
HANDLE hWlx,
HANDLE hToken,
HANDLE hProcess,
HANDLE hThread);
typedef
BOOL (WINAPI *PWLX_CLOSE_USER_DESKTOP)(
HANDLE hWlx,
PWLX_DESKTOP pDesktop,
HANDLE hToken);
typedef
int (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY)(
HANDLE hWlx,
PWLX_MPR_NOTIFY_INFO pMprInfo,
DWORD dwChangeInfo);
typedef
int (WINAPI *PWLX_CHANGE_PASSWORD_NOTIFY_EX)(
HANDLE hWlx,
PWLX_MPR_NOTIFY_INFO pMprInfo,
DWORD dwChangeInfo,
PWSTR ProviderName,
PVOID Reserved);
typedef
BOOL (WINAPI *PWLX_CREATE_USER_DESKTOP)(
HANDLE hWlx,
HANDLE hToken,
DWORD Flags,
PWSTR pszDesktopName,
PWLX_DESKTOP *ppDesktop);
typedef
int (WINAPI *PWLX_DIALOG_BOX)(
HANDLE hWlx,
HANDLE hInst,
LPWSTR lpszTemplate,
HWND hwndOwner,
DLGPROC dlgprc);
typedef
int (WINAPI *PWLX_DIALOG_BOX_INDIRECT)(
HANDLE hWlx,
HANDLE hInst,
LPCDLGTEMPLATE hDialogTemplate,
HWND hwndOwner,
DLGPROC dlgprc);
typedef
int (WINAPI *PWLX_DIALOG_BOX_INDIRECT_PARAM)(
HANDLE hWlx,
HANDLE hInst,
LPCDLGTEMPLATE hDialogTemplate,
HWND hwndOwner,
DLGPROC dlgprc,
LPARAM dwInitParam);
typedef
int (WINAPI *PWLX_DIALOG_BOX_PARAM)(
HANDLE hWlx,
HANDLE hInst,
LPWSTR lpszTemplate,
HWND hwndOwner,
DLGPROC dlgprc,
LPARAM dwInitParam);
typedef
BOOL (WINAPI *PWLX_DISCONNECT)();
typedef
BOOL (WINAPI *PWLX_GET_OPTION)(
HANDLE hWlx,
DWORD Option,
ULONG_PTR *Value);
typedef
BOOL (WINAPI *PWLX_GET_SOURCE_DESKTOP)(
HANDLE hWlx,
PWLX_DESKTOP *ppDesktop);
typedef
int (WINAPI *PWLX_MESSAGE_BOX)(
HANDLE hWlx,
HWND hwndOwner,
LPWSTR lpszText,
LPWSTR lpszTitle,
UINT fuStyle);
typedef
BOOL (WINAPI *PWLX_QUERY_CLIENT_CREDENTIALS)(
PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred);
typedef
DWORD (WINAPI *PWLX_QUERY_CONSOLESWITCH_CREDENTIALS)(
PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred);
typedef
BOOL (WINAPI *PWLX_QUERY_IC_CREDENTIALS)(
PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred);
typedef
DWORD (WINAPI *PWLX_QUERY_TERMINAL_SERVICES_DATA)(
HANDLE hWlx,
PWLX_TERMINAL_SERVICES_DATA pTSData,
WCHAR *UserName,
WCHAR *Domain);
typedef
BOOL (WINAPI *PWLX_QUERY_TS_LOGON_CREDENTIALS)(
PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred);
typedef
VOID (WINAPI *PWLX_SAS_NOTIFY)(
HANDLE hWlx,
DWORD dwSasType);
typedef
VOID (WINAPI *PWLX_SET_CONTEXT_POINTER)(
HANDLE hWlx,
PVOID pWlxContext);
typedef
BOOL (WINAPI *PWLX_SET_RETURN_DESKTOP)(
HANDLE hWlx,
PWLX_DESKTOP pDesktop);
typedef
BOOL (WINAPI *PWLX_SET_OPTION)(
HANDLE hWlx,
DWORD Option,
ULONG_PTR Value,
ULONG_PTR *OldValue);
typedef
BOOL (WINAPI *PWLX_SET_TIMEOUT)(
HANDLE hWlx,
DWORD Timeout);
typedef
int (WINAPI *PWLX_SWITCH_DESKTOP_TO_USER)(
HANDLE hWlx);
typedef
int (WINAPI *PWLX_SWITCH_DESKTOP_TO_WINLOGON)(
HANDLE hWlx);
typedef
VOID (WINAPI *PWLX_USE_CTRL_ALT_DEL)(
HANDLE hWlx);
typedef
VOID (WINAPI *PWLX_WIN31_MIGRATE)(
HANDLE hWlx);
/* function dispatch tables */
typedef
struct _WLX_DISPATCH_VERSION_1_0
{
PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
PWLX_SAS_NOTIFY WlxSasNotify;
PWLX_SET_TIMEOUT WlxSetTimeout;
PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
PWLX_MESSAGE_BOX WlxMessageBox;
PWLX_DIALOG_BOX WlxDialogBox;
PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
} WLX_DISPATCH_VERSION_1_0, *PWLX_DISPATCH_VERSION_1_0;
typedef
struct _WLX_DISPATCH_VERSION_1_1
{
PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
PWLX_SAS_NOTIFY WlxSasNotify;
PWLX_SET_TIMEOUT WlxSetTimeout;
PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
PWLX_MESSAGE_BOX WlxMessageBox;
PWLX_DIALOG_BOX WlxDialogBox;
PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
} WLX_DISPATCH_VERSION_1_1, *PWLX_DISPATCH_VERSION_1_1;
typedef
struct _WLX_DISPATCH_VERSION_1_2
{
PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
PWLX_SAS_NOTIFY WlxSasNotify;
PWLX_SET_TIMEOUT WlxSetTimeout;
PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
PWLX_MESSAGE_BOX WlxMessageBox;
PWLX_DIALOG_BOX WlxDialogBox;
PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop ;
} WLX_DISPATCH_VERSION_1_2, *PWLX_DISPATCH_VERSION_1_2;
typedef
struct _WLX_DISPATCH_VERSION_1_3
{
PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
PWLX_SAS_NOTIFY WlxSasNotify;
PWLX_SET_TIMEOUT WlxSetTimeout;
PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
PWLX_MESSAGE_BOX WlxMessageBox;
PWLX_DIALOG_BOX WlxDialogBox;
PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop ;
PWLX_SET_OPTION WlxSetOption;
PWLX_GET_OPTION WlxGetOption;
PWLX_WIN31_MIGRATE WlxWin31Migrate;
PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
PWLX_DISCONNECT WlxDisconnect;
PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
} WLX_DISPATCH_VERSION_1_3, *PWLX_DISPATCH_VERSION_1_3;
typedef
struct _WLX_DISPATCH_VERSION_1_4
{
PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
PWLX_SAS_NOTIFY WlxSasNotify;
PWLX_SET_TIMEOUT WlxSetTimeout;
PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
PWLX_MESSAGE_BOX WlxMessageBox;
PWLX_DIALOG_BOX WlxDialogBox;
PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop ;
PWLX_SET_OPTION WlxSetOption;
PWLX_GET_OPTION WlxGetOption;
PWLX_WIN31_MIGRATE WlxWin31Migrate;
PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
PWLX_DISCONNECT WlxDisconnect;
PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
PWLX_QUERY_CONSOLESWITCH_CREDENTIALS WlxQueryConsoleSwitchCredentials;
PWLX_QUERY_TS_LOGON_CREDENTIALS WlxQueryTsLogonCredentials;
} WLX_DISPATCH_VERSION_1_4, *PWLX_DISPATCH_VERSION_1_4;
/* non-GINA notification DLLs*/
typedef
DWORD (CALLBACK *PFNMSGECALLBACK)(
BOOL bVerbose,
LPWSTR lpMessage);
typedef
struct _WLX_NOTIFICATION_INFO
{
ULONG Size;
ULONG Flags;
PWSTR UserName;
PWSTR Domain;
PWSTR WindowStation;
HANDLE hToken;
HDESK hDesktop;
PFNMSGECALLBACK pStatusCallback;
} WLX_NOTIFICATION_INFO, *PWLX_NOTIFICATION_INFO;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /*__WINWLX_H */
/* EOF */