WinWlx.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:36k
- /*++ 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_
- #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_VERSION_1_4 (0X00010004)
- #define WLX_CURRENT_VERSION (WLX_VERSION_1_4)
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // 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_AUTHENTICATED (7)
- #define WLX_SAS_TYPE_SC_FIRST_READER_ARRIVED (8)
- #define WLX_SAS_TYPE_SC_LAST_READER_REMOVED (9)
- #define WLX_SAS_TYPE_SWITCHUSER (10)
- #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)
- #define WLX_SAS_ACTION_SWITCH_CONSOLE (17)
- ////////////////////////////////////////////////////////////////////////
- // //
- // 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. REDMONDJoe).
- // 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)
- #define WLX_CREDENTIAL_TYPE_V2_0 (2)
- 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;
- typedef struct _WLX_CLIENT_CREDENTIALS_INFO_2_0 {
- DWORD dwType;
- PWSTR pszUserName;
- PWSTR pszDomain;
- PWSTR pszPassword;
- BOOL fPromptForPassword;
- //
- // This field tells winlogon to disconnect/abort the logon attempt if the
- // provided password is incorrect, or if it should reprompt (current
- // behavior)
- //
- BOOL fDisconnectOnLogonFailure;
- } WLX_CLIENT_CREDENTIALS_INFO_V2_0, * PWLX_CLIENT_CREDENTIALS_INFO_V2_0;
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // The WLX_CONSOLESWITCH_CREDENTIALS_INFO structure is returned
- // from gina in response to WlxGetConsoleSwitchCredentials calls.
- // This structure is also returned from winlogon in response to
- // to WlxQueryConsoleSwitchCredentials call
- //
- // This is used to implement single session Terminal Server. A remote
- // session winlogon calls WlxGetConsoleSwitchCredentials to get the token
- // and other info of the logged on user from msgina. This info is then passed to
- // the console session winlogon to autologon the user on the console session.
- // The gina on console session calls WlxQueryConsoleSwitchCredentials to get
- // this info from winlogon and logs on the user.
- //
- // The caller is responsible for freeing the memory
- // and substrings with LocalFree().
- //
- #define WLX_CONSOLESWITCHCREDENTIAL_TYPE_V1_0 (1)
- typedef struct _WLX_CONSOLESWITCH_CREDENTIALS_INFO {
- //
- // This field identifies the type of credentials structure being allocated
- // Credential types are defined with the prefix
- // WLX_CONSOLESWITCHCREDENTIAL_TYPE_xxx. It allows Winlogon to typecast the
- // structure so the remainder of the structure may be referenced.
- //
- DWORD dwType;
- HANDLE UserToken;
- LUID LogonId;
- QUOTA_LIMITS Quotas;
- PWSTR UserName;
- PWSTR Domain;
- LARGE_INTEGER LogonTime;
- BOOL SmartCardLogon;
- ULONG ProfileLength;
- //
- // From MSV1_0_INTERACTIVE_PROFILE
- //
- 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;
- ////////////////////////////////////////////////////////////////////////
- // //
- // 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
- );
- //
- // New for 1.4
- //
- BOOL
- WINAPI
- WlxGetConsoleSwitchCredentials (
- PVOID pWlxContext,
- PVOID pCredInfo
- );
- VOID
- WINAPI
- WlxReconnectNotify (
- PVOID pWlxContext
- );
- VOID
- WINAPI
- WlxDisconnectNotify (
- 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_QUERY_TS_LOGON_CREDENTIALS)(
- PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred
- );
- typedef BOOL
- (WINAPI * PWLX_DISCONNECT)(
- );
- typedef DWORD
- (WINAPI * PWLX_QUERY_TERMINAL_SERVICES_DATA)(
- HANDLE hWlx,
- PWLX_TERMINAL_SERVICES_DATA pTSData,
- WCHAR * UserName,
- WCHAR * Domain
- );
- typedef DWORD
- (WINAPI * PWLX_QUERY_CONSOLESWITCH_CREDENTIALS)(
- PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred
- );
- //
- // 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
- #define WLX_OPTION_NO_SWITCH_ON_SAS 0x00000009
- //
- // 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;
- 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 (*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 ;
- #endif /* _WINWLX_ */