Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

193 lines
8.2 KiB

extern "C" {
#include "ntddndis.h"
#include "wzcsapi.h"
}
#pragma once
////////////////////////////////////////////////////////////////////////
// CWZCConfig related stuff
//
// flags used in CWZCConfig::m_dwFlags
// the entry is preferred (user defined)
#define WZC_DESCR_PREFRD 0x00000001
// the entry is currently visible in the air
#define WZC_DESCR_VISIBLE 0x00000002
// the entry is currently active (the one plumbed to the adapter)
#define WZC_DESCR_ACTIVE 0x00000004
// object attached to each entry in the list
class CWZCConfig
{
public:
class CWZCConfig *m_pPrev, *m_pNext;
INT m_nListIndex; // index of the entry in the list
DWORD m_dwFlags; // WZC_DESCR* flags
WZC_WLAN_CONFIG m_wzcConfig; // all WZC configuration
class CEapolConfig *m_pEapolConfig; // all 802.1x configuration
public:
// constructor
CWZCConfig(DWORD dwFlags, PWZC_WLAN_CONFIG pwzcConfig);
// destructor
~CWZCConfig();
// checks whether this SSID matches with the one from pwzcConfig
BOOL Match(PWZC_WLAN_CONFIG pwzcConfig);
// checks whether this configuration is weaker than the one given as parameter
BOOL Weaker(PWZC_WLAN_CONFIG pwzcConfig);
// add the Configuration to the list of entries in the list view
DWORD AddConfigToListView(HWND hwndLV, INT nPos);
};
////////////////////////////////////////////////////////////////////////
// CWZeroConfPage related stuff
//
// flags used to select state & item images
#define WZCIMG_PREFR_NOSEL 0 // empty check box
#define WZCIMG_PREFR_SELECT 1 // checked check box
#define WZCIMG_INFRA_AIRING 2 // infra icon
#define WZCIMG_INFRA_ACTIVE 3 // infra icon + blue circle
#define WZCIMG_INFRA_SILENT 4 // infra icon + red cross
#define WZCIMG_ADHOC_AIRING 5 // adhoc icon
#define WZCIMG_ADHOC_ACTIVE 6 // adhoc icon + blue circle
#define WZCIMG_ADHOC_SILENT 7 // adhoc icon + red cross
// flags indicating various operational actions.
// flags are used in:
// AddUniqueConfig()
// RefreshListView()
#define WZCADD_HIGROUP 0x00000001 // add in front of its group
#define WZCADD_OVERWRITE 0x00000002 // overwrite data
#define WZCOP_VLIST 0x00000004 // operate on the visible list
#define WZCOP_PLIST 0x00000008 // operate on the preferred list
class CWZCConfigPage;
class CWLANAuthenticationPage;
class CWZeroConfPage: public CPropSheetPage
{
INetConnection * m_pconn;
INetCfg * m_pnc;
IUnknown * m_punk;
const DWORD * m_adwHelpIDs;
// zero conf data on the interface
BOOL m_bHaveWZCData;
INTF_ENTRY m_IntfEntry;
DWORD m_dwOIDFlags;
UINT m_nTimer;
HCURSOR m_hCursor;
// handles to the controls
HWND m_hckbEnable; // checkbox for enabling / disabling the service
HWND m_hwndVLV; // list ctrl holding the visible configurations
HWND m_hwndPLV; // list ctrl holding the preferred configurations
HWND m_hbtnCopy; // "Copy" button
HWND m_hbtnRfsh; // "Refresh" button
HWND m_hbtnAdd; // "Add" button
HWND m_hbtnRem; // "Remove" button
HWND m_hbtnUp; // "Up" button
HWND m_hbtnDown; // "Down" button
HWND m_hbtnAdvanced; // "Advanced" button
HWND m_hbtnProps; // "Properties" button
HWND m_hlblVisNet; // "Visible Networks" label
HWND m_hlblPrefNet; // "Prefered Networks" label
HWND m_hlblAvail; // "Available networks" description
HWND m_hlblPrefDesc; // "Prefered Networks" description
HWND m_hlblAdvDesc; // "Advacned" description
// Handle to the images
HIMAGELIST m_hImgs; // list items images
HICON m_hIcoUp; // "Up" icon
HICON m_hIcoDown; // "Down" icon
// current Infrastructure mode
UINT m_dwCtlFlags;
// internal lists
CWZCConfig *m_pHdVList; // list of visible configs
CWZCConfig *m_pHdPList; // list of preferred configs
private:
DWORD InitListViews();
DWORD GetOIDs(DWORD dwInFlags, LPDWORD pdwOutFlags);
DWORD HelpCenter(LPCTSTR wszTopic);
public:
// misc public handlers
BOOL IsWireless();
BOOL IsConfigInList(CWZCConfig *pHdList, PWZC_WLAN_CONFIG pwzcConfig, CWZCConfig **ppMatchingConfig = NULL);
// calls operating only on the internal lists (m_pHdVList or m_pHdPList)
DWORD AddUniqueConfig(
DWORD dwOpFlags, // operation specific flags (see WZCADD_* flags)
DWORD dwEntryFlags, // flags for the config to be inserted
PWZC_WLAN_CONFIG pwzcConfig, // WZC Configuration
CEapolConfig *pEapolConfig = NULL, // [in] pointer to the Eapol configuration object (if available)
CWZCConfig **ppNewNode = NULL); // [out] gives the pointer of the newly created config object
DWORD FillVisibleList(PWZC_802_11_CONFIG_LIST pwzcVList);
DWORD FillPreferredList(PWZC_802_11_CONFIG_LIST pwzcPList);
DWORD FillCurrentConfig(PINTF_ENTRY pIntf);
DWORD RefreshListView(DWORD dwFlags);
DWORD RefreshButtons();
DWORD SwapConfigsInListView(INT nIdx1, INT nIdx2, CWZCConfig * & pConfig1, CWZCConfig * & pConfig2);
DWORD SavePreferredConfigs(PINTF_ENTRY pIntf);
public:
// UI handlers
BEGIN_MSG_MAP(CWZeroConfPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_HELP, OnHelp)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
NOTIFY_CODE_HANDLER(PSN_APPLY, OnApply)
NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDblClick)
NOTIFY_CODE_HANDLER(NM_CLICK, OnClick)
NOTIFY_CODE_HANDLER(NM_RETURN, OnReturn)
NOTIFY_CODE_HANDLER(LVN_ITEMCHANGED, OnItemChanged)
COMMAND_ID_HANDLER(IDC_WZC_CHK_EnableWZC, OnChkWZCEnable)
COMMAND_ID_HANDLER(IDC_WZC_BTN_COPY, OnPushAddOrCopy)
COMMAND_ID_HANDLER(IDC_WZC_BTN_RFSH, OnPushRefresh)
COMMAND_ID_HANDLER(IDC_WZC_BTN_ADD, OnPushAddOrCopy)
COMMAND_ID_HANDLER(IDC_WZC_BTN_REM, OnPushRemove)
COMMAND_ID_HANDLER(IDC_WZC_BTN_UP, OnPushUpOrDown)
COMMAND_ID_HANDLER(IDC_WZC_BTN_DOWN, OnPushUpOrDown)
COMMAND_ID_HANDLER(IDC_ADVANCED, OnPushAdvanced)
COMMAND_ID_HANDLER(IDC_PROPERTIES, OnPushProperties)
END_MSG_MAP()
CWZeroConfPage(
IUnknown* punk,
INetCfg* pnc,
INetConnection* pconn,
const DWORD * adwHelpIDs = NULL);
~CWZeroConfPage();
// initialization / termination members
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnApply(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
// Help related members
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// Timer related members
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// List actions
LRESULT OnDblClick(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnClick(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnReturn(int idCtrl, LPNMHDR pnmh, BOOL& fHandled);
LRESULT OnItemChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
// Controls actions
LRESULT OnChkWZCEnable(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPushAddOrCopy(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPushRefresh(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPushUpOrDown(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPushRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPushAdvanced(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPushProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
private:
HRESULT _DoProperties(HWND hwndLV, int iItem);
INT _DoModalPropSheet(CWZCConfigPage *pPpWzcPage, CWLANAuthenticationPage *pPpAuthPage, BOOL bCustomizeTitle = FALSE);
// The advanced dialog
static INT_PTR CALLBACK AdvancedDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
};