home *** CD-ROM | disk | FTP | other *** search
- /*++ BUILD Version: 0001 Increment this if a change has global effects
-
- Copyright (c) 1985-1995, 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.
-
- Revision History:
-
-
-
- --*/
-
- #ifndef _WINWLX_
- #define _WINWLX_
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // #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_CURRENT_VERSION (WLX_VERSION_1_0)
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // 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.
- //
-
- #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_MAX_MSFT_VALUE (127)
-
-
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // 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.
- //
- // NOTE: currently, there is only one profile structure defined.
- // This will change with future releases.
- //
-
- //
- // Standard profile for V1_0
- //
-
- #define WLX_PROFILE_TYPE_V1_0 (1)
-
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // 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.
- //
-
- #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)
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Window Messages //
- // //
- ////////////////////////////////////////////////////////////////////////
-
- //
- // The WM_SAS is defined as follows
- //
- // The wParam parameter has the SAS Type (above)
-
- #define WLX_WM_SAS (WM_USER + 601)
-
- //
- // The WLX_WM_TIMEOUT message is sent to an open dialog before it is
- // timed out. If it is not caught by the Dialog Proc, Winlogon will end
- // the dialog with a dialog return code below.
- #define WLX_WM_TIMEOUT (WM_USER + 602)
-
- //
- // 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_V1_0 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;
-
-
-
-
- /////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////
- //
- // 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;
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // 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
- );
-
-
-
-
-
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Services that Winlogon provides //
- // //
- ////////////////////////////////////////////////////////////////////////
-
-
- 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
- );
-
-
-
-
- ////////////////////////////////////////////////////////////////////////
- // //
- // Function dispatch tables. //
- // One of the following tables will be passed to the GINA DLL //
- // in the WlxInitialize() call during initialization. //
- // //
- // NOTE: FOR THIS REVISION THERE IS ONLY ONE TABLE. DEVELOPERS //
- // SHOULD EXPECT MORE IN FUTURE RELEASE. //
- // //
- ////////////////////////////////////////////////////////////////////////
-
- //
- // Dispatch table for version WLX_VERSION_1_0
- //
-
- 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;
-
-
-
-
-
- #endif /* _WINWLX_ */
-