Code:
' ' RAS Functions ' Modified by P. Amick ' Partial translation of the C header files for the RAS connection ' ' by Don Dickinson ' Hereby Public Domain ' Use or Misuse of this code implies that you hold the author (Don Dickinson) ' harmless for any effects or side-effects generated by this code. ' ' Depends upon your copy of win32api.inc that came with PB/DLL ' '================================================================================================= %RASBASE = 600 %ERROR_INVALID_PORT_HANDLE = %RASBASE + 1 %ERROR_BUFFER_TOO_SMALL = %RASBASE + 3 %ERROR_BUFFER_INVALID = %RASBASE + 10 %ERROR_CANNOT_FIND_PHONEBOOK_ENTRY = %RASBASE + 23 %ERROR_INVALID_SIZE = %RASBASE + 32 %RAS_MAXENTRYNAMEBUFFER = 257 %RAS_MAXDEVICETYPE = 16 %RAS_MAXENTRYNAME = 256 %RAS_MAXDEVICENAME = 128 %RAS_MAXPHONENUMBER = 128 %RAS_MAXCALLBACKNUMBER = %RAS_MAXPHONENUMBER %ULEN = 256 %PWLEN = 256 %DNLEN = 15 '- Connection Status Constants %RASCS_PAUSED = &h1000 %RASCS_DONE = &h2000 '%RASCS_Connected = %RASCS_DONE %RASCS_OpenPort = 0& %RASCS_PortOpened = 1& %RASCS_ConnectDevice = 2& %RASCS_DeviceConnected = 3& %RASCS_AllDevicesConnected = 4& %RASCS_Authenticate = 5& %RASCS_AuthNotify = 6& %RASCS_AuthRetry = 7& %RASCS_AuthCallback = 8& %RASCS_AuthChangePassword = 9& %RASCS_AuthProject = 10& %RASCS_AuthLinkSpeed = 11& %RASCS_AuthAck = 12& %RASCS_ReAuthenticate = 13& %RASCS_Authenticated = 14& %RASCS_PrepareForCallback = 15& %RASCS_WaitForModemReset = 16& %RASCS_WaitForCallback = 17& %RASCS_Projected = 18& %RASCS_StartAuthentication = 19& 'Windows 95 only %RASCS_CallbackComplete = 20& 'Windows 95 only %RASCS_LogonNetwork = 21& 'Windows 95 only %RASCS_Interactive = %RASCS_PAUSED 'integer expected %RASCS_RetryAuthentication = %RASCS_PAUSED + 1& %RASCS_CallbackSetByCaller = %RASCS_PAUSED + 2& %RASCS_PasswordExpired = %RASCS_PAUSED + 3& %RASCS_Connected = %RASCS_DONE %RASCS_Disconnected = %RASCS_DONE + 1& %SUCCESS = 0& %PENDING = (%RASBASE + 0) '%RASCS_PAUSED = &H1000& '%RASCS_DONE = &H2000& '- The members are not dword aligned, but the whole ' structure has to fit into a 4-byte bounded memory space, ' thus the extra 3-byte buffer at the end of the structure. ' So far, all of the ras structures I've found work this ' way. NOTE: This is not the same as using the Dword specifier ' in the type declaration (that would dword align each ' member of the structure). ' TYPE RASENTRYNAME dwSize AS DWORD szEntryName AS ASCIIZ * %RAS_MAXENTRYNAMEBUFFER buffer AS ASCIIZ * 3 END TYPE TYPE RASDIALPARAMS dwSize AS DWORD '4 szEntryName AS ASCIIZ * %RAS_MAXENTRYNAME + 1 '257 szPhoneNumber AS ASCIIZ * %RAS_MAXPHONENUMBER + 1 '129 szCallBackNumber AS ASCIIZ * %RAS_MAXCALLBACKNUMBER + 1 '129 szUserName AS ASCIIZ * %ULEN + 1 '257 szPassword AS ASCIIZ * %PWLEN + 1 '257 szDomain AS ASCIIZ * %DNLEN + 1 '16 buffer AS STRING * 3 '3 END TYPE TYPE RASDIALEXTENSIONS dwSize AS DWORD dwfOptions AS DWORD hwndParent AS LONG reserved AS LONG END TYPE TYPE RASCONN dwSize AS DWORD '4 hRasConn AS LONG '4 8 szEntryName AS ASCIIZ * %RAS_MAXENTRYNAME + 1 '257 265 szDeviceType AS ASCIIZ * %RAS_MAXDEVICETYPE + 1 '17 282 szDeviceName AS ASCIIZ * %RAS_MAXDEVICENAME + 1 '129 411 buffer AS STRING * 1 '1 412 END TYPE TYPE RASCONNSTATUS dwSize AS DWORD '4 rasconnstate AS LONG '4 8 dwError AS DWORD '4 12 szDeviceType AS ASCIIZ * %RAS_MAXDEVICETYPE + 1 '17 29 szDeviceName AS ASCIIZ * %RAS_MAXDEVICENAME + 1 '129 158 buffer AS STRING * 2 '1 160 END TYPE '- Finally, the functions DECLARE FUNCTION RasGetConnectStatus LIB "rasapi32.dll" ALIAS "RasGetConnectStatusA" _ ( BYVAL hRasConn AS LONG, lpRasConnStatus AS RASCONNSTATUS ) AS LONG DECLARE FUNCTION RasEnumEntries LIB "rasapi32.dll" ALIAS "RasEnumEntriesA" _ ( zReserved AS ASCIIZ, zPhoneBook AS ASCIIZ, lpRasEntry AS RASENTRYNAME, _ lpCb AS LONG, lpcEntries AS LONG ) AS Long DECLARE FUNCTION RasGetEntryDialParams LIB "rasapi32.dll" ALIAS "RasGetEntryDialParamsA" _ ( zPhoneBook AS ASCIIZ, rDialParams AS RASDIALPARAMS, iPassword AS LONG ) AS LONG Declare FUNCTION RasSetEntryDialParams LIB "rasapi32.dll" ALIAS "RasSetEntryDialParamsA" _ ( zPhoneBook AS ASCIIZ, rDialParams AS RASDIALPARAMS, iPassword AS LONG ) AS LONG DECLARE FUNCTION RasDial LIB "rasapi32.dll" ALIAS "RasDialA" _ ( lpRasDialExtensions AS RASDIALEXTENSIONS, lpszPhoneBook AS ASCIIZ, _ lpRasDialParams AS RASDIALPARAMS, BYVAL dwNotiferType AS DWORD, _ BYVAL lpvNotifier AS LONG, lphRasConn AS LONG ) AS DWORD DECLARE FUNCTION RasHangUp LIB "rasapi32.dll" ALIAS "RasHangUpA" _ ( BYVAL hRasConn AS LONG ) AS LONG DECLARE FUNCTION RasEnumConnections LIB "rasapi32.dll" ALIAS "RasEnumConnectionsA" _ ( lpRasConn AS RASCONN, lpcb AS LONG, lpcConnections AS LONG ) AS DWORD Declare Function RasGetErrorString Lib "rasapi32.dll" Alias "RasGetErrorStringA" _ (ByVal uErrorValue As Long, ByVal lpszErrorString As String, _ cBufSize As Long) As Long 'added from updated inc file (ras32c.inc %RASBASEEND = %RASBASE + 153 %RAS_MAXENTRYNAMEBUFFER = 257 %RAS_MAXDEVICETYPE = 16 %RAS_MAXENTRYNAME = 256 %RAS_MAXDEVICENAME = 128 %RAS_MAXPHONENUMBER = 128 %RAS_MAXCALLBACKNUMBER = %RAS_MAXPHONENUMBER %RAS_MAXAREACODE = 10 %RAS_MAXPADTYPE = 32 %RAS_MAXX25ADDRESS = 200 %RAS_MAXFACILITIES = 200 %RAS_MAXUSERDATA = 200 %ULEN = 256 %PWLEN = 256 %DNLEN = 15 ' RASENTRY 'dwfOptions' bit flags. %RASEO_UseCountryAndAreaCodes = &H00000001 %RASEO_SpecificIpAddr = &H00000002 %RASEO_SpecificNameServers = &H00000004 %RASEO_IpHeaderCompression = &H00000008 %RASEO_RemoteDefaultGateway = &H00000010 %RASEO_DisableLcpExtensions = &H00000020 %RASEO_TerminalBeforeDial = &H00000040 %RASEO_TerminalAfterDial = &H00000080 %RASEO_ModemLights = &H00000100 %RASEO_SwCompression = &H00000200 %RASEO_RequireEncryptedPw = &H00000400 %RASEO_RequireMsEncryptedPw = &H00000800 %RASEO_RequireDataEncryption = &H00001000 %RASEO_NetworkLogon = &H00002000 %RASEO_UseLogonCredentials = &H00004000 %RASEO_PromoteAlternates = &H00008000 %RASEO_SecureLocalFiles = &H00010000 ' RASENTRY 'dwProtocols' bit flags. %RASNP_NetBEUI = &H00000001 %RASNP_Ipx = &H00000002 %RASNP_Ip = &H00000004 ' RASENTRY 'dwFramingProtocols' bit flags. %RASFP_Ppp = &H00000001 %RASFP_Slip = &H00000002 %RASFP_Ras = &H00000004 ' RASENTRY 'szDeviceType' default strings. $RASDT_Modem = "modem" $RASDT_Isdn = "isdn" $RASDT_X25 = "x25" $RASDT_Vpn = "vpn" $RASDT_Pad = "pad" ' Flags for RasConnectionNotification(). %RASCN_Connection = &H00000001 %RASCN_Disconnection = &H00000002 %RASCN_BandwidthAdded = &H00000004 %RASCN_BandwidthRemoved = &H00000008 ' RASENTRY 'dwDialMode' values. %RASEDM_DialAll = 1 %RASEDM_DialAsNeeded = 2 ' RASENTRY 'dwIdleDisconnectSeconds' constants. %RASIDS_Disabled = &Hffffffff %RASIDS_UseGlobalValue = 0 ' RASENTRY 'dwType' constants. %RASET_Phone = 1 %RASET_Vpn = 2 %RASET_Direct = 3 %RASET_Internet = 4 ' RASENTRY 'dwEncryptionType' constants. %ET_None = 4 ' RASENTRY 'dwVpnStrategy' constants. %VS_Default = 4 TYPE RASENTRY dwSize AS DWORD dwfOptions AS DWORD dwCountryID AS DWORD dwCountryCode AS DWORD szAreaCode AS ASCIIZ * %RAS_MAXAREACODE + 1 szLocalPhoneNumber AS ASCIIZ * %RAS_MAXPHONENUMBER + 1 dwAlternateOffset AS DWORD ipaddr AS LONG 'RASIPADDR ipaddrDns AS LONG 'RASIPADDR ipaddrDnsAlt AS LONG 'RASIPADDR ipaddrWins AS LONG 'RASIPADDR ipaddrWinsAlt AS LONG 'RASIPADDR dwFrameSize AS DWORD dwfNetProtocols AS DWORD dwFramingProtocol AS DWORD szScript AS ASCIIZ * %MAX_PATH szAutoDialDll AS ASCIIZ * %MAX_PATH szAutoDialFunc AS ASCIIZ * %MAX_PATH szDeviceType AS ASCIIZ * %RAS_MAXDEVICETYPE + 1 szDeviceName AS ASCIIZ * %RAS_MAXDEVICENAME + 1 szX25PadType AS ASCIIZ * %RAS_MAXPADTYPE + 1 szX25Address AS ASCIIZ * %RAS_MAXX25ADDRESS + 1 szX25Facilities AS ASCIIZ * %RAS_MAXFACILITIES + 1 szX25UserData AS ASCIIZ * %RAS_MAXUSERDATA + 1 dwChannels AS DWORD dwReserved1 AS DWORD dwReserved2 AS DWORD dummy AS STRING * 2 END TYPE Type RASDEVINFO dwSize AS DWORD szDeviceType AS ASCIIZ * %RAS_MaxDeviceType + 1 szDeviceName AS ASCIIZ * %RAS_MaxDeviceName + 1 End Type Declare Function RasEnumDevices Lib "rasapi32.dll" Alias "RasEnumDevicesA" _ (lpRasDevInfo As RasDevInfo, lpcb As Long, lpcDevices As long) As Long Declare FUNCTION RasGetEntryProperties LIB "rasapi32.dll" ALIAS "RasGetEntryPropertiesA" _ ( lpszPhoneBook AS ASCIIZ, szEntry AS ASCIIZ, lpbEntry AS RASENTRY, lpdwEntrySize AS LONG, _ lpBuffer AS ANY, lpdwSize AS LONG) AS LONG DECLARE FUNCTION RasSetEntryProperties LIB "rasapi32.dll" ALIAS "RasSetEntryPropertiesA" _ ( lpszPhoneBook AS ASCIIZ, szEntry AS ASCIIZ, lpbEntry AS RASENTRY, BYVAL dwEntrySize AS LONG, _ lpBuffer AS ANY, BYVAL dwSize AS LONG) AS LONG
Leave a comment: