//*********************************************************************
//*                  Microsoft Windows                               **
//*            Copyright(c) Microsoft Corp., 1999                    **
//*********************************************************************
//
//  OBCOMM_C.IDL - 
//      Component description and Type Library for 
//      ObCommunicationManager (MSOBCOMM)
//
//  HISTORY:
//  
//  1/27/99 a-jaswed Created.

import "unknwn.idl";
import "oaidl.idl";
// Definitions of IConnectionPoint
import "ocidl.idl" ; 

#include "dispids.h"


///////////////////////////////////////////////////////////
//
//
// Component descriptions
//

///////////////////////////////////////////////////////////
// Interface IObCommunicationManager
//
[
    object,
    uuid(B9B3DB10-BD64-11D2-9D65-00C04F7F8935),
    helpstring("IObCommunicationManager Interface"),
    pointer_default(unique)
]
interface IObCommunicationManager : IUnknown
{
    HRESULT CheckDialReady              ([out] DWORD*    pdwRetVal);
    HRESULT ListenToCommunicationEvents ([in]  IUnknown* pUnk);
    HRESULT SetupForDialing             ([in]  UINT nType, 
                                         [in]  BSTR      bstrISPFile, 
                                         [in] DWORD dwCountry, 
                                         [in] BSTR bstrAreaCode, 
                                         [in] DWORD dwFlag, 
                                         [in] DWORD dwAppMode, 
                                         [in] DWORD dwMigISPIdx);
    HRESULT DoConnect                   ([out] BOOL*     pbRetVal); 
    HRESULT DoHangup                    ();
    HRESULT GetDialPhoneNumber          ([out] BSTR* pVal);
    HRESULT PutDialPhoneNumber          ([in]  BSTR  newVal);
    HRESULT GetDialErrorMsg             ([out] BSTR* pVal);
    HRESULT GetSupportNumber            ([out] BSTR* pVal);
    HRESULT RemoveConnectoid            ([out] BOOL* pbRetVal);
    HRESULT FetchPage                   ([in]  BSTR szURL, 
                                         [out] BSTR* szLocalFile);
    HRESULT DownloadFileBuffer          ([out] BSTR* pVal);
    HRESULT ProcessINS                  ([in]  BSTR  bstrINSFilePath, 
                                         [out] BOOL *pbRetVal);
    HRESULT SetRASCallbackHwnd          ([in]  HWND  hwndCallback);
    HRESULT GetSignupURL                ([out] BSTR *pVal);
    HRESULT GetReconnectURL             ([out] BSTR *pVal);
    HRESULT GetFile                     ([in]  BSTR szUTL, [in] BSTR );
    HRESULT CheckPhoneBook              ([in]  BSTR  bstrISPFile, 
                                         [in] DWORD dwCountry, 
                                         [in] BSTR bstrAreaCode, 
                                         [in] DWORD dwFlag, 
                                         [out] BOOL *pbRetVal);
    HRESULT RestoreConnectoidInfo       ();
    HRESULT SetPreloginMode             ([in] BOOL bVal);
    HRESULT GetConnectionType           ([out] DWORD *pdwVal);
    HRESULT CheckKbdMouse               ([out] DWORD* pdwRetVal);
    HRESULT OnDownloadEvent             ([in] UINT uMsg, 
                                         [in] WPARAM wParam, 
                                         [in] LPARAM lParam, 
                                         [in] BOOL* bHandled);
    HRESULT GetISPList                  ([out] BSTR* pVal);
    HRESULT Set_SelectISP               ([in] UINT nVal);
    HRESULT Set_ConnectionMode          ([in] UINT nVal);
    HRESULT Get_ConnectionMode          ([out] UINT *pnVal);
    HRESULT DownloadReferralOffer       ([out] BOOL *pbVal);
    HRESULT DownloadISPOffer            ([out] BOOL *pbVal, [out] BSTR *pVal);
    HRESULT Get_ISPName                 ([out] BSTR* pVal);
    HRESULT RemoveDownloadDir           ();
    HRESULT PostRegData                 ([in] DWORD dwSrvType, 
                                         [in] BSTR bstrRegUrl);
    HRESULT CheckOnlineStatus           ([out] BOOL *pbVal);
    HRESULT Connect                     ([in]  UINT nType, 
                                         [in] BSTR bstrISPFile, 
                                         [in] DWORD dwCountry, 
                                         [in] BSTR bstrAreaCode, 
                                         [in] DWORD dwFlag, 
                                         [in] DWORD dwAppMode);
    HRESULT CheckStayConnected          ([in] BSTR bstrISPFile, 
                                         [out] BOOL *pbVal);
    HRESULT CreateIcsBot                ([out] DWORD *pdwRetVal);
    HRESULT IsIcsAvailable              ([out] BOOL *bRetVal);
    HRESULT IsCallbackUsed              ([out] BOOL *bRetVal);
    HRESULT NotifyIcsMgr                ([in] UINT msg, 
                                         [in] WPARAM wParam, 
                                         [in] LPARAM lParam);
    HRESULT NotifyIcsUsage              ([in] BOOL bParam);
    HRESULT GetPhoneBookNumber          ([out] BSTR* pVal);
    HRESULT TriggerIcsCallback          ([in] BOOL bParam);
    HRESULT IsIcsHostReachable          ([out] BOOL *bRetVal);
}; 
cpp_quote("// Connection type bitmasks")
cpp_quote("//")
cpp_quote("//  No attempt has been made at detecting connections or an")
cpp_quote("//  attempt was made but failed.  This is different from")
cpp_quote("//  CONNECTIONTYPE_NONE in that it indicates that another attempt")
cpp_quote("//  should be made to determine if connections exist.")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_INVALID           0x00000000")
cpp_quote("")
cpp_quote("//  No connection devices exist")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_NONE              0x00000001")
cpp_quote("")
cpp_quote("//  A modem is installed")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_MODEM             0x00000002")
cpp_quote("")
cpp_quote("//  A network card is present and the ICS beacon was detected")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_LAN_ICS           0x00000004")
cpp_quote("")
cpp_quote("//  A network card is present but ICS was not detected")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_LAN_BROADBAND     0x00000008")
cpp_quote("")
cpp_quote("//  Multiple network cards were present and ICS was not detected.  It is not")
cpp_quote("//  possible to determine which card to use.")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_LAN_INDETERMINATE 0x00000010")
cpp_quote("")
cpp_quote("//  An ISDN, PPPoE connection is present")
cpp_quote("//")
cpp_quote("#define CONNECTIONTYPE_OTHER 0x00000020")
cpp_quote("")

