//----------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997. // // File: A U N I O B J . H // // Contents: CAtmUniCfg interface declaration // // Notes: // // Author: tongl 21 Mar 1997 // //----------------------------------------------------------------------- #pragma once #include #include #include #include "resource.h" #include "atmutil.h" #include "pvcdata.h" // Constants static const WCHAR c_szPVC[] = L"PVC"; // Reg key value names ( non-configurable parameters ) static const WCHAR c_szMaxActiveSVCs[] = L"MaxActiveSVCs"; static const WCHAR c_szMaxSVCsInProgress[] = L"MaxSVCsInProgress"; static const WCHAR c_szMaxPMPSVCs[] = L"MaxPMPSVCs"; static const WCHAR c_szMaxActiveParties[] = L"MaxActiveParties"; static const WCHAR c_szMaxPartiesInProgress[] = L"MaxPartiesInProgress"; // Default Reg key values ( non-configurable parameters ) static const c_dwWksMaxActiveSVCs = 256; static const c_dwSrvMaxActiveSVCs = 1024; static const c_dwWksMaxSVCsInProgress = 8; static const c_dwSrvMaxSVCsInProgress = 32; static const c_dwWksMaxPMPSVCs = 32; static const c_dwSrvMaxPMPSVCs = 64; static const c_dwWksMaxActiveParties = 64; static const c_dwSrvMaxActiveParties = 512; static const c_dwWksMaxPartiesInProgress = 8; static const c_dwSrvMaxPartiesInProgress = 32; // number of property sheet pages static const INT c_cUniPages = 1; ///////////////////////////////////////////////////////////////////////////// // CAtmUniCfg class ATL_NO_VTABLE CAtmUniCfg : public CComObjectRoot, public CComCoClass, public INetCfgComponentControl, public INetCfgComponentSetup, public INetCfgComponentNotifyBinding, public INetCfgComponentPropertyUi { public: CAtmUniCfg(); ~CAtmUniCfg(); BEGIN_COM_MAP(CAtmUniCfg) COM_INTERFACE_ENTRY(INetCfgComponentControl) COM_INTERFACE_ENTRY(INetCfgComponentSetup) COM_INTERFACE_ENTRY(INetCfgComponentNotifyBinding) COM_INTERFACE_ENTRY(INetCfgComponentPropertyUi) END_COM_MAP() // DECLARE_NOT_AGGREGATABLE(CAtmUniCfg) // Remove the comment from the line above if you don't want your object to // support aggregation. The default is to support it DECLARE_REGISTRY_RESOURCEID(IDR_REG_AUNICFG) // INetCfgComponentControl STDMETHOD (Initialize) ( IN INetCfgComponent* pIComp, IN INetCfg* pINetCfg, IN BOOL fInstalling); STDMETHOD (ApplyRegistryChanges) (); STDMETHOD (ApplyPnpChanges) ( IN INetCfgPnpReconfigCallback* pICallback) { return S_OK; } STDMETHOD (CancelChanges) (); STDMETHOD (Validate) (); // INetCfgComponentSetup STDMETHOD (Install) (DWORD dwSetupFlags); STDMETHOD (Upgrade) (DWORD dwSetupFlags, DWORD dwUpgradeFomBuildNo ); STDMETHOD (ReadAnswerFile) (PCWSTR pszAnswerFile, PCWSTR pszAnswerSection); STDMETHOD (Removing)(); // INetCfgNotifyBinding STDMETHOD (QueryBindingPath) (DWORD dwChangeFlag, INetCfgBindingPath* pncbp); STDMETHOD (NotifyBindingPath) (DWORD dwChangeFlag, INetCfgBindingPath* pncbp); // INetCfgProperties STDMETHOD (QueryPropertyUi) ( IN IUnknown* pUnk); STDMETHOD (SetContext) ( IN IUnknown* pUnk); STDMETHOD (MergePropPages) ( IN OUT DWORD* pdwDefPages, OUT LPBYTE* pahpspPrivate, OUT UINT* pcPrivate, IN HWND hwndParent, OUT PCWSTR* pszStartPage); STDMETHOD (ValidateProperties) ( HWND hwndSheet); STDMETHOD (CancelProperties) (); STDMETHOD (ApplyProperties) (); // help functions CUniAdapterInfo * GetSecondMemoryAdapterInfo() { return m_pSecondMemoryAdapterInfo; } void SetSecondMemoryModified() { m_fSecondMemoryModified = TRUE; } private: // Place to keep the INetCfg pointer INetCfg * m_pnc; // Place to keep corresponding component object INetCfgComponent * m_pnccUni; INetCfgComponent * m_pnccRwan; // Place to keep the pointer to UI context IUnknown * m_pUnkContext; // (STL) List of adapter info structures UNI_ADAPTER_LIST m_listAdapters; // Guid of the current connection tstring m_strGuidConn; // Second memory adapter info structures CUniAdapterInfo * m_pSecondMemoryAdapterInfo; // Do we need to update registry on Apply BOOL m_fSaveRegistry; BOOL m_fUIParamChanged; BOOL m_fSecondMemoryModified; // property page class CUniPage * m_uniPage; // Load parameters from registry HRESULT HrLoadSettings(); // Save parameters to registry HRESULT HrSaveSettings(); // Add/Remove adapters from first memory state HRESULT HrAddAdapter(INetCfgComponent * pncc); HRESULT HrRemoveAdapter(INetCfgComponent * pncc); HRESULT HrBindAdapter(INetCfgComponent * pnccAdapter); HRESULT HrUnBindAdapter(INetCfgComponent * pnccAdapter); // Set defaults for statis parameters HRESULT HrSaveDefaultSVCParam(HKEY hkey); // Check if a card guid string is on m_listAdapters BOOL fIsAdapterOnList(PCWSTR pszBindName, CUniAdapterInfo ** ppAdapterInfo); HRESULT HrSetConnectionContext(); HRESULT HrSetupPropSheets(HPROPSHEETPAGE ** pahpsp, INT * pcPages); // Have we already load PVC info into memory BOOL m_fPVCInfoLoaded; // load and save adapter PVC info to first memory HRESULT HrLoadPVCRegistry(); HRESULT HrLoadAdapterPVCRegistry(HKEY hkeyAdapterParam, CUniAdapterInfo * pAdapterInfo); HRESULT HrSaveAdapterPVCRegistry(HKEY hkeyAdapterParam, CUniAdapterInfo * pAdapterInfo); // load and save adapter parameters to second memory HRESULT HrLoadAdapterPVCInfo(); HRESULT HrSaveAdapterPVCInfo(); };