Files
firestorm/Gameleap/code/mw4/Libraries/Adept/rasfuncs.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

1151 lines
36 KiB
C++

#include "AdeptHeaders.hpp"
#include "rasfuncs.h"
#include "application.hpp"
#include "missionLang\resource.h"
#include <stdio.h>
#include <windows.h>
#include <ras.h>
#include <raserror.h>
#include <assert.h>
#include <ddraw.h>
#include <d3d.h>
#pragma comment(lib, "rasapi32.lib")
//========================================================================
//========================================================================
namespace RAS
{
HINSTANCE hInstance = NULL;
bool bInitialized = false;
DWORD (APIENTRY *pRasCreatePhonebookEntry)( HWND, LPCSTR ) = NULL;
DWORD (APIENTRY *pRasDial)(LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, DWORD, LPVOID, LPHRASCONN ) = NULL;
DWORD (APIENTRY *pRasEnumConnections)( LPRASCONNA, LPDWORD, LPDWORD ) = NULL;
DWORD (APIENTRY *pRasEnumDevices)(LPRASDEVINFOA, LPDWORD, LPDWORD ) = NULL;
DWORD (APIENTRY *pRasEnumEntries)(LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, LPDWORD ) = NULL;
DWORD (APIENTRY *pRasGetConnectStatus)( HRASCONN, LPRASCONNSTATUSA ) = NULL;
DWORD (APIENTRY *pRasGetEntryDialParams)( LPCSTR, LPRASDIALPARAMSA, LPBOOL ) = NULL;
DWORD (APIENTRY *pRasGetEntryProperties)( LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD ) = NULL;
DWORD (APIENTRY *pRasHangUp)( HRASCONN ) = NULL;
VOID WINAPI RasDialNotifierFunction(HRASCONN hrasconn, UINT unMsg, RASCONNSTATE rascs, DWORD dwError, DWORD dwExtendedError);
const int NotificationType_RasDialFunc = 0;
const int NotificationType_RasDialFunc1 = 1;
const int NotificationType_RasDialFunc2 = 2;
const int NotificationType_Window = 0xFFFFFFFF;
char szStatus[256];
int iStatus = 0; // 0=connecting, 1=connected
HRASCONN hRasCon=NULL;
}
//========================================================================
//========================================================================
extern HWND hWindow;
extern IDirectDraw7* CurrentDDobject;
bool RAS::CreateNewEntry(void)
{
gosASSERT(FALSE); // no RAS
if (!bInitialized)
return 0;
if (true)
{
if (CurrentDDobject)
{
CurrentDDobject->FlipToGDISurface();
}
}
//
// try to determine if we have any "locations" yet
//
HKEY hKey;
if (RegOpenKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Locations", &hKey) == ERROR_SUCCESS)
{
char szSubKeyName[1024];
DWORD dwSize=sizeof(szSubKeyName);
FILETIME ft;
if (RegEnumKeyEx(hKey, 0, szSubKeyName, &dwSize, NULL, NULL, NULL, &ft) == ERROR_SUCCESS)
{
RegCloseKey(hKey);
if (pRasCreatePhonebookEntry(hWindow, NULL))
return false;
else
return false;
}
RegCloseKey(hKey);
}
gos_EnableSetting(gos_Set_MinMaxApp, 0);
if (pRasCreatePhonebookEntry(NULL, NULL))
return false;
return true;
}
//========================================================================
//========================================================================
int RAS::GetStatus(char * &s)
{
gosASSERT(FALSE); // no RAS
s=szStatus;
return iStatus;
}
//========================================================================
//========================================================================
int RAS::GetListOfEntries(char **pList)
{
gosASSERT(FALSE); // no RAS
if (!bInitialized)
return 0;
DWORD dwSize=0;
DWORD dwNum=0;
DWORD dwBufferSize=0;
iStatus = 0;
if (true)
{
RASENTRYNAME *pRen = (RASENTRYNAME *)&dwBufferSize;
dwSize = 0;
dwNum = 0;
dwBufferSize = sizeof(pRen[0]);
RAS::pRasEnumEntries(NULL, NULL, pRen, &dwSize, &dwNum);
if (dwNum)
{
pRen = (RASENTRYNAME *)malloc(dwSize);
if (pRen)
{
pRen[0].dwSize = sizeof(pRen[0]);
RAS::pRasEnumEntries(NULL, NULL, pRen, &dwSize, &dwNum);
for (DWORD i=0 ; i<dwNum ; i++)
{
strcpy(pList[i], pRen[i].szEntryName);
}
for (i=0 ; i<dwNum ; i++)
{
if (true)
{
RASENTRY *re;
DWORD dwRESize = 0;
RAS::pRasGetEntryProperties(NULL, pRen[i].szEntryName, NULL, &dwRESize, NULL, NULL);
if (dwRESize)
{
re = (RASENTRY *)malloc(dwRESize);
if (re)
{
re->dwSize = sizeof(RASENTRY);
RAS::pRasGetEntryProperties(NULL, pRen[i].szEntryName, re, &dwRESize, NULL, NULL);
free(re);
}
}
RASDIALPARAMS rdp;
rdp.dwSize = sizeof(rdp);
strcpy(rdp.szEntryName, pRen[i].szEntryName);
BOOL bPassword = TRUE;
RAS::pRasGetEntryDialParams(NULL, &rdp, &bPassword);
}
//printf("Entry %d: \"%s\"\n", i, pRen[i].szEntryName);
}
free(pRen);
}
}
}
return dwNum;
}
//========================================================================
//========================================================================
bool RAS::GetUserNameAndPassword(char *szEntry, char *szUserName, char *szPassword)
{
gosASSERT(FALSE); // no RAS
if (!bInitialized)
return false;
RASDIALPARAMS rdp;
rdp.dwSize = sizeof(rdp);
strcpy(rdp.szEntryName, szEntry);
BOOL bPassword = TRUE;
RAS::pRasGetEntryDialParams(NULL, &rdp, &bPassword);
strcpy(szUserName, rdp.szUserName);
strcpy(szPassword, rdp.szPassword);
return true;
}
//========================================================================
//========================================================================
bool RAS::Dial(char *pszEntry, char *pszUser, char *pszPassword)
{
gosASSERT(FALSE); // no RAS
if (!bInitialized)
return false;
//
// check to see if we're already connected to a DUN thingy
//
if (true)
{
DWORD dwSize;
DWORD dwNum;
DWORD dwBufferSize;
RASCONN *pRasCon = (RASCONN *)&dwBufferSize;
dwSize = 0;
dwNum = 0;
dwBufferSize = sizeof(pRasCon[0]);
RAS::pRasEnumConnections(pRasCon, &dwSize, &dwNum);
if (dwNum)
{
//
// we're connected to a RAS/DUN entry, so let's just not dial,
// and just go on
//
strcpy(szStatus, "Already connected");
iStatus = 1;
return true;
#ifdef _DEBUG123
pRasCon = (RASCONN *)gos_Malloc(dwSize);
if (pRasCon)
{
pRasCon[0].dwSize = sizeof(pRasCon[0]);
RAS::pRasEnumConnections(pRasCon, &dwSize, &dwNum);
if (dwNum >
for (DWORD i=0 ; i<dwNum ; i++)
{
}
gos_Free(pRasCon);
}
#endif
}
}
RASDIALPARAMS rdp;
rdp.dwSize = sizeof(rdp);
strcpy(rdp.szPhoneNumber, "");
strcpy(rdp.szCallbackNumber, "");
strcpy(rdp.szUserName, pszUser);
strcpy(rdp.szPassword, pszPassword);
strcpy(rdp.szDomain, "*");
strcpy(rdp.szEntryName, pszEntry);
DWORD dwErr;
hRasCon = 0;
if ((dwErr=RAS::pRasDial(NULL, NULL, &rdp, RAS::NotificationType_RasDialFunc1, (LPVOID)RasDialNotifierFunction, &hRasCon)) != 0)
{
printf("Error: %d\n", dwErr);
strcpy(szStatus, "Error trying to dial modem.");
}
return true;
}
//========================================================================
//========================================================================
bool RAS::HangUp(void)
{
gosASSERT(FALSE); // no RAS
if (!bInitialized)
return false;
if (hRasCon)
{
RAS::pRasHangUp(hRasCon);
hRasCon = NULL;
iStatus = 0;
}
return true;
}
//========================================================================
//========================================================================
int RAS::GetStatus(char * &status)
{
gosASSERT(FALSE); // no RAS
if (!bInitialized)
return -1;
return 0;
}
//========================================================================
//========================================================================
VOID WINAPI RAS::RasDialNotifierFunction(HRASCONN hrasconn, UINT unMsg, RASCONNSTATE rascs, DWORD dwError, DWORD dwExtendedError)
{
gosASSERT(FALSE); // no RAS
assert(unMsg == WM_RASDIALEVENT);
if (dwError == 0)
{
switch (rascs)
{
case RASCS_OpenPort:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_OpenPort));
break;
case RASCS_PortOpened:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_PortOpened));
break;
case RASCS_ConnectDevice:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_ConnectDevice));
break;
case RASCS_DeviceConnected:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_DeviceConnected));
break;
case RASCS_AllDevicesConnected:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AllDevicesConnected));
break;
case RASCS_Authenticate:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Authenticate));
break;
case RASCS_AuthNotify:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthNotify));
break;
case RASCS_AuthRetry:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthRetry));
break;
case RASCS_AuthCallback:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthCallback));
break;
case RASCS_AuthChangePassword:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthChangePassword));
break;
case RASCS_AuthProject:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthProject));
break;
case RASCS_AuthLinkSpeed:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthLinkSpeed));
break;
case RASCS_AuthAck:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_AuthAck));
break;
case RASCS_ReAuthenticate:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_ReAuthenticate));
break;
case RASCS_Authenticated:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Authenticated));
break;
case RASCS_PrepareForCallback:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_PrepareForCallback));
break;
case RASCS_WaitForModemReset:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_WaitForModemReset));
break;
case RASCS_WaitForCallback:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_WaitForCallback));
break;
case RASCS_Projected:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Projected));
break;
case RASCS_SubEntryConnected:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_SubEntryConnected));
break;
case RASCS_SubEntryDisconnected:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_SubEntryDisconnected));
break;
case RASCS_Interactive:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Interactive));
break;
case RASCS_RetryAuthentication:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_RetryAuthentication));
break;
case RASCS_CallbackSetByCaller:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_CallbackSetByCaller));
break;
case RASCS_PasswordExpired:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_PasswordExpired));
break;
case RASCS_Connected:
// we must now set the status to 1, so that the script knows we're connected, and that it's okay to
// shut down the dial up networking status window and continue on.
iStatus = 1;
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Connected));
break;
case RASCS_Disconnected:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Disconnected));
break;
case RASCS_StartAuthentication:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_StartAuthentication));
break;
case RASCS_CallbackComplete:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_CallbackComplete));
break;
case RASCS_LogonNetwork:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_LogonNetwork));
break;
default:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_RASCS_Unknown));
break;
}
}
else
{
switch (dwError)
{
case PENDING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_PENDING));
break;
case ERROR_INVALID_PORT_HANDLE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INVALID_PORT_HANDLE));
break;
case ERROR_PORT_ALREADY_OPEN:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_ALREADY_OPEN));
break;
case ERROR_BUFFER_TOO_SMALL:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BUFFER_TOO_SMALL));
break;
case ERROR_WRONG_INFO_SPECIFIED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRONG_INFO_SPECIFIED));
break;
case ERROR_CANNOT_SET_PORT_INFO:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_SET_PORT_INFO));
break;
case ERROR_PORT_NOT_CONNECTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_NOT_CONNECTED));
break;
case ERROR_EVENT_INVALID:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_EVENT_INVALID));
break;
case ERROR_DEVICE_DOES_NOT_EXIST:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DEVICE_DOES_NOT_EXIST));
break;
case ERROR_DEVICETYPE_DOES_NOT_EXIST:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DEVICETYPE_DOES_NOT_EXIST));
break;
case ERROR_BUFFER_INVALID:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BUFFER_INVALID));
break;
case ERROR_ROUTE_NOT_AVAILABLE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ROUTE_NOT_AVAILABLE));
break;
case ERROR_ROUTE_NOT_ALLOCATED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ROUTE_NOT_ALLOCATED));
break;
case ERROR_INVALID_COMPRESSION_SPECIFIED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INVALID_COMPRESSION_SPECIFIED));
break;
case ERROR_OUT_OF_BUFFERS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_OUT_OF_BUFFERS));
break;
case ERROR_PORT_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_NOT_FOUND));
break;
case ERROR_ASYNC_REQUEST_PENDING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ASYNC_REQUEST_PENDING));
break;
case ERROR_ALREADY_DISCONNECTING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ALREADY_DISCONNECTING));
break;
case ERROR_PORT_NOT_OPEN:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_NOT_OPEN));
break;
case ERROR_PORT_DISCONNECTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_DISCONNECTED));
break;
case ERROR_NO_ENDPOINTS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_ENDPOINTS));
break;
case ERROR_CANNOT_OPEN_PHONEBOOK:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_OPEN_PHONEBOOK));
break;
case ERROR_CANNOT_LOAD_PHONEBOOK:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_LOAD_PHONEBOOK));
break;
case ERROR_CANNOT_FIND_PHONEBOOK_ENTRY:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_FIND_PHONEBOOK_ENTRY));
break;
case ERROR_CANNOT_WRITE_PHONEBOOK:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_WRITE_PHONEBOOK));
break;
case ERROR_CORRUPT_PHONEBOOK:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CORRUPT_PHONEBOOK));
break;
case ERROR_CANNOT_LOAD_STRING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_LOAD_STRING));
break;
case ERROR_KEY_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_KEY_NOT_FOUND));
break;
case ERROR_DISCONNECTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DISCONNECTION));
break;
case ERROR_REMOTE_DISCONNECTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_REMOTE_DISCONNECTION));
break;
case ERROR_HARDWARE_FAILURE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_HARDWARE_FAILURE));
break;
case ERROR_USER_DISCONNECTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_USER_DISCONNECTION));
break;
case ERROR_INVALID_SIZE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INVALID_SIZE));
break;
case ERROR_PORT_NOT_AVAILABLE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_NOT_AVAILABLE));
break;
case ERROR_CANNOT_PROJECT_CLIENT:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_PROJECT_CLIENT));
break;
case ERROR_UNKNOWN:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_UNKNOWN));
break;
case ERROR_WRONG_DEVICE_ATTACHED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRONG_DEVICE_ATTACHED));
break;
case ERROR_BAD_STRING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BAD_STRING));
break;
case ERROR_REQUEST_TIMEOUT:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_REQUEST_TIMEOUT));
break;
case ERROR_CANNOT_GET_LANA:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_GET_LANA));
break;
case ERROR_NETBIOS_ERROR:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NETBIOS_ERROR));
break;
case ERROR_SERVER_OUT_OF_RESOURCES:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SERVER_OUT_OF_RESOURCES));
break;
case ERROR_NAME_EXISTS_ON_NET:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NAME_EXISTS_ON_NET));
break;
case ERROR_SERVER_GENERAL_NET_FAILURE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SERVER_GENERAL_NET_FAILURE));
break;
case WARNING_MSG_ALIAS_NOT_ADDED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_WARNING_MSG_ALIAS_NOT_ADDED));
break;
case ERROR_AUTH_INTERNAL:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_AUTH_INTERNAL));
break;
case ERROR_RESTRICTED_LOGON_HOURS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_RESTRICTED_LOGON_HOURS));
break;
case ERROR_ACCT_DISABLED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ACCT_DISABLED));
break;
case ERROR_PASSWD_EXPIRED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PASSWD_EXPIRED));
break;
case ERROR_NO_DIALIN_PERMISSION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_DIALIN_PERMISSION));
break;
case ERROR_SERVER_NOT_RESPONDING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SERVER_NOT_RESPONDING));
break;
case ERROR_FROM_DEVICE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_FROM_DEVICE));
break;
case ERROR_UNRECOGNIZED_RESPONSE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_UNRECOGNIZED_RESPONSE));
break;
case ERROR_MACRO_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_MACRO_NOT_FOUND));
break;
case ERROR_MACRO_NOT_DEFINED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_MACRO_NOT_DEFINED));
break;
case ERROR_MESSAGE_MACRO_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_MESSAGE_MACRO_NOT_FOUND));
break;
case ERROR_DEFAULTOFF_MACRO_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DEFAULTOFF_MACRO_NOT_FOUND));
break;
case ERROR_FILE_COULD_NOT_BE_OPENED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_FILE_COULD_NOT_BE_OPENED));
break;
case ERROR_DEVICENAME_TOO_LONG:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DEVICENAME_TOO_LONG));
break;
case ERROR_DEVICENAME_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DEVICENAME_NOT_FOUND));
break;
case ERROR_NO_RESPONSES:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_RESPONSES));
break;
case ERROR_NO_COMMAND_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_COMMAND_FOUND));
break;
case ERROR_WRONG_KEY_SPECIFIED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRONG_KEY_SPECIFIED));
break;
case ERROR_UNKNOWN_DEVICE_TYPE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_UNKNOWN_DEVICE_TYPE));
break;
case ERROR_ALLOCATING_MEMORY:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ALLOCATING_MEMORY));
break;
case ERROR_PORT_NOT_CONFIGURED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_NOT_CONFIGURED));
break;
case ERROR_DEVICE_NOT_READY:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DEVICE_NOT_READY));
break;
case ERROR_READING_INI_FILE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_INI_FILE));
break;
case ERROR_NO_CONNECTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_CONNECTION));
break;
case ERROR_BAD_USAGE_IN_INI_FILE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BAD_USAGE_IN_INI_FILE));
break;
case ERROR_READING_SECTIONNAME:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_SECTIONNAME));
break;
case ERROR_READING_DEVICETYPE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_DEVICETYPE));
break;
case ERROR_READING_DEVICENAME:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_DEVICENAME));
break;
case ERROR_READING_USAGE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_USAGE));
break;
case ERROR_READING_MAXCONNECTBPS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_MAXCONNECTBPS));
break;
case ERROR_READING_MAXCARRIERBPS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_MAXCARRIERBPS));
break;
case ERROR_LINE_BUSY:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_LINE_BUSY));
break;
case ERROR_VOICE_ANSWER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_VOICE_ANSWER));
break;
case ERROR_NO_ANSWER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_ANSWER));
break;
case ERROR_NO_CARRIER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_CARRIER));
break;
case ERROR_NO_DIALTONE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_DIALTONE));
break;
case ERROR_IN_COMMAND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_IN_COMMAND));
break;
case ERROR_WRITING_SECTIONNAME:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_SECTIONNAME));
break;
case ERROR_WRITING_DEVICETYPE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_DEVICETYPE));
break;
case ERROR_WRITING_DEVICENAME:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_DEVICENAME));
break;
case ERROR_WRITING_MAXCONNECTBPS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_MAXCONNECTBPS));
break;
case ERROR_WRITING_MAXCARRIERBPS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_MAXCARRIERBPS));
break;
case ERROR_WRITING_USAGE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_USAGE));
break;
case ERROR_WRITING_DEFAULTOFF:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_DEFAULTOFF));
break;
case ERROR_READING_DEFAULTOFF:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_READING_DEFAULTOFF));
break;
case ERROR_EMPTY_INI_FILE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_EMPTY_INI_FILE));
break;
case ERROR_AUTHENTICATION_FAILURE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_AUTHENTICATION_FAILURE));
break;
case ERROR_PORT_OR_DEVICE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PORT_OR_DEVICE));
break;
case ERROR_NOT_BINARY_MACRO:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NOT_BINARY_MACRO));
break;
case ERROR_DCB_NOT_FOUND:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_DCB_NOT_FOUND));
break;
case ERROR_STATE_MACHINES_NOT_STARTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_STATE_MACHINES_NOT_STARTED));
break;
case ERROR_STATE_MACHINES_ALREADY_STARTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_STATE_MACHINES_ALREADY_STARTED));
break;
case ERROR_PARTIAL_RESPONSE_LOOPING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PARTIAL_RESPONSE_LOOPING));
break;
case ERROR_UNKNOWN_RESPONSE_KEY:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_UNKNOWN_RESPONSE_KEY));
break;
case ERROR_RECV_BUF_FULL:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_RECV_BUF_FULL));
break;
case ERROR_CMD_TOO_LONG:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CMD_TOO_LONG));
break;
case ERROR_UNSUPPORTED_BPS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_UNSUPPORTED_BPS));
break;
case ERROR_UNEXPECTED_RESPONSE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_UNEXPECTED_RESPONSE));
break;
case ERROR_INTERACTIVE_MODE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INTERACTIVE_MODE));
break;
case ERROR_BAD_CALLBACK_NUMBER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BAD_CALLBACK_NUMBER));
break;
case ERROR_INVALID_AUTH_STATE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INVALID_AUTH_STATE));
break;
case ERROR_WRITING_INITBPS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRITING_INITBPS));
break;
case ERROR_X25_DIAGNOSTIC:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_X25_DIAGNOSTIC));
break;
case ERROR_ACCT_EXPIRED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ACCT_EXPIRED));
break;
case ERROR_CHANGING_PASSWORD:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CHANGING_PASSWORD));
break;
case ERROR_OVERRUN:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_OVERRUN));
break;
case ERROR_RASMAN_CANNOT_INITIALIZE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_RASMAN_CANNOT_INITIALIZE));
break;
case ERROR_BIPLEX_PORT_NOT_AVAILABLE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BIPLEX_PORT_NOT_AVAILABLE));
break;
case ERROR_NO_ACTIVE_ISDN_LINES:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_ACTIVE_ISDN_LINES));
break;
case ERROR_NO_ISDN_CHANNELS_AVAILABLE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_ISDN_CHANNELS_AVAILABLE));
break;
case ERROR_TOO_MANY_LINE_ERRORS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_TOO_MANY_LINE_ERRORS));
break;
case ERROR_IP_CONFIGURATION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_IP_CONFIGURATION));
break;
case ERROR_NO_IP_ADDRESSES:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_IP_ADDRESSES));
break;
case ERROR_PPP_TIMEOUT:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_TIMEOUT));
break;
case ERROR_PPP_REMOTE_TERMINATED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_REMOTE_TERMINATED));
break;
case ERROR_PPP_NO_PROTOCOLS_CONFIGURED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_NO_PROTOCOLS_CONFIGURED));
break;
case ERROR_PPP_NO_RESPONSE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_NO_RESPONSE));
break;
case ERROR_PPP_INVALID_PACKET:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_INVALID_PACKET));
break;
case ERROR_PHONE_NUMBER_TOO_LONG:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PHONE_NUMBER_TOO_LONG));
break;
case ERROR_IPXCP_NO_DIALOUT_CONFIGURED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_IPXCP_NO_DIALOUT_CONFIGURED));
break;
case ERROR_IPXCP_NO_DIALIN_CONFIGURED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_IPXCP_NO_DIALIN_CONFIGURED));
break;
case ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE));
break;
case ERROR_ACCESSING_TCPCFGDLL:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_ACCESSING_TCPCFGDLL));
break;
case ERROR_NO_IP_RAS_ADAPTER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_IP_RAS_ADAPTER));
break;
case ERROR_SLIP_REQUIRES_IP:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SLIP_REQUIRES_IP));
break;
case ERROR_PROJECTION_NOT_COMPLETE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PROJECTION_NOT_COMPLETE));
break;
case ERROR_PROTOCOL_NOT_CONFIGURED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PROTOCOL_NOT_CONFIGURED));
break;
case ERROR_PPP_NOT_CONVERGING:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_NOT_CONVERGING));
break;
case ERROR_PPP_CP_REJECTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_CP_REJECTED));
break;
case ERROR_PPP_LCP_TERMINATED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_LCP_TERMINATED));
break;
case ERROR_PPP_REQUIRED_ADDRESS_REJECTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_REQUIRED_ADDRESS_REJECTED));
break;
case ERROR_PPP_NCP_TERMINATED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_NCP_TERMINATED));
break;
case ERROR_PPP_LOOPBACK_DETECTED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_LOOPBACK_DETECTED));
break;
case ERROR_PPP_NO_ADDRESS_ASSIGNED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_PPP_NO_ADDRESS_ASSIGNED));
break;
case ERROR_CANNOT_USE_LOGON_CREDENTIALS:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_CANNOT_USE_LOGON_CREDENTIALS));
break;
case ERROR_TAPI_CONFIGURATION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_TAPI_CONFIGURATION));
break;
case ERROR_NO_LOCAL_ENCRYPTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_LOCAL_ENCRYPTION));
break;
case ERROR_NO_REMOTE_ENCRYPTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_REMOTE_ENCRYPTION));
break;
case ERROR_REMOTE_REQUIRES_ENCRYPTION:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_REMOTE_REQUIRES_ENCRYPTION));
break;
case ERROR_IPXCP_NET_NUMBER_CONFLICT:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_IPXCP_NET_NUMBER_CONFLICT));
break;
case ERROR_INVALID_SMM:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INVALID_SMM));
break;
case ERROR_SMM_UNINITIALIZED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SMM_UNINITIALIZED));
break;
case ERROR_NO_MAC_FOR_PORT:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_NO_MAC_FOR_PORT));
break;
case ERROR_SMM_TIMEOUT:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SMM_TIMEOUT));
break;
case ERROR_BAD_PHONE_NUMBER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_BAD_PHONE_NUMBER));
break;
case ERROR_WRONG_MODULE:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_WRONG_MODULE));
break;
case ERROR_INVALID_CALLBACK_NUMBER:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_INVALID_CALLBACK_NUMBER));
break;
case ERROR_SCRIPT_SYNTAX:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_SCRIPT_SYNTAX));
break;
case ERROR_HANGUP_FAILED:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_HANGUP_FAILED));
break;
default:
strcpy(szStatus, Application::GetInstance()->GetLocString(IDS_RAS_ERROR_GENERIC));
break;
}
}
return;
}
//========================================================================
//========================================================================
bool RAS::InitializeLibrary(void)
{
gosASSERT(FALSE); // no RAS
if (bInitialized)
return true;
hInstance = LoadLibrary("rasapi32.dll");
if (hInstance)
bInitialized = true;
*(FARPROC *)&pRasCreatePhonebookEntry = GetProcAddress(hInstance, "RasCreatePhonebookEntryA");
*(FARPROC *)&pRasDial = GetProcAddress(hInstance, "RasDialA");
*(FARPROC *)&pRasEnumConnections = GetProcAddress(hInstance, "RasEnumConnectionsA");
*(FARPROC *)&pRasEnumDevices = GetProcAddress(hInstance, "RasEnumDevicesA");
*(FARPROC *)&pRasEnumEntries = GetProcAddress(hInstance, "RasEnumEntriesA");
*(FARPROC *)&pRasGetConnectStatus = GetProcAddress(hInstance, "RasGetConnectStatusA");
*(FARPROC *)&pRasGetEntryDialParams = GetProcAddress(hInstance, "RasGetEntryDialParamsA");
*(FARPROC *)&pRasGetEntryProperties = GetProcAddress(hInstance, "RasGetEntryPropertiesA");
*(FARPROC *)&pRasHangUp = GetProcAddress(hInstance, "RasHangUpA");
if (!pRasCreatePhonebookEntry) goto fail;
if (!pRasDial) goto fail;
if (!pRasEnumConnections) goto fail;
if (!pRasEnumDevices) goto fail;
if (!pRasEnumEntries) goto fail;
if (!pRasGetConnectStatus) goto fail;
if (!pRasGetEntryDialParams) goto fail;
if (!pRasGetEntryProperties) goto fail;
if (!pRasHangUp) goto fail;
return bInitialized;
fail:
TerminateLibrary();
return false;
}
//========================================================================
//========================================================================
bool RAS::TerminateLibrary(void)
{
gosASSERT(FALSE); // no RAS
HangUp();
if (bInitialized)
{
pRasCreatePhonebookEntry = NULL;
pRasDial = NULL;
pRasEnumConnections = NULL;
pRasEnumDevices = NULL;
pRasEnumEntries = NULL;
pRasGetConnectStatus = NULL;
pRasGetEntryDialParams = NULL;
pRasGetEntryProperties = NULL;
pRasHangUp = NULL;
FreeLibrary(hInstance);
bInitialized = false;
}
return true;
}