///////////////////////////////////////////////////////////
// Interface IObCommunicationManager2
//
[
    object,
    uuid(B9B3DB14-BD64-11D2-9D65-00C04F7F8935),
    helpstring("IObCommunicationManager2 Interface"),
    pointer_default(unique)
]
interface IObCommunicationManager2 : IObCommunicationManager
{
    HRESULT CreateModemConnectoid       ([in] BSTR bstrPhoneBook,
                                         [in] BSTR bstrConnectionName,
                                         [in] DWORD dwCountryID,
                                         [in] DWORD dwCountryCode,
                                         [in] BSTR bstrAreaCode,
                                         [in] BSTR bstrPhoneNumber,
                                         [in] BOOL fAutoIPAddress,
                                         [in] DWORD ipaddr_A,
                                         [in] DWORD ipaddr_B,
                                         [in] DWORD ipaddr_C,
                                         [in] DWORD ipaddr_D,
                                         [in] BOOL fAutoDNS,
                                         [in] DWORD ipaddrDns_A,
                                         [in] DWORD ipaddrDns_B,
                                         [in] DWORD ipaddrDns_C,
                                         [in] DWORD ipaddrDns_D,
                                         [in] DWORD ipaddrDnsAlt_A,
                                         [in] DWORD ipaddrDnsAlt_B,
                                         [in] DWORD ipaddrDnsAlt_C,
                                         [in] DWORD ipaddrDnsAlt_D,
                                         [in] BSTR bstrUserName,
                                         [in] BSTR bstrPassword);

