112 lines
3.6 KiB
C
112 lines
3.6 KiB
C
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// File: contable.h
|
||
|
//
|
||
|
// Module: CMCONTBL.LIB
|
||
|
//
|
||
|
// Synopsis: Header file declaring CConnectionTable
|
||
|
//
|
||
|
// Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
//
|
||
|
// Author: nickball Created 02/02/98
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
#include <ras.h>
|
||
|
#include <raserror.h>
|
||
|
|
||
|
const int MAX_CM_CONNECTIONS = 32;
|
||
|
|
||
|
//
|
||
|
// Data types used by Connection Table and clients
|
||
|
//
|
||
|
|
||
|
typedef enum _CmConnectState {
|
||
|
CM_DISCONNECTED, // unused entry
|
||
|
CM_DISCONNECTING, // in the process of disconnecting
|
||
|
CM_RECONNECTPROMPT, // prompting user to reconnect
|
||
|
CM_CONNECTING, // actively connecting
|
||
|
CM_CONNECTED, // fully connected
|
||
|
} CmConnectState;
|
||
|
|
||
|
typedef struct Cm_Connection
|
||
|
{
|
||
|
DWORD dwUsage; // Reference count
|
||
|
TCHAR szEntry[RAS_MaxEntryName + 1]; // Name of entry/profile
|
||
|
BOOL fAllUser; // Is the entry "All user"
|
||
|
CmConnectState CmState; // Current state
|
||
|
HRASCONN hDial; // Dial-up RAS handle
|
||
|
HRASCONN hTunnel; // Tunnel RAS handle
|
||
|
} CM_CONNECTION, * LPCM_CONNECTION;
|
||
|
|
||
|
typedef struct Cm_Connection_Table
|
||
|
{
|
||
|
HWND hwndCmMon; // the CMMON32.EXE window handle
|
||
|
CM_CONNECTION Connections[MAX_CM_CONNECTIONS]; // a list of connections.
|
||
|
} CM_CONNECTION_TABLE, * LPCM_CONNECTION_TABLE;
|
||
|
|
||
|
//
|
||
|
// Class declaration
|
||
|
//
|
||
|
|
||
|
class CConnectionTable
|
||
|
{
|
||
|
|
||
|
private:
|
||
|
|
||
|
HANDLE m_hMap; // Handle of file mapping
|
||
|
LPCM_CONNECTION_TABLE m_pConnTable; // Pointer to mapped view of file
|
||
|
BOOL m_fLocked; // Internal error checking
|
||
|
HANDLE m_hEvent; // Event handle for locking
|
||
|
|
||
|
protected:
|
||
|
|
||
|
HRESULT LockTable();
|
||
|
|
||
|
HRESULT UnlockTable();
|
||
|
|
||
|
HRESULT FindEntry(LPCTSTR pszEntry,
|
||
|
LPINT piID);
|
||
|
|
||
|
HRESULT FindEntry(HRASCONN hRasConn,
|
||
|
LPINT piID);
|
||
|
|
||
|
HRESULT FindUnused(LPINT piID);
|
||
|
|
||
|
public:
|
||
|
|
||
|
CConnectionTable(); // ctor
|
||
|
|
||
|
~CConnectionTable(); // dtor
|
||
|
|
||
|
HRESULT Create(); // creates a new table, fails if existing
|
||
|
|
||
|
HRESULT Open(); // opens an existing table
|
||
|
|
||
|
HRESULT Close(); // closes an existing table
|
||
|
|
||
|
HRESULT AddEntry(LPCTSTR pszEntry, BOOL fAllUser); // adds a connection entry to the table
|
||
|
|
||
|
HRESULT RemoveEntry(LPCTSTR pszEntry); // removes a connection entry from the table
|
||
|
|
||
|
HRESULT GetMonitorWnd(HWND *phWnd); // fills phWnd with HWND of CMMON in the table
|
||
|
|
||
|
HRESULT SetMonitorWnd(HWND hwndMonitor); // assigns the hwnd of CMMON in the table
|
||
|
|
||
|
HRESULT GetEntry(LPCTSTR pszEntry, // Fills the specified CM_CONNECTION structure
|
||
|
LPCM_CONNECTION pConnection); // with the data for pszEntry
|
||
|
|
||
|
HRESULT GetEntry(HRASCONN hRasConn, // Fills the specified CM_CONNECTION structure
|
||
|
LPCM_CONNECTION pConnection); // with the data for hRasConn
|
||
|
|
||
|
HRESULT SetConnected(LPCTSTR pszEntry, // sets the connection to the connected state, hDial required
|
||
|
HRASCONN hDial,
|
||
|
HRASCONN hTunnel);
|
||
|
|
||
|
HRESULT SetDisconnecting(LPCTSTR pszEntry); // sets the connection to the disconnected state
|
||
|
|
||
|
HRESULT SetPrompting(LPCTSTR pszEntry); // sets the connection to the prompting state
|
||
|
|
||
|
HRESULT ClearEntry(LPCTSTR pszEntry); // clears the entry regardless of usage count
|
||
|
};
|