208 lines
7.5 KiB
C++
208 lines
7.5 KiB
C++
#ifndef _RASAPI_RASAPI_HPP_
|
|
#define _RASAPI_RASAPI_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_RAS_HPP_
|
|
#include <common/ras.hpp>
|
|
#endif
|
|
|
|
class RasApi
|
|
{
|
|
public:
|
|
RasApi(void);
|
|
RasApi(const RasApi &someRasApi);
|
|
virtual ~RasApi();
|
|
RasApi &operator=(const RasApi &someRasApi);
|
|
DWORD rasDial(LPRASDIALEXTENSIONS lpRasDialExtensions,LPTSTR lpszPhonebook,LPRASDIALPARAMS lpRasDialParams,DWORD dwNotifierType,LPVOID lpvNotifier,LPHRASCONN lphRasConn);
|
|
DWORD rasEnumConnections(LPRASCONN lprasconn,LPDWORD lpcb,LPDWORD lpcConnections);
|
|
DWORD rasEnumEntries(LPTSTR reserved,LPTSTR lpszPhonebook,LPRASENTRYNAME lprasentryname,LPDWORD lpcb,LPDWORD lpcEntries);
|
|
DWORD rasGetConnectStatus(HRASCONN hrasconn,LPRASCONNSTATUS lprasconnstatus);
|
|
DWORD rasGetErrorString(UINT uErrorValue,LPTSTR lpszErrorString,DWORD cBufSize);
|
|
DWORD rasHangUp(HRASCONN hrasconn);
|
|
DWORD rasGetProjectionInfo(HRASCONN hrasconn,RASPROJECTION rasprojection,LPVOID lpprojection,LPDWORD lpcb);
|
|
DWORD rasCreatePhonebookEntry(HWND hwnd,LPSTR lpszPhonebook);
|
|
DWORD rasEditPhonebookEntry(HWND hwnd,LPSTR lpszPhonebook,LPSTR lpszEntryName);
|
|
DWORD rasSetEntryDialParams(LPSTR lpszPhonebook,LPRASDIALPARAMS lprasdialparams,BOOL fRemovePassword);
|
|
DWORD rasGetEntryDialParams(LPTSTR lpszPhonebook,LPRASDIALPARAMS lprasdialparams,LPBOOL lpfPassword);
|
|
WORD isOkay(void)const;
|
|
private:
|
|
typedef DWORD (APIENTRY *LPFNRASDIAL)(LPRASDIALEXTENSIONS,LPSTR,LPRASDIALPARAMSA,DWORD,LPVOID,LPHRASCONN);
|
|
typedef DWORD (APIENTRY *LPFNRASENUMCONNECTIONS)(LPRASCONNA,LPDWORD,LPDWORD);
|
|
typedef DWORD (APIENTRY *LPFNRASENUMENTRIES)(LPSTR,LPSTR,LPRASENTRYNAMEA,LPDWORD,LPDWORD);
|
|
typedef DWORD (APIENTRY *LPFNRASGETCONNECTSTATUS)(HRASCONN,LPRASCONNSTATUSA);
|
|
typedef DWORD (APIENTRY *LPFNRASGETERRORSTRING)(UINT,LPSTR,DWORD);
|
|
typedef DWORD (APIENTRY *LPFNRASHANGUP)(HRASCONN);
|
|
typedef DWORD (APIENTRY *LPFNRASGETPROJECTIONINFO)(HRASCONN,RASPROJECTION,LPVOID,LPDWORD);
|
|
typedef DWORD (APIENTRY *LPFNRASCREATEPHONEBOOKENTRY)(HWND,LPSTR);
|
|
typedef DWORD (APIENTRY *LPFNRASEDITPHONEBOOKENTRY)(HWND,LPSTR,LPSTR);
|
|
typedef DWORD (APIENTRY *LPFNRASSETENTRYDIALPARAMS)(LPSTR,LPRASDIALPARAMSA,BOOL);
|
|
typedef DWORD (APIENTRY *LPFNRASGETENTRYDIALPARAMS)(LPSTR,LPRASDIALPARAMSA,LPBOOL);
|
|
void loadRasLib(void);
|
|
void freeRasLib(void);
|
|
void getEntryPoints(void);
|
|
|
|
HINSTANCE mhRasLib;
|
|
LPFNRASDIAL mlpfnRasDial;
|
|
LPFNRASENUMCONNECTIONS mlpfnRasEnumConnections;
|
|
LPFNRASENUMENTRIES mlpfnRasEnumEntries;
|
|
LPFNRASGETCONNECTSTATUS mlpfnRasGetConnectStatus;
|
|
LPFNRASGETERRORSTRING mlpfnRasGetErrorString;
|
|
LPFNRASHANGUP mlpfnRasHangup;
|
|
LPFNRASGETPROJECTIONINFO mlpfnRasGetProjectionInfo;
|
|
LPFNRASCREATEPHONEBOOKENTRY mlpfnRasCreatePhonebookEntry;
|
|
LPFNRASEDITPHONEBOOKENTRY mlpfnRasEditPhonebookEntry;
|
|
LPFNRASSETENTRYDIALPARAMS mlpfnRasSetEntryDialParams;
|
|
LPFNRASGETENTRYDIALPARAMS mlpfnRasGetEntryDialParams;
|
|
};
|
|
|
|
inline
|
|
RasApi::RasApi(void)
|
|
: mhRasLib(0), mlpfnRasDial(0), mlpfnRasEnumConnections(0), mlpfnRasEnumEntries(0),
|
|
mlpfnRasGetConnectStatus(0), mlpfnRasGetErrorString(0), mlpfnRasHangup(0),
|
|
mlpfnRasGetProjectionInfo(0), mlpfnRasCreatePhonebookEntry(0),
|
|
mlpfnRasEditPhonebookEntry(0), mlpfnRasSetEntryDialParams(0),
|
|
mlpfnRasGetEntryDialParams(0)
|
|
{
|
|
loadRasLib();
|
|
getEntryPoints();
|
|
}
|
|
|
|
inline
|
|
RasApi::RasApi(const RasApi &someRasApi)
|
|
{
|
|
*this=someRasApi;
|
|
}
|
|
|
|
inline
|
|
RasApi::~RasApi()
|
|
{
|
|
freeRasLib();
|
|
}
|
|
|
|
inline
|
|
RasApi &RasApi::operator=(const RasApi &/*someRasApi*/)
|
|
{
|
|
loadRasLib();
|
|
getEntryPoints();
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
void RasApi::loadRasLib(void)
|
|
{
|
|
freeRasLib();
|
|
mhRasLib=::LoadLibrary("RASAPI32");
|
|
if(!mhRasLib)return;
|
|
}
|
|
|
|
inline
|
|
void RasApi::freeRasLib(void)
|
|
{
|
|
if(!mhRasLib)return;
|
|
::FreeLibrary(mhRasLib);
|
|
mhRasLib=0;
|
|
}
|
|
|
|
inline
|
|
void RasApi::getEntryPoints(void)
|
|
{
|
|
if(!mhRasLib)return;
|
|
mlpfnRasDial=(LPFNRASDIAL)::GetProcAddress(mhRasLib,"RasDialA");
|
|
mlpfnRasEnumConnections=(LPFNRASENUMCONNECTIONS)::GetProcAddress(mhRasLib,"RasEnumConnectionsA");
|
|
mlpfnRasEnumEntries=(LPFNRASENUMENTRIES)::GetProcAddress(mhRasLib,"RasEnumEntriesA");
|
|
mlpfnRasGetConnectStatus=(LPFNRASGETCONNECTSTATUS)::GetProcAddress(mhRasLib,"RasGetConnectStatusA");
|
|
mlpfnRasGetErrorString=(LPFNRASGETERRORSTRING)::GetProcAddress(mhRasLib,"RasGetErrorStringA");
|
|
mlpfnRasHangup=(LPFNRASHANGUP)::GetProcAddress(mhRasLib,"RasHangUpA");
|
|
mlpfnRasGetProjectionInfo=(LPFNRASGETPROJECTIONINFO)::GetProcAddress(mhRasLib,"RasGetProjectionInfoA");
|
|
mlpfnRasCreatePhonebookEntry=(LPFNRASCREATEPHONEBOOKENTRY)::GetProcAddress(mhRasLib,"RasCreatePhonebookEntryA");
|
|
mlpfnRasEditPhonebookEntry=(LPFNRASEDITPHONEBOOKENTRY)::GetProcAddress(mhRasLib,"RasEditPhonebookEntryA");
|
|
mlpfnRasSetEntryDialParams=(LPFNRASSETENTRYDIALPARAMS)::GetProcAddress(mhRasLib,"RasSetEntryDialParamsA");
|
|
mlpfnRasGetEntryDialParams=(LPFNRASGETENTRYDIALPARAMS)::GetProcAddress(mhRasLib,"RasGetEntryDialParamsA");
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasDial(LPRASDIALEXTENSIONS lpRasDialExtensions,LPTSTR lpszPhonebook,LPRASDIALPARAMS lpRasDialParams,DWORD dwNotifierType,LPVOID lpvNotifier,LPHRASCONN lphRasConn)
|
|
{
|
|
if(!mlpfnRasDial)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasDial(lpRasDialExtensions,lpszPhonebook,lpRasDialParams,dwNotifierType,lpvNotifier,lphRasConn);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasEnumConnections(LPRASCONN lprasconn,LPDWORD lpcb,LPDWORD lpcConnections)
|
|
{
|
|
if(!mlpfnRasEnumConnections)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasEnumConnections(lprasconn,lpcb,lpcConnections);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasEnumEntries(LPTSTR reserved,LPTSTR lpszPhonebook,LPRASENTRYNAME lprasentryname,LPDWORD lpcb,LPDWORD lpcEntries)
|
|
{
|
|
if(!mlpfnRasEnumEntries)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasEnumEntries(reserved,lpszPhonebook,lprasentryname,lpcb,lpcEntries);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasGetConnectStatus(HRASCONN hrasconn,LPRASCONNSTATUS lprasconnstatus)
|
|
{
|
|
if(!mlpfnRasGetConnectStatus)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasGetConnectStatus(hrasconn,lprasconnstatus);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasGetErrorString(UINT uErrorValue,LPTSTR lpszErrorString,DWORD cBufSize)
|
|
{
|
|
if(!mlpfnRasGetErrorString)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasGetErrorString(uErrorValue,lpszErrorString,cBufSize);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasHangUp(HRASCONN hrasconn)
|
|
{
|
|
if(!mlpfnRasHangup)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasHangup(hrasconn);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasGetProjectionInfo(HRASCONN hrasconn,RASPROJECTION rasprojection,LPVOID lpprojection,LPDWORD lpcb)
|
|
{
|
|
if(!mlpfnRasGetProjectionInfo)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasGetProjectionInfo(hrasconn,rasprojection,lpprojection,lpcb);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasCreatePhonebookEntry(HWND hwnd,LPSTR lpszPhonebook)
|
|
{
|
|
if(!mlpfnRasCreatePhonebookEntry)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasCreatePhonebookEntry(hwnd,lpszPhonebook);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasEditPhonebookEntry(HWND hwnd,LPSTR lpszPhonebook,LPSTR lpszEntryName)
|
|
{
|
|
if(!mlpfnRasEditPhonebookEntry)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasEditPhonebookEntry(hwnd,lpszPhonebook,lpszEntryName);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasSetEntryDialParams(LPSTR lpszPhonebook,LPRASDIALPARAMS lprasdialparams,BOOL fRemovePassword)
|
|
{
|
|
if(!mlpfnRasSetEntryDialParams)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasSetEntryDialParams(lpszPhonebook,lprasdialparams,fRemovePassword);
|
|
}
|
|
|
|
inline
|
|
DWORD RasApi::rasGetEntryDialParams(LPTSTR lpszPhonebook,LPRASDIALPARAMS lprasdialparams,LPBOOL lpfPassword)
|
|
{
|
|
if(!mlpfnRasGetEntryDialParams)return ERROR_NOT_ENOUGH_MEMORY;
|
|
return mlpfnRasGetEntryDialParams(lpszPhonebook,lprasdialparams,lpfPassword);
|
|
}
|
|
|
|
inline
|
|
WORD RasApi::isOkay(void)const
|
|
{
|
|
return (mhRasLib?TRUE:FALSE);
|
|
}
|
|
#endif
|
|
|