    HRESULT CreatePppoeConnectoid       ([in] BSTR bstrPhoneBook,
                                         [in] BSTR bstrConnectionName,
                                         [in] BSTR bstrBroadbandService,
                                         [in] BOOL fAutoIPAddress,
                                         [in] DWORD ipaddr_A,
                                         [in] DWORD ipaddr_B,
                                         [in] DWORD ipaddr_C,
                                         [in] DWORD ipaddr_D,
                                         [in] BOOL fAutoDNS,
                                         [in] DWORD ipaddrDns_A,
                                         [in] DWORD ipaddrDns_B,
                                         [in] DWORD ipaddrDns_C,
                                         [in] DWORD ipaddrDns_D,
                                         [in] DWORD ipaddrDnsAlt_A,
                                         [in] DWORD ipaddrDnsAlt_B,
                                         [in] DWORD ipaddrDnsAlt_C,
                                         [in] DWORD ipaddrDnsAlt_D,
                                         [in] BSTR bstrUserName,
                                         [in] BSTR bstrPassword);
    HRESULT SetPreferredConnectionTcpipProperties
                                        ([in] BOOL fAutoIPAddress,
                                         [in] DWORD StaticIp_A,
                                         [in] DWORD StaticIp_B,
                                         [in] DWORD StaticIp_C,
                                         [in] DWORD StaticIp_D,
                                         [in] DWORD SubnetMask_A,
                                         [in] DWORD SubnetMask_B,
                                         [in] DWORD SubnetMask_C,
                                         [in] DWORD SubnetMask_D,
                                         [in] DWORD DefGateway_A,
                                         [in] DWORD DefGateway_B,
                                         [in] DWORD DefGateway_C,
                                         [in] DWORD DefGateway_D,
                                         [in] BOOL fAutoDNS,
                                         [in] DWORD DnsPref_A,
                                         [in] DWORD DnsPref_B,
                                         [in] DWORD DnsPref_C,
                                         [in] DWORD DnsPref_D,
                                         [in] DWORD DnsAlt_A,
                                         [in] DWORD DnsAlt_B,
                                         [in] DWORD DnsAlt_C,
                                         [in] DWORD DnsAlt_D,
                                         [in] BOOL fFirewallRequired
                                        );
    HRESULT DoFinalTasks                ([out] BOOL* pfRebootRequired);
    HRESULT GetConnectionCapabilities   ([out] DWORD* pdwConnectionCapabilities);
    HRESULT GetPreferredConnection      ([out] DWORD* pdwPreferredConnection
                                         );
    HRESULT SetPreferredConnection      ([in] const DWORD dwPreferredConnection,
                                         [out, retval] BOOL* pfSupportedType);
    HRESULT SetDialAlternative          ([in] BOOL fDialAlternative);
    HRESULT ConnectedToInternet         ([out, retval] BOOL* pfConnected);
    HRESULT ConnectedToInternetEx       ([out, retval] BOOL* pfConnected);
    HRESULT AsyncConnectedToInternetEx  ([in] const HWND hwnd);
    HRESULT OobeAutodial                ();
    HRESULT OobeAutodialHangup          ();
    HRESULT FirewallPreferredConnection ([in] BOOL fFirewall);
    HRESULT UseWinntProxySettings       ();
    HRESULT DisableWinntProxySettings   ();
    HRESULT GetProxySettings            ([out] BOOL* pbUseAuto,
                                         [out] BOOL* pbUseScript,
                                         [out] BSTR* pszScriptUrl,
                                         [out] BOOL* pbUseProxy,
                                         [out] BSTR* pszProxy
                                        );
    HRESULT SetProxySettings            ([in] BOOL bUseAuto,
                                         [in] BOOL bUseScript,
                                         [in] BSTR szScriptUrl,
                                         [in] BOOL bUseProxy,
                                         [in] BSTR szProxy
                                        );
    HRESULT SetICWCompleted             ([in] BOOL bMultiUser);
    HRESULT GetPublicLanCount           ([out, retval] int* pcPublicLan);
    HRESULT SetExclude1394              ([in] BOOL bExclude);
    HRESULT GnsAutodial                 ([in] BOOL bEnabled,
                                         [in] BSTR bstrUserSection
                                        );

};

///////////////////////////////////////////////////////////
// ObCommunicationManager Type Library
//
[
    uuid(B9B3DB11-BD64-11D2-9D65-00C04F7F8935),
    version(1.0),
    helpstring("ObCommunicationManager 1.0 Type Library")
]
library ObCommunicationManagerLib
{
    importlib("stdole32.tlb");

    [ 
        uuid(B9B3DB13-BD64-11D2-9D65-00C04F7F8935),
        helpstring("Event interface for ObCommunicationManager")
    ]
    dispinterface DObCommunicationEvents
    {
        properties:
        methods:
        [id(DISPID_DIALING)]            HRESULT Fire_Dialing            ();
        [id(DISPID_CONNECTING)]         HRESULT Fire_Connecting         ();
        [id(DISPID_DIALINGERROR)]       HRESULT Fire_DialError          ([in] DWORD dwErrorCode);
        [id(DISPIP_CONNECTIONCOMPLETE)] HRESULT Fire_ConnectionComplete ();
        [id(DISPIP_DOWNLOADCOMPLETE)]   HRESULT Fire_DownloadComplete   ();
    };
    //
    // ObCommunicationManager
    //
    [
        uuid(B9B3DB12-BD64-11D2-9D65-00C04F7F8935),
        helpstring("ObCommunicationManager Class")
    ]
    coclass ObCommunicationManager
    {
        [default] interface IObCommunicationManager2;
        interface IConnectionPointContainer ;
        [default, source] dispinterface DObCommunicationEvents;
    };
}; 
