windows-nt/Source/XPSP1/NT/net/config/shell/lanui/wzcpage.h
2020-09-26 16:20:57 +08:00

119 lines
4.7 KiB
C++

extern "C" {
#include "ntddndis.h"
#include "wzcsapi.h"
}
#pragma once
////////////////////////////////////////////////////////////////////////
// CWZCConfigPage related stuff
//
// flags used for CWZCConfigProps::m_dwFlags
#define WZCDLG_PROPS_RWALL 0x000000ff // enable all settings for writing
#define WZCDLG_PROPS_RWSSID 0x00000001 // enable SSID for writing
#define WZCDLG_PROPS_RWINFR 0x00000002 // enable Infrastructure Mode for writing
#define WZCDLG_PROPS_RWAUTH 0x00000004 // enable Authentication Mode for writing
#define WZCDLG_PROPS_RWWEP 0x00000010 // enable the WEP entry for selecting
#define WZCDLG_PROPS_ONEX_CHECK 0x00000100 // correlate the 802.1X state with the existence of the key
#define WZCDLG_PROPS_DEFOK 0x00002000 // "OK" = defpushbutton (otherwise, "Cancel"=defpushbutton)
// utility macro to convert a hexa digit into its value
#define HEX(c) ((c)<='9'?(c)-'0':(c)<='F'?(c)-'A'+0xA:(c)-'a'+0xA)
// defines used for the valid WEP Key indices
#define WZC_WEPKIDX_NDIGITS 16 // more than we ever need
#define WZC_WEPKIDX_MIN 1
#define WZC_WEPKIDX_MAX 4
// defines legal lengths for the WEP Key material
#define WZC_WEPKMAT_40_ASC 5
#define WZC_WEPKMAT_40_HEX 10
#define WZC_WEPKMAT_104_ASC 13
#define WZC_WEPKMAT_104_HEX 26
#define WZC_WEPKMAT_128_ASC 16
#define WZC_WEPKMAT_128_HEX 32
class CEapolConfig;
class CWZCConfig;
class CWZCConfigPage:
public CPropSheetPage
{
protected:
BEGIN_MSG_MAP(CWZCConfigPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_HELP, OnHelp)
NOTIFY_CODE_HANDLER(PSN_APPLY, OnOK)
COMMAND_ID_HANDLER(IDC_SHAREDMODE, OnUsePW)
COMMAND_ID_HANDLER(IDC_USEPW, OnUsePW)
COMMAND_ID_HANDLER(IDC_USEHARDWAREPW, OnUseHWPassword)
COMMAND_ID_HANDLER(IDC_WZC_EDIT_KMat, OnWepKMatCmd)
COMMAND_ID_HANDLER(IDC_ADHOC, OnCheckEapolAllowed)
END_MSG_MAP()
BOOL m_bKMatTouched; // indicator whether the wep key material has been touched
// handle to the dialog
HWND m_hwndDlg;
// Handles to all the UI controls managed
// by this class (all related to Wireless
// Zero Configuration)
HWND m_hwndEdSSID; // "Service Set Identifier:" edit
HWND m_hwndChkAdhoc; // "Adhoc" vs "Infra" checkbox
HWND m_hwndChkShared; // "Use shared auth mode" checkbox
HWND m_hwndUsePW; // "Use Password" checkbox
// wep key related controls
HWND m_hwndUseHardwarePW; // "Use password from network hardware" check box
HWND m_hwndLblKMat; // "Key material" label
HWND m_hwndLblKMat2; // "Confirm Key material" label
HWND m_hwndEdKMat; // "Key material" edit
HWND m_hwndEdKMat2; // "Confirm Key material" edit
HWND m_hwndLblKIdx; // "Key index" label
HWND m_hwndEdKIdx; // "Key index" edit
// Internal members
DWORD m_dwFlags;
// Pointer to the EAPOL configuration for this network
CEapolConfig *m_pEapolConfig;
// automatically enable/disable state for all the WepK related controls
DWORD EnableWepKControls();
// initializes WEP controls
DWORD InitWepKControls();
// checks the validity of the WEP Key material
DWORD CheckWepKMaterial(LPSTR *ppszKMat, DWORD *pdwKeyFlags);
// parses & copies the WEP Key material from the parameter into the m_wzcConfig object
DWORD CopyWepKMaterial(LPSTR szKMat);
// sets the EAPOL Locked bit
DWORD SetEapolAllowedState();
public:
// wzc configuration settings
WZC_WLAN_CONFIG m_wzcConfig;
// class constructor
CWZCConfigPage(DWORD dwFlags = 0);
// initialize the wzc config data
DWORD UploadWzcConfig(CWZCConfig *pwzcConfig);
// copy a reference to the EAPOL configuration object
DWORD UploadEapolConfig(CEapolConfig *pEapolConfig);
// Sets the dialog flags
DWORD SetFlags(DWORD dwMask, DWORD dwNewFlags);
// Dialog related members
LRESULT OnInitDialog (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnOK(UINT idCtrl, LPNMHDR pnmh, BOOL& bHandled);
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnUsePW(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnUseHWPassword(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnWepKMatCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCheckEapolAllowed(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
};