home *** CD-ROM | disk | FTP | other *** search
- /*++ BUILD Version: 0001 Increment this if a change has global effects
-
- Copyright (c) 1985-1999, Microsoft Corporation
-
- Module Name:
-
- winwlx.h
-
- Abstract:
-
- WLX == WinLogon eXtension
-
- This file contains definitions, data types, and routine prototypes
- necessary to produce a replacement Graphical Identification aNd
- Authentication (GINA) DLL for Winlogon.
-
- Author:
-
- Richard Ward (RichardW) and Jim Kelly (JimK) May-1994
-
- Revision History:
-
-
-
- --*/
-
- #ifndef _WINWLX_
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define _WINWLX_
-
- #if _MSC_VER > 1000
- #pragma once
- #endif
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // #defines //
- // //
- ////////////////////////////////////////////////////////////////////////
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // Revisions of Winlogon API available for use by GINAs
- // Version is two parts: Major revision and minor revision.
- // Major revision is the upper 16-bits, minor is the lower
- // 16-bits.
- //
-
- #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_CURRENT_VERSION (WLX_VERSION_1_3)
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // Secure attention sequence types
- // These values are passed to routines that have a dwSasType
- // parameter.
- //
- // ALL VALUES FROM 0 TO 127 ARE RESERVED FOR MICROSOFT DEFINITION.
- // VALUES ABOVE 127 ARE RESERVED FOR CUSTOMER DEFINITION.
- //
- // CTRL_ALT_DEL - used to indicate that the standard ctrl-alt-del
- // secure attention sequence has been entered.
- //
- // SCRNSVR_TIMEOUT - used to indicate that keyboard/mouse inactivity
- // has lead to a screensaver activation. It is up to the GINA
- // DLL whether this constitutes a workstation locking event.
- //
- // SCRNSVR_ACTIVITY - used to indicate that keyboard or mouse
- // activity occured while a secure screensaver was active.
- //
- // SC_INSERT - used to indicate that a smart card has been inserted
- // to a compatible device
- //
- // SC_REMOVE - used to indicate that a smart card has been removed
- // from a compatible device
- //
-
- #define WLX_SAS_TYPE_TIMEOUT (0)
- #define WLX_SAS_TYPE_CTRL_ALT_DEL (1)
- #define WLX_SAS_TYPE_SCRNSVR_TIMEOUT (2)
- #define WLX_SAS_TYPE_SCRNSVR_ACTIVITY (3)
- #define WLX_SAS_TYPE_USER_LOGOFF (4)
- #define WLX_SAS_TYPE_SC_INSERT (5)
- #define WLX_SAS_TYPE_SC_REMOVE (6)
- #define WLX_SAS_TYPE_MAX_MSFT_VALUE (127)
-
-
- //
- // This structure is available through WlxGetOption, and is
- // passed as the lParam for any S/C SAS notices sent to windows
- //
- typedef struct _WLX_SC_NOTIFICATION_INFO {
- PWSTR pszCard ;
- PWSTR pszReader ;
- PWSTR pszContainer ;
- PWSTR pszCryptoProvider ;
- } WLX_SC_NOTIFICATION_INFO, * PWLX_SC_NOTIFICATION_INFO ;
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // Upon successful logon, the GINA DLL may specify any of the following
- // options to Winlogon (via the dwOptions parameter of the WlxLoggedOutSas()
- // api). When set, these options specify:
- //
- // NO_PROFILE - Winlogon must NOT load a profile for the logged
- // on user. Either the GINA DLL will take care of
- // this activity, or the user does not need a profile.
- //
-
- #define WLX_LOGON_OPT_NO_PROFILE (0x00000001)
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // GINA DLLs are expected to return account information to Winlogon
- // following a successful logon. This information allows Winlogon
- // to support profile loading and supplemental network providers.
- //
- // To allow different sets of profile information to be returned
- // by GINAs over time, the first DWORD of each profile structure
- // is expected to contain a type-identifier. The following constants
- // are the defined profile type identifiers.
- //
-
- //
- // Standard profile is V2_0
- //
-
- #define WLX_PROFILE_TYPE_V1_0 (1)
- #define WLX_PROFILE_TYPE_V2_0 (2)
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // WlxLoggedOnSas() and WlxWkstaLockedSas() return an action
- // value to Winlogon directing Winlogon to either remain unchanged
- // or to perform some action (such as force-log the user off).
- // These are the values that may be returned. Note, however, that
- // not all of the values may be returned by both of these api. See
- // the description of each api to see which values are expected from
- // each.
- //
- // LOGON - User has logged on
- // NONE - Don't change the state of the window station.
- // LOCK_WKSTA - Lock the workstation, wait for next SAS.
- // LOGOFF - Log the user off of the workstation.
- // SHUTDOWN - Log the user off and shutdown the machine.
- // PWD_CHANGED - Indicates that the user changed their password. Notify network providers.
- // TASKLIST - Invoke the task list.
- // UNLOCK_WKSTA - Unlock the workstation.
- // FORCE_LOGOFF - Forcibly log the user off.
- // SHUTDOWN_POWER_OFF - Turn off machine after shutting down.
- // SHUTDOWN_REBOOT - Reboot machine after shutting down.
- // SHUTDOWN_SLEEP - Put the machine to sleep
- // SHUTDOWN_SLEEP2 - Put the machine to sleep and disable wakeup events
- // SHUTDOWN_HIBERNATE - Hibernate the machine
- // RECONNECTED - Session was reconnected to an earlier session
- //
-
- #define WLX_SAS_ACTION_LOGON (1)
- #define WLX_SAS_ACTION_NONE (2)
- #define WLX_SAS_ACTION_LOCK_WKSTA (3)
- #define WLX_SAS_ACTION_LOGOFF (4)
- #define WLX_SAS_ACTION_SHUTDOWN (5)
- #define WLX_SAS_ACTION_PWD_CHANGED (6)
- #define WLX_SAS_ACTION_TASKLIST (7)
- #define WLX_SAS_ACTION_UNLOCK_WKSTA (8)
- #define WLX_SAS_ACTION_FORCE_LOGOFF (9)
- #define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF (10)
- #define WLX_SAS_ACTION_SHUTDOWN_REBOOT (11)
- #define WLX_SAS_ACTION_SHUTDOWN_SLEEP (12)
- #define WLX_SAS_ACTION_SHUTDOWN_SLEEP2 (13)
- #define WLX_SAS_ACTION_SHUTDOWN_HIBERNATE (14)
- #define WLX_SAS_ACTION_RECONNECTED (15)
- #define WLX_SAS_ACTION_DELAYED_FORCE_LOGOFF (16)
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Window Messages //
- // //
- ////////////////////////////////////////////////////////////////////////
-
- //
- // The WM_SAS is defined as follows
- //
- // The wParam parameter has the SAS Type (above)
-
- #define WLX_WM_SAS (WM_USER + 601)
-
-
- //
- // Dialog return values
- //
- // These may be returned by dialogs started by a GINA dll.
- //
- #define WLX_DLG_SAS 101
- #define WLX_DLG_INPUT_TIMEOUT 102 // Input (keys, etc) timed out
- #define WLX_DLG_SCREEN_SAVER_TIMEOUT 103 // Screen Saver activated
- #define WLX_DLG_USER_LOGOFF 104 // User logged off
-
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // #data types //
- // //
- ////////////////////////////////////////////////////////////////////////
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // The WLX_PROFILE_* structure is returned from a GINA DLL
- // following authentication. This information is used by Winlogon
- // to support supplemental Network Providers and to load the
- // newly logged-on user's profile.
- //
- // Winlogon is responsible for freeing both the profile structure
- // and the fields within the structure that are marked as separately
- // deallocatable.
- //
-
- typedef struct _WLX_PROFILE_V1_0 {
-
- //
- // This field identifies the type of profile being returned by a
- // GINA DLL. Profile types are defined with the prefix
- // WLX_PROFILE_TYPE_xxx. It allows Winlogon to typecast the
- // structure so the remainder of the structure may be referenced.
- //
-
- DWORD dwType;
-
-
-
- //
- // pathname of profile to load for user.
- //
- // The buffer pointed to by this field must be separately allocated.
- // Winlogon will free the buffer when it is no longer needed.
- //
- //
- PWSTR pszProfile;
-
- } WLX_PROFILE_V1_0, * PWLX_PROFILE_V1_0;
-
-
- typedef struct _WLX_PROFILE_V2_0 {
-
- //
- // This field identifies the type of profile being returned by a
- // GINA DLL. Profile types are defined with the prefix
- // WLX_PROFILE_TYPE_xxx. It allows Winlogon to typecast the
- // structure so the remainder of the structure may be referenced.
- //
-
- DWORD dwType;
-
-
- //
- // pathname of profile to load for user.
- //
- // This parameter can be NULL. If so, the user has a local
- // profile only.
- //
- // The buffer pointed to by this field must be separately allocated.
- // Winlogon will free the buffer when it is no longer needed.
- //
- //
-
- PWSTR pszProfile;
-
-
- //
- // pathname of policy to load for user.
- //
- // This parameter can be NULL which prevents network wide policy
- // from being applied.
- //
- // The buffer pointed to by this field must be separately allocated.
- // Winlogon will free the buffer when it is no longer needed.
- //
- //
-
- PWSTR pszPolicy;
-
-
- //
- // pathname of network default user profile
- //
- // This parameter can be NULL, which causes the Default User
- // profile on the local machine to be used.
- //
- // The buffer pointed to by this field must be separately allocated.
- // Winlogon will free the buffer when it is no longer needed.
- //
- //
-
- PWSTR pszNetworkDefaultUserProfile;
-
-
- //
- // name of the server which validated the user account
- //
- // This is used to enumerate globals groups the user belongs
- // to for policy support. This parameter can be NULL.
- //
- // The buffer pointed to by this field must be separately allocated.
- // Winlogon will free the buffer when it is no longer needed.
- //
- //
-
- PWSTR pszServerName;
-
-
- //
- // pointer to a series of null terminated environment variables
- //
- // envname=environment variable value
- // - or -
- // envname=%OtherVar%\more text
- //
- // Each environment variable is NULL terminated with the last
- // environment variable double NULL terminated. These variables
- // are set into the user's initial environment. The environment
- // variable value can contain other environment variables wrapped
- // in "%" signs. This parameter can be NULL.
- //
- // The buffer pointed to by this field must be separately allocated.
- // Winlogon will free the buffer when it is no longer needed.
- //
- //
-
- PWSTR pszEnvironment;
-
- } WLX_PROFILE_V2_0, * PWLX_PROFILE_V2_0;
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // The WLX_NPR_NOTIFICATION_INFO structure is returned
- // from a GINA DLL following successful authentication.
- // This information is used by Winlogon to provide
- // identification and authentication information already
- // collected to network providers. Winlogon is
- // responsible for freeing both the main structure and all
- // string and other buffers pointed to from within the
- // structure.
- //
-
- typedef struct _WLX_MPR_NOTIFY_INFO {
-
- //
- // The name of the account logged onto (e.g. REDMOND\Joe).
- // The string pointed to by this field must be separately
- // allocated and will be separately deallocated by Winlogon.
- //
-
- PWSTR pszUserName;
-
- //
- // The string pointed to by this field must be separately
- // allocated and will be separately deallocated by Winlogon.
- //
-
- PWSTR pszDomain;
-
- //
- // Cleartext password of the user account. If the OldPassword
- // field is non-null, then this field contains the new password
- // in a password change operation. The string pointed to by
- // this field must be separately allocated and will be seperately
- // deallocated by Winlogon.
- //
-
- PWSTR pszPassword;
-
- //
- // Cleartext old password of the user account whose password
- // has just been changed. The Password field contains the new
- // password. The string pointed to by this field must be
- // separately allocated and will be separately deallocated by
- // Winlogon.
- //
-
- PWSTR pszOldPassword;
-
- } WLX_MPR_NOTIFY_INFO, * PWLX_MPR_NOTIFY_INFO;
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // WLX_TERMINAL_SERVICES_DATA is used by the GINA during a
- // WlxQueryTerminalServicesData() callback into WinLogon from the
- // WlxLoggedOutSAS() context, after the user name and domain are known.
- // This structure relates to TS user configuration information which is
- // retrieved from the Domain Controller and SAM database. Having WinLogon
- // pass this information means the GINA does not need to do the same
- // off-machines lookups again.
- //
-
- #define WLX_DIRECTORY_LENGTH 256
-
- typedef struct _WLX_TERMINAL_SERVICES_DATA {
-
- //
- // TS profile path, overrides the standard profile path.
- //
-
- WCHAR ProfilePath[WLX_DIRECTORY_LENGTH + 1];
-
-
- //
- // TS home directory, overrides standard home directory.
- //
-
- WCHAR HomeDir[WLX_DIRECTORY_LENGTH + 1];
-
-
- //
- // TS home directory drive, overrides standard drive.
- //
-
- WCHAR HomeDirDrive[4];
-
- } WLX_TERMINAL_SERVICES_DATA, *PWLX_TERMINAL_SERVICES_DATA;
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // The WLX_CLIENT_CREDENTIALS_INFO structure is returned
- // from winlogon from the WlxQueryClientCredentials() call.
- //
- // This allows a network client WinStation to pass client
- // credentials for automatic logon.
- //
- // The MSGINA DLL is responsible for freeing the memory
- // and substrings with LocalFree().
- //
-
- #define WLX_CREDENTIAL_TYPE_V1_0 (1)
-
- typedef struct _WLX_CLIENT_CREDENTIALS_INFO {
-
- //
- // This field identifies the type of credentials structure being allocated
- // by GINA DLL. Credential types are defined with the prefix
- // WLX_CREDENTIAL_TYPE_xxx. It allows Winlogon to typecast the
- // structure so the remainder of the structure may be referenced.
- //
-
- DWORD dwType;
-
- PWSTR pszUserName;
- PWSTR pszDomain;
- PWSTR pszPassword;
-
- //
- // This field forces a prompt for the password. This
- // is due to an administrator override.
- //
- // This allows the distinguishing of autologon
- // with no password.
- //
- BOOL fPromptForPassword;
-
- } WLX_CLIENT_CREDENTIALS_INFO_V1_0, * PWLX_CLIENT_CREDENTIALS_INFO_V1_0;
-
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Services that replacement GINAs ** MUST ** provide //
- // //
- ////////////////////////////////////////////////////////////////////////
-
- BOOL
- WINAPI
- WlxNegotiate(
- DWORD dwWinlogonVersion,
- PDWORD pdwDllVersion
- );
-
- BOOL
- WINAPI
- WlxInitialize(
- LPWSTR lpWinsta,
- HANDLE hWlx,
- PVOID pvReserved,
- PVOID pWinlogonFunctions,
- PVOID * pWlxContext
- );
-
- VOID
- WINAPI
- WlxDisplaySASNotice(
- PVOID pWlxContext
- );
-
-
- int
- WINAPI
- WlxLoggedOutSAS(
- PVOID pWlxContext,
- DWORD dwSasType,
- PLUID pAuthenticationId,
- PSID pLogonSid,
- PDWORD pdwOptions,
- PHANDLE phToken,
- PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,
- PVOID * pProfile
- );
-
- BOOL
- WINAPI
- WlxActivateUserShell(
- PVOID pWlxContext,
- PWSTR pszDesktopName,
- PWSTR pszMprLogonScript,
- PVOID pEnvironment
- );
-
- int
- WINAPI
- WlxLoggedOnSAS(
- PVOID pWlxContext,
- DWORD dwSasType,
- PVOID pReserved
- );
-
- VOID
- WINAPI
- WlxDisplayLockedNotice(
- PVOID pWlxContext
- );
-
- int
- WINAPI
- WlxWkstaLockedSAS(
- PVOID pWlxContext,
- DWORD dwSasType
- );
-
- BOOL
- WINAPI
- WlxIsLockOk(
- PVOID pWlxContext
- );
-
- BOOL
- WINAPI
- WlxIsLogoffOk(
- PVOID pWlxContext
- );
-
- VOID
- WINAPI
- WlxLogoff(
- PVOID pWlxContext
- );
-
-
- VOID
- WINAPI
- WlxShutdown(
- PVOID pWlxContext,
- DWORD ShutdownType
- );
-
-
- //
- // NEW for version 1.1
- //
- BOOL
- WINAPI
- WlxScreenSaverNotify(
- PVOID pWlxContext,
- BOOL * pSecure);
-
- BOOL
- WINAPI
- WlxStartApplication(
- PVOID pWlxContext,
- PWSTR pszDesktopName,
- PVOID pEnvironment,
- PWSTR pszCmdLine
- );
-
- //
- // New for 1.3
- //
-
- BOOL
- WINAPI
- WlxNetworkProviderLoad(
- PVOID pWlxContext,
- PWLX_MPR_NOTIFY_INFO pNprNotifyInfo
- );
-
-
- #define STATUSMSG_OPTION_NOANIMATION 0x00000001
- #define STATUSMSG_OPTION_SETFOREGROUND 0x00000002
-
- 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
- WlxRemoveStatusMessage(
- PVOID pWlxContext
- );
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Services that Winlogon provides //
- // //
- ////////////////////////////////////////////////////////////////////////
-
- typedef struct _WLX_DESKTOP {
- DWORD Size;
- DWORD Flags;
- HDESK hDesktop;
- PWSTR pszDesktopName;
- } WLX_DESKTOP, * PWLX_DESKTOP;
-
- #define WLX_DESKTOP_NAME 0x00000001 // Name present
- #define WLX_DESKTOP_HANDLE 0x00000002 // Handle present
-
-
-
- typedef VOID
- (WINAPI * PWLX_USE_CTRL_ALT_DEL)(
- HANDLE hWlx
- );
-
- typedef VOID
- (WINAPI * PWLX_SET_CONTEXT_POINTER)(
- HANDLE hWlx,
- PVOID pWlxContext
- );
-
- typedef VOID
- (WINAPI * PWLX_SAS_NOTIFY)(
- HANDLE hWlx,
- DWORD dwSasType
- );
-
- typedef BOOL
- (WINAPI * PWLX_SET_TIMEOUT)(
- HANDLE hWlx,
- DWORD Timeout);
-
- typedef int
- (WINAPI * PWLX_ASSIGN_SHELL_PROTECTION)(
- HANDLE hWlx,
- HANDLE hToken,
- HANDLE hProcess,
- HANDLE hThread
- );
-
- typedef int
- (WINAPI * PWLX_MESSAGE_BOX)(
- HANDLE hWlx,
- HWND hwndOwner,
- LPWSTR lpszText,
- LPWSTR lpszTitle,
- UINT fuStyle
- );
-
- 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_PARAM)(
- HANDLE hWlx,
- HANDLE hInst,
- LPWSTR lpszTemplate,
- HWND hwndOwner,
- DLGPROC dlgprc,
- LPARAM dwInitParam
- );
-
- typedef int
- (WINAPI * PWLX_DIALOG_BOX_INDIRECT_PARAM)(
- HANDLE hWlx,
- HANDLE hInst,
- LPCDLGTEMPLATE hDialogTemplate,
- HWND hwndOwner,
- DLGPROC dlgprc,
- LPARAM dwInitParam
- );
-
- typedef int
- (WINAPI * PWLX_SWITCH_DESKTOP_TO_USER)(
- HANDLE hWlx);
-
- typedef int
- (WINAPI * PWLX_SWITCH_DESKTOP_TO_WINLOGON)(
- HANDLE hWlx);
-
-
- typedef int
- (WINAPI * PWLX_CHANGE_PASSWORD_NOTIFY)(
- HANDLE hWlx,
- PWLX_MPR_NOTIFY_INFO pMprInfo,
- DWORD dwChangeInfo
- );
-
- typedef BOOL
- (WINAPI * PWLX_GET_SOURCE_DESKTOP)(
- HANDLE hWlx,
- PWLX_DESKTOP * ppDesktop);
-
- typedef BOOL
- (WINAPI * PWLX_SET_RETURN_DESKTOP)(
- HANDLE hWlx,
- PWLX_DESKTOP pDesktop);
-
- typedef BOOL
- (WINAPI * PWLX_CREATE_USER_DESKTOP)(
- HANDLE hWlx,
- HANDLE hToken,
- DWORD Flags,
- PWSTR pszDesktopName,
- PWLX_DESKTOP * ppDesktop);
-
- #define WLX_CREATE_INSTANCE_ONLY 0x00000001
- #define WLX_CREATE_USER 0x00000002
-
- 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_CLOSE_USER_DESKTOP)(
- HANDLE hWlx,
- PWLX_DESKTOP pDesktop,
- HANDLE hToken );
-
- typedef BOOL
- (WINAPI * PWLX_SET_OPTION)(
- HANDLE hWlx,
- DWORD Option,
- ULONG_PTR Value,
- ULONG_PTR * OldValue
- );
-
- typedef BOOL
- (WINAPI * PWLX_GET_OPTION)(
- HANDLE hWlx,
- DWORD Option,
- ULONG_PTR * Value
- );
-
-
- typedef VOID
- (WINAPI * PWLX_WIN31_MIGRATE)(
- HANDLE hWlx
- );
-
- typedef BOOL
- (WINAPI * PWLX_QUERY_CLIENT_CREDENTIALS)(
- PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
- );
-
- typedef BOOL
- (WINAPI * PWLX_QUERY_IC_CREDENTIALS)(
- PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
- );
-
-
- typedef BOOL
- (WINAPI * PWLX_DISCONNECT)(
- );
-
- typedef BOOL
- (WINAPI * PWLX_QUERY_TERMINAL_SERVICES_DATA)(
- HANDLE hWlx,
- PWLX_TERMINAL_SERVICES_DATA pTSData,
- PWSTR UserName,
- PWSTR Domain
- );
-
-
- //
- // Options that can be get or set:
- //
-
- #define WLX_OPTION_USE_CTRL_ALT_DEL 0x00000001
- #define WLX_OPTION_CONTEXT_POINTER 0x00000002
- #define WLX_OPTION_USE_SMART_CARD 0x00000003
- #define WLX_OPTION_FORCE_LOGOFF_TIME 0x00000004
- #define WLX_OPTION_IGNORE_AUTO_LOGON 0x00000008
-
- //
- // Options that can be queried only:
- //
-
- #define WLX_OPTION_SMART_CARD_PRESENT 0x00010001
- #define WLX_OPTION_SMART_CARD_INFO 0x00010002
- #define WLX_OPTION_DISPATCH_TABLE_SIZE 0x00010003
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Function dispatch tables. //
- // One of the following tables will be passed to the GINA DLL //
- // in the WlxInitialize() call during initialization. //
- // //
- ////////////////////////////////////////////////////////////////////////
-
- 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;
-
-
-
- //
- // Non-GINA notification DLLs
- //
-
- typedef DWORD (*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 option pop /*P_O_Pop*/
- #endif /* _WINWLX_ */
-