|
|
#include "ras.h"
#include "raserror.h"
//
// Useful registry constants
//
extern const TCHAR c_szRASKey[]; extern const TCHAR c_szProfile[];
//
// Data for the dialer and property sheet is loaded and saved
// in this format
//
struct _dialpropdata {
BOOL fEnabled; BOOL fUnattended; TCHAR pszConnection[RAS_MaxEntryName + 1]; TCHAR pszUsername[UNLEN + 1]; TCHAR pszPassword[PWLEN + 1]; TCHAR pszDomain[DNLEN + 1]; UINT uRedialAttempts; UINT uRedialDelay;
};
typedef struct _dialpropdata DIALPROPDATA;
//
// Forward declaration
//
class CConnectionAgent;
// the various states that a client can be in
typedef enum { CLIENT_NEW, CLIENT_CONNECTING, CLIENT_CONNECTED, CLIENT_ABORT, CLIENT_DISCONNECTED, } ClientState;
//
// Connection client object
//
class CConnClient : public INotificationSink, public IOleCommandTarget { private: ~CConnClient() {}; public: CConnClient();
//
// IUnknown members
//
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//
// INotificationSink members
//
STDMETHODIMP OnNotification( LPNOTIFICATION pNotification, LPNOTIFICATIONREPORT pNotificationReport, DWORD dwReserved );
//
// IOleCommandTarget members
//
STDMETHODIMP QueryStatus( const GUID __RPC_FAR *pguidCmdGroup, ULONG cCmds, OLECMD __RPC_FAR prgCmds[ ], OLECMDTEXT __RPC_FAR *pCmdText ); STDMETHODIMP Exec( const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut );
HRESULT SetConnAgent(IUnknown *punk);
protected: long m_cRef; IOleCommandTarget * m_poctAgent; BSTR m_bstrURL; ClientState m_State; LPNOTIFICATIONREPORT m_pReport; long m_iCookie;
HRESULT Connect(void); HRESULT Disconnect(void); HRESULT DeliverProgressReport(SCODE, BSTR); };
//
// Main dialer agent object
//
class CConnectionAgent : public IOleCommandTarget { private: ~CConnectionAgent(); public: CConnectionAgent();
//
// IUnknown members
//
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//
// IOleCommandTarget members
//
STDMETHODIMP QueryStatus( const GUID __RPC_FAR *pguidCmdGroup, ULONG cCmds, OLECMD __RPC_FAR prgCmds[ ], OLECMDTEXT __RPC_FAR *pCmdText ); STDMETHODIMP Exec( const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT __RPC_FAR *pvaIn, VARIANT __RPC_FAR *pvaOut );
//
// Other public members
//
DWORD m_dwRegisterHandle;
protected: long m_cRef; BOOL IsDialPossible(void); BOOL IsDialExisting(void); void Notify(HRESULT hr, TCHAR *pszErrorText); void Connect(void); void Disconnect(void); void Clean(void);
INotificationMgr *m_pMgr; DIALPROPDATA * m_pData; DWORD m_dwFlags; long m_lConnectionCount; HDPA m_hdpaClient; };
// Connection agent flags
#define CA_CONNECTING_NOW 1
#define CA_OFFLINE_STATE_READ 2
#define CA_OFFLINE 4
#define CA_DIALED 8
#define CA_LOADED_RAS 16
// IOleCommandTarget commands
#define AGENT_CONNECT 0x00
#define AGENT_DISCONNECT 0x01
#define AGENT_NOTIFY 0x10
// CLIENTINFO struct - info about each client
typedef struct _ci {
IOleCommandTarget * poctClient; DWORD dwFlags;
} CLIENTINFO;
// flags for CLIENTINFO
#define CLIENT_DISCONNECT 1
#define CLIENT_NOTIFIED 2
|