|
|
//****************************************************************************
//
// Module: ISIGNUP.EXE
// File: extfunc.c
// Content: This file contains all the functions that handle
// History:
// Sat 10-Mar-1996 23:50:40 -by- Mark MacLin [mmaclin]
//
// Copyright (c) Microsoft Corporation 1991-1996
//
//****************************************************************************
#include "isignup.h"
static const TCHAR cszRnaPhDLL[] = TEXT("RNAPH.DLL"); #ifdef WIN32
static const TCHAR cszRasDLL[] = TEXT("RASAPI32.DLL"); static const TCHAR cszBrandingDLL[] = TEXT("IEDKCS32.DLL"); #else
static const CHAR cszRasDLL[] = "RASC16IE.DLL"; static const CHAR cszBrandingDLL[] = "IEDKCS16.DLL"; #endif
RASENUMCONNECTIONS lpfnRasEnumConnections = NULL; RASHANGUP lpfnRasHangUp = NULL; RASDELETEENTRY lpfnRasDeleteEntry = NULL; RASGETENTRYDIALPARAMS lpfnRasGetEntryDialParams = NULL; RASDIAL lpfnRasDial = NULL; RASGETCONECTSTATUS lpfnRasGetConnectStatus = NULL; RASGETERRORSTRING lpfnRasGetErrorString = NULL; RASGETENTRYPROPERTIES lpfnRasGetEntryProperties = NULL; RASENUMDEVICES lpfnRasEnumDevices = NULL; RASSETENTRYPROPERTIES lpfnRasSetEntryProperties = NULL; RASSETENTRYDIALPARAMS lpfnRasSetEntryDialParams = NULL;
#ifdef WIN32
// these two should only be used on NT, and _not_ on Win95
RASSETAUTODIALENABLE lpfnRasSetAutodialEnable = NULL; RASSETAUTODIALADDRESS lpfnRasSetAutodialAddress = NULL; #endif
#ifdef UNUSED
RASVALIDATEENTRYNAME lpfnRasValidateEntryName = NULL; RASRENAMEENTRY lpfnRasRenameEntry = NULL; RASGETCOUNTRYINFO lpfnRasGetCountryInfo = NULL; #endif
#ifdef WIN32
INETCONFIGSYSTEM lpfnInetConfigSystem = NULL; INETGETPROXY lpfnInetGetProxy = NULL; #endif
INETCONFIGCLIENT lpfnInetConfigClient = NULL; INETGETAUTODIAL lpfnInetGetAutodial = NULL; INETSETAUTODIAL lpfnInetSetAutodial = NULL; INETSETCLIENTINFO lpfnInetSetClientInfo = NULL; INETSETPROXY lpfnInetSetProxy = NULL; #ifdef UNUSED
INETGETCLIENTINFO lpfnInetGetClientInfo = NULL; #endif
#ifdef WIN32
BRANDICW lpfnBrandICW = NULL; #else
BRANDME lpfnBrandMe = NULL; #endif
typedef struct tagApiFcn { LPVOID FAR* lplpfn; LPCSTR szApiName; } APIFCN;
#ifdef UNICODE
APIFCN RasProcList[] = { { (LPVOID *) &lpfnRasEnumConnections, "RasEnumConnectionsW"}, { (LPVOID *) &lpfnRasHangUp, "RasHangUpW"}, { (LPVOID *) &lpfnRasGetEntryDialParams,"RasGetEntryDialParamsW"}, { (LPVOID *) &lpfnRasDial, "RasDialW"}, { (LPVOID *) &lpfnRasGetConnectStatus, "RasGetConnectStatusW"}, { (LPVOID *) &lpfnRasGetErrorString, "RasGetErrorStringW"}, { (LPVOID *) &lpfnRasSetEntryDialParams,"RasSetEntryDialParamsW"}, }; #else // UNICODE
APIFCN RasProcList[] = { { (LPVOID *) &lpfnRasEnumConnections, "RasEnumConnectionsA"}, { (LPVOID *) &lpfnRasHangUp, "RasHangUpA"}, { (LPVOID *) &lpfnRasGetEntryDialParams,"RasGetEntryDialParamsA"}, { (LPVOID *) &lpfnRasDial, "RasDialA"}, { (LPVOID *) &lpfnRasGetConnectStatus, "RasGetConnectStatusA"}, { (LPVOID *) &lpfnRasGetErrorString, "RasGetErrorStringA"}, { (LPVOID *) &lpfnRasSetEntryDialParams,"RasSetEntryDialParamsA"}, }; #endif // UNICODE
#define cRasProc (sizeof(RasProcList) / sizeof(RasProcList[0]))
#ifdef WIN32
#ifdef UNICODE
APIFCN RasProcListNT[] = { { (LPVOID *) &lpfnRasEnumConnections, "RasEnumConnectionsW"}, { (LPVOID *) &lpfnRasHangUp, "RasHangUpW"}, { (LPVOID *) &lpfnRasGetEntryDialParams,"RasGetEntryDialParamsW"}, { (LPVOID *) &lpfnRasDial, "RasDialW"}, { (LPVOID *) &lpfnRasGetConnectStatus, "RasGetConnectStatusW"}, { (LPVOID *) &lpfnRasGetErrorString, "RasGetErrorStringW"}, { (LPVOID *) &lpfnRasSetAutodialEnable, "RasSetAutodialEnableW"}, { (LPVOID *) &lpfnRasSetAutodialAddress,"RasSetAutodialAddressW"}, { (LPVOID *) &lpfnRasSetEntryDialParams,"RasSetEntryDialParamsW"}, }; #else // UNICODE
APIFCN RasProcListNT[] = { { (LPVOID *) &lpfnRasEnumConnections, "RasEnumConnectionsA"}, { (LPVOID *) &lpfnRasHangUp, "RasHangUpA"}, { (LPVOID *) &lpfnRasGetEntryDialParams,"RasGetEntryDialParamsA"}, { (LPVOID *) &lpfnRasDial, "RasDialA"}, { (LPVOID *) &lpfnRasGetConnectStatus, "RasGetConnectStatusA"}, { (LPVOID *) &lpfnRasGetErrorString, "RasGetErrorStringA"}, { (LPVOID *) &lpfnRasSetAutodialEnable, "RasSetAutodialEnableA"}, { (LPVOID *) &lpfnRasSetAutodialAddress,"RasSetAutodialAddressA"}, { (LPVOID *) &lpfnRasSetEntryDialParams,"RasSetEntryDialParamsA"}, }; #endif // UNICODE
#define cRasProcNT (sizeof(RasProcListNT) / sizeof(RasProcListNT[0]))
#endif
APIFCN RnaPhProcList[] = { #ifdef UNICODE
{ (LPVOID *) &lpfnRasDeleteEntry, "RasDeleteEntryW"}, { (LPVOID *) &lpfnRasGetEntryProperties,"RasGetEntryPropertiesW"}, { (LPVOID *) &lpfnRasEnumDevices, "RasEnumDevicesW"}, { (LPVOID *) &lpfnRasSetEntryProperties,"RasSetEntryPropertiesW"}, #else
{ (LPVOID *) &lpfnRasDeleteEntry, "RasDeleteEntryA"}, { (LPVOID *) &lpfnRasGetEntryProperties,"RasGetEntryPropertiesA"}, { (LPVOID *) &lpfnRasEnumDevices, "RasEnumDevicesA"}, { (LPVOID *) &lpfnRasSetEntryProperties,"RasSetEntryPropertiesA"}, #endif
#ifdef UNUSED
{ (LPVOID *) &lpfnRasValidateEntryName, "RasValidateEntryName"}, { (LPVOID *) &lpfnRasRenameEntry, "RasRenameEntry"}, { (LPVOID *) &lpfnRasGetCountryInfo, "RasGetCountryInfo"}, #endif
};
#define cRnaPhProc (sizeof(RnaPhProcList) / sizeof(RnaPhProcList[0]))
APIFCN InetProcList[] = { #ifdef WIN32
{ (LPVOID *) &lpfnInetConfigSystem, "InetConfigSystem"}, #ifdef UNICODE
{ (LPVOID *) &lpfnInetGetProxy, "InetGetProxyW"}, #else
{ (LPVOID *) &lpfnInetGetProxy, "InetGetProxy"}, #endif // UNICODE
#endif // WIN32
#ifdef UNICODE
{ (LPVOID *) &lpfnInetConfigClient, "InetConfigClientW"}, { (LPVOID *) &lpfnInetGetAutodial, "InetGetAutodialW"}, { (LPVOID *) &lpfnInetSetAutodial, "InetSetAutodialW"}, { (LPVOID *) &lpfnInetSetClientInfo, "InetSetClientInfoW"}, { (LPVOID *) &lpfnInetSetProxy, "InetSetProxyW"}, #else
{ (LPVOID *) &lpfnInetConfigClient, "InetConfigClient"}, { (LPVOID *) &lpfnInetGetAutodial, "InetGetAutodial"}, { (LPVOID *) &lpfnInetSetAutodial, "InetSetAutodial"}, { (LPVOID *) &lpfnInetSetClientInfo, "InetSetClientInfo"}, { (LPVOID *) &lpfnInetSetProxy, "InetSetProxy"}, #endif // UNICODE
#ifdef UNUSED
#ifdef UNICODE
{ (LPVOID *) &lpfnInetGetClientInfo, "InetGetClientInfoW"}, #else
{ (LPVOID *) &lpfnInetGetClientInfo, "InetGetClientInfo"}, #endif
#endif
};
#define cInetProc (sizeof(InetProcList) / sizeof(InetProcList[0]))
APIFCN BrandingProcList[] = { #ifdef WIN32
{ (LPVOID *) &lpfnBrandICW, "BrandICW2"}, #else
{ (LPVOID *) &lpfnBrandMe, "BrandMe"}, #endif
};
#define cBrandingProc (sizeof(BrandingProcList) / sizeof(BrandingProcList[0]))
static HINSTANCE ghRas = NULL; static HINSTANCE ghRnaPh = NULL; static HINSTANCE ghInet = NULL; static HINSTANCE ghBranding = NULL;
#ifndef WIN32
static int iRasRefs = 0; static int iInetRefs = 0; static int iBrandingRefs = 0; #endif
HINSTANCE InitLpfn(LPCTSTR szDllName, APIFCN *pProcList, int cProcs);
BOOL LoadRnaFunctions(HWND hwndParent) { #if !defined(WIN16)
if (!IsRASReady()) { DebugOut("ISIGN32: Attempted to load RAS API's however, the system isn't ready for it.\r\n"); return FALSE; } #endif
if (ghRas == NULL) { if (RAS_MaxEntryName != 256) { // MessageBox(NULL, "Invalid header used for compile", szAppName, MB_OK);
return FALSE; }
#ifdef WIN32
// 1/7/96 jmazner Normandy #12930
// init different proc lists based on whether we're in NT or not.
if( IsNT() ) { if ((ghRas = InitLpfn(cszRasDLL, RasProcListNT, cRasProcNT)) == NULL) { ErrorMsg(hwndParent, IDS_MISSINGRNADLL); return FALSE; } } else { #endif
if ((ghRas = InitLpfn(cszRasDLL, RasProcList, cRasProc)) == NULL) { ErrorMsg(hwndParent, IDS_MISSINGRNADLL); return FALSE; } #ifdef WIN32
} #endif
if ((ghRnaPh = InitLpfn(cszRasDLL, RnaPhProcList, cRnaPhProc)) == NULL) { #ifdef WIN32
//
// we only load RNAPH.DLL if it is not NT
// MKarki (5/4/97) - Fix for Bug #3378
//
if (FALSE == IsNT ()) { #endif
if ((ghRnaPh = InitLpfn(cszRnaPhDLL, RnaPhProcList, cRnaPhProc)) == NULL) { FreeLibrary(ghRas); ghRas = NULL; ErrorMsg(hwndParent, IDS_WRONGRNADLLVER); return FALSE; } #ifdef WIN32
} else { FreeLibrary(ghRas); ghRas = NULL; ErrorMsg(hwndParent, IDS_WRONGRNADLLVER); return FALSE; } #endif
} }
#ifndef WIN32
++iRasRefs; #endif
return TRUE; }
BOOL LoadInetFunctions(HWND hwndParent) { if (ghInet == NULL) { if ((ghInet = InitLpfn(TEXT("INETCFG.DLL"), InetProcList, cInetProc)) == NULL) { ErrorMsg(hwndParent, IDS_MISSINGCFGDLL); return FALSE; } }
#ifndef WIN32
++iInetRefs; #endif
return TRUE; }
BOOL LoadBrandingFunctions(void) { if (ghBranding == NULL) { if ((ghBranding = InitLpfn(cszBrandingDLL, BrandingProcList, cBrandingProc)) == NULL) { return FALSE; } }
#ifndef WIN32
++iBrandingRefs; #endif
return TRUE; }
HINSTANCE InitLpfn(LPCTSTR szDllName, APIFCN *pProcList, int cProcs) { int i; HINSTANCE hLib; hLib = LoadLibrary(szDllName);
if (hLib != NULL) { for (i = 0; i < cProcs; i++) { *pProcList[i].lplpfn = (LPVOID) GetProcAddress(hLib, pProcList[i].szApiName); if (*pProcList[i].lplpfn == NULL) { #if 0
CHAR szMsg[256];
wsprintf(szMsg, "Could not find %s in %s", pProcList[i].szApiName, szDllName); MessageBox(NULL, szMsg, "Internet Signup", MB_OK); #endif
FreeLibrary(hLib); return NULL; } } } #if 0
else { wsprintf(szMsg, "Could not load %s", szDllName); MessageBox(NULL, szMsg, "Internet Signup", MB_OK); } #endif
return hLib; }
void UnloadRnaFunctions(void) { #ifndef WIN32
if (0 != --iRasRefs) { return; } #endif
// need to unload libraries
if (NULL != ghRas) { FreeLibrary(ghRas); ghRas = NULL; } if (NULL != ghRnaPh) { FreeLibrary(ghRnaPh); ghRas = NULL; } }
void UnloadInetFunctions(void) { #ifndef WIN32
if (0 != --iInetRefs) { return; } #endif
if (NULL != ghInet) { FreeLibrary(ghInet); ghInet = NULL; } }
void UnloadBrandingFunctions(void) { #ifndef WIN32
if (0 != --iBrandingRefs) { return; } #endif
if (NULL != ghBranding) { FreeLibrary(ghBranding); ghBranding = NULL; } }
|