windows-nt/Source/XPSP1/NT/admin/pchealth/helpctr/shell/include/connectivitylib.h
2020-09-26 16:20:57 +08:00

140 lines
4.9 KiB
C++

/******************************************************************************
Copyright (c) 2000 Microsoft Corporation
Module Name:
ConnectivityLib.h
Abstract:
This file contains the declaration of the classes used to
detect the status of the network.
Revision History:
Davide Massarenti (Dmassare) 04/15/200
created
******************************************************************************/
#if !defined(__INCLUDED___PCH___CONNECTIVITYLIB_H___)
#define __INCLUDED___PCH___CONNECTIVITYLIB_H___
#include <MPC_COM.h>
#include <MPC_Utils.h>
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CPCHConnectionCheck : // Hungarian: pchcc
public MPC::Thread < CPCHConnectionCheck, IPCHConnectionCheck >,
public MPC::ConnectionPointImpl< CPCHConnectionCheck, &DIID_DPCHConnectionCheckEvents, MPC::CComSafeMultiThreadModel >,
public IDispatchImpl < IPCHConnectionCheck, &IID_IPCHConnectionCheck, &LIBID_HelpCenterTypeLib >
{
class UrlEntry
{
public:
CN_URL_STATUS m_lStatus;
CComBSTR m_bstrURL;
MPC::AsyncInvoke::CallItem m_vCtx;
UrlEntry();
HRESULT CheckStatus();
};
typedef std::list<UrlEntry> UrlList;
typedef UrlList::iterator UrlIter;
typedef UrlList::const_iterator UrlIterConst;
CN_STATUS m_cnStatus;
UrlList m_lstUrl;
MPC::CComPtrThreadNeutral<IDispatch> m_sink_onCheckDone;
MPC::CComPtrThreadNeutral<IDispatch> m_sink_onStatusChange;
//////////////////////////////////////////////////////////////////////
HRESULT Run();
HRESULT put_Status( /*[in]*/ CN_STATUS pVal );
//////////////////////////////////////////////////////////////////////
//
// Event firing methods.
//
HRESULT Fire_onCheckDone ( IPCHConnectionCheck* obj, CN_URL_STATUS lStatus, HRESULT hr, BSTR bstrURL, VARIANT vCtx );
HRESULT Fire_onStatusChange( IPCHConnectionCheck* obj, CN_STATUS lStatus );
//////////////////////////////////////////////////////////////////////
public:
DECLARE_NO_REGISTRY()
DECLARE_NOT_AGGREGATABLE(CPCHConnectionCheck)
DECLARE_GET_CONTROLLING_UNKNOWN()
BEGIN_COM_MAP(CPCHConnectionCheck)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IPCHConnectionCheck)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
END_COM_MAP()
CPCHConnectionCheck();
void FinalRelease();
public:
// IPCHConnectionCheck
STDMETHOD(put_onCheckDone )( /*[in] */ IDispatch* function );
STDMETHOD(put_onStatusChange)( /*[in] */ IDispatch* function );
STDMETHOD(get_Status )( /*[out]*/ CN_STATUS *pVal );
STDMETHOD(StartUrlCheck)( /*[in]*/ BSTR bstrURL, /*[in]*/ VARIANT vCtx );
STDMETHOD(Abort )( );
};
////////////////////////////////////////////////////////////////////////////////
class CPCHHelpCenterExternal;
class ATL_NO_VTABLE CPCHConnectivity : // Hungarian: pchcc
public CComObjectRootEx<MPC::CComSafeMultiThreadModel>,
public IDispatchImpl<IPCHConnectivity, &IID_IPCHConnectivity, &LIBID_HelpCenterTypeLib>
{
CPCHHelpCenterExternal* m_parent;
public:
BEGIN_COM_MAP(CPCHConnectivity)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IPCHConnectivity)
END_COM_MAP()
CPCHConnectivity();
HRESULT ConnectToParent( /*[in]*/ CPCHHelpCenterExternal* parent );
////////////////////////////////////////////////////////////////////////////////
// IPCHConnectivity
STDMETHOD(get_IsAModem )( /*[out, retval]*/ VARIANT_BOOL *pVal );
STDMETHOD(get_IsALan )( /*[out, retval]*/ VARIANT_BOOL *pVal );
STDMETHOD(get_AutoDialEnabled)( /*[out, retval]*/ VARIANT_BOOL *pVal );
STDMETHOD(get_HasConnectoid )( /*[out, retval]*/ VARIANT_BOOL *pVal );
STDMETHOD(get_IPAddresses )( /*[out, retval]*/ BSTR *pVal );
STDMETHOD(CreateObject_ConnectionCheck)( /*[out, retval]*/ IPCHConnectionCheck* *ppCC );
STDMETHOD(NetworkAlive )( /*[out, retval]*/ VARIANT_BOOL *pVal );
STDMETHOD(DestinationReachable)( /*[in]*/ BSTR bstrURL, /*[out, retval]*/ VARIANT_BOOL *pVal );
STDMETHOD(AutoDial )( /*[in]*/ VARIANT_BOOL bUnattended );
STDMETHOD(AutoDialHangup)( );
STDMETHOD(NavigateOnline)( /*[in ]*/ BSTR bstrTargetURL ,
/*[in ]*/ BSTR bstrTopicTitle ,
/*[in ]*/ BSTR bstrTopicIntro ,
/*[in,optional]*/ VARIANT vOfflineURL );
};
////////////////////////////////////////////////////////////////////////////////
#endif // !defined(__INCLUDED___PCH___CONNECTIVITYLIB_H___)