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.
2756 lines
83 KiB
2756 lines
83 KiB
/* Copyright (c) 1996, Microsoft Corporation, all rights reserved
|
|
**
|
|
** loaddlls.c
|
|
** RAS DLL load routines
|
|
** Listed alphabetically
|
|
**
|
|
** 02/17/96 Steve Cobb
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <nt.h>
|
|
#include <ntrtl.h>
|
|
#include <nturtl.h>
|
|
#include <windows.h>
|
|
#include <rpc.h>
|
|
#include "rasrpc.h"
|
|
#include <debug.h> // Trace and assert
|
|
#include <nouiutil.h>
|
|
#include <loaddlls.h> // Our public header
|
|
#include <rasrpclb.h>
|
|
#include <rasman.h>
|
|
|
|
/*----------------------------------------------------------------------------
|
|
** Constants
|
|
**----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define RasRpcCatchException(_pStatus) \
|
|
RpcExcept(I_RpcExceptionFilter(*(_pStatus) = RpcExceptionCode()))
|
|
|
|
#ifdef UNICODE
|
|
#define SZ_RasConnectionNotification "RasConnectionNotificationW"
|
|
#define SZ_RasDeleteEntry "RasDeleteEntryW"
|
|
#define SZ_RasDial "RasDialW"
|
|
#define SZ_RasDialDlg "RasDialDlgW"
|
|
#define SZ_RasEntryDlg "RasEntryDlgW"
|
|
#define SZ_RasEnumConnections "RasEnumConnectionsW"
|
|
#define SZ_RasEnumEntries "RasEnumEntriesW"
|
|
#define SZ_RasGetAutodialEnable "RasGetAutodialEnableW"
|
|
#define SZ_RasGetAutodialParam "RasGetAutodialParamW"
|
|
#define SZ_RasGetConnectResponse "RasGetConnectResponse"
|
|
#define SZ_RasGetConnectStatus "RasGetConnectStatusW"
|
|
#define SZ_RasGetCountryInfo "RasGetCountryInfoW"
|
|
#define SZ_RasGetCredentials "RasGetCredentialsW"
|
|
#define SZ_RasGetEntryDialParams "RasGetEntryDialParamsW"
|
|
#define SZ_RasGetEntryProperties "RasGetEntryPropertiesW"
|
|
#define SZ_RasGetErrorString "RasGetErrorStringW"
|
|
#define SZ_RasGetProjectionInfo "RasGetProjectionInfoW"
|
|
#define SZ_RasGetSubEntryHandle "RasGetSubEntryHandleW"
|
|
#define SZ_RasHangUp "RasHangUpW"
|
|
#define SZ_RasPhonebookDlg "RasPhonebookDlgW"
|
|
#define SZ_RasSetAutodialEnable "RasSetAutodialEnableW"
|
|
#define SZ_RasSetAutodialParam "RasSetAutodialParamW"
|
|
#define SZ_RasSetCredentials "RasSetCredentialsW"
|
|
#define SZ_RasValidateEntryName "RasValidateEntryNameW"
|
|
#define SZ_RouterEntryDlg "RouterEntryDlgW"
|
|
#define SZ_RasSetEapUserData "RasSetEapUserDataW"
|
|
#else
|
|
#define SZ_RasConnectionNotification "RasConnectionNotificationA"
|
|
#define SZ_RasDeleteEntry "RasDeleteEntryA"
|
|
#define SZ_RasDial "RasDialA"
|
|
#define SZ_RasDialDlg "RasDialDlgA"
|
|
#define SZ_RasEnumConnections "RasEnumConnectionsA"
|
|
#define SZ_RasEnumEntries "RasEnumEntriesA"
|
|
#define SZ_RasGetAutodialEnable "RasGetAutodialEnableA"
|
|
#define SZ_RasGetAutodialParam "RasGetAutodialParamA"
|
|
#define SZ_RasGetConnectResponse "RasGetConnectResponse"
|
|
#define SZ_RasGetConnectStatus "RasGetConnectStatusA"
|
|
#define SZ_RasGetCountryInfo "RasGetCountryInfoA"
|
|
#define SZ_RasGetCredentials "RasGetCredentialsA"
|
|
#define SZ_RasGetEntryDialParams "RasGetEntryDialParamsA"
|
|
#define SZ_RasGetEntryProperties "RasGetEntryPropertiesA"
|
|
#define SZ_RasGetErrorString "RasGetErrorStringA"
|
|
#define SZ_RasGetProjectionInfo "RasGetProjectionInfoA"
|
|
#define SZ_RasGetSubEntryHandle "RasGetSubEntryHandleA"
|
|
#define SZ_RasHangUp "RasHangUpA"
|
|
#define SZ_RasPhonebookDlg "RasPhonebookDlgA"
|
|
#define SZ_RasSetAutodialEnable "RasSetAutodialEnableA"
|
|
#define SZ_RasSetAutodialParam "RasSetAutodialParamA"
|
|
#define SZ_RasSetCredentials "RasSetCredentialsA"
|
|
#define SZ_RasValidateEntryName "RasValidateEntryNameA"
|
|
#define SZ_RouterEntryDlg "RouterEntryDlgA"
|
|
#define SZ_RasSetEapUserData "RasSetEapUserDataA"
|
|
#endif
|
|
#define SZ_MprAdminInterfaceCreate "MprAdminInterfaceCreate"
|
|
#define SZ_MprAdminInterfaceDelete "MprAdminInterfaceDelete"
|
|
#define SZ_MprAdminInterfaceGetHandle "MprAdminInterfaceGetHandle"
|
|
#define SZ_MprAdminInterfaceGetCredentials "MprAdminInterfaceGetCredentials"
|
|
#define SZ_MprAdminInterfaceGetCredentialsEx "MprAdminInterfaceGetCredentialsEx"
|
|
#define SZ_MprAdminInterfaceSetCredentials "MprAdminInterfaceSetCredentials"
|
|
#define SZ_MprAdminInterfaceSetCredentialsEx "MprAdminInterfaceSetCredentialsEx"
|
|
#define SZ_MprAdminBufferFree "MprAdminBufferFree"
|
|
#define SZ_MprAdminInterfaceTransportAdd "MprAdminInterfaceTransportAdd"
|
|
#define SZ_MprAdminInterfaceTransportSetInfo "MprAdminInterfaceTransportSetInfo"
|
|
#define SZ_MprAdminServerConnect "MprAdminServerConnect"
|
|
#define SZ_MprAdminServerDisconnect "MprAdminServerDisconnect"
|
|
#define SZ_MprAdminTransportSetInfo "MprAdminTransportSetInfo"
|
|
#define SZ_RasAdminBufferFree "MprAdminBufferFree"
|
|
#define SZ_RasAdminConnectionEnum "MprAdminConnectionEnum"
|
|
#define SZ_RasAdminConnectionGetInfo "MprAdminConnectionGetInfo"
|
|
#define SZ_RasAdminPortDisconnect "MprAdminPortDisconnect"
|
|
#define SZ_RasAdminPortEnum "MprAdminPortEnum"
|
|
#define SZ_RasAdminPortGetInfo "MprAdminPortGetInfo"
|
|
#define SZ_RasAdminServerConnect "MprAdminServerConnect"
|
|
#define SZ_RasAdminServerDisconnect "MprAdminServerDisconnect"
|
|
#define SZ_RasAdminUserSetInfo "MprAdminUserSetInfo"
|
|
#define SZ_MprAdminUserServerConnect "MprAdminUserServerConnect"
|
|
#define SZ_MprAdminUserServerDisconnect "MprAdminUserServerDisconnect"
|
|
#define SZ_MprAdminUserOpen "MprAdminUserOpen"
|
|
#define SZ_MprAdminUserClose "MprAdminUserClose"
|
|
#define SZ_MprAdminUserWrite "MprAdminUserWrite"
|
|
#define SZ_MprConfigBufferFree "MprConfigBufferFree"
|
|
#define SZ_MprConfigServerConnect "MprConfigServerConnect"
|
|
#define SZ_MprConfigServerDisconnect "MprConfigServerDisconnect"
|
|
#define SZ_MprConfigTransportGetInfo "MprConfigTransportGetInfo"
|
|
#define SZ_MprConfigTransportSetInfo "MprConfigTransportSetInfo"
|
|
#define SZ_MprConfigTransportGetHandle "MprConfigTransportGetHandle"
|
|
#define SZ_MprConfigInterfaceCreate "MprConfigInterfaceCreate"
|
|
#define SZ_MprConfigInterfaceDelete "MprConfigInterfaceDelete"
|
|
#define SZ_MprConfigInterfaceGetHandle "MprConfigInterfaceGetHandle"
|
|
#define SZ_MprConfigInterfaceEnum "MprConfigInterfaceEnum"
|
|
#define SZ_MprConfigInterfaceTransportAdd "MprConfigInterfaceTransportAdd"
|
|
#define SZ_MprConfigInterfaceTransportGetInfo "MprConfigInterfaceTransportGetInfo"
|
|
#define SZ_MprConfigInterfaceTransportSetInfo "MprConfigInterfaceTransportSetInfo"
|
|
#define SZ_MprConfigInterfaceTransportGetHandle "MprConfigInterfaceTransportGetHandle"
|
|
#define SZ_MprInfoCreate "MprInfoCreate"
|
|
#define SZ_MprInfoDelete "MprInfoDelete"
|
|
#define SZ_MprInfoDuplicate "MprInfoDuplicate"
|
|
#define SZ_MprInfoBlockAdd "MprInfoBlockAdd"
|
|
#define SZ_MprInfoBlockRemove "MprInfoBlockRemove"
|
|
#define SZ_MprInfoBlockSet "MprInfoBlockSet"
|
|
#define SZ_MprInfoBlockFind "MprInfoBlockFind"
|
|
|
|
|
|
//
|
|
// RASAPI32.DLL entry points.
|
|
//
|
|
HINSTANCE g_hRasapi32Dll = NULL;
|
|
|
|
PRASCONNECTIONNOTIFICATION g_pRasConnectionNotification = NULL;
|
|
PRASDELETEENTRY g_pRasDeleteEntry = NULL;
|
|
PRASDIAL g_pRasDial = NULL;
|
|
PRASENUMCONNECTIONS g_pRasEnumConnections = NULL;
|
|
PRASENUMENTRIES g_pRasEnumEntries = NULL;
|
|
PRASGETAUTODIALENABLE g_pRasGetAutodialEnable = NULL;
|
|
PRASGETAUTODIALPARAM g_pRasGetAutodialParam = NULL;
|
|
PRASGETCONNECTRESPONSE g_pRasGetConnectResponse = NULL;
|
|
PRASGETCONNECTSTATUS g_pRasGetConnectStatus = NULL;
|
|
PRASGETCOUNTRYINFO g_pRasGetCountryInfo = NULL;
|
|
PRASGETCREDENTIALS g_pRasGetCredentials = NULL;
|
|
PRASGETENTRYDIALPARAMS g_pRasGetEntryDialParams = NULL;
|
|
PRASGETENTRYPROPERTIES g_pRasGetEntryProperties = NULL;
|
|
PRASGETERRORSTRING g_pRasGetErrorString = NULL;
|
|
PRASGETHPORT g_pRasGetHport = NULL;
|
|
PRASGETPROJECTIONINFO g_pRasGetProjectionInfo = NULL;
|
|
PRASGETSUBENTRYHANDLE g_pRasGetSubEntryHandle = NULL;
|
|
PRASHANGUP g_pRasHangUp = NULL;
|
|
PRASINVOKEEAPUI g_pRasInvokeEapUI = NULL;
|
|
PRASSETEAPUSERDATA g_pRasSetEapUserData = NULL;
|
|
PRASSETAUTODIALENABLE g_pRasSetAutodialEnable = NULL;
|
|
PRASSETAUTODIALPARAM g_pRasSetAutodialParam = NULL;
|
|
PRASSETCREDENTIALS g_pRasSetCredentials = NULL;
|
|
PRASSETOLDPASSWORD g_pRasSetOldPassword = NULL;
|
|
PRASVALIDATEENTRYNAME g_pRasValidateEntryName = NULL;
|
|
|
|
//
|
|
// RASDLG.DLL entry points
|
|
//
|
|
HINSTANCE g_hRasdlgDll = NULL;
|
|
|
|
PRASDIALDLG g_pRasDialDlg = NULL;
|
|
PRASENTRYDLG g_pRasEntryDlg = NULL;
|
|
PRASPHONEBOOKDLG g_pRasPhonebookDlg = NULL;
|
|
PROUTERENTRYDLG g_pRouterEntryDlg = NULL;
|
|
|
|
//
|
|
// RASMAN.DLL entry points
|
|
//
|
|
HINSTANCE g_hRasmanDll = NULL;
|
|
|
|
PRASACTIVATEROUTE g_pRasActivateRoute = NULL;
|
|
PRASACTIVATEROUTEEX g_pRasActivateRouteEx = NULL;
|
|
PRASADDCONNECTIONPORT g_pRasAddConnectionPort = NULL;
|
|
PRASADDNOTIFICATION g_pRasAddNotification = NULL;
|
|
PRASALLOCATEROUTE g_pRasAllocateRoute = NULL;
|
|
PRASBUNDLECLEARSTATISTICS g_pRasBundleClearStatistics = NULL;
|
|
PRASBUNDLECLEARSTATISTICSEX g_pRasBundleClearStatisticsEx = NULL;
|
|
PRASBUNDLEGETSTATISTICS g_pRasBundleGetStatistics = NULL;
|
|
PRASBUNDLEGETSTATISTICSEX g_pRasBundleGetStatisticsEx = NULL;
|
|
PRASCONNECTIONENUM g_pRasConnectionEnum = NULL;
|
|
PRASCONNECTIONGETSTATISTICS g_pRasConnectionGetStatistics = NULL;
|
|
PRASCREATECONNECTION g_pRasCreateConnection = NULL;
|
|
PRASDESTROYCONNECTION g_pRasDestroyConnection = NULL;
|
|
PRASDEVICECONNECT g_pRasDeviceConnect = NULL;
|
|
PRASDEVICEENUM g_pRasDeviceEnum = NULL;
|
|
PRASDEVICEGETINFO g_pRasDeviceGetInfo = NULL;
|
|
PRASDEVICESETINFO g_pRasDeviceSetInfo = NULL;
|
|
PRASENUMCONNECTIONPORTS g_pRasEnumConnectionPorts = NULL;
|
|
PRASFINDPREREQUISITEENTRY g_pRasFindPrerequisiteEntry = NULL;
|
|
PRASFREEBUFFER g_pRasFreeBuffer = NULL;
|
|
PRASGETBUFFER g_pRasGetBuffer = NULL;
|
|
PRASGETCONNECTIONPARAMS g_pRasGetConnectionParams = NULL;
|
|
PRASGETCONNECTIONUSERDATA g_pRasGetConnectionUserData = NULL;
|
|
PRASGETDEVCONFIG g_pRasGetDevConfig = NULL;
|
|
PRASGETDEVCONFIG g_pRasGetDevConfigEx = NULL;
|
|
PRASGETDIALPARAMS g_pRasGetDialParams = NULL;
|
|
PRASGETHCONNFROMENTRY g_pRasGetHConnFromEntry = NULL;
|
|
PRASGETHPORTFROMCONNECTION g_pRasGetHportFromConnection = NULL;
|
|
PRASGETINFO g_pRasGetInfo = NULL;
|
|
PRASGETNDISWANDRIVERCAPS g_pRasGetNdiswanDriverCaps = NULL;
|
|
PRASGETPORTUSERDATA g_pRasGetPortUserData = NULL;
|
|
PRASINITIALIZE g_pRasInitialize = NULL;
|
|
PRASINITIALIZENOWAIT g_pRasInitializeNoWait = NULL;
|
|
PRASLINKGETSTATISTICS g_pRasLinkGetStatistics = NULL;
|
|
PRASNUMPORTOPEN g_pRasNumPortOpen = NULL;
|
|
PRASPORTCANCELRECEIVE g_pRasPortCancelReceive = NULL;
|
|
PRASPORTCLEARSTATISTICS g_pRasPortClearStatistics = NULL;
|
|
PRASPORTCLOSE g_pRasPortClose = NULL;
|
|
PRASPORTCONNECTCOMPLETE g_pRasPortConnectComplete = NULL;
|
|
PRASPORTDISCONNECT g_pRasPortDisconnect = NULL;
|
|
PRASPORTENUM g_pRasPortEnum = NULL;
|
|
PRASPORTENUMPROTOCOLS g_pRasPortEnumProtocols = NULL;
|
|
PRASPORTGETBUNDLE g_pRasPortGetBundle = NULL;
|
|
PRASPORTGETFRAMINGEX g_pRasPortGetFramingEx = NULL;
|
|
PRASPORTGETINFO g_pRasPortGetInfo = NULL;
|
|
PRASPORTGETSTATISTICS g_pRasPortGetStatistics = NULL;
|
|
PRASPORTGETSTATISTICSEX g_pRasPortGetStatisticsEx = NULL;
|
|
PRASPORTLISTEN g_pRasPortListen = NULL;
|
|
PRASPORTOPEN g_pRasPortOpen = NULL;
|
|
PRASPORTOPENEX g_pRasPortOpenEx = NULL;
|
|
PRASPORTRECEIVE g_pRasPortReceive = NULL;
|
|
PRASPORTRECEIVEEX g_pRasPortReceiveEx = NULL;
|
|
PRASPORTREGISTERSLIP g_pRasPortRegisterSlip = NULL;
|
|
PRASPORTSEND g_pRasPortSend = NULL;
|
|
PRASPORTSETFRAMING g_pRasPortSetFraming = NULL;
|
|
PRASPORTSETFRAMINGEX g_pRasPortSetFramingEx = NULL;
|
|
PRASPORTSETINFO g_pRasPortSetInfo = NULL;
|
|
PRASPPPCALLBACK g_pRasPppCallback = NULL;
|
|
PRASPPPCHANGEPASSWORD g_pRasPppChangePassword = NULL;
|
|
PRASPPPGETEAPINFO g_pRasPppGetEapInfo = NULL;
|
|
PRASPPPGETINFO g_pRasPppGetInfo = NULL;
|
|
PRASPPPRETRY g_pRasPppRetry = NULL;
|
|
PRASPPPSETEAPINFO g_pRasPppSetEapInfo = NULL;
|
|
PRASPPPSTART g_pRasPppStart = NULL;
|
|
PRASPPPSTOP g_pRasPppStop = NULL;
|
|
PRASREFCONNECTION g_pRasRefConnection = NULL;
|
|
PRASREFERENCECUSTOMCOUNT g_pRasReferenceCustomCount = NULL;
|
|
PRASREQUESTNOTIFICATION g_pRasRequestNotification = NULL;
|
|
PRASRPCBIND g_pRasRpcBind = NULL;
|
|
PRASRPCCONNECT g_pRasRpcConnect = NULL;
|
|
PRASRPCDISCONNECT g_pRasRpcDisconnect = NULL;
|
|
PRASSENDPPPMESSAGETORASMAN g_pRasSendPppMessageToRasman = NULL;
|
|
PRASSETCACHEDCREDENTIALS g_pRasSetCachedCredentials = NULL;
|
|
PRASSETCONNECTIONPARAMS g_pRasSetConnectionParams = NULL;
|
|
PRASSETCONNECTIONUSERDATA g_pRasSetConnectionUserData = NULL;
|
|
PRASSETDEVCONFIG g_pRasSetDevConfig = NULL;
|
|
PRASSETDIALPARAMS g_pRasSetDialParams = NULL;
|
|
PRASSETIOCOMPLETIONPORT g_pRasSetIoCompletionPort = NULL;
|
|
PRASSETPORTUSERDATA g_pRasSetPortUserData = NULL;
|
|
PRASSETRASDIALINFO g_pRasSetRasdialInfo = NULL;
|
|
PRASSIGNALNEWCONNECTION g_pRasSignalNewConnection = NULL;
|
|
PRASGETDEVICENAME g_pRasGetDeviceName = NULL;
|
|
PRASENABLEIPSEC g_pRasEnableIpSec = NULL;
|
|
PRASISIPSECENABLED g_pRasIsIpSecEnabled = NULL;
|
|
PRASGETEAPUSERINFO g_pRasGetEapUserInfo = NULL;
|
|
PRASSETEAPUSERINFO g_pRasSetEapUserInfo = NULL;
|
|
PRASSETEAPLOGONINFO g_pRasSetEapLogonInfo = NULL;
|
|
PRASSTARTRASAUTOIFREQUIRED g_pRasStartRasAutoIfRequired = NULL;
|
|
|
|
|
|
//
|
|
// MPRAPI.DLL entry points.
|
|
//
|
|
HINSTANCE g_hMpradminDll = NULL;
|
|
|
|
PMPRADMININTERFACECREATE g_pMprAdminInterfaceCreate = NULL;
|
|
PMPRADMININTERFACEDELETE g_pMprAdminInterfaceDelete = NULL;
|
|
PMPRADMININTERFACEGETHANDLE g_pMprAdminInterfaceGetHandle = NULL;
|
|
PMPRADMININTERFACEGETCREDENTIALS g_pMprAdminInterfaceGetCredentials = NULL;
|
|
PMPRADMININTERFACEGETCREDENTIALSEX g_pMprAdminInterfaceGetCredentialsEx = NULL;
|
|
PMPRADMININTERFACESETCREDENTIALS g_pMprAdminInterfaceSetCredentials = NULL;
|
|
PMPRADMININTERFACESETCREDENTIALSEX g_pMprAdminInterfaceSetCredentialsEx = NULL;
|
|
PMPRADMINBUFFERFREE g_pMprAdminBufferFree = NULL;
|
|
PMPRADMININTERFACETRANSPORTADD g_pMprAdminInterfaceTransportAdd = NULL;
|
|
PMPRADMININTERFACETRANSPORTSETINFO g_pMprAdminInterfaceTransportSetInfo = NULL;
|
|
PMPRADMINSERVERCONNECT g_pMprAdminServerConnect = NULL;
|
|
PMPRADMINSERVERDISCONNECT g_pMprAdminServerDisconnect = NULL;
|
|
PMPRADMINTRANSPORTSETINFO g_pMprAdminTransportSetInfo = NULL;
|
|
PRASADMINBUFFERFREE g_pRasAdminBufferFree = NULL;
|
|
PRASADMINCONNECTIONENUM g_pRasAdminConnectionEnum = NULL;
|
|
PRASADMINCONNECTIONGETINFO g_pRasAdminConnectionGetInfo = NULL;
|
|
PRASADMINPORTDISCONNECT g_pRasAdminPortDisconnect = NULL;
|
|
PRASADMINPORTENUM g_pRasAdminPortEnum = NULL;
|
|
PRASADMINPORTGETINFO g_pRasAdminPortGetInfo = NULL;
|
|
PRASADMINSERVERCONNECT g_pRasAdminServerConnect = NULL;
|
|
PRASADMINSERVERDISCONNECT g_pRasAdminServerDisconnect = NULL;
|
|
PRASADMINUSERSETINFO g_pRasAdminUserSetInfo = NULL;
|
|
PMPRADMINUSERSERVERCONNECT g_pMprAdminUserServerConnect = NULL;
|
|
PMPRADMINUSERSERVERDISCONNECT g_pMprAdminUserServerDisconnect = NULL;
|
|
PMPRADMINUSEROPEN g_pMprAdminUserOpen = NULL;
|
|
PMPRADMINUSERCLOSE g_pMprAdminUserClose = NULL;
|
|
PMPRADMINUSERWRITE g_pMprAdminUserWrite = NULL;
|
|
PMPRCONFIGBUFFERFREE g_pMprConfigBufferFree;
|
|
PMPRCONFIGSERVERCONNECT g_pMprConfigServerConnect;
|
|
PMPRCONFIGSERVERDISCONNECT g_pMprConfigServerDisconnect;
|
|
PMPRCONFIGTRANSPORTGETINFO g_pMprConfigTransportGetInfo;
|
|
PMPRCONFIGTRANSPORTSETINFO g_pMprConfigTransportSetInfo;
|
|
PMPRCONFIGTRANSPORTGETHANDLE g_pMprConfigTransportGetHandle;
|
|
PMPRCONFIGINTERFACECREATE g_pMprConfigInterfaceCreate;
|
|
PMPRCONFIGINTERFACEDELETE g_pMprConfigInterfaceDelete;
|
|
PMPRCONFIGINTERFACEGETHANDLE g_pMprConfigInterfaceGetHandle;
|
|
PMPRCONFIGINTERFACEENUM g_pMprConfigInterfaceEnum;
|
|
PMPRCONFIGINTERFACETRANSPORTADD g_pMprConfigInterfaceTransportAdd;
|
|
PMPRCONFIGINTERFACETRANSPORTGETINFO g_pMprConfigInterfaceTransportGetInfo;
|
|
PMPRCONFIGINTERFACETRANSPORTSETINFO g_pMprConfigInterfaceTransportSetInfo;
|
|
PMPRCONFIGINTERFACETRANSPORTGETHANDLE g_pMprConfigInterfaceTransportGetHandle;
|
|
PMPRINFOCREATE g_pMprInfoCreate;
|
|
PMPRINFODELETE g_pMprInfoDelete;
|
|
PMPRINFODUPLICATE g_pMprInfoDuplicate;
|
|
PMPRINFOBLOCKADD g_pMprInfoBlockAdd;
|
|
PMPRINFOBLOCKREMOVE g_pMprInfoBlockRemove;
|
|
PMPRINFOBLOCKSET g_pMprInfoBlockSet;
|
|
PMPRINFOBLOCKFIND g_pMprInfoBlockFind;
|
|
|
|
//
|
|
// Miscellaneous DLLs
|
|
//
|
|
PGETINSTALLEDPROTOCOLS g_pGetInstalledProtocols = GetInstalledProtocols;
|
|
PGETINSTALLEDPROTOCOLSEX g_pGetInstalledProtocolsEx = GetInstalledProtocolsEx;
|
|
PGETUSERPREFERENCES g_pGetUserPreferences = GetUserPreferences;
|
|
PSETUSERPREFERENCES g_pSetUserPreferences = SetUserPreferences;
|
|
PGETSYSTEMDIRECTORY g_pGetSystemDirectory = RasGetSystemDirectory;
|
|
|
|
//
|
|
// RASRPC.DLL
|
|
//
|
|
|
|
RPC_BINDING_HANDLE g_hBinding;
|
|
BOOL g_fRasapi32PreviouslyLoaded = FALSE;
|
|
BOOL g_fRasmanPreviouslyLoaded = FALSE;
|
|
BOOL g_Version = VERSION_501;
|
|
BOOL g_dwConnectCount = 0;
|
|
|
|
DWORD APIENTRY
|
|
RemoteGetVersion(
|
|
RPC_BINDING_HANDLE hServer,
|
|
PDWORD pdwVersion
|
|
);
|
|
|
|
//
|
|
// Routines
|
|
//
|
|
BOOL
|
|
IsRasmanServiceRunning(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
Returns true if the PRASMAN service is running,
|
|
false otherwise.
|
|
|
|
--*/
|
|
|
|
{
|
|
BOOL fStatus;
|
|
SC_HANDLE schScm;
|
|
SC_HANDLE schRasman;
|
|
SERVICE_STATUS status;
|
|
|
|
fStatus = FALSE;
|
|
schScm = NULL;
|
|
schRasman = NULL;
|
|
|
|
do
|
|
{
|
|
schScm = OpenSCManager( NULL, NULL, GENERIC_READ );
|
|
if (!schScm)
|
|
break;
|
|
|
|
schRasman = OpenService(
|
|
schScm, TEXT( RASMAN_SERVICE_NAME ), SERVICE_QUERY_STATUS );
|
|
if (!schRasman)
|
|
break;
|
|
|
|
if (!QueryServiceStatus( schRasman, &status ))
|
|
break;
|
|
|
|
fStatus = (status.dwCurrentState == SERVICE_RUNNING);
|
|
}
|
|
while (FALSE);
|
|
|
|
if (schRasman)
|
|
CloseServiceHandle( schRasman );
|
|
if (schScm)
|
|
CloseServiceHandle( schScm );
|
|
|
|
TRACE1("IsRasmanServiceRunning=%d",fStatus);
|
|
return fStatus;
|
|
}
|
|
|
|
|
|
|
|
DWORD
|
|
LoadMpradminDll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Loads MPRAPI DLL and it's entry points.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
Returns 0 if successful, otherwise a non-zero error code.
|
|
|
|
--*/
|
|
|
|
{
|
|
HINSTANCE h;
|
|
|
|
if (g_hMpradminDll)
|
|
return 0;
|
|
|
|
if (!(h = LoadLibrary(TEXT("MPRAPI.DLL")))
|
|
|| !(g_pMprAdminInterfaceCreate =
|
|
(PMPRADMININTERFACECREATE)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceCreate))
|
|
|| !(g_pMprAdminInterfaceDelete =
|
|
(PMPRADMININTERFACEDELETE)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceDelete))
|
|
|| !(g_pMprAdminInterfaceGetHandle =
|
|
(PMPRADMININTERFACEGETHANDLE)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceGetHandle))
|
|
|| !(g_pMprAdminInterfaceGetCredentials =
|
|
(PMPRADMININTERFACEGETCREDENTIALS)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceGetCredentials))
|
|
|| !(g_pMprAdminInterfaceGetCredentialsEx =
|
|
(PMPRADMININTERFACEGETCREDENTIALSEX)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceGetCredentialsEx))
|
|
|| !(g_pMprAdminInterfaceSetCredentials =
|
|
(PMPRADMININTERFACESETCREDENTIALS)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceSetCredentials))
|
|
|| !(g_pMprAdminInterfaceSetCredentialsEx =
|
|
(PMPRADMININTERFACESETCREDENTIALSEX)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceSetCredentialsEx))
|
|
|| !(g_pMprAdminBufferFree =
|
|
(PMPRADMINBUFFERFREE)GetProcAddress(
|
|
h, SZ_MprAdminBufferFree))
|
|
|| !(g_pMprAdminInterfaceTransportAdd =
|
|
(PMPRADMININTERFACETRANSPORTADD)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceTransportAdd))
|
|
|| !(g_pMprAdminInterfaceTransportSetInfo =
|
|
(PMPRADMININTERFACETRANSPORTSETINFO)GetProcAddress(
|
|
h, SZ_MprAdminInterfaceTransportSetInfo))
|
|
|| !(g_pMprAdminServerConnect =
|
|
(PMPRADMINSERVERCONNECT)GetProcAddress(
|
|
h, SZ_MprAdminServerConnect))
|
|
|| !(g_pMprAdminServerDisconnect =
|
|
(PMPRADMINSERVERDISCONNECT)GetProcAddress(
|
|
h, SZ_MprAdminServerDisconnect))
|
|
|| !(g_pMprAdminTransportSetInfo =
|
|
(PMPRADMINTRANSPORTSETINFO)GetProcAddress(
|
|
h, SZ_MprAdminTransportSetInfo))
|
|
|| !(g_pRasAdminServerConnect =
|
|
(PRASADMINSERVERCONNECT)GetProcAddress(
|
|
h, SZ_RasAdminServerConnect))
|
|
|| !(g_pRasAdminServerDisconnect =
|
|
(PRASADMINSERVERDISCONNECT)GetProcAddress(
|
|
h, SZ_RasAdminServerDisconnect))
|
|
|| !(g_pRasAdminBufferFree =
|
|
(PRASADMINBUFFERFREE)GetProcAddress(
|
|
h, SZ_RasAdminBufferFree))
|
|
|| !(g_pRasAdminConnectionEnum =
|
|
(PRASADMINCONNECTIONENUM)GetProcAddress(
|
|
h, SZ_RasAdminConnectionEnum))
|
|
|| !(g_pRasAdminConnectionGetInfo =
|
|
(PRASADMINCONNECTIONGETINFO)GetProcAddress(
|
|
h, SZ_RasAdminConnectionGetInfo))
|
|
|| !(g_pRasAdminPortEnum =
|
|
(PRASADMINPORTENUM)GetProcAddress(
|
|
h, SZ_RasAdminPortEnum))
|
|
|| !(g_pRasAdminPortGetInfo =
|
|
(PRASADMINPORTGETINFO)GetProcAddress(
|
|
h, SZ_RasAdminPortGetInfo))
|
|
|| !(g_pRasAdminPortDisconnect =
|
|
(PRASADMINPORTDISCONNECT)GetProcAddress(
|
|
h, SZ_RasAdminPortDisconnect))
|
|
|| !(g_pRasAdminUserSetInfo =
|
|
(PRASADMINUSERSETINFO)GetProcAddress(
|
|
h, SZ_RasAdminUserSetInfo))
|
|
|| !(g_pMprAdminUserServerConnect =
|
|
(PMPRADMINUSERSERVERCONNECT)GetProcAddress(
|
|
h, SZ_MprAdminUserServerConnect))
|
|
|| !(g_pMprAdminUserServerDisconnect =
|
|
(PMPRADMINUSERSERVERDISCONNECT)GetProcAddress(
|
|
h, SZ_MprAdminUserServerDisconnect))
|
|
|| !(g_pMprAdminUserOpen =
|
|
(PMPRADMINUSEROPEN)GetProcAddress(
|
|
h, SZ_MprAdminUserOpen))
|
|
|| !(g_pMprAdminUserClose =
|
|
(PMPRADMINUSERCLOSE)GetProcAddress(
|
|
h, SZ_MprAdminUserClose))
|
|
|| !(g_pMprAdminUserWrite =
|
|
(PMPRADMINUSERWRITE)GetProcAddress(
|
|
h, SZ_MprAdminUserWrite))
|
|
|| !(g_pMprConfigBufferFree =
|
|
(PMPRCONFIGBUFFERFREE)GetProcAddress(
|
|
h, SZ_MprConfigBufferFree))
|
|
|| !(g_pMprConfigServerConnect =
|
|
(PMPRCONFIGSERVERCONNECT)GetProcAddress(
|
|
h, SZ_MprConfigServerConnect))
|
|
|| !(g_pMprConfigServerDisconnect =
|
|
(PMPRCONFIGSERVERDISCONNECT)GetProcAddress(
|
|
h, SZ_MprConfigServerDisconnect))
|
|
|| !(g_pMprConfigTransportGetInfo =
|
|
(PMPRCONFIGTRANSPORTGETINFO)GetProcAddress(
|
|
h, SZ_MprConfigTransportGetInfo))
|
|
|| !(g_pMprConfigTransportSetInfo =
|
|
(PMPRCONFIGTRANSPORTSETINFO)GetProcAddress(
|
|
h, SZ_MprConfigTransportSetInfo))
|
|
|| !(g_pMprConfigTransportGetHandle =
|
|
(PMPRCONFIGTRANSPORTGETHANDLE)GetProcAddress(
|
|
h, SZ_MprConfigTransportGetHandle))
|
|
|| !(g_pMprConfigInterfaceCreate =
|
|
(PMPRCONFIGINTERFACECREATE)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceCreate))
|
|
|| !(g_pMprConfigInterfaceDelete =
|
|
(PMPRCONFIGINTERFACEDELETE)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceDelete))
|
|
|| !(g_pMprConfigInterfaceGetHandle =
|
|
(PMPRCONFIGINTERFACEGETHANDLE)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceGetHandle))
|
|
|| !(g_pMprConfigInterfaceEnum =
|
|
(PMPRCONFIGINTERFACEENUM)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceEnum))
|
|
|| !(g_pMprConfigInterfaceTransportAdd =
|
|
(PMPRCONFIGINTERFACETRANSPORTADD)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceTransportAdd))
|
|
|| !(g_pMprConfigInterfaceTransportGetInfo =
|
|
(PMPRCONFIGINTERFACETRANSPORTGETINFO)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceTransportGetInfo))
|
|
|| !(g_pMprConfigInterfaceTransportSetInfo =
|
|
(PMPRCONFIGINTERFACETRANSPORTSETINFO)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceTransportSetInfo))
|
|
|| !(g_pMprConfigInterfaceTransportGetHandle =
|
|
(PMPRCONFIGINTERFACETRANSPORTGETHANDLE)GetProcAddress(
|
|
h, SZ_MprConfigInterfaceTransportGetHandle))
|
|
|| !(g_pMprInfoCreate =
|
|
(PMPRINFOCREATE)GetProcAddress(
|
|
h, SZ_MprInfoCreate))
|
|
|| !(g_pMprInfoDelete =
|
|
(PMPRINFODELETE)GetProcAddress(
|
|
h, SZ_MprInfoDelete))
|
|
|| !(g_pMprInfoDuplicate =
|
|
(PMPRINFODUPLICATE)GetProcAddress(
|
|
h, SZ_MprInfoDuplicate))
|
|
|| !(g_pMprInfoBlockAdd =
|
|
(PMPRINFOBLOCKADD)GetProcAddress(
|
|
h, SZ_MprInfoBlockAdd))
|
|
|| !(g_pMprInfoBlockRemove =
|
|
(PMPRINFOBLOCKREMOVE)GetProcAddress(
|
|
h, SZ_MprInfoBlockRemove))
|
|
|| !(g_pMprInfoBlockSet =
|
|
(PMPRINFOBLOCKSET)GetProcAddress(
|
|
h, SZ_MprInfoBlockSet))
|
|
|| !(g_pMprInfoBlockFind =
|
|
(PMPRINFOBLOCKFIND)GetProcAddress(
|
|
h, SZ_MprInfoBlockFind)) )
|
|
{
|
|
return GetLastError();
|
|
}
|
|
|
|
g_hMpradminDll = h;
|
|
|
|
return 0;
|
|
}
|
|
|
|
DWORD
|
|
LoadRasapi32Dll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
Loads the RASAPI32.DLL and it's entrypoints.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
Returns 0 if successful, otherwise a non-0 error code.
|
|
|
|
--*/
|
|
|
|
{
|
|
HINSTANCE h;
|
|
|
|
if (g_hRasapi32Dll)
|
|
return 0;
|
|
|
|
if (!(h = LoadLibrary( TEXT("RASAPI32.DLL") ))
|
|
|| !(g_pRasConnectionNotification =
|
|
(PRASCONNECTIONNOTIFICATION )GetProcAddress(
|
|
h, SZ_RasConnectionNotification ))
|
|
|| !(g_pRasDeleteEntry =
|
|
(PRASDELETEENTRY )GetProcAddress(
|
|
h, SZ_RasDeleteEntry ))
|
|
|| !(g_pRasDial =
|
|
(PRASDIAL )GetProcAddress(
|
|
h, SZ_RasDial ))
|
|
|| !(g_pRasEnumEntries =
|
|
(PRASENUMENTRIES )GetProcAddress(
|
|
h, SZ_RasEnumEntries ))
|
|
|| !(g_pRasEnumConnections =
|
|
(PRASENUMCONNECTIONS )GetProcAddress(
|
|
h, SZ_RasEnumConnections ))
|
|
|| !(g_pRasGetAutodialEnable =
|
|
(PRASGETAUTODIALENABLE )GetProcAddress(
|
|
h, SZ_RasGetAutodialEnable ))
|
|
|| !(g_pRasGetAutodialParam =
|
|
(PRASGETAUTODIALPARAM )GetProcAddress(
|
|
h, SZ_RasGetAutodialParam ))
|
|
|| !(g_pRasGetConnectStatus =
|
|
(PRASGETCONNECTSTATUS )GetProcAddress(
|
|
h, SZ_RasGetConnectStatus ))
|
|
|| !(g_pRasGetConnectResponse =
|
|
(PRASGETCONNECTRESPONSE )GetProcAddress(
|
|
h, SZ_RasGetConnectResponse ))
|
|
|| !(g_pRasGetCredentials =
|
|
(PRASGETCREDENTIALS )GetProcAddress(
|
|
h, SZ_RasGetCredentials ))
|
|
|| !(g_pRasGetEntryDialParams =
|
|
(PRASGETENTRYDIALPARAMS )GetProcAddress(
|
|
h, SZ_RasGetEntryDialParams ))
|
|
|| !(g_pRasGetErrorString =
|
|
(PRASGETERRORSTRING )GetProcAddress(
|
|
h, SZ_RasGetErrorString ))
|
|
|| !(g_pRasGetHport =
|
|
(PRASGETHPORT )GetProcAddress(
|
|
h, "RasGetHport" ))
|
|
|| !(g_pRasGetProjectionInfo =
|
|
(PRASGETPROJECTIONINFO )GetProcAddress(
|
|
h, SZ_RasGetProjectionInfo ))
|
|
|| !(g_pRasGetSubEntryHandle =
|
|
(PRASGETSUBENTRYHANDLE )GetProcAddress(
|
|
h, SZ_RasGetSubEntryHandle ))
|
|
|| !(g_pRasHangUp =
|
|
(PRASHANGUP )GetProcAddress(
|
|
h, SZ_RasHangUp ))
|
|
|| !(g_pRasSetAutodialEnable =
|
|
(PRASSETAUTODIALENABLE )GetProcAddress(
|
|
h, SZ_RasSetAutodialEnable ))
|
|
|| !(g_pRasSetAutodialParam =
|
|
(PRASSETAUTODIALPARAM )GetProcAddress(
|
|
h, SZ_RasSetAutodialParam ))
|
|
|| !(g_pRasSetCredentials =
|
|
(PRASSETCREDENTIALS )GetProcAddress(
|
|
h, SZ_RasSetCredentials ))
|
|
|| !(g_pRasSetOldPassword =
|
|
(PRASSETOLDPASSWORD )GetProcAddress(
|
|
h, "RasSetOldPassword" ))
|
|
|| !(g_pRasGetCountryInfo =
|
|
(PRASGETCOUNTRYINFO )GetProcAddress(
|
|
h, SZ_RasGetCountryInfo ))
|
|
|| !(g_pRasInvokeEapUI =
|
|
(PRASINVOKEEAPUI)GetProcAddress(
|
|
h, "RasInvokeEapUI"))
|
|
|| !(g_pRasSetEapUserData =
|
|
(PRASSETEAPUSERDATA )GetProcAddress(
|
|
h, SZ_RasSetEapUserData ))
|
|
|| !(g_pRasGetEntryProperties =
|
|
(PRASGETENTRYPROPERTIES )GetProcAddress(
|
|
h, SZ_RasGetEntryProperties))
|
|
|| !(g_pRasValidateEntryName =
|
|
(PRASVALIDATEENTRYNAME )GetProcAddress(
|
|
h, SZ_RasValidateEntryName)))
|
|
{
|
|
return GetLastError();
|
|
}
|
|
|
|
g_hRasapi32Dll = h;
|
|
return 0;
|
|
}
|
|
|
|
|
|
DWORD
|
|
LoadRasdlgDll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Loads the RASDLG.DLL and it's entrypoints.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
Returns 0 if successful, otherwise a non-0 error code.
|
|
|
|
--*/
|
|
|
|
{
|
|
HINSTANCE h;
|
|
|
|
if (g_hRasdlgDll)
|
|
return 0;
|
|
|
|
if (!(h = LoadLibrary( TEXT("RASDLG.DLL") ))
|
|
|| !(g_pRasPhonebookDlg =
|
|
(PRASPHONEBOOKDLG )GetProcAddress(
|
|
h, SZ_RasPhonebookDlg ))
|
|
|| !(g_pRasEntryDlg =
|
|
(PRASENTRYDLG )GetProcAddress(
|
|
h, SZ_RasEntryDlg ))
|
|
|| !(g_pRouterEntryDlg =
|
|
(PROUTERENTRYDLG )GetProcAddress(
|
|
h, SZ_RouterEntryDlg ))
|
|
|| !(g_pRasDialDlg =
|
|
(PRASDIALDLG )GetProcAddress(
|
|
h, SZ_RasDialDlg )))
|
|
{
|
|
return GetLastError();
|
|
}
|
|
|
|
g_hRasdlgDll = h;
|
|
return 0;
|
|
}
|
|
|
|
|
|
DWORD
|
|
LoadRasmanDll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Loads the RASMAN.DLL and it's entrypoints.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
Returns 0 if successful, otherwise a non-0 error code.
|
|
|
|
--*/
|
|
|
|
{
|
|
HINSTANCE h;
|
|
DWORD dwErr;
|
|
|
|
if (g_hRasmanDll)
|
|
return 0;
|
|
|
|
if (!(h = LoadLibrary( TEXT("RASMAN.DLL") ))
|
|
|| !(g_pRasPortClearStatistics =
|
|
(PRASPORTCLEARSTATISTICS )GetProcAddress(
|
|
h, "RasPortClearStatistics" ))
|
|
|| !(g_pRasBundleClearStatistics =
|
|
(PRASBUNDLECLEARSTATISTICS )GetProcAddress(
|
|
h, "RasBundleClearStatistics" ))
|
|
|| !(g_pRasBundleClearStatisticsEx =
|
|
(PRASBUNDLECLEARSTATISTICSEX ) GetProcAddress(
|
|
h, "RasBundleClearStatisticsEx"))
|
|
|| !(g_pRasDeviceEnum =
|
|
(PRASDEVICEENUM )GetProcAddress(
|
|
h, "RasDeviceEnum" ))
|
|
|| !(g_pRasDeviceGetInfo =
|
|
(PRASDEVICEGETINFO )GetProcAddress(
|
|
h, "RasDeviceGetInfo" ))
|
|
|| !(g_pRasFreeBuffer =
|
|
(PRASFREEBUFFER )GetProcAddress(
|
|
h, "RasFreeBuffer" ))
|
|
|| !(g_pRasGetBuffer =
|
|
(PRASGETBUFFER )GetProcAddress(
|
|
h, "RasGetBuffer" ))
|
|
|| !(g_pRasGetInfo =
|
|
(PRASGETINFO )GetProcAddress(
|
|
h, "RasGetInfo" ))
|
|
|| !(g_pRasGetNdiswanDriverCaps =
|
|
(PRASGETNDISWANDRIVERCAPS )GetProcAddress(
|
|
h, "RasGetNdiswanDriverCaps" ))
|
|
|| !(g_pRasInitialize =
|
|
(PRASINITIALIZE )GetProcAddress(
|
|
h, "RasInitialize" ))
|
|
|| !(g_pRasInitializeNoWait =
|
|
(PRASINITIALIZENOWAIT )GetProcAddress(
|
|
h, "RasInitializeNoWait" ))
|
|
|| !(g_pRasPortCancelReceive =
|
|
(PRASPORTCANCELRECEIVE )GetProcAddress(
|
|
h, "RasPortCancelReceive" ))
|
|
|| !(g_pRasPortEnum =
|
|
(PRASPORTENUM )GetProcAddress(
|
|
h, "RasPortEnum" ))
|
|
|| !(g_pRasPortGetInfo =
|
|
(PRASPORTGETINFO )GetProcAddress(
|
|
h, "RasPortGetInfo" ))
|
|
|| !(g_pRasPortGetFramingEx =
|
|
(PRASPORTGETFRAMINGEX )GetProcAddress(
|
|
h, "RasPortGetFramingEx" ))
|
|
|| !(g_pRasPortGetStatistics =
|
|
(PRASPORTGETSTATISTICS )GetProcAddress(
|
|
h, "RasPortGetStatistics" ))
|
|
|| !(g_pRasBundleGetStatistics =
|
|
(PRASBUNDLEGETSTATISTICS )GetProcAddress(
|
|
h, "RasBundleGetStatistics" ))
|
|
|| !(g_pRasPortGetStatisticsEx =
|
|
(PRASPORTGETSTATISTICSEX )GetProcAddress(
|
|
h, "RasPortGetStatisticsEx"))
|
|
|| !(g_pRasBundleGetStatisticsEx =
|
|
(PRASBUNDLEGETSTATISTICSEX)GetProcAddress(
|
|
h, "RasBundleGetStatisticsEx" ))
|
|
|| !(g_pRasPortReceive =
|
|
(PRASPORTRECEIVE )GetProcAddress(
|
|
h, "RasPortReceive" ))
|
|
|| !(g_pRasPortReceiveEx =
|
|
(PRASPORTRECEIVEEX )GetProcAddress(
|
|
h, "RasPortReceiveEx"))
|
|
|| !(g_pRasPortSend =
|
|
(PRASPORTSEND )GetProcAddress(
|
|
h, "RasPortSend" ))
|
|
|| !(g_pRasPortGetBundle =
|
|
(PRASPORTGETBUNDLE )GetProcAddress(
|
|
h, "RasPortGetBundle" ))
|
|
|| !(g_pRasGetDevConfig =
|
|
(PRASGETDEVCONFIG )GetProcAddress(
|
|
h, "RasGetDevConfig" ))
|
|
|| !(g_pRasGetDevConfigEx =
|
|
(PRASGETDEVCONFIG )GetProcAddress(
|
|
h, "RasGetDevConfigEx" ))
|
|
|| !(g_pRasSetDevConfig =
|
|
(PRASSETDEVCONFIG )GetProcAddress(
|
|
h, "RasSetDevConfig" ))
|
|
|| !(g_pRasPortClose =
|
|
(PRASPORTCLOSE )GetProcAddress(
|
|
h, "RasPortClose" ))
|
|
|| !(g_pRasPortListen =
|
|
(PRASPORTLISTEN )GetProcAddress(
|
|
h, "RasPortListen" ))
|
|
|| !(g_pRasPortConnectComplete =
|
|
(PRASPORTCONNECTCOMPLETE )GetProcAddress(
|
|
h, "RasPortConnectComplete" ))
|
|
|| !(g_pRasPortDisconnect =
|
|
(PRASPORTDISCONNECT )GetProcAddress(
|
|
h, "RasPortDisconnect" ))
|
|
|| !(g_pRasRequestNotification =
|
|
(PRASREQUESTNOTIFICATION )GetProcAddress(
|
|
h, "RasRequestNotification" ))
|
|
|| !(g_pRasPortEnumProtocols =
|
|
(PRASPORTENUMPROTOCOLS )GetProcAddress(
|
|
h, "RasPortEnumProtocols" ))
|
|
|| !(g_pRasPortSetFraming =
|
|
(PRASPORTSETFRAMING )GetProcAddress(
|
|
h, "RasPortSetFraming" ))
|
|
|| !(g_pRasPortSetFramingEx =
|
|
(PRASPORTSETFRAMINGEX )GetProcAddress(
|
|
h, "RasPortSetFramingEx" ))
|
|
|| !(g_pRasSetCachedCredentials =
|
|
(PRASSETCACHEDCREDENTIALS )GetProcAddress(
|
|
h, "RasSetCachedCredentials" ))
|
|
|| !(g_pRasGetDialParams =
|
|
(PRASGETDIALPARAMS )GetProcAddress(
|
|
h, "RasGetDialParams" ))
|
|
|| !(g_pRasSetDialParams =
|
|
(PRASSETDIALPARAMS )GetProcAddress(
|
|
h, "RasSetDialParams" ))
|
|
|| !(g_pRasCreateConnection =
|
|
(PRASCREATECONNECTION )GetProcAddress(
|
|
h, "RasCreateConnection" ))
|
|
|| !(g_pRasDestroyConnection =
|
|
(PRASDESTROYCONNECTION )GetProcAddress(
|
|
h, "RasDestroyConnection" ))
|
|
|| !(g_pRasConnectionEnum =
|
|
(PRASCONNECTIONENUM )GetProcAddress(
|
|
h, "RasConnectionEnum" ))
|
|
|| !(g_pRasAddConnectionPort =
|
|
(PRASADDCONNECTIONPORT )GetProcAddress(
|
|
h, "RasAddConnectionPort" ))
|
|
|| !(g_pRasEnumConnectionPorts =
|
|
(PRASENUMCONNECTIONPORTS )GetProcAddress(
|
|
h, "RasEnumConnectionPorts" ))
|
|
|| !(g_pRasGetConnectionParams =
|
|
(PRASGETCONNECTIONPARAMS )GetProcAddress(
|
|
h, "RasGetConnectionParams" ))
|
|
|| !(g_pRasSetConnectionParams =
|
|
(PRASSETCONNECTIONPARAMS )GetProcAddress(
|
|
h, "RasSetConnectionParams" ))
|
|
|| !(g_pRasGetConnectionUserData =
|
|
(PRASGETCONNECTIONUSERDATA )GetProcAddress(
|
|
h, "RasGetConnectionUserData" ))
|
|
|| !(g_pRasSetConnectionUserData =
|
|
(PRASSETCONNECTIONUSERDATA )GetProcAddress(
|
|
h, "RasSetConnectionUserData" ))
|
|
|| !(g_pRasGetPortUserData =
|
|
(PRASGETPORTUSERDATA )GetProcAddress(
|
|
h, "RasGetPortUserData" ))
|
|
|| !(g_pRasSetPortUserData =
|
|
(PRASSETPORTUSERDATA )GetProcAddress(
|
|
h, "RasSetPortUserData" ))
|
|
|| !(g_pRasAddNotification =
|
|
(PRASADDNOTIFICATION )GetProcAddress(
|
|
h, "RasAddNotification" ))
|
|
|| !(g_pRasSignalNewConnection =
|
|
(PRASSIGNALNEWCONNECTION )GetProcAddress(
|
|
h, "RasSignalNewConnection" ))
|
|
|| !(g_pRasPppStop =
|
|
(PRASPPPSTOP )GetProcAddress(
|
|
h, "RasPppStop" ))
|
|
|| !(g_pRasPppCallback =
|
|
(PRASPPPCALLBACK )GetProcAddress(
|
|
h, "RasPppCallback" ))
|
|
|| !(g_pRasPppChangePassword =
|
|
(PRASPPPCHANGEPASSWORD )GetProcAddress(
|
|
h, "RasPppChangePassword" ))
|
|
|| !(g_pRasPppGetInfo =
|
|
(PRASPPPGETINFO )GetProcAddress(
|
|
h, "RasPppGetInfo" ))
|
|
|| !(g_pRasPppRetry =
|
|
(PRASPPPRETRY )GetProcAddress(
|
|
h, "RasPppRetry" ))
|
|
|| !(g_pRasPppStart =
|
|
(PRASPPPSTART )GetProcAddress(
|
|
h, "RasPppStart" ))
|
|
|| !(g_pRasPortOpen =
|
|
(PRASPORTOPEN )GetProcAddress(
|
|
h, "RasPortOpen" ))
|
|
|| !(g_pRasPortRegisterSlip =
|
|
(PRASPORTREGISTERSLIP )GetProcAddress(
|
|
h, "RasPortRegisterSlip" ))
|
|
|| !(g_pRasAllocateRoute =
|
|
(PRASALLOCATEROUTE )GetProcAddress(
|
|
h, "RasAllocateRoute" ))
|
|
|| !(g_pRasActivateRoute =
|
|
(PRASACTIVATEROUTE )GetProcAddress(
|
|
h, "RasActivateRoute" ))
|
|
|| !(g_pRasActivateRouteEx =
|
|
(PRASACTIVATEROUTEEX )GetProcAddress(
|
|
h, "RasActivateRouteEx" ))
|
|
|| !(g_pRasDeviceSetInfo =
|
|
(PRASDEVICESETINFO )GetProcAddress(
|
|
h, "RasDeviceSetInfo" ))
|
|
|| !(g_pRasDeviceConnect =
|
|
(PRASDEVICECONNECT )GetProcAddress(
|
|
h, "RasDeviceConnect" ))
|
|
|| !(g_pRasPortSetInfo =
|
|
(PRASPORTSETINFO )GetProcAddress(
|
|
h, "RasPortSetInfo" ))
|
|
|| !(g_pRasSetIoCompletionPort =
|
|
(PRASSETIOCOMPLETIONPORT )GetProcAddress(
|
|
h, "RasSetIoCompletionPort" ))
|
|
|| !(g_pRasSendPppMessageToRasman =
|
|
(PRASSENDPPPMESSAGETORASMAN)GetProcAddress(
|
|
h, "RasSendPppMessageToRasman"))
|
|
|| !(g_pRasSetRasdialInfo =
|
|
(PRASSETRASDIALINFO)GetProcAddress(
|
|
h, "RasSetRasdialInfo"))
|
|
|| !(g_pRasRpcConnect =
|
|
(PRASRPCCONNECT)GetProcAddress(
|
|
h, "RasRpcConnect"))
|
|
|| !(g_pRasRpcDisconnect =
|
|
(PRASRPCDISCONNECT) GetProcAddress(
|
|
h, "RasRpcDisconnect"))
|
|
|| !(g_pRasNumPortOpen =
|
|
(PRASNUMPORTOPEN)GetProcAddress(
|
|
h, "RasGetNumPortOpen"))
|
|
|| !(g_pRasRefConnection =
|
|
(PRASREFCONNECTION) GetProcAddress(
|
|
h, "RasRefConnection"))
|
|
|| !(g_pRasPppSetEapInfo =
|
|
(PRASPPPSETEAPINFO) GetProcAddress(
|
|
h, "RasPppSetEapInfo"))
|
|
|| !(g_pRasPppGetEapInfo =
|
|
(PRASPPPGETEAPINFO) GetProcAddress(
|
|
h, "RasPppGetEapInfo"))
|
|
|| !(g_pRasFindPrerequisiteEntry =
|
|
(PRASFINDPREREQUISITEENTRY) GetProcAddress(
|
|
h, "RasFindPrerequisiteEntry"))
|
|
|| !(g_pRasPortOpenEx =
|
|
(PRASPORTOPENEX) GetProcAddress(
|
|
h, "RasPortOpenEx"))
|
|
|| !(g_pRasLinkGetStatistics =
|
|
(PRASLINKGETSTATISTICS) GetProcAddress(
|
|
h, "RasLinkGetStatistics"))
|
|
|| !(g_pRasConnectionGetStatistics =
|
|
(PRASCONNECTIONGETSTATISTICS) GetProcAddress(
|
|
h, "RasConnectionGetStatistics"))
|
|
|| !(g_pRasGetHportFromConnection =
|
|
(PRASGETHPORTFROMCONNECTION) GetProcAddress(
|
|
h, "RasGetHportFromConnection"))
|
|
|| !(g_pRasRpcBind =
|
|
(PRASRPCBIND) GetProcAddress(
|
|
h, "RasRPCBind"))
|
|
|| !(g_pRasReferenceCustomCount =
|
|
(PRASREFERENCECUSTOMCOUNT) GetProcAddress(
|
|
h, "RasReferenceCustomCount"))
|
|
|| !(g_pRasGetHConnFromEntry =
|
|
(PRASGETHCONNFROMENTRY)GetProcAddress(
|
|
h, "RasGetHConnFromEntry"))
|
|
|| !(g_pRasGetDeviceName =
|
|
(PRASGETDEVICENAME)GetProcAddress(
|
|
h, "RasGetDeviceName"))
|
|
|| !(g_pRasEnableIpSec =
|
|
(PRASENABLEIPSEC)GetProcAddress(
|
|
h, "RasEnableIpSec"))
|
|
|| !(g_pRasIsIpSecEnabled =
|
|
(PRASISIPSECENABLED)GetProcAddress(
|
|
h, "RasIsIpSecEnabled"))
|
|
|| !(g_pRasGetEapUserInfo =
|
|
(PRASGETEAPUSERINFO)GetProcAddress(
|
|
h, "RasGetEapUserInfo"))
|
|
|| !(g_pRasSetEapUserInfo =
|
|
(PRASSETEAPUSERINFO)GetProcAddress(
|
|
h, "RasSetEapUserInfo"))
|
|
|| !(g_pRasSetEapLogonInfo =
|
|
(PRASSETEAPLOGONINFO)GetProcAddress(
|
|
h, "RasSetEapLogonInfo"))
|
|
|| !(g_pRasStartRasAutoIfRequired =
|
|
(PRASSTARTRASAUTOIFREQUIRED) GetProcAddress(
|
|
h, "RasStartRasAutoIfRequired"))
|
|
)
|
|
{
|
|
return GetLastError();
|
|
}
|
|
|
|
g_hRasmanDll = h;
|
|
return 0;
|
|
}
|
|
|
|
DWORD
|
|
GetServerVersion(
|
|
RPC_BINDING_HANDLE hServer,
|
|
PDWORD pdwVersion
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
#if DBG
|
|
ASSERT(NULL != pdwVersion);
|
|
ASSERT(NULL != hServer);
|
|
#endif
|
|
|
|
*pdwVersion = VERSION_501;
|
|
|
|
//
|
|
// Call the get version api
|
|
//
|
|
dwStatus = RemoteGetVersion(hServer, pdwVersion);
|
|
|
|
//
|
|
// If the api fails, we assume that the server we
|
|
// are talking to is steelhead and initialize the
|
|
// version to 4.0.
|
|
//
|
|
if (RPC_S_PROCNUM_OUT_OF_RANGE == dwStatus)
|
|
{
|
|
*pdwVersion = VERSION_40;
|
|
|
|
dwStatus = NO_ERROR;
|
|
}
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
void
|
|
UninitializeConnection(HANDLE hConnection)
|
|
{
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
ASSERT(NULL != hConnection);
|
|
//DbgPrint("rasman: Disconnecting from server. handle=0x%08x\n",
|
|
// pRasRpcConnection->hRpcBinding);
|
|
#endif
|
|
|
|
(void) RpcBindingFree(pRasRpcConnection->hRpcBinding);
|
|
|
|
LocalFree(pRasRpcConnection);
|
|
|
|
/*
|
|
//
|
|
// Decrement the connect count and Unload rasapi32 dll
|
|
// if this is the last client disconnecting.
|
|
//
|
|
if(!InterlockedDecrement(&g_dwConnectCount))
|
|
{
|
|
UnloadRasapi32Dll();
|
|
UnloadRasmanDll();
|
|
}
|
|
*/
|
|
}
|
|
|
|
DWORD
|
|
InitializeConnection(
|
|
LPTSTR lpszServer,
|
|
HANDLE *lpHConnection)
|
|
{
|
|
RAS_RPC *pRasRpcConnection = NULL;
|
|
|
|
DWORD dwError = ERROR_SUCCESS;
|
|
|
|
TCHAR szLocalComputer[MAX_COMPUTERNAME_LENGTH + 1] = {0};
|
|
|
|
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
|
|
|
|
BOOL fLocal = FALSE;
|
|
|
|
LPTSTR lpszSrv = lpszServer;
|
|
|
|
RPC_BINDING_HANDLE hServer = NULL;
|
|
|
|
DWORD dwVersion;
|
|
|
|
//
|
|
// Do some parameter validation. If lpszServer is
|
|
// NULL then we connect to the local server
|
|
//
|
|
if(NULL == lpHConnection)
|
|
{
|
|
dwError = E_INVALIDARG;
|
|
goto done;
|
|
}
|
|
|
|
*lpHConnection = NULL;
|
|
|
|
//
|
|
// Get the local computername
|
|
//
|
|
if(!GetComputerName(szLocalComputer, &dwSize))
|
|
{
|
|
dwError = GetLastError();
|
|
goto done;
|
|
}
|
|
|
|
if( NULL != lpszServer
|
|
&& TEXT('\0') != lpszServer[0]
|
|
&& TEXT('\\') == lpszServer[0]
|
|
&& TEXT('\\') == lpszServer[1])
|
|
{
|
|
lpszSrv += 2;
|
|
}
|
|
else if( NULL == lpszServer
|
|
|| TEXT('\0') == lpszServer[0])
|
|
{
|
|
fLocal = TRUE;
|
|
}
|
|
|
|
if( !fLocal
|
|
&& 0 == lstrcmpi(lpszSrv, szLocalComputer))
|
|
{
|
|
fLocal = TRUE;
|
|
}
|
|
|
|
if(fLocal)
|
|
{
|
|
lpszSrv = szLocalComputer;
|
|
}
|
|
|
|
//
|
|
// Always load rasman dll and rasapi32.dll if
|
|
// they are not already loaded
|
|
//
|
|
if( ERROR_SUCCESS != (dwError = LoadRasmanDll())
|
|
|| ERROR_SUCCESS != (dwError = LoadRasapi32Dll()))
|
|
{
|
|
goto done;
|
|
}
|
|
|
|
#if DBG
|
|
//DbgPrint("Rasman: Binding to server %ws\n",
|
|
// lpszSrv);
|
|
#endif
|
|
|
|
//
|
|
// Bind to the server indicated by the servername
|
|
//
|
|
dwError = g_pRasRpcBind(lpszSrv, &hServer, fLocal);
|
|
|
|
#if DBG
|
|
//DbgPrint("Rasman: Bind returned 0x%08x. hServer=0x08x\n",
|
|
// dwError, hServer);
|
|
#endif
|
|
|
|
if(NO_ERROR != dwError)
|
|
{
|
|
goto done;
|
|
}
|
|
|
|
//
|
|
// Get version of the server
|
|
//
|
|
dwError = GetServerVersion(hServer, &dwVersion);
|
|
|
|
if(NO_ERROR != dwError)
|
|
{
|
|
goto done;
|
|
}
|
|
|
|
//
|
|
// Allocate and initialize the ControlBlock we
|
|
// keep around for this connection
|
|
//
|
|
if(NULL == (pRasRpcConnection =
|
|
LocalAlloc(LPTR, sizeof(RAS_RPC))))
|
|
{
|
|
dwError = GetLastError();
|
|
goto done;
|
|
}
|
|
|
|
pRasRpcConnection->hRpcBinding = hServer;
|
|
pRasRpcConnection->fLocal = fLocal;
|
|
|
|
if(fLocal)
|
|
{
|
|
pRasRpcConnection->dwVersion = VERSION_501;
|
|
}
|
|
else
|
|
{
|
|
pRasRpcConnection->dwVersion = dwVersion;
|
|
}
|
|
|
|
lstrcpyn(
|
|
pRasRpcConnection->szServer,
|
|
lpszSrv,
|
|
sizeof(pRasRpcConnection->szServer) / sizeof(TCHAR));
|
|
|
|
*lpHConnection = (HANDLE) pRasRpcConnection;
|
|
|
|
/*
|
|
InterlockedIncrement(&g_dwConnectCount);
|
|
*/
|
|
|
|
done:
|
|
|
|
if( NO_ERROR != dwError
|
|
&& NULL != hServer)
|
|
{
|
|
(void) RpcBindingFree(
|
|
hServer
|
|
);
|
|
|
|
}
|
|
|
|
return dwError;
|
|
}
|
|
|
|
|
|
#if 0
|
|
|
|
DWORD
|
|
LoadRasRpcDll(
|
|
LPTSTR lpszServer
|
|
)
|
|
{
|
|
DWORD dwErr;
|
|
RPC_STATUS rpcStatus;
|
|
HINSTANCE h;
|
|
TCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1] = {0};
|
|
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
|
|
BOOL fLocal = (lpszServer ? FALSE : TRUE);
|
|
LPTSTR pszServer = lpszServer;
|
|
|
|
//
|
|
// Get the local computername
|
|
//
|
|
if (!GetComputerName(szComputerName, &dwSize))
|
|
{
|
|
dwErr = GetLastError();
|
|
return dwErr;
|
|
}
|
|
|
|
if ( lpszServer
|
|
&& TEXT('\\') == lpszServer[0]
|
|
&& TEXT('\\') == lpszServer[1])
|
|
{
|
|
pszServer += 2;
|
|
}
|
|
|
|
if ( pszServer
|
|
&& 0 == lstrcmpi (pszServer, szComputerName))
|
|
{
|
|
fLocal = TRUE;
|
|
}
|
|
|
|
dwErr = LoadRasmanDll();
|
|
|
|
if (dwErr)
|
|
{
|
|
return dwErr;
|
|
}
|
|
|
|
//
|
|
// disconnect previous binding if we had one
|
|
//
|
|
if ( NULL != g_hBinding )
|
|
{
|
|
g_pRasRpcDisconnect ( &g_hBinding );
|
|
|
|
g_hBinding = NULL;
|
|
|
|
g_fRasmanPreviouslyLoaded = TRUE;
|
|
|
|
}
|
|
|
|
//
|
|
// this will connect to local server
|
|
// if lpszServer = NULL
|
|
//
|
|
dwErr = g_pRasRpcConnect( (fLocal ? NULL : pszServer), &g_hBinding );
|
|
|
|
if ( dwErr )
|
|
{
|
|
return dwErr;
|
|
}
|
|
|
|
if ( fLocal )
|
|
{
|
|
//
|
|
// LoadRasapi32Dll
|
|
//
|
|
dwErr = LoadRasapi32Dll();
|
|
|
|
g_fRasapi32PreviouslyLoaded = TRUE;
|
|
|
|
return 0;
|
|
}
|
|
|
|
g_fRasapi32PreviouslyLoaded = ( g_hRasapi32Dll != NULL );
|
|
|
|
if (g_fRasapi32PreviouslyLoaded)
|
|
{
|
|
UnloadRasapi32Dll();
|
|
}
|
|
|
|
//
|
|
// Get version of the server we are talking to
|
|
//
|
|
(void) GetServerVersion(g_hBinding, &g_Version);
|
|
|
|
//
|
|
// Remap the RPCable APIs. Note: We don't need
|
|
// to bother about the APIs exported by rasman
|
|
// as all rasman APIs always use RPC We need to
|
|
// remap only the APIs exported by dlls which
|
|
// are not exported by rasman.
|
|
//
|
|
/*
|
|
g_pRasEnumConnections = RemoteRasEnumConnections;
|
|
g_pRasDeleteEntry = RemoteRasDeleteEntry;
|
|
g_pRasGetErrorString = RemoteRasGetErrorString;
|
|
g_pRasGetCountryInfo = RemoteRasGetCountryInfo;
|
|
g_pGetInstalledProtocolsEx = RemoteGetInstalledProtocolsEx;
|
|
g_pGetUserPreferences = RemoteGetUserPreferences;
|
|
g_pSetUserPreferences = RemoteSetUserPreferences;
|
|
g_pGetSystemDirectory = RemoteGetSystemDirectory;
|
|
|
|
if ( VERSION_40 == g_Version )
|
|
{
|
|
g_pRasPortEnum = RemoteRasPortEnum;
|
|
g_pRasDeviceEnum = RemoteRasDeviceEnum;
|
|
g_pRasGetDevConfig = RemoteRasGetDevConfig;
|
|
g_pRasPortGetInfo = RemoteRasPortGetInfo;
|
|
} */
|
|
|
|
return 0;
|
|
}
|
|
|
|
#endif
|
|
|
|
BOOL
|
|
Rasapi32DllLoaded(
|
|
void
|
|
)
|
|
{
|
|
return (g_hRasapi32Dll != NULL);
|
|
}
|
|
|
|
|
|
BOOL
|
|
RasRpcDllLoaded(
|
|
void
|
|
)
|
|
{
|
|
return (g_hBinding != NULL);
|
|
}
|
|
|
|
LPTSTR
|
|
RemoteGetServerName(HANDLE hConnection)
|
|
{
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
if( NULL == pRasRpcConnection
|
|
|| pRasRpcConnection->fLocal)
|
|
{
|
|
return NULL;
|
|
}
|
|
else
|
|
{
|
|
return pRasRpcConnection->szServer;
|
|
}
|
|
}
|
|
|
|
DWORD
|
|
RemoteGetServerVersion(HANDLE hConnection)
|
|
{
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
if( NULL == pRasRpcConnection
|
|
|| pRasRpcConnection->fLocal)
|
|
{
|
|
return VERSION_501;
|
|
}
|
|
else
|
|
{
|
|
return pRasRpcConnection->dwVersion;
|
|
}
|
|
}
|
|
|
|
BOOL
|
|
IsRasRemoteConnection(
|
|
HANDLE hConnection
|
|
)
|
|
{
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
if(NULL == pRasRpcConnection)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DWORD
|
|
RemoteGetVersion(
|
|
RPC_BINDING_HANDLE hServer,
|
|
PDWORD pdwVersion
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
#if DBG
|
|
ASSERT(NULL != pdwVersion);
|
|
ASSERT(NULL != hServer);
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetVersion(hServer, pdwVersion);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
|
|
}
|
|
|
|
//---------------------------------------------------
|
|
// The following are remoted version of apis exported
|
|
// from rasman.dll. These should never be called if
|
|
// the version of the server is 50 since the rasman
|
|
// apis themselves are remoteable
|
|
//
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api enumerates the port information on the
|
|
remote server. This api should not be called if
|
|
the server is local or if the version of the
|
|
remote server is VERSION_501.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
lpPorts - Buffer to receive the port information
|
|
|
|
pdwcbPorts - address of the buffer to receive the
|
|
count of bytes required to get the
|
|
information
|
|
|
|
pdwcPorts - address of the buffer to receive the
|
|
count of ports/size of buffer passed
|
|
in
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasPortEnum(
|
|
HANDLE hConnection,
|
|
PBYTE lpPorts,
|
|
PDWORD pdwcbPorts,
|
|
PDWORD pdwcPorts
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
WORD wcbPorts;
|
|
WORD wcPorts;
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
ASSERT(VERSION_40 == pRasRpcConnection->dwVersion);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
wcbPorts = (WORD) *pdwcbPorts;
|
|
wcPorts = (WORD) *pdwcPorts;
|
|
|
|
dwStatus = RasRpcPortEnum(
|
|
pRasRpcConnection->hRpcBinding,
|
|
lpPorts,
|
|
&wcbPorts,
|
|
&wcPorts);
|
|
|
|
*pdwcbPorts = (DWORD) wcbPorts;
|
|
*pdwcPorts = (DWORD) wcPorts;
|
|
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api enumerates the devices on the remote
|
|
computer. This api should not be called if the
|
|
server is local or if the version of the remote
|
|
server is VERSION_501.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
pszDeviceType - string indicating the device type
|
|
|
|
lpDevices - Buffer to receive the device information
|
|
|
|
pdwcbDevices - address of the buffer to receive the
|
|
count of bytes required to get the
|
|
information
|
|
|
|
pdwcDevices - address of the buffer to receive the
|
|
count of devices/size of buffer passed
|
|
in
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasDeviceEnum(
|
|
HANDLE hConnection,
|
|
PCHAR pszDeviceType,
|
|
PBYTE lpDevices,
|
|
PDWORD pdwcbDevices,
|
|
PDWORD pdwcDevices
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
WORD wcbDevices;
|
|
WORD wcDevices;
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
ASSERT(VERSION_40 == pRasRpcConnection->dwVersion);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
|
|
wcbDevices = (WORD) *pdwcbDevices;
|
|
wcDevices = (WORD) *pdwcDevices;
|
|
|
|
dwStatus = RasRpcDeviceEnum(
|
|
pRasRpcConnection->hRpcBinding,
|
|
pszDeviceType,
|
|
lpDevices,
|
|
&wcbDevices,
|
|
&wcDevices);
|
|
|
|
*pdwcbDevices = (DWORD) wcbDevices;
|
|
*pdwcDevices = (DWORD) wcDevices;
|
|
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the device configuration information.
|
|
This api should not be called if the server is local
|
|
or if the version of the remote server is VERSION_501.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
hPort - HPORT
|
|
|
|
pszDeviceType - string indicating Device type
|
|
|
|
lpConfig - buffer to receive the Config info
|
|
|
|
lpcbConfig - buffer to receive the count of bytes
|
|
required for the information/size of
|
|
buffer passed in
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasGetDevConfig(
|
|
HANDLE hConnection,
|
|
HPORT hport,
|
|
PCHAR pszDeviceType,
|
|
PBYTE lpConfig,
|
|
LPDWORD lpcbConfig
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
ASSERT(VERSION_40 == pRasRpcConnection->dwVersion);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetDevConfig(
|
|
pRasRpcConnection->hRpcBinding,
|
|
HandleToUlong(hport),
|
|
pszDeviceType,
|
|
lpConfig,
|
|
lpcbConfig);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the port information of the port
|
|
indicated by hport passed in for the remote
|
|
computer. This api should not be called if the
|
|
server is local or if the version of the remote
|
|
server is VERSION_501.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
porthandle - HPORT
|
|
|
|
buffer - buffer to receive the Port information
|
|
|
|
pSize - buffer to receive the count of bytes
|
|
required for the information/size of buffer
|
|
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD
|
|
RemoteRasPortGetInfo(
|
|
HANDLE hConnection,
|
|
HPORT porthandle,
|
|
PBYTE buffer,
|
|
PDWORD pSize)
|
|
{
|
|
DWORD dwStatus;
|
|
WORD wSize;
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
ASSERT(VERSION_40 == pRasRpcConnection->dwVersion);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
wSize = (WORD) *pSize;
|
|
|
|
dwStatus = RasRpcPortGetInfo(
|
|
pRasRpcConnection->hRpcBinding,
|
|
HandleToUlong(porthandle),
|
|
buffer,
|
|
&wSize);
|
|
|
|
*pSize = (DWORD) wSize;
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
//
|
|
// End of remoted versions of Rasman Dll apis
|
|
//----------------------------------------------------
|
|
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the Installed protocols in the remote
|
|
server. This api should not be called if the server
|
|
is local.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD
|
|
RemoteGetInstalledProtocols(
|
|
HANDLE hConnection
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetInstalledProtocols(
|
|
pRasRpcConnection->hRpcBinding
|
|
);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the Installed protocols in the remote
|
|
server. This api should not be called if the server
|
|
is local.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
fRouter - indicates return protocols installed over
|
|
which routing is allowed
|
|
|
|
fRasCli - indicates return protocols installed over
|
|
which DialOut is allowed
|
|
|
|
fRasSrv - indicates return protocols installed over
|
|
which DialIn is allowed
|
|
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD
|
|
RemoteGetInstalledProtocolsEx(
|
|
HANDLE hConnection,
|
|
BOOL fRouter,
|
|
BOOL fRasCli,
|
|
BOOL fRasSrv
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
if ( VERSION_40 == pRasRpcConnection->dwVersion )
|
|
{
|
|
//
|
|
// If the server we are talking to is a
|
|
// 4.0 server call the old api and bail.
|
|
//
|
|
dwStatus = RemoteGetInstalledProtocols(hConnection);
|
|
|
|
goto done;
|
|
}
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetInstalledProtocolsEx(
|
|
pRasRpcConnection->hRpcBinding,
|
|
fRouter,
|
|
fRasCli,
|
|
fRasSrv);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
done:
|
|
return dwStatus;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the System Directory of the remote
|
|
server. This api should not be called if the server
|
|
is local.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api. This cannot
|
|
be NULL.
|
|
|
|
lpBuffer - same as the first parameter of the
|
|
GetSystemDirectory api
|
|
|
|
uSize - same as the second paramter of the
|
|
GetSystemDirectory api
|
|
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
UINT WINAPI
|
|
RemoteGetSystemDirectory(
|
|
HANDLE hConnection,
|
|
LPTSTR lpBuffer,
|
|
UINT uSize
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetSystemDirectory(
|
|
pRasRpcConnection->hRpcBinding,
|
|
lpBuffer,
|
|
uSize);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the System directory of the remote
|
|
server.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
lpBuffer - same as the first parameter of the
|
|
GetSystemDirectory api
|
|
|
|
uSize - same as the second paramter of the
|
|
GetSystemDirectory api
|
|
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
UINT WINAPI
|
|
RasGetSystemDirectory(
|
|
HANDLE hConnection,
|
|
LPTSTR lpBuffer,
|
|
UINT uSize
|
|
)
|
|
{
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
if( NULL == pRasRpcConnection
|
|
|| pRasRpcConnection->fLocal)
|
|
{
|
|
//
|
|
// Local Server
|
|
//
|
|
return GetSystemDirectory(lpBuffer,
|
|
uSize);
|
|
}
|
|
else
|
|
{
|
|
return RemoteGetSystemDirectory(
|
|
pRasRpcConnection,
|
|
lpBuffer,
|
|
uSize);
|
|
}
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api gets the User Preferences set on the remote
|
|
server. This routine should not be called if for a
|
|
local server.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
lpBuffer - same as the first parameter of the
|
|
GetSystemDirectory api
|
|
|
|
uSize - same as the second paramter of the
|
|
GetSystemDirectory api
|
|
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD
|
|
RemoteGetUserPreferences(
|
|
HANDLE hConnection,
|
|
OUT PBUSER* pPbuser,
|
|
IN DWORD dwMode
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RASRPC_PBUSER pbuser;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RtlZeroMemory(&pbuser, sizeof (RASRPC_PBUSER));
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetUserPreferences(
|
|
pRasRpcConnection->hRpcBinding,
|
|
&pbuser,
|
|
dwMode);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
if (dwStatus)
|
|
{
|
|
return dwStatus;
|
|
}
|
|
|
|
//
|
|
// Convert RPC format to RAS format.
|
|
//
|
|
return RpcToRasPbuser(pPbuser, &pbuser);
|
|
}
|
|
|
|
|
|
//---------------------------------------------------
|
|
// The following are remoted version of apis exported
|
|
// from rasapi32.dll.
|
|
//
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api is a remoted version of the RasDeleteEntry
|
|
win32 api.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
lpszPhonebook - Same as the first argument of the
|
|
RasDeleteEntry win32 api
|
|
|
|
lpszEntry - same as the second argument of the
|
|
RasDeleteEntry win32 api.
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasDeleteEntry(
|
|
HANDLE hConnection,
|
|
LPTSTR lpszPhonebook,
|
|
LPTSTR lpszEntry
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcDeleteEntry(
|
|
pRasRpcConnection->hRpcBinding,
|
|
lpszPhonebook,
|
|
lpszEntry);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api is a remoted version of the RasEnumConnections
|
|
win32 api.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
lpRasConn - Same as the first argument of the
|
|
RasEnumConnections win32 api
|
|
|
|
lpdwcbRasConn - same as the second argument of the
|
|
RasEnumConnections win32 api.
|
|
|
|
lpdwcRasConn - same as the third arguments of the
|
|
RasEnumConnections win32 api.
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasEnumConnections(
|
|
HANDLE hConnection,
|
|
LPRASCONN lpRasConn,
|
|
LPDWORD lpdwcbRasConn,
|
|
LPDWORD lpdwcRasConn
|
|
)
|
|
{
|
|
|
|
DWORD dwStatus;
|
|
DWORD dwcbBufSize = *lpdwcbRasConn;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcEnumConnections(
|
|
pRasRpcConnection->hRpcBinding,
|
|
(LPBYTE)lpRasConn,
|
|
lpdwcbRasConn,
|
|
lpdwcRasConn,
|
|
dwcbBufSize);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api is a remoted version of the RasGetCountryInfo
|
|
win32 api.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
lpRasCountryInfo - Same as the first argument of the
|
|
RasGetCountryInfo win32 api
|
|
|
|
lpdwcbRasCountryInfo - same as the second argument of the
|
|
RasGetCountryInfo win32 api.
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasGetCountryInfo(
|
|
HANDLE hConnection,
|
|
LPRASCTRYINFO lpRasCountryInfo,
|
|
LPDWORD lpdwcbRasCountryInfo
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetCountryInfo(
|
|
pRasRpcConnection->hRpcBinding,
|
|
(LPBYTE)lpRasCountryInfo,
|
|
lpdwcbRasCountryInfo);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api is a remoted version of the RasGetErrorString
|
|
win32 api.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
uErrorValue - Same as the first argument of the
|
|
RasGetErrorString win32 api
|
|
|
|
lpszBuf - same as the second argument of the
|
|
RasGetErrorString win32 api.
|
|
|
|
cbBuf - same as the third argument of the
|
|
RasGetErrorString win32 api
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD APIENTRY
|
|
RemoteRasGetErrorString(
|
|
HANDLE hConnection,
|
|
UINT uErrorValue,
|
|
LPTSTR lpszBuf,
|
|
DWORD cbBuf
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcGetErrorString(
|
|
pRasRpcConnection->hRpcBinding,
|
|
uErrorValue,
|
|
lpszBuf,
|
|
cbBuf);
|
|
}
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
//
|
|
// End of remoted apis corresponding to apis in rasapi32.dll
|
|
//----------------------------------------------------------
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This api is a remoted version of the RasGetErrorString
|
|
win32 api.
|
|
|
|
Arguments:
|
|
|
|
hConnection - Handle which was obtained with the
|
|
RasServerConnect api.
|
|
|
|
pPbuser - PBUSER *
|
|
|
|
dwMode
|
|
|
|
Return Value:
|
|
|
|
Rpc api errors
|
|
|
|
--*/
|
|
DWORD
|
|
RemoteSetUserPreferences(
|
|
HANDLE hConnection,
|
|
OUT PBUSER* pPbuser,
|
|
IN DWORD dwMode
|
|
)
|
|
{
|
|
DWORD dwStatus;
|
|
RASRPC_PBUSER pbuser;
|
|
|
|
RAS_RPC *pRasRpcConnection = (RAS_RPC *) hConnection;
|
|
|
|
#if DBG
|
|
|
|
ASSERT(NULL != pRasRpcConnection);
|
|
|
|
ASSERT(NULL != pRasRpcConnection->hRpcBinding);
|
|
|
|
#endif
|
|
|
|
//
|
|
// Convert the RAS format to RPC format.
|
|
//
|
|
dwStatus = RasToRpcPbuser(&pbuser, pPbuser);
|
|
|
|
if (dwStatus)
|
|
{
|
|
return dwStatus;
|
|
}
|
|
|
|
RpcTryExcept
|
|
{
|
|
dwStatus = RasRpcSetUserPreferences(
|
|
pRasRpcConnection->hRpcBinding,
|
|
&pbuser,
|
|
dwMode);
|
|
}
|
|
|
|
RasRpcCatchException(&dwStatus)
|
|
{
|
|
dwStatus = RpcExceptionCode();
|
|
}
|
|
|
|
RpcEndExcept
|
|
|
|
return dwStatus;
|
|
}
|
|
|
|
VOID
|
|
UnloadMpradminDll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Unload the MPRAPI.DLL library and its entrypoints
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
--*/
|
|
|
|
{
|
|
if (g_hMpradminDll)
|
|
{
|
|
HINSTANCE h;
|
|
|
|
g_pMprAdminInterfaceCreate = NULL;
|
|
g_pMprAdminInterfaceDelete = NULL;
|
|
g_pMprAdminInterfaceGetCredentials = NULL;
|
|
g_pMprAdminInterfaceGetCredentialsEx = NULL;
|
|
g_pMprAdminInterfaceSetCredentials = NULL;
|
|
g_pMprAdminInterfaceSetCredentialsEx = NULL;
|
|
g_pMprAdminBufferFree = NULL;
|
|
g_pMprAdminInterfaceTransportSetInfo = NULL;
|
|
g_pMprAdminServerConnect = NULL;
|
|
g_pMprAdminServerDisconnect = NULL;
|
|
g_pRasAdminServerConnect = NULL;
|
|
g_pRasAdminServerDisconnect = NULL;
|
|
g_pRasAdminBufferFree = NULL;
|
|
g_pRasAdminConnectionEnum = NULL;
|
|
g_pRasAdminConnectionGetInfo = NULL;
|
|
g_pRasAdminPortEnum = NULL;
|
|
g_pRasAdminPortGetInfo = NULL;
|
|
g_pRasAdminPortDisconnect = NULL;
|
|
g_pRasAdminUserSetInfo = NULL;
|
|
g_pMprConfigBufferFree = NULL;
|
|
g_pMprConfigServerConnect = NULL;
|
|
g_pMprConfigServerDisconnect = NULL;
|
|
g_pMprConfigTransportGetInfo = NULL;
|
|
g_pMprConfigTransportSetInfo = NULL;
|
|
g_pMprConfigTransportGetHandle = NULL;
|
|
g_pMprConfigInterfaceCreate = NULL;
|
|
g_pMprConfigInterfaceDelete = NULL;
|
|
g_pMprConfigInterfaceGetHandle = NULL;
|
|
g_pMprConfigInterfaceEnum = NULL;
|
|
g_pMprConfigInterfaceTransportAdd = NULL;
|
|
g_pMprConfigInterfaceTransportGetInfo = NULL;
|
|
g_pMprConfigInterfaceTransportSetInfo = NULL;
|
|
g_pMprConfigInterfaceTransportGetHandle = NULL;
|
|
g_pMprInfoCreate = NULL;
|
|
g_pMprInfoDelete = NULL;
|
|
g_pMprInfoDuplicate = NULL;
|
|
g_pMprInfoBlockAdd = NULL;
|
|
g_pMprInfoBlockRemove = NULL;
|
|
g_pMprInfoBlockSet = NULL;
|
|
g_pMprInfoBlockFind = NULL;
|
|
|
|
h = g_hMpradminDll;
|
|
g_hMpradminDll = NULL;
|
|
FreeLibrary(h);
|
|
}
|
|
}
|
|
|
|
VOID
|
|
UnloadRasapi32Dll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Unload the RASAPI32.DLL library and it's entrypoints.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
--*/
|
|
|
|
{
|
|
if (g_hRasapi32Dll)
|
|
{
|
|
HINSTANCE h;
|
|
|
|
g_pRasConnectionNotification = NULL;
|
|
g_pRasDeleteEntry = NULL;
|
|
g_pRasDial = NULL;
|
|
g_pRasEnumEntries = NULL;
|
|
g_pRasEnumConnections = NULL;
|
|
g_pRasGetConnectStatus = NULL;
|
|
g_pRasGetConnectResponse = NULL;
|
|
g_pRasGetCredentials = NULL;
|
|
g_pRasGetErrorString = NULL;
|
|
g_pRasHangUp = NULL;
|
|
g_pRasGetAutodialEnable = NULL;
|
|
g_pRasGetAutodialParam = NULL;
|
|
g_pRasGetProjectionInfo = NULL;
|
|
g_pRasSetAutodialEnable = NULL;
|
|
g_pRasSetAutodialParam = NULL;
|
|
g_pRasGetSubEntryHandle = NULL;
|
|
g_pRasGetHport = NULL;
|
|
g_pRasSetCredentials = NULL;
|
|
g_pRasSetOldPassword = NULL;
|
|
g_pRasGetCountryInfo = NULL;
|
|
g_pRasValidateEntryName = NULL;
|
|
|
|
h = g_hRasapi32Dll;
|
|
g_hRasapi32Dll = NULL;
|
|
FreeLibrary( h );
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
UnloadRasdlgDll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Unload the RASDLG.DLL library and it's entrypoints.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
--*/
|
|
|
|
{
|
|
if (g_hRasdlgDll)
|
|
{
|
|
HINSTANCE h;
|
|
|
|
g_pRasPhonebookDlg = NULL;
|
|
g_pRasEntryDlg = NULL;
|
|
g_pRouterEntryDlg = NULL;
|
|
g_pRasDialDlg = NULL;
|
|
|
|
h = g_hRasdlgDll;
|
|
g_hRasdlgDll = NULL;
|
|
FreeLibrary( h );
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
UnloadRasmanDll(
|
|
void )
|
|
|
|
/*++
|
|
|
|
Routine Description
|
|
|
|
Unload the RASMAN.DLL library and it's entrypoints.
|
|
|
|
Arguments
|
|
|
|
Return Value
|
|
|
|
--*/
|
|
|
|
{
|
|
if (g_hRasmanDll)
|
|
{
|
|
HINSTANCE h;
|
|
|
|
if ( g_hBinding )
|
|
{
|
|
g_pRasRpcDisconnect( &g_hBinding );
|
|
|
|
g_hBinding = NULL;
|
|
}
|
|
|
|
g_pRasPortClearStatistics = NULL;
|
|
g_pRasDeviceEnum = NULL;
|
|
g_pRasDeviceGetInfo = NULL;
|
|
g_pRasFreeBuffer = NULL;
|
|
g_pRasGetBuffer = NULL;
|
|
g_pRasPortGetFramingEx = NULL;
|
|
g_pRasGetInfo = NULL;
|
|
g_pRasGetNdiswanDriverCaps = NULL;
|
|
g_pRasInitialize = NULL;
|
|
g_pRasPortCancelReceive = NULL;
|
|
g_pRasPortEnum = NULL;
|
|
g_pRasPortGetInfo = NULL;
|
|
g_pRasPortGetStatistics = NULL;
|
|
g_pRasPortReceive = NULL;
|
|
g_pRasPortReceiveEx = NULL;
|
|
g_pRasPortSend = NULL;
|
|
g_pRasPortGetBundle = NULL;
|
|
g_pRasGetDevConfig = NULL;
|
|
g_pRasGetDevConfigEx = NULL;
|
|
g_pRasSetDevConfig = NULL;
|
|
g_pRasPortOpen = NULL;
|
|
g_pRasPortRegisterSlip = NULL;
|
|
g_pRasAllocateRoute = NULL;
|
|
g_pRasActivateRoute = NULL;
|
|
g_pRasActivateRouteEx = NULL;
|
|
g_pRasDeviceSetInfo = NULL;
|
|
g_pRasDeviceConnect = NULL;
|
|
g_pRasPortSetInfo = NULL;
|
|
g_pRasPortClose = NULL;
|
|
g_pRasPortListen = NULL;
|
|
g_pRasPortConnectComplete = NULL;
|
|
g_pRasPortDisconnect = NULL;
|
|
g_pRasRequestNotification = NULL;
|
|
g_pRasPortEnumProtocols = NULL;
|
|
g_pRasPortSetFraming = NULL;
|
|
g_pRasPortSetFramingEx = NULL;
|
|
g_pRasSetCachedCredentials = NULL;
|
|
g_pRasGetDialParams = NULL;
|
|
g_pRasSetDialParams = NULL;
|
|
g_pRasCreateConnection = NULL;
|
|
g_pRasDestroyConnection = NULL;
|
|
g_pRasConnectionEnum = NULL;
|
|
g_pRasAddConnectionPort = NULL;
|
|
g_pRasEnumConnectionPorts = NULL;
|
|
g_pRasGetConnectionParams = NULL;
|
|
g_pRasSetConnectionParams = NULL;
|
|
g_pRasGetConnectionUserData = NULL;
|
|
g_pRasSetConnectionUserData = NULL;
|
|
g_pRasGetPortUserData = NULL;
|
|
g_pRasSetPortUserData = NULL;
|
|
g_pRasAddNotification = NULL;
|
|
g_pRasSignalNewConnection = NULL;
|
|
g_pRasPppStop = NULL;
|
|
g_pRasPppCallback = NULL;
|
|
g_pRasPppChangePassword = NULL;
|
|
g_pRasPppGetInfo = NULL;
|
|
g_pRasPppRetry = NULL;
|
|
g_pRasPppStart = NULL;
|
|
g_pRasSetIoCompletionPort = NULL;
|
|
g_pRasSetRasdialInfo = NULL;
|
|
g_pRasRpcConnect = NULL;
|
|
g_pRasRpcDisconnect = NULL;
|
|
g_pRasNumPortOpen = NULL;
|
|
|
|
h = g_hRasmanDll;
|
|
g_hRasmanDll = NULL;
|
|
FreeLibrary( h );
|
|
}
|
|
}
|
|
|
|
|
|
DWORD
|
|
UnloadRasRpcDll(
|
|
void
|
|
)
|
|
{
|
|
DWORD dwErr = 0;
|
|
|
|
if ( g_hRasapi32Dll == NULL )
|
|
{
|
|
g_pRasEnumConnections = NULL;
|
|
g_pRasDeleteEntry = NULL;
|
|
g_pRasGetErrorString = NULL;
|
|
g_pRasGetCountryInfo = NULL;
|
|
}
|
|
|
|
g_pGetInstalledProtocols = GetInstalledProtocolsEx;
|
|
g_pGetUserPreferences = GetUserPreferences;
|
|
g_pSetUserPreferences = SetUserPreferences;
|
|
g_pGetSystemDirectory = RasGetSystemDirectory;
|
|
|
|
if ( VERSION_40 == g_Version )
|
|
{
|
|
if ( g_hRasmanDll == NULL )
|
|
{
|
|
dwErr = E_FAIL;
|
|
goto done;
|
|
}
|
|
|
|
//
|
|
// rasman dll should always be loaded
|
|
//
|
|
g_pRasPortEnum = (PRASPORTENUM) GetProcAddress(
|
|
g_hRasmanDll,
|
|
"RasPortEnum"
|
|
);
|
|
|
|
g_pRasDeviceEnum = (PRASDEVICEENUM) GetProcAddress(
|
|
g_hRasmanDll,
|
|
"RasDeviceEnum"
|
|
);
|
|
|
|
g_pRasGetDevConfig = (PRASGETDEVCONFIG) GetProcAddress(
|
|
g_hRasmanDll,
|
|
"RasGetDevConfig"
|
|
);
|
|
|
|
g_pRasPortGetInfo = (PRASPORTGETINFO) GetProcAddress(
|
|
g_hRasmanDll,
|
|
"RasPortGetInfo"
|
|
);
|
|
|
|
}
|
|
|
|
g_Version = VERSION_501;
|
|
|
|
//
|
|
// Release the binding resources.
|
|
//
|
|
g_pRasRpcDisconnect ( &g_hBinding );
|
|
|
|
g_hBinding = NULL;
|
|
|
|
if ( g_fRasapi32PreviouslyLoaded )
|
|
{
|
|
dwErr = LoadRasapi32Dll();
|
|
goto done;
|
|
}
|
|
|
|
if ( g_fRasmanPreviouslyLoaded )
|
|
{
|
|
//
|
|
// restore connection to local server
|
|
//
|
|
if ( g_pRasRpcConnect )
|
|
{
|
|
dwErr = g_pRasRpcConnect ( NULL, g_hBinding );
|
|
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
done:
|
|
return dwErr;
|
|
}
|