340 lines
7.3 KiB
C
340 lines
7.3 KiB
C
|
#ifndef _CONNMGR_H_
|
||
|
#define _CONNMGR_H_
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Copyright (c) 2000 Microsoft Corporation
|
||
|
//
|
||
|
// Module: ConnMgr.h
|
||
|
//
|
||
|
// Author: Dan Elliott
|
||
|
//
|
||
|
// Abstract:
|
||
|
//
|
||
|
// Environment:
|
||
|
// Whistler
|
||
|
//
|
||
|
// Revision History:
|
||
|
//
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include <obcomm.h>
|
||
|
#include <util.h>
|
||
|
#include <netcon.h>
|
||
|
#include <netcfgp.h>
|
||
|
|
||
|
#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 ////////////////////////////////////////////////
|