You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
889 lines
21 KiB
889 lines
21 KiB
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RAS API wrappers for wide/ansi
|
|
//
|
|
// Works on all NT platforms correctly, maintaining unicode
|
|
// whenever possible.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wininetp.h"
|
|
#include "rashelp.h"
|
|
#include "autodial.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
ENUM_TYPE GetOSVersion::_EnumType = ENUM_NONE;
|
|
|
|
GetOSVersion::GetOSVersion()
|
|
{
|
|
if(_EnumType == ENUM_NONE)
|
|
{
|
|
if(0 == GlobalPlatformType)
|
|
GlobalPlatformType = PlatformType(&GlobalPlatformVersion5);
|
|
|
|
INET_ASSERT(PLATFORM_TYPE_WINNT == GlobalPlatformType);
|
|
|
|
if(TRUE == GlobalPlatformVersion5)
|
|
_EnumType = ENUM_WIN2K;
|
|
else
|
|
_EnumType = ENUM_UNICODE;
|
|
}
|
|
}
|
|
|
|
GetOSVersion::~GetOSVersion()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
RasEnumHelp::RasEnumHelp()
|
|
{
|
|
DWORD dwBufSize, dwStructSize = 0;
|
|
|
|
// init
|
|
_dwEntries = 0;
|
|
_dwLastError = 0;
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
dwStructSize = sizeof(RASENTRYNAMEW);
|
|
break;
|
|
case ENUM_WIN2K:
|
|
dwStructSize = sizeof(W2KRASENTRYNAMEW);
|
|
break;
|
|
}
|
|
|
|
// allocate space for 16 entries
|
|
dwBufSize = 16 * dwStructSize;
|
|
_preList = (LPRASENTRYNAMEA)LocalAlloc(LPTR, dwBufSize);
|
|
if(_preList)
|
|
{
|
|
do
|
|
{
|
|
// set up list
|
|
_preList[0].dwSize = dwStructSize;
|
|
|
|
// call ras to enumerate
|
|
_dwLastError = ERROR_UNKNOWN;
|
|
_dwLastError = _RasEnumEntriesW(
|
|
NULL,
|
|
NULL,
|
|
(LPRASENTRYNAMEW)_preList,
|
|
&dwBufSize,
|
|
&_dwEntries
|
|
);
|
|
|
|
// reallocate buffer if necessary
|
|
if(ERROR_BUFFER_TOO_SMALL == _dwLastError)
|
|
{
|
|
LocalFree(_preList);
|
|
_preList = (LPRASENTRYNAMEA)LocalAlloc(LPTR, dwBufSize);
|
|
if(NULL == _preList)
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
|
|
} while(TRUE);
|
|
}
|
|
else
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
}
|
|
|
|
if(_preList && (ERROR_SUCCESS != _dwLastError))
|
|
{
|
|
LocalFree(_preList);
|
|
_preList = NULL;
|
|
_dwEntries = 0;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
RasEnumHelp::~RasEnumHelp()
|
|
{
|
|
if(_preList)
|
|
{
|
|
LocalFree(_preList);
|
|
}
|
|
}
|
|
|
|
DWORD
|
|
RasEnumHelp::GetError()
|
|
{
|
|
return _dwLastError;
|
|
}
|
|
|
|
DWORD
|
|
RasEnumHelp::GetEntryCount()
|
|
{
|
|
return _dwEntries;
|
|
}
|
|
|
|
LPWSTR
|
|
RasEnumHelp::GetEntryW(DWORD dwConnectionNum)
|
|
{
|
|
LPWSTR pwszName = NULL;
|
|
|
|
if(dwConnectionNum >= _dwEntries)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYNAMEW lpTemp = (LPRASENTRYNAMEW)_preList;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
pwszName = lpTemp[dwConnectionNum].szEntryName;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYNAMEW lpTemp = (LPW2KRASENTRYNAMEW)_preList;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
pwszName = lpTemp[dwConnectionNum].szEntryName;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return pwszName;
|
|
}
|
|
|
|
LPSTR
|
|
RasEnumHelp::GetEntryA(DWORD dwConnectionNum)
|
|
{
|
|
LPSTR pszName = NULL;
|
|
|
|
if(dwConnectionNum >= _dwEntries)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYNAMEW lpTemp = (LPRASENTRYNAMEW)_preList;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp[dwConnectionNum].szEntryName, -1,
|
|
_szCurrentEntryA, RAS_MaxEntryName + 1, NULL, NULL);
|
|
pszName = _szCurrentEntryA;
|
|
}
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYNAMEW lpTemp = (LPW2KRASENTRYNAMEW)_preList;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp[dwConnectionNum].szEntryName, -1,
|
|
_szCurrentEntryA, RAS_MaxEntryName + 1, NULL, NULL);
|
|
pszName = _szCurrentEntryA;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return pszName;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RasEnumConnHelp
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
RasEnumConnHelp::RasEnumConnHelp()
|
|
{
|
|
DWORD dwBufSize;
|
|
|
|
// init
|
|
_dwConnections = 0;
|
|
_dwLastError = 0;
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
_dwStructSize = sizeof(RASCONNW);
|
|
break;
|
|
case ENUM_WIN2K:
|
|
_dwStructSize = sizeof(W2KRASCONNW);
|
|
break;
|
|
}
|
|
|
|
// allocate space for MAX_CONNECTION entries
|
|
dwBufSize = MAX_CONNECTION * _dwStructSize;
|
|
_pRasCon = (LPRASCONNA)LocalAlloc(LPTR, dwBufSize);
|
|
if(_pRasCon == NULL)
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
RasEnumConnHelp::~RasEnumConnHelp()
|
|
{
|
|
if(_pRasCon)
|
|
{
|
|
LocalFree(_pRasCon);
|
|
_pRasCon = NULL;
|
|
}
|
|
}
|
|
|
|
DWORD RasEnumConnHelp::Enum()
|
|
{
|
|
DWORD dwBufSize;
|
|
|
|
_dwLastError = 0;
|
|
|
|
if(_pRasCon)
|
|
{
|
|
dwBufSize = MAX_CONNECTION * _dwStructSize;
|
|
do
|
|
{
|
|
// set up list
|
|
_pRasCon[0].dwSize = _dwStructSize;
|
|
|
|
// call ras to enumerate
|
|
_dwLastError = ERROR_UNKNOWN;
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
case ENUM_WIN2K:
|
|
_dwLastError = _RasEnumConnectionsW((LPRASCONNW)_pRasCon, &dwBufSize, &_dwConnections);
|
|
break;
|
|
}
|
|
|
|
// reallocate buffer if necessary
|
|
if(ERROR_BUFFER_TOO_SMALL == _dwLastError)
|
|
{
|
|
LocalFree(_pRasCon);
|
|
_pRasCon = (LPRASCONNA)LocalAlloc(LPTR, dwBufSize);
|
|
if(NULL == _pRasCon)
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
|
|
} while(TRUE);
|
|
}
|
|
else
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
}
|
|
|
|
return _dwLastError;
|
|
}
|
|
|
|
DWORD
|
|
RasEnumConnHelp::GetError()
|
|
{
|
|
return _dwLastError;
|
|
}
|
|
|
|
DWORD
|
|
RasEnumConnHelp::GetConnectionsCount()
|
|
{
|
|
return _dwConnections;
|
|
}
|
|
|
|
LPWSTR
|
|
RasEnumConnHelp::GetEntryW(DWORD dwConnectionNum)
|
|
{
|
|
LPWSTR pwszName = NULL;
|
|
|
|
if((_pRasCon == NULL) || (dwConnectionNum >= _dwConnections))
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASCONNW lpTemp = (LPRASCONNW)_pRasCon;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
pwszName = lpTemp[dwConnectionNum].szEntryName;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASCONNW lpTemp = (LPW2KRASCONNW)_pRasCon;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
pwszName = lpTemp[dwConnectionNum].szEntryName;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return pwszName;
|
|
}
|
|
|
|
LPSTR
|
|
RasEnumConnHelp::GetEntryA(DWORD dwConnectionNum)
|
|
{
|
|
LPSTR pszName = NULL;
|
|
|
|
if((_pRasCon == NULL) || (dwConnectionNum >= _dwConnections))
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASCONNW lpTemp = (LPRASCONNW)_pRasCon;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp[dwConnectionNum].szEntryName, -1, _szEntryNameA, RAS_MaxEntryName + 1, NULL, NULL);
|
|
pszName = _szEntryNameA;
|
|
}
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASCONNW lpTemp = (LPW2KRASCONNW )_pRasCon;
|
|
if(*lpTemp[dwConnectionNum].szEntryName)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp[dwConnectionNum].szEntryName, -1, _szEntryNameA, RAS_MaxEntryName + 1, NULL, NULL);
|
|
pszName = _szEntryNameA;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return pszName;
|
|
}
|
|
|
|
LPWSTR
|
|
RasEnumConnHelp::GetLastEntryW(DWORD dwConnectionNum)
|
|
{
|
|
UNREFERENCED_PARAMETER(dwConnectionNum);
|
|
|
|
if(_pRasCon == NULL)
|
|
return NULL;
|
|
|
|
return _szEntryNameW;
|
|
}
|
|
|
|
LPSTR
|
|
RasEnumConnHelp::GetLastEntryA(DWORD dwConnectionNum)
|
|
{
|
|
UNREFERENCED_PARAMETER(dwConnectionNum);
|
|
|
|
if(_pRasCon == NULL)
|
|
return NULL;
|
|
|
|
return _szEntryNameA;
|
|
}
|
|
|
|
HRASCONN
|
|
RasEnumConnHelp::GetHandle(DWORD dwConnectionNum)
|
|
{
|
|
HRASCONN hTemp = NULL;
|
|
|
|
if((_pRasCon == NULL) || (dwConnectionNum >= _dwConnections))
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASCONNW lpTemp = (LPRASCONNW)_pRasCon;
|
|
hTemp = lpTemp[dwConnectionNum].hrasconn;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASCONNW lpTemp = (LPW2KRASCONNW)_pRasCon;
|
|
hTemp = lpTemp[dwConnectionNum].hrasconn;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return hTemp;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RasEntryPropHelp
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
RasEntryPropHelp::RasEntryPropHelp()
|
|
{
|
|
// init
|
|
_dwLastError = 0;
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
_dwStructSize = sizeof(RASENTRYW);
|
|
break;
|
|
case ENUM_WIN2K:
|
|
_dwStructSize = sizeof(W2KRASENTRYW);
|
|
break;
|
|
}
|
|
|
|
_pRasEntry = (LPRASENTRYA)LocalAlloc(LPTR, _dwStructSize * 2);
|
|
if(_pRasEntry)
|
|
{
|
|
_pRasEntry->dwSize = _dwStructSize;
|
|
}
|
|
else
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
}
|
|
|
|
if(_pRasEntry && (ERROR_SUCCESS != _dwLastError))
|
|
{
|
|
LocalFree(_pRasEntry);
|
|
_pRasEntry = NULL;
|
|
}
|
|
return;
|
|
}
|
|
|
|
RasEntryPropHelp::~RasEntryPropHelp()
|
|
{
|
|
if(_pRasEntry)
|
|
{
|
|
LocalFree(_pRasEntry);
|
|
_pRasEntry = NULL;
|
|
}
|
|
}
|
|
|
|
DWORD RasEntryPropHelp::GetError()
|
|
{
|
|
return _dwLastError;
|
|
}
|
|
|
|
DWORD RasEntryPropHelp::GetA(LPSTR lpszEntryName)
|
|
{
|
|
DWORD dwSize = _dwStructSize * 2;
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
MultiByteToWideChar(CP_ACP, 0, lpszEntryName, -1, _szEntryNameW, RAS_MaxEntryName + 1 );
|
|
_dwLastError = _RasGetEntryPropertiesW(NULL, _szEntryNameW, (LPRASENTRYW)lpTemp, &dwSize, NULL, NULL);
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
MultiByteToWideChar(CP_ACP, 0, lpszEntryName, -1, _szEntryNameW, RAS_MaxEntryName + 1);
|
|
_dwLastError = _RasGetEntryPropertiesW(NULL, _szEntryNameW, (LPRASENTRYW)lpTemp, &dwSize, NULL, NULL);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return(_dwLastError);
|
|
}
|
|
|
|
DWORD RasEntryPropHelp::GetW(LPWSTR lpszEntryName)
|
|
{
|
|
DWORD dwSize = _dwStructSize * 2;
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
_dwLastError = _RasGetEntryPropertiesW(NULL, lpszEntryName, (LPRASENTRYW)lpTemp, &dwSize, NULL, NULL);
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
_dwLastError = _RasGetEntryPropertiesW(NULL, lpszEntryName, (LPRASENTRYW)lpTemp, &dwSize, NULL, NULL);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return(_dwLastError);
|
|
}
|
|
|
|
LPWSTR RasEntryPropHelp::GetDeviceTypeW(VOID)
|
|
{
|
|
LPWSTR lpwstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szDeviceType)
|
|
lpwstr = lpTemp->szDeviceType;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szDeviceType)
|
|
lpwstr = lpTemp->szDeviceType;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpwstr;
|
|
}
|
|
|
|
LPSTR RasEntryPropHelp::GetDeviceTypeA(VOID)
|
|
{
|
|
LPSTR lpstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szDeviceType)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp->szDeviceType, -1, _szDeviceTypeA, RAS_MaxDeviceType + 1, NULL, NULL);
|
|
lpstr = _szDeviceTypeA;
|
|
}
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szDeviceType)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp->szDeviceType, -1, _szDeviceTypeA, RAS_MaxDeviceType + 1, NULL, NULL);
|
|
lpstr = _szDeviceTypeA;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpstr;
|
|
}
|
|
|
|
LPWSTR RasEntryPropHelp::GetAutodiallDllW()
|
|
{
|
|
LPWSTR lpwstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialDll)
|
|
lpwstr = lpTemp->szAutodialDll;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialDll)
|
|
lpwstr = lpTemp->szAutodialDll;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpwstr;
|
|
}
|
|
|
|
LPSTR RasEntryPropHelp::GetAutodiallDllA()
|
|
{
|
|
LPSTR lpstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialDll)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp->szAutodialDll, -1, _szAutodialDllA, MAX_PATH, NULL, NULL);
|
|
lpstr = _szAutodialDllA;
|
|
}
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialDll)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp->szAutodialDll, -1, _szAutodialDllA, MAX_PATH, NULL, NULL);
|
|
lpstr = _szAutodialDllA;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpstr;
|
|
}
|
|
|
|
LPWSTR RasEntryPropHelp::GetAutodialFuncW()
|
|
{
|
|
LPWSTR lpwstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialFunc)
|
|
lpwstr = lpTemp->szAutodialFunc;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialFunc)
|
|
lpwstr = lpTemp->szAutodialFunc;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpwstr;
|
|
}
|
|
|
|
LPSTR RasEntryPropHelp::GetAutodialFuncA()
|
|
{
|
|
LPSTR lpstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialFunc)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp->szAutodialFunc, -1, _szAutodialFuncA, RAS_MaxDeviceType + 1, NULL, NULL);
|
|
lpstr = _szAutodialFuncA;
|
|
}
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAutodialFunc)
|
|
{
|
|
WideCharToMultiByte(CP_ACP, 0, lpTemp->szAutodialFunc, -1, _szAutodialFuncA, RAS_MaxDeviceType + 1, NULL, NULL);
|
|
lpstr = _szAutodialFuncA;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpstr;
|
|
}
|
|
|
|
LPWSTR RasEntryPropHelp::GetCustomDialDllW()
|
|
{
|
|
LPWSTR lpwstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE: // Not is NT4
|
|
break;
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry ;
|
|
if(*lpTemp->szCustomDialDll)
|
|
lpwstr = lpTemp->szCustomDialDll;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpwstr;
|
|
}
|
|
|
|
LPWSTR RasEntryPropHelp::GetPhoneNumberW()
|
|
{
|
|
LPWSTR lpwstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szLocalPhoneNumber)
|
|
lpwstr = lpTemp->szLocalPhoneNumber;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szLocalPhoneNumber)
|
|
lpwstr = lpTemp->szLocalPhoneNumber;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpwstr;
|
|
}
|
|
|
|
|
|
DWORD RasEntryPropHelp::GetCountryCode()
|
|
{
|
|
DWORD dwCode = 0;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
// country code is at the same place for all versions of the struct,
|
|
// so take the shortcut
|
|
dwCode = _pRasEntry->dwCountryCode;
|
|
}
|
|
|
|
return dwCode;
|
|
}
|
|
|
|
DWORD RasEntryPropHelp::GetOptions()
|
|
{
|
|
DWORD dwOptions = 0;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
// dwfOptions is at the same place for all versions of the struct,
|
|
// so take the shortcut
|
|
dwOptions = _pRasEntry->dwfOptions;
|
|
}
|
|
|
|
return dwOptions;
|
|
}
|
|
|
|
LPWSTR RasEntryPropHelp::GetAreaCodeW()
|
|
{
|
|
LPWSTR lpwstr = NULL;
|
|
|
|
if(_pRasEntry)
|
|
{
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
{
|
|
LPRASENTRYW lpTemp = (LPRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAreaCode)
|
|
lpwstr = lpTemp->szAreaCode;
|
|
break;
|
|
}
|
|
case ENUM_WIN2K:
|
|
{
|
|
LPW2KRASENTRYW lpTemp = (LPW2KRASENTRYW)_pRasEntry;
|
|
if(*lpTemp->szAreaCode)
|
|
lpwstr = lpTemp->szAreaCode;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return lpwstr;
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
RasGetConnectStatusHelp::RasGetConnectStatusHelp(HRASCONN hrasconn)
|
|
{
|
|
// init
|
|
_dwLastError = 0;
|
|
|
|
switch(_EnumType)
|
|
{
|
|
case ENUM_UNICODE:
|
|
case ENUM_WIN2K:
|
|
_dwStructSize = sizeof(RASCONNSTATUSW);
|
|
break;
|
|
}
|
|
|
|
_pRasConnStatus = (LPRASCONNSTATUSA)LocalAlloc(LPTR, _dwStructSize);
|
|
if(_pRasConnStatus)
|
|
{
|
|
_pRasConnStatus->dwSize = _dwStructSize;
|
|
|
|
_dwLastError = _RasGetConnectStatusW(hrasconn, (LPRASCONNSTATUSW)_pRasConnStatus);
|
|
|
|
if(_pRasConnStatus && (ERROR_SUCCESS != _dwLastError))
|
|
{
|
|
LocalFree(_pRasConnStatus);
|
|
_pRasConnStatus = NULL;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
_dwLastError = ERROR_NOT_ENOUGH_MEMORY;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
RasGetConnectStatusHelp::~RasGetConnectStatusHelp()
|
|
{
|
|
_dwLastError = 0;
|
|
if(_pRasConnStatus)
|
|
{
|
|
LocalFree(_pRasConnStatus);
|
|
_pRasConnStatus = NULL;
|
|
}
|
|
}
|
|
|
|
DWORD RasGetConnectStatusHelp::GetError()
|
|
{
|
|
return _dwLastError;
|
|
}
|
|
|
|
RASCONNSTATE RasGetConnectStatusHelp::ConnState()
|
|
{
|
|
RASCONNSTATE hConnState = (RASCONNSTATE)NULL;
|
|
|
|
if(_pRasConnStatus)
|
|
{
|
|
LPRASCONNSTATUSW lpTemp = (LPRASCONNSTATUSW)_pRasConnStatus;
|
|
hConnState = lpTemp->rasconnstate;
|
|
}
|
|
|
|
return hConnState;
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|