|
|
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); };
|