#ifndef _CONNMGR_H_ #define _CONNMGR_H_ ////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000 Microsoft Corporation // // Module: ConnMgr.h // // Author: Dan Elliott // // Abstract: // // Environment: // Whistler // // Revision History: // ////////////////////////////////////////////////////////////////////////////// #include #include #include #include #define NUM_PROXY_OPTIONS 6 class CObCommunicationManager; ////////////////////////////////////////////////////////////////////////////// // // CConnectionManager // class CConnectionManager { public: // operations CConnectionManager(); ~CConnectionManager( ); STDMETHOD(GetCapabilities)( DWORD* pdwCapabilities ); STDMETHOD(SetPreferredConnection)( const DWORD dwType, BOOL* pfSupportedType ); STDMETHOD(GetPreferredConnection)( DWORD* pdwPreferred ) { if (NULL == pdwPreferred) { MYASSERT(NULL != pdwPreferred); return E_POINTER; } *pdwPreferred = m_dwPreferredConnection; return S_OK; } HRESULT CConnectionManager::GetPreferredConnectionName( LPWSTR szConnectionName, DWORD cchConnectionName ); STDMETHOD(ConnectedToInternet)( BOOL* pfConnected ); STDMETHOD(ConnectedToInternetEx)( BOOL* pfConnected ); STDMETHOD(AsyncConnectedToInternetEx)( const HWND hwnd ); STDMETHOD(GetConnectionCount)( DWORD* pcConnections ) { if (NULL == pcConnections) { MYASSERT(NULL != pcConnections); return E_POINTER; } // Currently phone connections are supported via CEnumModems and RAS. // Until they are supported via this object only return count of LAN // connections. // *pcConnections = m_cLanConnections; return S_OK; } STDMETHOD(SetPreferredConnectionTcpipProperties)( BOOL fAutoIPAddress, DWORD StaticIp_A, DWORD StaticIp_B, DWORD StaticIp_C, DWORD StaticIp_D, DWORD SubnetMask_A, DWORD SubnetMask_B, DWORD SubnetMask_C, DWORD SubnetMask_D, DWORD DefGateway_A, DWORD DefGateway_B, DWORD DefGateway_C, DWORD DefGateway_D, BOOL fAutoDns, DWORD DnsPref_A, DWORD DnsPref_B, DWORD DnsPref_C, DWORD DnsPref_D, DWORD DnsAlt_A, DWORD DnsAlt_B, DWORD DnsAlt_C, DWORD DnsAlt_D ); BOOL IsValid( ) const { return (CONNECTIONTYPE_INVALID != m_dwConnectionCapabilities); } // IsValid void UseWinntProxySettings(); void DisableWinntProxySettings(); STDMETHOD(GetProxySettings)( BOOL* pbUseAuto, BOOL* pbUseScript, BSTR* pszScriptUrl, BOOL* pbUseProxy, BSTR* pszProxy ); STDMETHOD(SetProxySettings)( BOOL bUseAuto, BOOL bUseScript, BSTR szScriptUrl, BOOL bUseProxy, BSTR szProxy ); STDMETHOD(GetPublicLanCount)( int* pcPublicLan ); void SetExclude1394( BOOL bExclude ) { m_bExclude1394 = bExclude; } HRESULT EnumPublicConnections( OUT PSTRINGLIST* pList ); protected: // operations protected: // data private: // operations BOOL LanConnectionReady(); HRESULT SetProxyBlanket( IUnknown* pUnk ); void DeterminePreferredConnection(); void GetPreferredConnection(); HRESULT SetTcpipProperties( GUID guid, REMOTE_IPINFO* pipInfo ); HRESULT GetNetCfgInterface( BOOL fNeedWriteLock, INetCfg** ppNetCfg ); void ReleaseNetCfgInterface( INetCfg* pNetCfg, BOOL fHasWriteLock ); HRESULT GetTcpipPrivateInterface( INetCfg* pNetCfg, ITcpipProperties** ppTcpipProperties ); BOOL IsEnabledConnection( NETCON_PROPERTIES* pprops ); BOOL GetInternetHandleForPinging( HINTERNET* phInternet ); BOOL ApplyWinntProxySettings(); BOOL SaveProxySettings(); void RestoreProxySettings(); BOOL AllocProxyOptionList( INTERNET_PER_CONN_OPTION_LIST* pList ); void FreeProxyOptionList( INTERNET_PER_CONN_OPTION_LIST* pList ); void DisableRasAutodial(); void RestoreRasAutoDial(); HRESULT Enum1394Adapters( OUT PSTRINGLIST* pList ); BOOL Is1394Adapter( IN GUID* pguid ); HRESULT EnumPublicAdapters( OUT PSTRINGLIST* pList ); inline BOOL HasModem() { return (BOOL)(CONNECTIONTYPE_MODEM & m_dwConnectionCapabilities); } inline BOOL HasIcs() { return (BOOL)(CONNECTIONTYPE_LAN_ICS & m_dwConnectionCapabilities); } inline BOOL HasBroadband() { return (BOOL)(CONNECTIONTYPE_LAN_BROADBAND & m_dwConnectionCapabilities); } inline BOOL HasConnection( const DWORD dwType ) { return (BOOL)(dwType & m_dwConnectionCapabilities); } inline void AddConnectionCapability( DWORD dwType ) { m_dwConnectionCapabilities |= dwType; } inline void ClearConnectionCapability( DWORD dwType ) { m_dwConnectionCapabilities &= ~dwType; } // Explicitly disallow copy constructor and assignment operator. // CConnectionManager( const CConnectionManager& rhs ); CConnectionManager& operator=( const CConnectionManager& rhs ); private: // data // Bitmask of connection types supported by the system // DWORD m_dwConnectionCapabilities; // Preferred connection type to use. // DWORD m_dwPreferredConnection; // Preferred connection // INetConnection* m_pPreferredConnection; // Count of the LAN connections in the system (includes ICS) // DWORD m_cLanConnections; // Count of the phone connections in the system // DWORD m_cPhoneConnections; HINTERNET m_hInternetPing; // Proxy settings // BOOL m_bUseProxy; BOOL m_bProxySaved; BOOL m_bProxyApplied; INTERNET_PER_CONN_OPTION_LIST m_CurrentProxySettings; DWORD m_dwRasAutodialDisable; static const DWORD RAS_AUTODIAL_DISABLED; static const DWORD RAS_AUTODIAL_ENABLED; static const DWORD RAS_AUTODIAL_DONT_KNOW; BOOL m_bForceOnline; BOOL m_bExclude1394; }; // CConnectionManager #endif // _CONNMGR_H_ // ///// End of file: ConnMgr.h ////////////////////////////////////////////////