windows-nt/Source/XPSP1/NT/ds/win32/credui/dialogs.hpp

235 lines
5.2 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
//=============================================================================
// Copyright (c) 2000 Microsoft Corporation
//
// dialogs.hpp
//
// Credential manager user interface classes used to get credentials.
//
// Created 02/29/2000 johnstep (John Stephens)
//=============================================================================
#ifndef __DIALOGS_HPP__
#define __DIALOGS_HPP__
//-----------------------------------------------------------------------------
#include "controls.hpp"
//-----------------------------------------------------------------------------
// Types
//-----------------------------------------------------------------------------
struct CREDUI_CHANGE_PASSWORD_INFO
{
CONST WCHAR *UserName;
WCHAR *Password;
ULONG PasswordMaxChars;
CreduiBalloonTip BalloonTip;
CreduiPasswordBox OldPasswordBox;
CreduiPasswordBox NewPasswordBox;
CreduiPasswordBox ConfirmPasswordBox;
};
//-----------------------------------------------------------------------------
// Functions
//-----------------------------------------------------------------------------
static
INT_PTR
CALLBACK
CreduiChangePasswordCallback(
HWND changePasswordWindow,
UINT message,
WPARAM wParam,
LPARAM lParam
);
extern
BOOL
CreduiChangeDomainPassword(
HWND parentWindow,
CONST WCHAR *userName,
WCHAR *password,
ULONG passwordMaxChars
);
//-----------------------------------------------------------------------------
// CreduiPasswordDialog Class
//-----------------------------------------------------------------------------
class CreduiPasswordDialog
{
public:
CreduiPasswordDialog(
IN BOOL DoingCommandLine,
IN BOOL DelayCredentialWrite,
IN DWORD credCategory,
CREDUI_INFO *uiInfo,
CONST WCHAR *targetName,
WCHAR *userName,
ULONG userNameMaxChars,
WCHAR *password,
ULONG passwordMaxChars,
BOOL *save,
DWORD flags,
CtxtHandle *securityContext,
DWORD authError,
DWORD *result
);
~CreduiPasswordDialog();
private:
// Variables:
DWORD Result;
DWORD AuthError;
HWND DialogWindow;
HWND CredControlWindow;
DWORD CredControlStyle;
// User interface control state flags:
enum
{
DISABLED_DIALOG = 0x0001,
DISABLED_CONTROL_CRED = 0x0002,
DISABLED_CONTROL_OK = 0x0004,
};
BOOL DisabledControlMask;
BOOL DelayCredentialWrite;
BOOL EncryptedVisiblePassword;
DWORD Flags;
//
// CredCategory defines the type of the credential
//
DWORD CredCategory;
#define DOMAIN_CATEGORY 0
#define USERNAME_TARGET_CATEGORY CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS
#define GENERIC_CATEGORY CREDUI_FLAGS_GENERIC_CREDENTIALS
BOOL Save;
WCHAR *TargetName;
WCHAR *UserOrTargetName;
CtxtHandle *SecurityContext;
CREDUI_INFO UiInfo;
WCHAR *UserName;
ULONG UserNameMaxChars;
WCHAR *Password;
ULONG PasswordMaxChars;
BOOL fInitialSaveState; // initial state of the Save checkbox
BOOL fPassedUsername;
BOOL fPasswordOnly;
BOOL FirstPaint;
CONST CREDUI_BALLOON *CredBalloon;
enum
{
PASSWORD_UNINIT = 0,
PASSWORD_INIT = 1,
PASSWORD_CHANGED = 2
};
DWORD PasswordState;
LONG ResizeTop;
LONG ResizeDelta;
// Functions:
BOOL InitWindow(HWND dialogWindow);
VOID SelectAndSetWindowCaption();
VOID SelectAndSetWindowMessage();
VOID Enable(BOOL enable = TRUE);
DWORD HandleOk();
void SetCredTargetFromInfo();
DWORD UsernameHandleOk();
DWORD FinishHandleOk();
static LRESULT CALLBACK CmdLineMessageHandlerCallback(
HWND window,
UINT message,
WPARAM wParam,
LPARAM lParam
);
LRESULT
CreduiPasswordDialog::CmdLineMessageHandler(
UINT message,
WPARAM wParam,
LPARAM lParam
);
static INT_PTR CALLBACK DialogMessageHandlerCallback(
HWND dialogWindow,
UINT message,
WPARAM wParam,
LPARAM lParam
);
INT_PTR DialogMessageHandler(
UINT message,
WPARAM wParam,
LPARAM lParam
);
static BOOL CALLBACK ResizeDialogCallback(
HWND childWindow,
LPARAM lParam);
CREDENTIAL_TARGET_INFORMATION *TargetInfo;
CREDENTIAL *PasswordCredential;
CREDENTIAL *OldCredential;
CREDENTIAL NewCredential;
WCHAR OldUserName[CRED_MAX_USERNAME_LENGTH + 1];
WCHAR NewTargetName[CRED_MAX_STRING_LENGTH + 1];
WCHAR NewTargetAlias[CRED_MAX_STRING_LENGTH + 1];
SSOPACKAGE SSOPackage;
DWORD dwIDDResource;
RECT rcBrand;
HBITMAP hBrandBmp;
DWORD MaximumPersist;
DWORD MaximumPersistSso;
//
// Data specific to command line
//
DWORD
CmdLineDialog(
VOID
);
HWND CmdLineWindow;
BOOL DoingCommandLine;
static LONG Registered;
DWORD
CmdlinePasswordPrompt(
VOID
);
// Functions:
BOOL CompleteUserName();
VOID SelectBestTargetName(BOOL serverOnly);
};
//-----------------------------------------------------------------------------
#endif // __DIALOGS_HPP__