170 lines
4.5 KiB
C++
170 lines
4.5 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
// File: D I A L U P . H
|
|
//
|
|
// Contents: Dial-up Connection UI object.
|
|
//
|
|
// Notes:
|
|
//
|
|
// Author: shaunco 15 Oct 1997
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
#include "nmbase.h"
|
|
#include "nmres.h"
|
|
#include "rasconob.h"
|
|
#include <rasapip.h>
|
|
|
|
class ATL_NO_VTABLE CDialupConnection :
|
|
public CComObjectRootEx <CComMultiThreadModel>,
|
|
public CComCoClass <CDialupConnection,
|
|
&CLSID_DialupConnection>,
|
|
public CRasConnectionBase,
|
|
public INetConnection,
|
|
public INetRasConnection,
|
|
public IPersistNetConnection,
|
|
public INetConnectionBrandingInfo,
|
|
public INetDefaultConnection,
|
|
public INetConnection2
|
|
{
|
|
public:
|
|
CDialupConnection () : CRasConnectionBase ()
|
|
{
|
|
m_fCmPathsLoaded = FALSE;
|
|
}
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_DIALUP_CONNECTION)
|
|
|
|
BEGIN_COM_MAP(CDialupConnection)
|
|
COM_INTERFACE_ENTRY(INetConnection)
|
|
COM_INTERFACE_ENTRY(INetConnection2)
|
|
COM_INTERFACE_ENTRY(INetRasConnection)
|
|
COM_INTERFACE_ENTRY(INetDefaultConnection)
|
|
COM_INTERFACE_ENTRY(IPersistNetConnection)
|
|
COM_INTERFACE_ENTRY(INetConnectionBrandingInfo)
|
|
END_COM_MAP()
|
|
|
|
// INetConnection
|
|
STDMETHOD (Connect) ();
|
|
|
|
STDMETHOD (Disconnect) ();
|
|
|
|
STDMETHOD (Delete) ();
|
|
|
|
STDMETHOD (Duplicate) (
|
|
PCWSTR pszDuplicateName,
|
|
INetConnection** ppCon);
|
|
|
|
STDMETHOD (GetProperties) (
|
|
NETCON_PROPERTIES** ppProps);
|
|
|
|
STDMETHOD (GetUiObjectClassId) (
|
|
CLSID* pclsid);
|
|
|
|
STDMETHOD (Rename) (
|
|
PCWSTR pszNewName);
|
|
|
|
// INetRasConnection
|
|
STDMETHOD (GetRasConnectionInfo) (
|
|
RASCON_INFO* pRasConInfo);
|
|
|
|
STDMETHOD (SetRasConnectionInfo) (
|
|
const RASCON_INFO* pRasConInfo);
|
|
|
|
STDMETHOD (GetRasConnectionHandle) (
|
|
ULONG_PTR* phRasConn);
|
|
|
|
// IPersistNetConnection
|
|
STDMETHOD (GetClassID) (
|
|
CLSID* pclsid);
|
|
|
|
STDMETHOD (GetSizeMax) (
|
|
ULONG* pcbSize);
|
|
|
|
STDMETHOD (Load) (
|
|
const BYTE* pbBuf,
|
|
ULONG cbSize);
|
|
|
|
STDMETHOD (Save) (
|
|
BYTE* pbBuf,
|
|
ULONG cbSize);
|
|
|
|
// INetConnectionBrandingInfo
|
|
STDMETHOD (GetBrandingIconPaths) (CON_BRANDING_INFO ** ppConBrandInfo);
|
|
STDMETHOD (GetTrayMenuEntries)(CON_TRAY_MENU_DATA ** ppMenuData);
|
|
|
|
// INetDefaultConnection
|
|
STDMETHOD (SetDefault (BOOL bDefault));
|
|
STDMETHOD (GetDefault (BOOL* pbDefault));
|
|
|
|
// INetConnection2
|
|
STDMETHOD (GetPropertiesEx)(OUT NETCON_PROPERTIES_EX** ppConnectionPropertiesEx);
|
|
|
|
private:
|
|
|
|
// Private Vars to hold the paths to the CM file and keep track if they have been loaded or not.
|
|
//
|
|
tstring m_strCmsFile;
|
|
tstring m_strProfileDir;
|
|
tstring m_strShortServiceName;
|
|
tstring m_strCmDir;
|
|
BOOL m_fCmPathsLoaded;
|
|
|
|
// Private Accessor functions for the above strings
|
|
//
|
|
PCWSTR
|
|
PszwCmsFile ()
|
|
{
|
|
AssertH (!m_strCmsFile.empty());
|
|
return m_strCmsFile.c_str();
|
|
}
|
|
PCWSTR
|
|
PszwProfileDir ()
|
|
{
|
|
AssertH (!m_strProfileDir.empty());
|
|
return m_strProfileDir.c_str();
|
|
}
|
|
PCWSTR
|
|
PszwCmDir ()
|
|
{
|
|
AssertH (!m_strCmDir.empty());
|
|
return m_strCmDir.c_str();
|
|
}
|
|
PCWSTR
|
|
PszwShortServiceName ()
|
|
{
|
|
AssertH (!m_strShortServiceName.empty());
|
|
return m_strShortServiceName.c_str();
|
|
}
|
|
|
|
// Private methods for handling of type NCT_Internet
|
|
HRESULT HrGetCmpFileLocation(PCWSTR pszPhonebook, PCWSTR pszEntryName, PWSTR pszCmpFilePath);
|
|
HRESULT HrEnsureCmStringsLoaded();
|
|
HRESULT HrGetPrivateProfileSectionWithAlloc(WCHAR** pszwSection, int* nSize);
|
|
HRESULT HrGetMenuNameAndCmdLine(PWSTR pszString, PWSTR pszName, PWSTR pszProgram, PWSTR pszParams);
|
|
HRESULT HrFillInConTrayMenuEntry(PCWSTR pszName, PCWSTR pszCmdLine, PCWSTR pszParams, CON_TRAY_MENU_ENTRY* pMenuEntry);
|
|
public:
|
|
static HRESULT
|
|
CreateInstanceUninitialized (
|
|
REFIID riid,
|
|
VOID** ppv,
|
|
CDialupConnection** ppObj);
|
|
|
|
static HRESULT
|
|
CreateInstanceFromDetails (
|
|
const RASENUMENTRYDETAILS* pEntryDetails,
|
|
REFIID riid,
|
|
VOID** ppv);
|
|
|
|
static HRESULT
|
|
CreateInstanceFromPbkFileAndEntryName (
|
|
PCWSTR pszwPbkFile,
|
|
PCWSTR pszwEntryName,
|
|
REFIID riid,
|
|
VOID** ppv);
|
|
};
|