|
|
// --------------------------------------------------------------------------
// 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_ */
|