|
|
/*-----------------------------------------------------------------------------
icwerr.cpp
Maps RAS and downloading errors to string resource indices
Copyright (C) 1996 Microsoft Corporation All rights reserved.
Authors: ChrisK ChrisKauffman
History: 7/22/96 ChrisK Cleaned and formatted
-----------------------------------------------------------------------------*/
#include "pch.hpp"
#include "globals.h"
//#include <raserror.h>
#include "..\inc\icwerr.h"
#define RAS_BOGUS_AUTHFAILCODE_1 84
#define RAS_BOGUS_AUTHFAILCODE_2 74389484
// ############################################################################
WORD RasErrorToIDS(DWORD dwErr) { if(dwErr==RAS_BOGUS_AUTHFAILCODE_1 || dwErr==RAS_BOGUS_AUTHFAILCODE_2) { return IDS_PPPRANDOMFAILURE; }
if((dwErr>=653 && dwErr<=663) || (dwErr==667) || (dwErr>=669 && dwErr<=675)) { #ifdef DEBUG
OutputDebugString("Got random RAS MEDIA error!\r\n"); #endif
return IDS_MEDIAINIERROR; } switch(dwErr) { default: return IDS_PPPRANDOMFAILURE;
case SUCCESS: return IDS_PPPRANDOMFAILURE;
case ERROR_DOWNLOADDIDNT: return IDS_CANTDOWNLOAD; case ERROR_LINE_BUSY: return IDS_PHONEBUSY;
case ERROR_NO_ANSWER: return IDS_NOANSWER; case ERROR_VOICE_ANSWER: case ERROR_NO_CARRIER: return IDS_RASNOCARRIER; case ERROR_NO_DIALTONE: return IDS_NODIALTONE;
case ERROR_HARDWARE_FAILURE: // modem turned off
case ERROR_PORT_ALREADY_OPEN: // procomm/hypertrm/RAS has COM port
case ERROR_PORT_OR_DEVICE: return IDS_NODEVICE;
case ERROR_USER_DISCONNECTION: return IDS_USERCANCELEDDIAL;
case ERROR_BUFFER_INVALID: // bad/empty rasdilap struct
case ERROR_BUFFER_TOO_SMALL: // ditto?
case ERROR_CANNOT_FIND_PHONEBOOK_ENTRY: // if connectoid name in registry is wrong
return IDS_TCPINSTALLERROR;
case ERROR_AUTHENTICATION_FAILURE: // get this on actual CHAP reject
return IDS_PPPRANDOMFAILURE;
case ERROR_PPP_TIMEOUT: // get this on CHAP timeout
return IDS_PPPRANDOMFAILURE;
case ERROR_REMOTE_DISCONNECTION: // Ascend drops connection on auth-fail
return IDS_PPPRANDOMFAILURE;
case ERROR_AUTH_INTERNAL: // got this on random POP failure
case ERROR_PROTOCOL_NOT_CONFIGURED: // get this if LCP fails
case ERROR_PPP_NO_PROTOCOLS_CONFIGURED: // get this if IPCP addr download gives garbage
return IDS_PPPRANDOMFAILURE;
case ERROR_USERCANCEL: return IDS_USERCANCELEDDIAL;
/******
case ERROR_CHANGING_PASSWORD: case ERROR_PASSWD_EXPIRED: ev = EVENT_INVALIDPASSWORD; break;
case ERROR_ACCT_DISABLED: case ERROR_ACCT_EXPIRED: ev = EVENT_LOCKEDACCOUNT; break;
case ERROR_NO_DIALIN_PERMISSION: case ERROR_RESTRICTED_LOGON_HOURS: case ERROR_AUTHENTICATION_FAILURE: ev = EVENT_RAS_AUTH_FAILED; break;
case ERROR_ALREADY_DISCONNECTING: case ERROR_DISCONNECTION: ev = EVENT_CONNECTION_DROPPED; break;
case PENDING: case ERROR_INVALID_PORT_HANDLE: case ERROR_CANNOT_SET_PORT_INFO: case ERROR_PORT_NOT_CONNECTED: case ERROR_DEVICE_DOES_NOT_EXIST: case ERROR_DEVICETYPE_DOES_NOT_EXIST: case ERROR_PORT_NOT_FOUND: case ERROR_DEVICENAME_TOO_LONG: case ERROR_DEVICENAME_NOT_FOUND: ev=EVENT_BAD_MODEM_CONFIG; break;
case ERROR_TAPI_CONFIGURATION: ev=EVENT_BAD_TAPI_CONFIG; break; ev=EVENT_MODEM_BUSY; break; case ERROR_BUFFER_TOO_SMALL: case ERROR_WRONG_INFO_SPECIFIED: case ERROR_EVENT_INVALID: case ERROR_BUFFER_INVALID: case ERROR_ASYNC_REQUEST_PENDING: case ERROR_CANNOT_OPEN_PHONEBOOK: case ERROR_CANNOT_LOAD_PHONEBOOK: case ERROR_CANNOT_WRITE_PHONEBOOK: case ERROR_CORRUPT_PHONEBOOK: case ERROR_CANNOT_LOAD_STRING: case ERROR_OUT_OF_BUFFERS: case ERROR_MACRO_NOT_FOUND: case ERROR_MACRO_NOT_DEFINED: case ERROR_MESSAGE_MACRO_NOT_FOUND: case ERROR_DEFAULTOFF_MACRO_NOT_FOUND: case ERROR_FILE_COULD_NOT_BE_OPENED: case ERROR_PORT_NOT_OPEN: case ERROR_PORT_DISCONNECTED: case ERROR_NO_ENDPOINTS: case ERROR_KEY_NOT_FOUND: case ERROR_INVALID_SIZE: case ERROR_PORT_NOT_AVAILABLE: case ERROR_UNKNOWN: case ERROR_WRONG_DEVICE_ATTACHED: case ERROR_BAD_STRING: case ERROR_BAD_USAGE_IN_INI_FILE: case ERROR_READING_SECTIONNAME: case ERROR_READING_DEVICETYPE: case ERROR_READING_DEVICENAME: case ERROR_READING_USAGE: case ERROR_READING_MAXCONNECTBPS: case ERROR_READING_MAXCARRIERBPS: case ERROR_IN_COMMAND: case ERROR_WRITING_SECTIONNAME: case ERROR_WRITING_DEVICETYPE: case ERROR_WRITING_DEVICENAME: case ERROR_WRITING_MAXCONNECTBPS: case ERROR_WRITING_MAXCARRIERBPS: case ERROR_WRITING_USAGE: case ERROR_WRITING_DEFAULTOFF: case ERROR_READING_DEFAULTOFF: case ERROR_EMPTY_INI_FILE: case ERROR_FROM_DEVICE: case ERROR_UNRECOGNIZED_RESPONSE: case ERROR_NO_RESPONSES: case ERROR_NO_COMMAND_FOUND: case ERROR_WRONG_KEY_SPECIFIED: case ERROR_UNKNOWN_DEVICE_TYPE: case ERROR_ALLOCATING_MEMORY: case ERROR_PORT_NOT_CONFIGURED: case ERROR_DEVICE_NOT_READY: case ERROR_READING_INI_FILE: case ERROR_NO_CONNECTION: case ERROR_PORT_OR_DEVICE: case ERROR_NOT_BINARY_MACRO: case ERROR_DCB_NOT_FOUND: case ERROR_STATE_MACHINES_NOT_STARTED: case ERROR_STATE_MACHINES_ALREADY_STARTED: case ERROR_PARTIAL_RESPONSE_LOOPING: case ERROR_UNKNOWN_RESPONSE_KEY: case ERROR_RECV_BUF_FULL: case ERROR_CMD_TOO_LONG: case ERROR_UNSUPPORTED_BPS: case ERROR_UNEXPECTED_RESPONSE: case ERROR_INTERACTIVE_MODE: case ERROR_BAD_CALLBACK_NUMBER: case ERROR_INVALID_AUTH_STATE: case ERROR_WRITING_INITBPS: case ERROR_X25_DIAGNOSTIC: case ERROR_OVERRUN: case ERROR_RASMAN_CANNOT_INITIALIZE: case ERROR_BIPLEX_PORT_NOT_AVAILABLE: case ERROR_NO_ACTIVE_ISDN_LINES: case ERROR_NO_ISDN_CHANNELS_AVAILABLE: case ERROR_TOO_MANY_LINE_ERRORS: ev=EVENT_INTERNAL_ERROR; break; case ERROR_ROUTE_NOT_AVAILABLE: case ERROR_ROUTE_NOT_ALLOCATED: case ERROR_INVALID_COMPRESSION_SPECIFIED: case ERROR_CANNOT_PROJECT_CLIENT: case ERROR_CANNOT_GET_LANA: case ERROR_NETBIOS_ERROR: case ERROR_NAME_EXISTS_ON_NET: ev=EVENT_BAD_NET_CONFIG; break; case ERROR_REQUEST_TIMEOUT: case ERROR_SERVER_OUT_OF_RESOURCES: case ERROR_SERVER_GENERAL_NET_FAILURE: case WARNING_MSG_ALIAS_NOT_ADDED: case ERROR_SERVER_NOT_RESPONDING: ev=EVENT_GENERAL_NET_ERROR; break; case ERROR_IP_CONFIGURATION: case ERROR_NO_IP_ADDRESSES: case ERROR_PPP_REMOTE_TERMINATED: case ERROR_PPP_NO_RESPONSE: case ERROR_PPP_INVALID_PACKET: case ERROR_PHONE_NUMBER_TOO_LONG: case ERROR_IPXCP_NO_DIALOUT_CONFIGURED: case ERROR_IPXCP_NO_DIALIN_CONFIGURED: case ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE: case ERROR_ACCESSING_TCPCFGDLL: case ERROR_NO_IP_RAS_ADAPTER: case ERROR_SLIP_REQUIRES_IP: case ERROR_PROJECTION_NOT_COMPLETE: case ERROR_PPP_NOT_CONVERGING: case ERROR_PPP_CP_REJECTED: case ERROR_PPP_LCP_TERMINATED: case ERROR_PPP_REQUIRED_ADDRESS_REJECTED: case ERROR_PPP_NCP_TERMINATED: case ERROR_PPP_LOOPBACK_DETECTED: case ERROR_PPP_NO_ADDRESS_ASSIGNED: case ERROR_CANNOT_USE_LOGON_CREDENTIALS: case ERROR_NO_LOCAL_ENCRYPTION: case ERROR_NO_REMOTE_ENCRYPTION: case ERROR_REMOTE_REQUIRES_ENCRYPTION: case ERROR_IPXCP_NET_NUMBER_CONFLICT: ev = EVENT_PPP_FAILURE; break; ***********/ } return (0xFFFF); }
// ############################################################################
HRESULT LoadDialErrorString(HRESULT hrIN, LPTSTR lpszBuff, DWORD dwBufferSize) { if (lpszBuff && dwBufferSize) { WORD wSID = 0; wSID = RasErrorToIDS(hrIN); if (0xFFFF != wSID) { if (0 != LoadString(GetModuleHandle(NULL),wSID,lpszBuff,(int)dwBufferSize)) return ERROR_SUCCESS; } } return ERROR_INVALID_PARAMETER; }
HRESULT WINAPI StatusMessageCallback(DWORD dwStatus, LPTSTR pszBuffer, DWORD dwBufferSize) { WORD iIDS = 0;
switch(dwStatus) { case RASCS_OpenPort: iIDS = IDS_RAS_OPENPORT; break; case RASCS_PortOpened: iIDS = IDS_RAS_PORTOPENED; break; case RASCS_ConnectDevice: iIDS = IDS_RAS_DIALING; break; case RASCS_DeviceConnected: iIDS = IDS_RAS_CONNECTED; break; #if (WINVER >= 0x400)
case RASCS_StartAuthentication: case RASCS_LogonNetwork: iIDS = IDS_RAS_LOCATING; break; // case RASCS_CallbackComplete:
// iIDS = IDS_RAS_CONNECTED;
// break;
#endif
/* ETC...
RASCS_AllDevicesConnected, RASCS_Authenticate, RASCS_AuthNotify, RASCS_AuthRetry, RASCS_AuthCallback, RASCS_AuthChangePassword, RASCS_AuthProject, RASCS_AuthLinkSpeed, RASCS_AuthAck, RASCS_ReAuthenticate, RASCS_Authenticated, RASCS_PrepareForCallback, RASCS_WaitForModemReset, RASCS_WaitForCallback, RASCS_Projected, RASCS_Interactive = RASCS_PAUSED, RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired, */ case RASCS_Connected: break;
case RASCS_Disconnected: break; } if (iIDS && 0 != LoadString(GetModuleHandle(NULL),iIDS,pszBuffer,(int)dwBufferSize)) return ERROR_SUCCESS; else return ERROR_INVALID_PARAMETER; }
|