windows-nt/Source/XPSP1/NT/base/ntsetup/oobe/msobcomm/connmgr.h
2020-09-26 16:20:57 +08:00

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 ////////////////////////////////////////////////