278 lines
15 KiB
C
278 lines
15 KiB
C
// --------------------------------------------------------------------------
|
|
// Module Name: MSGinaExports.h
|
|
//
|
|
// Copyright (c) 2000, Microsoft Corporation
|
|
//
|
|
// Private exported functions (by ordinal) from msgina for personal SKU
|
|
// functionality.
|
|
//
|
|
// History: 2000-02-04 vtan created
|
|
// 2000-02-28 vtan added ShellIsFriendlyUIActive
|
|
// 2000-02-29 vtan added ShellIsSingleUserNoPassword
|
|
// 2000-03-02 vtan added ShellIsMultipleUsersEnabled
|
|
// 2000-04-27 vtan added ShellTurnOffDialog
|
|
// 2000-04-27 vtan added ShellACPIPowerButtonPressed
|
|
// 2000-05-03 vtan added ShellStatusHostBegin
|
|
// 2000-05-03 vtan added ShellStatusHostEnd
|
|
// 2000-05-04 vtan added ShellSwitchWhenInteractiveReady
|
|
// 2000-05-18 vtan added ShellDimScreen
|
|
// 2000-06-02 vtan added ShellInstallAccountFilterData
|
|
// 2000-07-14 vtan added ShellStatusHostShuttingDown
|
|
// 2000-07-27 vtan added ShellIsSuspendAllowed
|
|
// 2000-07-31 vtan added ShellEnableMultipleUsers
|
|
// 2000-07-31 vtan added ShellEnableRemoteConnections
|
|
// 2000-08-01 vtan added ShellEnableFriendlyUI
|
|
// 2000-08-01 vtan added ShellIsRemoteConnectionsEnabled
|
|
// 2000-08-03 vtan added ShellSwitchUser
|
|
// 2000-08-09 vtan added ShellNotifyThemeUserChange
|
|
// 2000-08-14 vtan added ShellIsUserInteractiveLogonAllowed
|
|
// 2000-08-15 vtan moved to internally published header
|
|
// 2000-10-13 vtan added ShellStartThemeServer
|
|
// 2000-10-17 vtan added ShellStopThemeServer
|
|
// 2000-11-30 vtan removed ShellStartThemeServer
|
|
// 2000-11-30 vtan removed ShellStopThemeServer
|
|
// 2001-01-11 vtan added stub functions for imp library
|
|
// 2001-01-11 vtan added ShellReturnToWelcome
|
|
// 2001-01-31 vtan added ShellStatusHostPowerEvent
|
|
// 2001-04-03 vtan added ShellStartCredentialServer
|
|
// 2001-04-04 vtan added ShellAcquireLogonMutex
|
|
// 2001-04-04 vtan added ShellReleaseLogonMutex
|
|
// 2001-04-06 vtan added ShellSignalShutdown
|
|
// 2001-04-12 vtan added ShellStatusHostHide
|
|
// 2001-04-12 vtan added ShellStatusHostShow
|
|
// --------------------------------------------------------------------------
|
|
|
|
#ifndef _MSGinaExports_
|
|
#define _MSGinaExports_
|
|
|
|
#if !defined(_MSGINA_)
|
|
#define MSGINAAPI DECLSPEC_IMPORT
|
|
#define GINASTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
|
|
#define GINASTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
|
|
#else
|
|
#define MSGINAAPI
|
|
#define GINASTDAPI_(type) STDAPI_(type)
|
|
#define GINASTDAPI STDAPI
|
|
#endif
|
|
|
|
#include <unknwn.h>
|
|
|
|
typedef enum _USERLOGTYPE
|
|
{
|
|
ULT_LOGON, // User log on
|
|
ULT_LOGOFF, // User log off
|
|
ULT_TSRECONNECT, // Terminal server reconnect
|
|
ULT_STARTSHELL, // About to start the Shell
|
|
} USERLOGTYPE;
|
|
|
|
typedef enum _SWITCHTYPE
|
|
{
|
|
SWITCHTYPE_CREATE, // Create the switch event and sync event
|
|
SWITCHTYPE_REGISTER, // Check the switch event and register wait
|
|
SWITCHTYPE_CANCEL, // Cancel the wait and clean up
|
|
} SWITCHTYPE;
|
|
|
|
#define SZ_INTERACTIVE_LOGON_MUTEX_NAME TEXT("Global\\msgina: InteractiveLogonMutex")
|
|
#define SZ_INTERACTIVE_LOGON_REQUEST_MUTEX_NAME TEXT("Global\\msgina: InteractiveLogonRequestMutex")
|
|
#define SZ_INTERACTIVE_LOGON_REPLY_EVENT_NAME TEXT("Global\\msgina: InteractiveLogonReplyEvent")
|
|
#define SZ_SHUT_DOWN_EVENT_NAME TEXT("Global\\msgina: ShutdownEvent")
|
|
|
|
#ifdef _MSGINA_
|
|
|
|
// --------------------------------------------------------------------------
|
|
// This section contains declarations in the DS component of msgina used by
|
|
// the shell component of msgina.
|
|
// --------------------------------------------------------------------------
|
|
|
|
// These are GINA internal dialog return codes.
|
|
|
|
#define MSGINA_DLG_FAILURE IDCANCEL
|
|
#define MSGINA_DLG_SUCCESS IDOK
|
|
|
|
#define MSGINA_DLG_INTERRUPTED 0x10000000
|
|
|
|
// Our own return codes. These should *Not* conflict with the
|
|
// GINA defined ones.
|
|
|
|
#define MSGINA_DLG_LOCK_WORKSTATION 110
|
|
#define MSGINA_DLG_INPUT_TIMEOUT 111
|
|
#define MSGINA_DLG_SCREEN_SAVER_TIMEOUT 112
|
|
#define MSGINA_DLG_USER_LOGOFF 113
|
|
#define MSGINA_DLG_TASKLIST 114
|
|
#define MSGINA_DLG_SHUTDOWN 115
|
|
#define MSGINA_DLG_FORCE_LOGOFF 116
|
|
#define MSGINA_DLG_DISCONNECT 117
|
|
#define MSGINA_DLG_SWITCH_CONSOLE 118
|
|
#define MSGINA_DLG_SWITCH_FAILURE 119
|
|
#define MSGINA_DLG_SMARTCARD_INSERTED 120
|
|
#define MSGINA_DLG_SMARTCARD_REMOVED 121
|
|
|
|
// Additional flags that can be added to the
|
|
// MSGINA_DLG_USER_LOGOFF return code.
|
|
|
|
#define MSGINA_DLG_SHUTDOWN_FLAG 0x8000
|
|
#define MSGINA_DLG_REBOOT_FLAG 0x4000
|
|
#define MSGINA_DLG_SYSTEM_FLAG 0x2000 // System process was initiator
|
|
#define MSGINA_DLG_POWEROFF_FLAG 0x1000 // Poweroff after shutdown
|
|
#define MSGINA_DLG_SLEEP_FLAG 0x0800
|
|
#define MSGINA_DLG_SLEEP2_FLAG 0x0400
|
|
#define MSGINA_DLG_HIBERNATE_FLAG 0x0200
|
|
#define MSGINA_DLG_FLAG_MASK (MSGINA_DLG_SHUTDOWN_FLAG | MSGINA_DLG_REBOOT_FLAG | MSGINA_DLG_SYSTEM_FLAG | MSGINA_DLG_POWEROFF_FLAG | MSGINA_DLG_SLEEP_FLAG | MSGINA_DLG_SLEEP2_FLAG | MSGINA_DLG_HIBERNATE_FLAG)
|
|
|
|
// Define the input timeout delay for logon dialogs (seconds)
|
|
|
|
#define LOGON_TIMEOUT 120
|
|
|
|
// Define an external reference to the HINSTANCE of msgina.dll
|
|
|
|
EXTERN_C HINSTANCE hDllInstance;
|
|
|
|
// Functions used (must declare as C and be transparent in functionality).
|
|
|
|
EXTERN_C void _Gina_SasNotify (void *pWlxContext, DWORD dwSASType);
|
|
EXTERN_C BOOL _Gina_SetTimeout (void *pWlxContext, DWORD dwTimeout);
|
|
EXTERN_C INT_PTR _Gina_DialogBoxParam (void *pWlxContext, HINSTANCE hInstance, LPCWSTR pszTemplate, HWND hwndParent, DLGPROC pfnDlgProc, LPARAM lParam);
|
|
EXTERN_C INT_PTR _Gina_MessageBox (void *pWlxContext, HWND hwnd, LPCWSTR pszText, LPCWSTR pszCaption, UINT uiType);
|
|
EXTERN_C int _Gina_SwitchDesktopToUser (void *pWlxContext);
|
|
EXTERN_C INT_PTR _Gina_ShutdownDialog (void *pWlxContext, HWND hwndParent, DWORD dwExcludeItems);
|
|
EXTERN_C HANDLE _Gina_GetUserToken (void *pWlxContext);
|
|
EXTERN_C const WCHAR* _Gina_GetUsername (void *pWlxContext);
|
|
EXTERN_C const WCHAR* _Gina_GetDomain (void *pWlxContext);
|
|
EXTERN_C void _Gina_SetTextFields (HWND hwndDialog, const WCHAR *pwszUsername, const WCHAR *pwszDomain, const WCHAR *pwszPassword);
|
|
EXTERN_C BOOL _Gina_SetPasswordFocus (HWND hwndDialog);
|
|
|
|
// --------------------------------------------------------------------------
|
|
// This section contains declarations in the shell component of msgina used
|
|
// by the DS component of msgina.
|
|
// --------------------------------------------------------------------------
|
|
|
|
// These are return results from CW_LogonDialog_Init that inform the caller
|
|
// whether auto logon with no password should be performed, whether the regular
|
|
// Windows 2000 logon dialog should be displayed or whether the consumer windows
|
|
// external UI host will handle the logon information gathering.
|
|
|
|
#define SHELL_LOGONDIALOG_NONE 0
|
|
#define SHELL_LOGONDIALOG_LOGON 1
|
|
#define SHELL_LOGONDIALOG_EXTERNALHOST 2
|
|
|
|
#define SHELL_LOGONDIALOG_LOGGEDOFF 0
|
|
#define SHELL_LOGONDIALOG_RETURNTOWELCOME 1
|
|
#define SHELL_LOGONDIALOG_RETURNTOWELCOME_UNLOCK 2
|
|
|
|
#define SHELL_LOGONSTATUS_LOCK_MAGIC_NUMBER 48517
|
|
|
|
// Functions used (must declare as C and be transparent in functionality).
|
|
|
|
EXTERN_C NTSTATUS _Shell_DllMain (HINSTANCE hInstance, DWORD dwReason);
|
|
EXTERN_C NTSTATUS _Shell_Initialize (void *pWlxContext);
|
|
EXTERN_C NTSTATUS _Shell_Terminate (void);
|
|
EXTERN_C NTSTATUS _Shell_Reconnect (void);
|
|
EXTERN_C NTSTATUS _Shell_Disconnect (void);
|
|
|
|
EXTERN_C NTSTATUS _Shell_LogonDialog_StaticInitialize (void);
|
|
EXTERN_C NTSTATUS _Shell_LogonDialog_StaticTerminate (void);
|
|
EXTERN_C int _Shell_LogonDialog_Init (HWND hwndDialog, int iDialogType);
|
|
EXTERN_C void _Shell_LogonDialog_Destroy (void);
|
|
EXTERN_C BOOL _Shell_LogonDialog_UIHostActive (void);
|
|
EXTERN_C BOOL _Shell_LogonDialog_Cancel (void);
|
|
EXTERN_C BOOL _Shell_LogonDialog_LogonDisplayError (NTSTATUS status, NTSTATUS subStatus);
|
|
EXTERN_C void _Shell_LogonDialog_LogonCompleted (INT_PTR iDialogResult, const WCHAR *pszUsername, const WCHAR *pszDomain);
|
|
EXTERN_C void _Shell_LogonDialog_ShuttingDown (void);
|
|
EXTERN_C BOOL _Shell_LogonDialog_DlgProc (HWND hwndDialog, UINT uiMessage, WPARAM wParam, LPARAM lParam);
|
|
EXTERN_C void _Shell_LogonDialog_ShowUIHost (void);
|
|
EXTERN_C void _Shell_LogonDialog_HideUIHost (void);
|
|
|
|
EXTERN_C NTSTATUS _Shell_LogonStatus_StaticInitialize (void);
|
|
EXTERN_C NTSTATUS _Shell_LogonStatus_StaticTerminate (void);
|
|
EXTERN_C void _Shell_LogonStatus_Init (UINT uiStartType);
|
|
EXTERN_C void _Shell_LogonStatus_Destroy (UINT uiEndType);
|
|
EXTERN_C BOOL _Shell_LogonStatus_Exists (void);
|
|
EXTERN_C BOOL _Shell_LogonStatus_IsStatusWindow (HWND hwnd);
|
|
EXTERN_C BOOL _Shell_LogonStatus_IsSuspendAllowed (void);
|
|
EXTERN_C BOOL _Shell_LogonStatus_WaitForUIHost (void);
|
|
EXTERN_C void _Shell_LogonStatus_ShowStatusMessage (const WCHAR *pszMessage);
|
|
EXTERN_C void _Shell_LogonStatus_SetStateStatus (int iCode);
|
|
EXTERN_C void _Shell_LogonStatus_SetStateLogon (int iCode);
|
|
EXTERN_C void _Shell_LogonStatus_SetStateLoggedOn (void);
|
|
EXTERN_C void _Shell_LogonStatus_SetStateEnd (void);
|
|
EXTERN_C void _Shell_LogonStatus_NotifyWait (void);
|
|
EXTERN_C void _Shell_LogonStatus_NotifyNoAnimations (void);
|
|
EXTERN_C void _Shell_LogonStatus_SelectUser (const WCHAR *pszUsername, const WCHAR *pszDomain);
|
|
EXTERN_C void _Shell_LogonStatus_InteractiveLogon (const WCHAR *pszUsername, const WCHAR *pszDomain, WCHAR *pszPassword);
|
|
EXTERN_C void* _Shell_LogonStatus_GetUIHost (void);
|
|
EXTERN_C HANDLE _Shell_LogonStatus_ResetReadyEvent (void);
|
|
EXTERN_C void _Shell_LogonStatus_Show (void);
|
|
EXTERN_C void _Shell_LogonStatus_Hide (void);
|
|
EXTERN_C BOOL _Shell_LogonStatus_IsHidden (void);
|
|
|
|
// These are functions that implement exports. Stubs are declared
|
|
// in the DS depot to allow the import lib to built without dependency.
|
|
|
|
EXTERN_C LONG _ShellGetUserList (BOOL fRemoveGuest, DWORD *pdwUserCount, void* *pUserList);
|
|
EXTERN_C BOOL _ShellIsSingleUserNoPassword (WCHAR *pwszUsername, WCHAR *pwszDomain);
|
|
EXTERN_C BOOL _ShellIsFriendlyUIActive (void);
|
|
EXTERN_C BOOL _ShellIsMultipleUsersEnabled (void);
|
|
EXTERN_C BOOL _ShellIsRemoteConnectionsEnabled (void);
|
|
EXTERN_C BOOL _ShellEnableFriendlyUI (BOOL fEnable);
|
|
EXTERN_C BOOL _ShellEnableMultipleUsers (BOOL fEnable);
|
|
EXTERN_C BOOL _ShellEnableRemoteConnections (BOOL fEnable);
|
|
EXTERN_C DWORD _ShellTurnOffDialog (HWND hwndParent);
|
|
EXTERN_C int _ShellACPIPowerButtonPressed (void *pWlxContext, UINT uiEventType, BOOL fLocked);
|
|
EXTERN_C BOOL _ShellIsSuspendAllowed (void);
|
|
EXTERN_C void _ShellStatusHostBegin (UINT uiStartType);
|
|
EXTERN_C void _ShellStatusHostEnd (UINT uiEndType);
|
|
EXTERN_C void _ShellStatusHostShuttingDown (void);
|
|
EXTERN_C void _ShellStatusHostPowerEvent (void);
|
|
EXTERN_C BOOL _ShellSwitchWhenInteractiveReady (SWITCHTYPE eSwitchType, void *pWlxContext);
|
|
EXTERN_C HRESULT _ShellDimScreen (IUnknown* *ppIUnknown, HWND* phwndDimmed);
|
|
EXTERN_C void _ShellInstallAccountFilterData (void);
|
|
EXTERN_C DWORD _ShellSwitchUser (BOOL fWait);
|
|
EXTERN_C int _ShellIsUserInteractiveLogonAllowed (const WCHAR *pwszUsername);
|
|
EXTERN_C void _ShellNotifyThemeUserChange (USERLOGTYPE eUserLogType, HANDLE hToken);
|
|
EXTERN_C DWORD _ShellReturnToWelcome (BOOL fUnlock);
|
|
EXTERN_C DWORD _ShellStartCredentialServer (const WCHAR *pwszUsername, const WCHAR *pwszDomain, WCHAR *pwszPassword, DWORD dwTimeout);
|
|
EXTERN_C void _ShellAcquireLogonMutex (void);
|
|
EXTERN_C void _ShellReleaseLogonMutex (BOOL fSignalEvent);
|
|
EXTERN_C void _ShellSignalShutdown (void);
|
|
EXTERN_C void _ShellStatusHostHide (void);
|
|
EXTERN_C void _ShellStatusHostShow (void);
|
|
|
|
#endif /* _MSGINA_ */
|
|
|
|
// --------------------------------------------------------------------------
|
|
// This section contains functions exported by ordinal from the shell
|
|
// component of msgina.
|
|
// --------------------------------------------------------------------------
|
|
|
|
GINASTDAPI_(LONG) ShellGetUserList (BOOL fRemoveGuest, DWORD *pdwUserCount, void* *pUserList);
|
|
GINASTDAPI_(BOOL) ShellIsSingleUserNoPassword (WCHAR *pwszUsername, WCHAR *pwszDomain);
|
|
GINASTDAPI_(BOOL) ShellIsFriendlyUIActive (void);
|
|
GINASTDAPI_(BOOL) ShellIsMultipleUsersEnabled (void);
|
|
GINASTDAPI_(BOOL) ShellIsRemoteConnectionsEnabled (void);
|
|
GINASTDAPI_(BOOL) ShellEnableFriendlyUI (BOOL fEnable);
|
|
GINASTDAPI_(BOOL) ShellEnableMultipleUsers (BOOL fEnable);
|
|
GINASTDAPI_(BOOL) ShellEnableRemoteConnections (BOOL fEnable);
|
|
GINASTDAPI_(DWORD) ShellTurnOffDialog (HWND hwndParent);
|
|
GINASTDAPI_(int) ShellACPIPowerButtonPressed (void *pWlxContext, UINT uiEventType, BOOL fLocked);
|
|
GINASTDAPI_(BOOL) ShellIsSuspendAllowed (void);
|
|
GINASTDAPI_(void) ShellStatusHostBegin (UINT uiStartType);
|
|
GINASTDAPI_(void) ShellStatusHostEnd (UINT uiEndType);
|
|
GINASTDAPI_(void) ShellStatusHostShuttingDown (void);
|
|
GINASTDAPI_(void) ShellStatusHostPowerEvent (void);
|
|
GINASTDAPI_(BOOL) ShellSwitchWhenInteractiveReady (SWITCHTYPE eSwitchType, void *pWlxContext);
|
|
GINASTDAPI ShellDimScreen (IUnknown* *ppIUnknown, HWND* phwndDimmed);
|
|
GINASTDAPI_(void) ShellInstallAccountFilterData (void);
|
|
GINASTDAPI_(DWORD) ShellSwitchUser (BOOL fWait);
|
|
GINASTDAPI_(int) ShellIsUserInteractiveLogonAllowed (const WCHAR *pwszUsername);
|
|
GINASTDAPI_(void) ShellNotifyThemeUserChange (USERLOGTYPE eUserLogType, HANDLE hToken);
|
|
GINASTDAPI_(DWORD) ShellReturnToWelcome (BOOL fUnlock);
|
|
GINASTDAPI_(DWORD) ShellStartCredentialServer (const WCHAR *pwszUsername, const WCHAR *pwszDomain, WCHAR *pwszPassword, DWORD dwTimeout);
|
|
GINASTDAPI_(void) ShellAcquireLogonMutex (void);
|
|
GINASTDAPI_(void) ShellReleaseLogonMutex (BOOL fSignalEvent);
|
|
GINASTDAPI_(void) ShellSignalShutdown (void);
|
|
GINASTDAPI_(void) ShellStatusHostHide (void);
|
|
GINASTDAPI_(void) ShellStatusHostShow (void);
|
|
|
|
#endif /* _MSGinaExports_ */
|
|
|