//============================================================================== // Remote Access external API Delphi UNIT Ras.Pas 1.00 // Ryuuuji Yoshimoto // ryuuji@takenet.or.jp // http://www.takenet.or.jp/~ryuuji/ // Public header for external API clients // // WINVER values in this file: // WINVER < 0x400 = Windows NT 3.5, Windows NT 3.51 // WINVER = 0x400 = Windows 95, Windows NT SUR (default) // WINVER > 0x400 = Windows NT SUR enhancements //============================================================================== // // 1998-5-24 New Version 1.00 // // unit RAS; interface uses Windows,lmcons; {$INCLUDE VERSION.INC} const RAS_MaxDeviceType = 16; RAS_MaxPhoneNumber = 128; RAS_MaxIpAddress = 15; RAS_MaxIpxAddress = 21; {$IFDEF WINVER400} RAS_MaxEntryName = 256; RAS_MaxDeviceName = 128; RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; {$ELSE} RAS_MaxEntryName = 20; RAS_MaxDeviceName = 32; RAS_MaxCallbackNumber = 48; {$ENDIF} RAS_MaxAreaCode = 10; RAS_MaxPadType = 32; RAS_MaxX25Address = 200; RAS_MaxFacilities = 200; RAS_MaxUserData = 200; type THRASCONN = DWORD; LPHRASCONN = ^THRASCONN; // Identifies an active RAS connection. (See RasEnumConnections) TRASCONNW = record dwSize :DWORD; hrasconn :THRASCONN; szEntryName :array[0..RAS_MaxEntryName ] of WideChar; {$IFDEF WINVER400} szDeviceType:array[0..RAS_MaxDeviceType] of WideChar; szDeviceName:array[0..RAS_MaxDeviceName] of WideChar; {$ENDIF} {$IFDEF WINVER401} szPhonebook :array[0..MAX_PATH] of WideChar; dwSubEntry :DWORD; {$ENDIF} end; TRASCONNA = record dwSize: DWORD; hrasconn: THRASCONN; szEntryName: array[0..RAS_MaxEntryName ] of AnsiChar; {$IFDEF WINVER400} szDeviceType: array[0..RAS_MaxDeviceType] of AnsiChar; szDeviceName: array[0..RAS_MaxDeviceName] of AnsiChar; {$ENDIF} {$IFDEF WINVER401} szPhonebook :array[0..MAX_PATH] of AnsiChar; dwSubEntry :DWORD; {$ENDIF} end; TRASCONN = TRASCONNA; LPRASCONNW =^TRASCONNW; LPRASCONNA =^TRASCONNA; LPRASCONN =^TRASCONN; // Enumerates intermediate states to a connection. (See RasDial) const RASCS_PAUSED = $1000; RASCS_DONE = $2000; type TRASCONNSTATE = ( RASCS_OpenPort, RASCS_PortOpened, RASCS_ConnectDevice, RASCS_DeviceConnected, 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, {$ifdef WINVER400} RASCS_StartAuthentication, RASCS_CallbackComplete, RASCS_LogonNetwork, {$endif} RASCS_SubEntryConnected, RASCS_SubEntryDisconnected, //RASCS_Interactive = RASCS_PAUSED, RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired, {$ifdef WINVER500} RASCS_InvokeEapUI, {$endif} //RASCS_Connected = RASCS_DONE, RASCS_Disconnected ); const RASCS_Interactive:TRASCONNSTATE = TRASCONNSTATE( RASCS_PAUSED ); RASCS_Connected :TRASCONNSTATE = TRASCONNSTATE( RASCS_DONE ); type LPRASCONNSTATE =^TRASCONNSTATE; // Describes the status of a RAS connection. (See RasConnectionStatus) TRASCONNSTATUSW = record dwSize: DWORD; rasconnstate: TRASCONNSTATE; dwError: DWORD; szDeviceType: array[0..RAS_MaxDeviceType] of WideChar; szDeviceName: array[0..RAS_MaxDeviceName] of WideChar; {$ifdef WINVER401} szPhoneNumber: array[ RAS_MaxPhoneNumber + 1 ] of WideChar; {$endif} end; TRASCONNSTATUSA = record dwSize: DWORD; rasconnstate: TRASCONNSTATE; dwError: DWORD; szDeviceType: array[0..RAS_MaxDeviceType] of AnsiChar; szDeviceName: array[0..RAS_MaxDeviceName] of AnsiChar; {$ifdef WINVER401} szPhoneNumber: array[ RAS_MaxPhoneNumber + 1 ] of AnsiChar; {$endif} end; TRASCONNSTATUS = TRASCONNSTATUSA; LPRASCONNSTATUSW =^TRASCONNSTATUSW; LPRASCONNSTATUSA =^TRASCONNSTATUSA; LPRASCONNSTATUS =^TRASCONNSTATUS; // Describes connection establishment parameters. (See RasDial) TRASDIALPARAMSW = record dwSize: DWORD; szEntryName: array[0..RAS_MaxEntryName ] of WideChar; szPhoneNumber: array[0..RAS_MaxPhoneNumber ] of WideChar; szCallbackNumber: array[0..RAS_MaxCallbackNumber] of WideChar; szUserName: array[0..UNLEN] of WideChar; szPassword: array[0..PWLEN] of WideChar; szDomain: array[0..DNLEN] of WideChar; {$ifdef WINVER401} dwSubEntry :DWORD ; dwCallbackId :DWORD ; {$endif} end; TRASDIALPARAMSA = record dwSize: DWORD; szEntryName: array[0..RAS_MaxEntryName ] of AnsiChar; szPhoneNumber: array[0..RAS_MaxPhoneNumber ] of AnsiChar; szCallbackNumber: array[0..RAS_MaxCallbackNumber] of AnsiChar; szUserName: array[0..UNLEN] of AnsiChar; szPassword: array[0..PWLEN] of AnsiChar; szDomain: array[0..DNLEN] of AnsiChar; end; TRASDIALPARAMS = TRASDIALPARAMSA; LPRASDIALPARAMSW =^TRASDIALPARAMSW; LPRASDIALPARAMSA =^TRASDIALPARAMSA; LPRASDIALPARAMS =^TRASDIALPARAMS; // Describes extended connection establishment options. (See RasDial) TRASDIALEXTENSIONS = record dwSize: DWORD; dwfOptions: DWORD; hwndParent: HWND; reserved: DWORD; {$ifdef WINVER500} reserved1: DWORD; {$endif} end; LPRASDIALEXTENSIONS = ^TRASDIALEXTENSIONS; // 'dwfOptions' bit flags. const RDEOPT_UsePrefixSuffix = $00000001; RDEOPT_PausedStates = $00000002; RDEOPT_IgnoreModemSpeaker = $00000004; RDEOPT_SetModemSpeaker = $00000008; RDEOPT_IgnoreSoftwareCompression= $00000010; RDEOPT_SetSoftwareCompression = $00000020; RDEOPT_DisableConnectedUI = $00000040; RDEOPT_DisableReconnectUI = $00000080; RDEOPT_DisableReconnect = $00000100; RDEOPT_NoUser = $00000200; RDEOPT_PauseOnScript = $00000400; RDEOPT_Router = $00000800; // Describes an enumerated RAS phone book entry name. (See RasEntryEnum) type TRASENTRYNAMEW = record dwSize: DWORD; szEntryName: array[0..RAS_MaxEntryName] of WideChar; end; TRASENTRYNAMEA = record dwSize: DWORD; szEntryName: array[0..RAS_MaxEntryName] of AnsiChar; end; TRASENTRYNAME = TRASENTRYNAMEA; LPRASENTRYNAMEW =^TRASENTRYNAMEW; LPRASENTRYNAMEA =^TRASENTRYNAMEA; LPRASENTRYNAME =^TRASENTRYNAME; // Protocol code to projection data structure mapping. const RASP_Amb = $10000; RASP_PppNbf = $0803F; RASP_PppIpx = $0802B; RASP_PppIp = $08021; RASP_PppLcp = $0C021; RASP_Slip = $20000; type TRASPROJECTION = DWORD; LPRASPROJECTION = ^TRASPROJECTION; // Describes the result of a RAS AMB (Authentication Message Block) // projection. This protocol is used with NT 3.1 and OS/2 1.3 downlevel // RAS servers. type TRASAMBW = record dwSize: DWORD; dwError: DWORD; szNetBiosError: array[0..NETBIOS_NAME_LEN] of WideChar; bLana: BYTE; end; TRASAMBA = record dwSize: DWORD; dwError: DWORD; szNetBiosError: array[0..NETBIOS_NAME_LEN] of AnsiChar; bLana: BYTE; end; TRASAMB = TRASAMBA; LPRASAMBW =^TRASAMBW; LPRASAMBA =^TRASAMBA; LPRASAMB =^TRASAMB; // Describes the results of a PPP IPX (Internetwork Packet Exchange) // projection. TRASPPPNBFW = record dwSize: DWORD; dwError: DWORD; dwNetBiosError: DWORD; szNetBiosError: array[0..NETBIOS_NAME_LEN] of WideChar; szWorkstationName:array[0..NETBIOS_NAME_LEN] of WideChar; bLana: BYTE; end; TRASPPPNBFA = record dwSize: DWORD; dwError: DWORD; dwNetBiosError: DWORD; szNetBiosError: array[0..NETBIOS_NAME_LEN] of AnsiChar; szWorkstationName:array[0..NETBIOS_NAME_LEN] of AnsiChar; bLana: BYTE; end; TRASPPPNBF = TRASPPPNBFA; LPRASPPPNBFW =^TRASPPPNBFW; LPRASPPPNBFA =^TRASPPPNBFA; LPRASPPPNBF =^TRASPPPNBF; // Describes the results of a PPP IP (Internet) projection. TRASPPPIPXW = record dwSize: DWORD; dwError: DWORD; szIpxAddress: array[0..RAS_MaxIpxAddress] of WideChar; end; TRASPPPIPXA = record dwSize: DWORD; dwError: DWORD; szIpxAddress: array[0..RAS_MaxIpxAddress] of AnsiChar; end; TRASPPPIPX = TRASPPPIPXA; LPRASPPPIPXW =^TRASPPPIPXW; LPRASPPPIPXA =^TRASPPPIPXA; LPRASPPPIPX =^TRASPPPIPX; // Describes the results of a PPP IP (Internet) projection. TRASPPPIPW = record dwSize: DWORD; dwError: DWORD; szIpAddress: array[0..RAS_MaxIpAddress] of WideChar; {$IFNDEF WINNT35COMPATIBLE} // This field was added between Windows NT 3.51 beta and Windows NT 3.51 // final, and between Windows 95 M8 beta and Windows 95 final. If you do // not require the server address and wish to retrieve PPP IP information // from Windows NT 3.5 or early Windows NT 3.51 betas, or on early Windows // 95 betas, define WINNT35COMPATIBLE. // // The server IP address is not provided by all PPP implementations, // though Windows NT server's do provide it. szServerIpAddress:array[0..RAS_MaxIpAddress] of WideChar; {$ENDIF} end; TRASPPPIPA = record dwSize: DWORD; dwError: DWORD; szIpAddress: array[0..RAS_MaxIpAddress] of AnsiChar; {$IFNDEF WINNT35COMPATIBLE} // See RASPPPIPW comment. szServerIpAddress:array[0..RAS_MaxIpAddress] of AnsiChar; {$ENDIF} end; TRASPPPIP = TRASPPPIPA; LPRASPPPIPW =^TRASPPPIPW; LPRASPPPIPA =^TRASPPPIPA; LPRASPPPIP =^TRASPPPIP; // Describes the results of a PPP LCP/multi-link negotiation. type TRASPPPLCP = record dwSize: DWORD; fBundled: BOOL; end; LPRASPPPLCP = ^TRASPPPLCP; // Describes the results of a SLIP (Serial Line IP) projection. TRASSLIPW = record dwSize:DWORD; dwError:DWORD; szIpAddress: array [ 0..RAS_MaxIpAddress ] of WideChar; end; TRASSLIPA = record dwSize:DWORD; dwError:DWORD; szIpAddress: array [ 0..RAS_MaxIpAddress ] of AnsiChar; end; TRASSLIP = TRASSLIPA; LPRASSLIPW =^TRASSLIPW; LPRASSLIPA =^TRASSLIPA; LPRASSLIP =^TRASSLIP; // If using RasDial message notifications, get the notification message code // by passing this string to the RegisterWindowMessageA() API. // WM_RASDIALEVENT is used only if a unique message cannot be registered. const RASDIALEVENT = 'RasDialEvent'; WM_RASDIALEVENT = $CCCD; // Prototypes for caller's RasDial callback handler. Arguments are the // message ID (currently always WM_RASDIALEVENT), the current RASCONNSTATE and // the error that has occurred (or 0 if none). Extended arguments are the // handle of the RAS connection and an extended error code. // // For RASDIALFUNC2, subsequent callback notifications for all // subentries can be cancelled by returning FALSE. type TRASDIALFUNC = function ( P1: UINT; P2: TRASCONNSTATE; P3: DWORD ): Pointer; stdcall; TRASDIALFUNC1 = function ( P1: THRASCONN; P2: UINT; P3: TRASCONNSTATE; P4: DWORD; P5: DWORD ): Pointer; stdcall; TRASDIALFUNC2 = function ( P1: DWORD; P2: DWORD; P3: THRASCONN ; P4: TRASCONNSTATE; P5: DWORD; P6:DWORD): DWORD ; stdcall; // Information describing a RAS-capable device. TRASDEVINFOW = record dwSize:DWORD; szDeviceType: array [ 0..RAS_MaxDeviceType ] of WideChar; szDeviceName: array [ 0..RAS_MaxDeviceName ] of WideChar; end; TRASDEVINFOA = record dwSize:DWORD; szDeviceType: array [ 0..RAS_MaxDeviceType ] of AnsiChar; szDeviceName: array [ 0..RAS_MaxDeviceName ] of AnsiChar; end; TRASDEVINFO = TRASDEVINFOA; LPRASDEVINFOW =^TRASDEVINFOW; LPRASDEVINFOA =^TRASDEVINFOA; LPRASDEVINFO =^TRASDEVINFO; // RAS country information (currently retrieved from TAPI). TRASCTRYINFO = record dwSize:DWORD; dwCountryID:DWORD; dwNextCountryID:DWORD; dwCountryCode:DWORD; dwCountryNameOffset:DWORD; end; TRASCTRYINFOA = TRASCTRYINFO; TRASCTRYINFOW = TRASCTRYINFO; LPRASCTRYINFOW =^TRASCTRYINFOW; LPRASCTRYINFOA =^TRASCTRYINFOA; LPRASCTRYINFO =^TRASCTRYINFO; // A RAS IP address. TRASIPADDR = record a:BYTE; b:BYTE; c:BYTE; d:BYTE; end; // A RAS phone book entry. TRASENTRYA = record dwSize :DWORD; dwfOptions :DWORD; // Location/phone number. dwCountryID :DWORD; dwCountryCode :DWORD; szAreaCode :array [ 0..RAS_MaxAreaCode ] of AnsiChar; szLocalPhoneNumber:array [ 0..RAS_MaxPhoneNumber ] of AnsiChar; dwAlternateOffset :DWORD; // PPP/Ip ipaddr :TRASIPADDR; ipaddrDns :TRASIPADDR; ipaddrDnsAlt :TRASIPADDR; ipaddrWins :TRASIPADDR; ipaddrWinsAlt :TRASIPADDR; // Framing dwFrameSize :DWORD; dwfNetProtocols :DWORD; dwFramingProtocol :DWORD; // Scripting szScript : array [ 0..MAX_PATH ] of AnsiChar; // AutoDial szAutodialDll : array [ 0..MAX_PATH ] of AnsiChar; szAutodialFunc : array [ 0..MAX_PATH ] of AnsiChar; // Device szDeviceType : array [ 0..RAS_MaxDeviceType ] of AnsiChar; szDeviceName : array [ 0..RAS_MaxDeviceName ] of AnsiChar; // X.25 szX25PadType : array [ 0..RAS_MaxPadType ] of AnsiChar; szX25Address : array [ 0..RAS_MaxX25Address ] of AnsiChar; szX25Facilities : array [ 0..RAS_MaxFacilities ] of AnsiChar; szX25UserData : array [ 0..RAS_MaxUserData ] of AnsiChar; dwChannels :DWORD; // Reserved dwReserved1 :DWORD; dwReserved2 :DWORD; {$ifdef WINVER401} // Multilink dwSubEntries:DWORD; dwDialMode:DWORD; dwDialExtraPercent:DWORD; dwDialExtraSampleSeconds:DWORD; dwHangUpExtraPercent:DWORD; dwHangUpExtraSampleSeconds:DWORD; // Idle timeout dwIdleDisconnectSeconds:DWORD ; {$endif} {$ifdef WINVER500} // Port Name szPortName : array [ 0..RAS_MaxDeviceName ] of AnsiChar; {$endif} end; TRASENTRYW = record dwSize :DWORD; dwfOptions :DWORD; // Location/phone number. dwCountryID :DWORD; dwCountryCode :DWORD; szAreaCode :array [ 0..RAS_MaxAreaCode ] of WideChar; szLocalPhoneNumber:array [ 0..RAS_MaxPhoneNumber ] of WideChar; dwAlternateOffset :DWORD; // PPP/Ip ipaddr :TRASIPADDR; ipaddrDns :TRASIPADDR; ipaddrDnsAlt :TRASIPADDR; ipaddrWins :TRASIPADDR; ipaddrWinsAlt :TRASIPADDR; // Framing dwFrameSize :DWORD; dwfNetProtocols :DWORD; dwFramingProtocol :DWORD; // Scripting szScript : array [ 0..MAX_PATH ] of WideChar; // AutoDial szAutodialDll : array [ 0..MAX_PATH ] of WideChar; szAutodialFunc : array [ 0..MAX_PATH ] of WideChar; // Device szDeviceType : array [ 0..RAS_MaxDeviceType ] of WideChar; szDeviceName : array [ 0..RAS_MaxDeviceName ] of WideChar; // X.25 szX25PadType : array [ 0..RAS_MaxPadType ] of AnsiChar; szX25Address : array [ 0..RAS_MaxX25Address ] of WideChar; szX25Facilities : array [ 0..RAS_MaxFacilities ] of WideChar; szX25UserData : array [ 0..RAS_MaxUserData ] of WideChar; dwChannels :DWORD; // Reserved dwReserved1 :DWORD; dwReserved2 :DWORD; {$ifdef WINVER401} // Multilink dwSubEntries:DWORD; dwDialMode:DWORD; dwDialExtraPercent:DWORD; dwDialExtraSampleSeconds:DWORD; dwHangUpExtraPercent:DWORD; dwHangUpExtraSampleSeconds:DWORD; // Idle timeout dwIdleDisconnectSeconds:DWORD ; {$endif} {$ifdef WINVER500} // Port Name szPortName : array [ 0..RAS_MaxDeviceName ] of WideChar; {$endif} end; TRASENTRY = TRASENTRYA; LPRASENTRYW =^TRASENTRYW; LPRASENTRYA =^TRASENTRYA; LPRASENTRY =^TRASENTRY; // RASENTRY 'dwfOptions' bit flags. const RASEO_UseCountryAndAreaCodes = $00000001; RASEO_SpecificIpAddr = $00000002; RASEO_SpecificNameServers = $00000004; RASEO_IpHeaderCompression = $00000008; RASEO_RemoteDefaultGateway = $00000010; RASEO_DisableLcpExtensions = $00000020; RASEO_TerminalBeforeDial = $00000040; RASEO_TerminalAfterDial = $00000080; RASEO_ModemLights = $00000100; RASEO_SwCompression = $00000200; RASEO_RequireEncryptedPw = $00000400; RASEO_RequireMsEncryptedPw = $00000800; RASEO_RequireDataEncryption = $00001000; RASEO_NetworkLogon = $00002000; RASEO_UseLogonCredentials = $00004000; RASEO_PromoteAlternates = $00008000; {$ifdef WINVER401} RASEO_SecureLocalFiles = $00010000; {$endif} // RASENTRY 'dwProtocols' bit flags. RASNP_NetBEUI = $00000001; RASNP_Ipx = $00000002; RASNP_Ip = $00000004; // RASENTRY 'dwFramingProtocols' bit flags. RASFP_Ppp = $00000001; RASFP_Slip = $00000002; RASFP_Ras = $00000004; // RASENTRY 'szDeviceType' default strings. RASDT_Modem = 'modem'; RASDT_Isdn = 'isdn' ; RASDT_X25 = 'x25' ; RASDT_Vpn = 'vpn' ; RASDT_Pad = 'pad' ; // Old AutoDial DLL function prototype. // // This prototype is documented for backward-compatibility // purposes only. It is superceded by the RASADFUNCA // and RASADFUNCW definitions below. DO NOT USE THIS // PROTOTYPE IN NEW CODE. SUPPORT FOR IT MAY BE REMOVED // IN FUTURE VERSIONS OF RAS. type TORASADFUNC = function ( P1: HWND; P2:LPSTR; P3: DWORD; P4:PDWORD):BOOL;stdcall; {$ifdef WINVER401} type // Flags for RasConnectionNotification(). RASCN_Connection = $00000001; RASCN_Disconnection = $00000002; RASCN_BandwidthAdded = $00000004; RASCN_BandwidthRemoved = $00000008; // RASENTRY 'dwDialMode' values. RASEDM_DialAll = 1; RASEDM_DialAsNeeded = 2; // RASENTRY 'dwIdleDisconnectSeconds' constants. RASIDS_Disabled = $ffffffff; RASIDS_UseGlobalValue = 0 ; // AutoDial DLL function parameter block. type TRASADPARAMS = record dwSize:DWORD ; hwndOwner:HWND; dwFlags:DWORD ; xDlg:LONG; yDlg:LONG; end; LPRASADPARAMS = ^TRASADPARAMS; const // AutoDial DLL function parameter block 'dwFlags.' RASADFLG_PositionDlg = $00000001; // Prototype AutoDial DLL function. type TRASADFUNCA = function ( P1: LPSTR ; P2:LPSTR ; P3: LPRASADPARAMS; P4:PDWORD); TRASADFUNCW = function ( P1: LPWSTR; P2:LPWSTR; P3: LPRASADPARAMS; P4:PDWORD); TRASADFUNC = function ( P1: LPSTR ; P2:LPSTR ; P3: LPRASADPARAMS; P4:PDWORD); // A RAS phone book multilinked sub-entry. TRASSUBENTRYA = record dwSize :DWORD; dwfFlags :DWORD; // Device szDeviceType : array [ 0..RAS_MaxDeviceType ] of AnsiChar; szDeviceName : array [ 0..RAS_MaxDeviceName ] of AnsiChar; // Phone numbers szLocalPhoneNumber : array [ 0..RAS_MaxPhoneNumber ] of AnsiChar; dwAlternateOffset : DWORD; {$ifdef WINVER500} // Port Name szPortName : array [ 0..RAS_MaxDeviceName ] of AnsiChar; {$endif} end; TRASSUBENTRYW = record dwSize :DWORD; dwfFlags :DWORD; // Device szDeviceType : array [ 0..RAS_MaxDeviceType ] of WideChar; szDeviceName : array [ 0..RAS_MaxDeviceName ] of WideChar; // Phone numbers szLocalPhoneNumber : array [ 0..RAS_MaxPhoneNumber ] of WideChar; dwAlternateOffset : DWORD; {$ifdef WINVER500} // Port Name szPortName : array [ 0..RAS_MaxDeviceName ] of WideChar; {$endif} end; TRASSUBENTRY = TRASSUBENTRYA; LPRASSUBENTRYW =^TRASSUBENTRYW; LPRASSUBENTRYA =^TRASSUBENTRYA; LPRASSUBENTRY =^TRASSUBENTRY; // Ras{Get,Set}Credentials structure. These calls // supercede Ras{Get,Set}EntryDialParams. TRASCREDENTIALSA = record dwSize:DWORD; dwMask:DWORD; szUserName : array [ 0..UNLEN ] of AnsiChar; szPassword : array [ 0..PWLEN ] of AnsiChar; szDomain : array [ 0..DNLEN ] of AnsiChar; end; TRASCREDENTIALSW = record dwSize:DWORD; dwMask:DWORD; szUserName : array [ 0..UNLEN ] of WideChar; szPassword : array [ 0..PWLEN ] of WideChar; szDomain : array [ 0..DNLEN ] of WideChar; end; TRASCREDENTIALS = TRASCREDENTIALSA; LPRASCREDENTIALSW =^TRASCREDENTIALSW; LPRASCREDENTIALSA =^TRASCREDENTIALSA; LPRASCREDENTIALS =^TRASCREDENTIALS; // RASCREDENTIALS 'dwMask' values. const RASCM_UserName = $00000001; RASCM_Password = $00000002; RASCM_Domain = $00000004; // AutoDial address properties. type TRASAUTODIALENTRYA = record dwSize:DWORD; dwFlags:DWORD; dwDialingLocation:DWORD; szEntry : array [ 0..RAS_MaxEntryName ] of AnsiChar; end; TRASAUTODIALENTRYW = record dwSize:DWORD; dwFlags:DWORD; dwDialingLocation:DWORD; szEntry : array [ 0..RAS_MaxEntryName ] of WideChar; end; TRASAUTODIALENTRY = TRASAUTODIALENTRYA; LPRASAUTODIALENTRYW =^TRASAUTODIALENTRYW; LPRASAUTODIALENTRYA =^TRASAUTODIALENTRYA; LPRASAUTODIALENTRY =^TRASAUTODIALENTRY; // AutoDial control parameter values for // Ras{Get,Set}AutodialParam. const RASADP_DisableConnectionQuery = 0; RASADP_LoginSessionDisable = 1; RASADP_SavedAddressesLimit = 2; RASADP_FailedConnectionTimeout = 3; RASADP_ConnectionQueryTimeout = 4; {$ENDIF} // (WINVER >= 0x401) // External RAS API function prototypes. function RasDialW( Para1:LPRASDIALEXTENSIONS;Para2:LPWSTR; Para3: LPRASDIALPARAMSW;Para4:DWORD;Para5:Pointer;Para6:LPHRASCONN ):DWORD; stdcall; function RasDialA( Para1:LPRASDIALEXTENSIONS;Para2:LPSTR ; Para3: LPRASDIALPARAMSA;Para4:DWORD;Para5:Pointer;Para6:LPHRASCONN ):DWORD; stdcall; function RasDial ( Para1:LPRASDIALEXTENSIONS;Para2:LPSTR ; Para3: LPRASDIALPARAMS ;Para4:DWORD;Para5:Pointer;Para6:LPHRASCONN ):DWORD; stdcall; function RasEnumConnectionsW( Para1:LPRASCONNW;var Para2:DWORD;var Para3:DWORD ):DWORD; stdcall; function RasEnumConnectionsA( Para1:LPRASCONNA;var Para2:DWORD;var Para3:DWORD ):DWORD; stdcall; function RasEnumConnections ( Para1:LPRASCONN ;var Para2:DWORD;var Para3:DWORD ):DWORD; stdcall; function RasEnumEntriesW( Para1:LPWSTR;Para2:LPWSTR;Para3:LPRASENTRYNAMEW;Para4:LPDWORD;Para5:LPDWORD ):DWORD; stdcall; function RasEnumEntriesA( Para1:LPSTR ;Para2:LPSTR ;Para3:LPRASENTRYNAMEA;Para4:LPDWORD;Para5:LPDWORD ):DWORD; stdcall; function RasEnumEntries ( Para1:LPSTR ;Para2:LPSTR ;Para3:LPRASENTRYNAME ;Para4:LPDWORD;Para5:LPDWORD ):DWORD; stdcall; function RasGetConnectStatusW( Para1:THRASCONN;Para2:LPRASCONNSTATUSW ):DWORD; stdcall; function RasGetConnectStatusA( Para1:THRASCONN;Para2:LPRASCONNSTATUSA ):DWORD; stdcall; function RasGetConnectStatus ( Para1:THRASCONN;Para2:LPRASCONNSTATUS ):DWORD; stdcall; function RasGetErrorStringW( Para1:UINT;Para2:LPWSTR;Para3:DWORD ):DWORD; stdcall; function RasGetErrorStringA( Para1:UINT;Para2:LPSTR ;Para3:DWORD ):DWORD; stdcall; function RasGetErrorString ( Para1:UINT;Para2:LPSTR ;Para3:DWORD ):DWORD; stdcall; function RasHangUpA( Para1:THRASCONN ):DWORD; stdcall; function RasHangUpW( Para1:THRASCONN ):DWORD; stdcall; function RasHangUp ( Para1:THRASCONN ):DWORD; stdcall; function RasGetProjectionInfoW( Para1:THRASCONN;Para2:TRASPROJECTION;Para3:Pointer;Para4:LPDWORD ):DWORD; stdcall; function RasGetProjectionInfoA( Para1:THRASCONN;Para2:TRASPROJECTION;Para3:Pointer;Para4:LPDWORD ):DWORD; stdcall; function RasGetProjectionInfo ( Para1:THRASCONN;Para2:TRASPROJECTION;Para3:Pointer;Para4:LPDWORD ):DWORD; stdcall; function RasCreatePhonebookEntryW( Para1:HWND;Para2:LPWSTR ):DWORD; stdcall; function RasCreatePhonebookEntryA( Para1:HWND;Para2:LPSTR ):DWORD; stdcall; function RasCreatePhonebookEntry ( Para1:HWND;Para2:LPSTR ):DWORD; stdcall; function RasEditPhonebookEntryW( Para1:HWND;Para2:LPWSTR;Para3:LPWSTR ):DWORD; stdcall; function RasEditPhonebookEntryA( Para1:HWND;Para2:LPSTR ;Para3:LPSTR ):DWORD; stdcall; function RasEditPhonebookEntry ( Para1:HWND;Para2:LPSTR ;Para3:LPSTR ):DWORD; stdcall; function RasSetEntryDialParamsW( Para1:LPWSTR;Para2:LPRASDIALPARAMSW;Para3:BOOL ):DWORD; stdcall; function RasSetEntryDialParamsA( Para1:LPSTR; Para2:LPRASDIALPARAMSA;Para3:BOOL ):DWORD; stdcall; function RasSetEntryDialParams ( Para1:LPSTR; Para2:LPRASDIALPARAMS ;Para3:BOOL ):DWORD; stdcall; function RasGetEntryDialParamsW( Para1:LPWSTR;Para2:LPRASDIALPARAMSW;Para3:PBOOL ):DWORD; stdcall; function RasGetEntryDialParamsA( Para1:LPSTR ;Para2:LPRASDIALPARAMSA;Para3:PBOOL ):DWORD; stdcall; function RasGetEntryDialParams ( Para1:LPSTR ;Para2:LPRASDIALPARAMSW;Para3:PBOOL ):DWORD; stdcall; function RasEnumDevicesW(Para1: LPRASDEVINFOW; Para2: LPDWORD; Para3: LPDWORD): DWORD; stdcall; function RasEnumDevicesA(Para1: LPRASDEVINFOA; Para2: LPDWORD; Para3: LPDWORD): DWORD; stdcall; function RasEnumDevices (Para1: LPRASDEVINFOA; Para2: LPDWORD; Para3: LPDWORD): DWORD; stdcall; function RasGetCountryInfoW(Para1: LPRASCTRYINFOW; Para2: LPDWORD): DWORD; stdcall; function RasGetCountryInfoA(Para1: LPRASCTRYINFOA; Para2: LPDWORD): DWORD; stdcall; function RasGetCountryInfo (Para1: LPRASCTRYINFOA; Para2: LPDWORD): DWORD; stdcall; function RasGetEntryPropertiesW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: LPRASENTRYW; Para4: LPDWORD; Para5: PByte; Para6: LPDWORD): DWORD; stdcall; function RasGetEntryPropertiesA(Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASENTRYA; Para4: LPDWORD; Para5: PByte; Para6: LPDWORD): DWORD; stdcall; function RasGetEntryProperties (Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASENTRYA; Para4: LPDWORD; Para5: PByte; Para6: LPDWORD): DWORD; stdcall; function RasSetEntryPropertiesW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: LPRASENTRYW; Para4: DWORD; Para5: PByte; Para6: DWORD): DWORD; stdcall; function RasSetEntryPropertiesA(Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASENTRYA; Para4: DWORD; Para5: PByte; Para6: DWORD): DWORD; stdcall; function RasSetEntryProperties (Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASENTRYA; Para4: DWORD; Para5: PByte; Para6: DWORD): DWORD; stdcall; function RasRenameEntryW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: LPCWSTR): DWORD; stdcall; function RasRenameEntryA(Para1: LPCSTR; Para2: LPCSTR; Para3: LPCSTR): DWORD; stdcall; function RasRenameEntry (Para1: LPCSTR; Para2: LPCSTR; Para3: LPCSTR): DWORD; stdcall; function RasDeleteEntryW(Para1: LPCWSTR; Para2: LPCWSTR): DWORD; stdcall; function RasDeleteEntryA(Para1: LPCSTR; Para2: LPCSTR): DWORD; stdcall; function RasDeleteEntry (Para1: LPCSTR; Para2: LPCSTR): DWORD; stdcall; function RasValidateEntryNameW(Para1: LPCWSTR; Para2: LPCWSTR): DWORD; stdcall; function RasValidateEntryNameA(Para1: LPCSTR; Para2: LPCSTR): DWORD; stdcall; function RasValidateEntryName (Para1: LPCSTR; Para2: LPCSTR): DWORD; stdcall; {$ifdef WINVER401} function RasGetSubEntryHandleW(Para1: HRASCONN; Para2: DWORD; Para3: LPHRASCONN): DWORD; stdcall; function RasGetSubEntryHandleA(Para1: HRASCONN; Para2: DWORD; Para3: LPHRASCONN): DWORD; stdcall; function RasGetSubEntryHandle (Para1: HRASCONN; Para2: DWORD; Para3: LPHRASCONN): DWORD; stdcall; function RasGetCredentialsA(Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASCREDENTIALSA): DWORD; stdcall; function RasGetCredentialsW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: LPRASCREDENTIALSW): DWORD; stdcall; function RasGetCredentials (Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASCREDENTIALSA): DWORD; stdcall; function RasSetCredentialsA(Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASCREDENTIALSA; Para4: BOOL): DWORD; stdcall; function RasSetCredentialsW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: LPRASCREDENTIALSW; Para4: BOOL): DWORD; stdcall; function RasSetCredentials (Para1: LPCSTR; Para2: LPCSTR; Para3: LPRASCREDENTIALSA; Para4: BOOL): DWORD; stdcall; function RasConnectionNotificationA(Para1: HRASCONN; Para2: HANDLE; Para3: DWORD): DWORD; stdcall; function RasConnectionNotificationW(Para1: HRASCONN; Para2: HANDLE; Para3: DWORD): DWORD; stdcall; function RasConnectionNotification (Para1: HRASCONN; Para2: HANDLE; Para3: DWORD): DWORD; stdcall; function RasGetSubEntryPropertiesA(Para1: LPCSTR; Para2: LPCSTR; Para3: DWORD; Para4: LPRASSUBENTRYA; Para5: LPDWORD; Para6: PByte; Para7: LPDWORD): DWORD; stdcall; function RasGetSubEntryPropertiesW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: DWORD; Para4: LPRASSUBENTRYW; Para5: LPDWORD; Para6: PByte; Para7: LPDWORD): DWORD; stdcall; function RasGetSubEntryProperties (Para1: LPCSTR; Para2: LPCSTR; Para3: DWORD; Para4: LPRASSUBENTRYA; Para5: LPDWORD; Para6: PByte; Para7: LPDWORD): DWORD; stdcall; function RasSetSubEntryPropertiesA(Para1: LPCSTR; Para2: LPCSTR; Para3: DWORD; Para4: LPRASSUBENTRYA; Para5: DWORD; Para6: PByte; Para7: DWORD): DWORD; stdcall; function RasSetSubEntryPropertiesW(Para1: LPCWSTR; Para2: LPCWSTR; Para3: DWORD; Para4: LPRASSUBENTRYW; Para5: DWORD; Para6: PByte; Para7: DWORD): DWORD; stdcall; function RasSetSubEntryProperties (Para1: LPCSTR; Para2: LPCSTR; Para3: DWORD; Para4: LPRASSUBENTRYA; Para5: DWORD; Para6: PByte; Para7: DWORD): DWORD; stdcall; function RasGetAutodialAddressA(Para1: LPCSTR; Para2: LPDWORD; Para3: LPRASAUTODIALENTRYA; Para4: LPDWORD; Para5: LPDWORD): DWORD; stdcall; function RasGetAutodialAddressW(Para1: LPCWSTR; Para2: LPDWORD; Para3: LPRASAUTODIALENTRYW; Para4: LPDWORD; Para5: LPDWORD): DWORD; stdcall; function RasGetAutodialAddress (Para1: LPCSTR; Para2: LPDWORD; Para3: LPRASAUTODIALENTRYA; Para4: LPDWORD; Para5: LPDWORD): DWORD; stdcall; function RasSetAutodialAddressA(Para1: LPCSTR; Para2: DWORD; Para3: LPRASAUTODIALENTRYA; Para4: DWORD; Para5: DWORD): DWORD; stdcall; function RasSetAutodialAddressW(Para1: LPCWSTR; Para2: DWORD; Para3: LPRASAUTODIALENTRYW; Para4: DWORD; Para5: DWORD): DWORD; stdcall; function RasSetAutodialAddress (Para1: LPCSTR; Para2: DWORD; Para3: LPRASAUTODIALENTRYA; Para4: DWORD; Para5: DWORD): DWORD; stdcall; function RasEnumAutodialAddressesA(var Para1: LPSTR; Para2: LPDWORD; Para3: LPDWORD): DWORD; stdcall; function RasEnumAutodialAddressesW(var Para1: LPWSTR; Para2: LPDWORD; Para3: LPDWORD): DWORD; stdcall; function RasEnumAutodialAddresses (var Para1: LPSTR; Para2: LPDWORD; Para3: LPDWORD): DWORD; stdcall; function RasGetAutodialEnableA(Para1: DWORD; Para2: PBOOL): DWORD; stdcall; function RasGetAutodialEnableW(Para1: DWORD; Para2: PBOOL): DWORD; stdcall; function RasGetAutodialEnable (Para1: DWORD; Para2: PBOOL): DWORD; stdcall; function RasSetAutodialEnableA(Para1: DWORD; Para2: BOOL): DWORD; stdcall; function RasSetAutodialEnableW(Para1: DWORD; Para2: BOOL): DWORD; stdcall; function RasSetAutodialEnable (Para1: DWORD; Para2: BOOL): DWORD; stdcall; function RasGetAutodialParamA(Para1: DWORD; Para2: Pointer; Para3: LPDWORD): DWORD; stdcall; function RasGetAutodialParamW(Para1: DWORD; Para2: Pointer; Para3: LPDWORD): DWORD; stdcall; function RasGetAutodialParam (Para1: DWORD; Para2: Pointer; Para3: LPDWORD): DWORD; stdcall; function RasSetAutodialParamA(Para1: DWORD; Para2: Pointer; Para3: DWORD): DWORD; stdcall; function RasSetAutodialParamW(Para1: DWORD; Para2: Pointer; Para3: DWORD): DWORD; stdcall; function RasSetAutodialParam (Para1: DWORD; Para2: Pointer; Para3: DWORD): DWORD; stdcall; {$ENDIF} {$ifdef WINVER500} function RasInvokeEapUI(Para1: HRASCONN; Para2: DWORD; Para3: LPRASDIALEXTENSIONS; Para4: HWND): DWORD; stdcall; {$ENDIF} implementation const rasapi32 = 'rasapi32.dll'; function RasDialW; external rasapi32 name 'RasDialW'; function RasDialA; external rasapi32 name 'RasDialA'; function RasDial; external rasapi32 name 'RasDialA'; function RasEnumConnectionsW; external rasapi32 name 'RasEnumConnectionsW'; function RasEnumConnectionsA; external rasapi32 name 'RasEnumConnectionsA'; function RasEnumConnections; external rasapi32 name 'RasEnumConnectionsA'; function RasEnumEntriesW; external rasapi32 name 'RasEnumEntriesW'; function RasEnumEntriesA; external rasapi32 name 'RasEnumEntriesA'; function RasEnumEntries; external rasapi32 name 'RasEnumEntriesA'; function RasGetConnectStatusW; external rasapi32 name 'RasGetConnectStatusW'; function RasGetConnectStatusA; external rasapi32 name 'RasGetConnectStatusA'; function RasGetConnectStatus; external rasapi32 name 'RasGetConnectStatusA'; function RasGetErrorStringW; external rasapi32 name 'RasGetErrorStringA'; function RasGetErrorStringA; external rasapi32 name 'RasGetErrorStringA'; function RasGetErrorString; external rasapi32 name 'RasGetErrorStringA'; function RasHangUpW; external rasapi32 name 'RasHangUpW'; function RasHangUpA; external rasapi32 name 'RasHangUpA'; function RasHangUp; external rasapi32 name 'RasHangUpA'; function RasGetProjectionInfoW; external rasapi32 name 'RasGetProjectionInfoW'; function RasGetProjectionInfoA; external rasapi32 name 'RasGetProjectionInfoA'; function RasGetProjectionInfo; external rasapi32 name 'RasGetProjectionInfoA'; function RasCreatePhonebookEntryW; external rasapi32 name 'RasCreatePhonebookEntryW'; function RasCreatePhonebookEntryA; external rasapi32 name 'RasCreatePhonebookEntryA'; function RasCreatePhonebookEntry; external rasapi32 name 'RasCreatePhonebookEntryA'; function RasEditPhonebookEntryW; external rasapi32 name 'RasEditPhonebookEntryW'; function RasEditPhonebookEntryA; external rasapi32 name 'RasEditPhonebookEntryA'; function RasEditPhonebookEntry; external rasapi32 name 'RasEditPhonebookEntryA'; function RasSetEntryDialParamsW; external rasapi32 name 'RasSetEntryDialParamsW'; function RasSetEntryDialParamsA; external rasapi32 name 'RasSetEntryDialParamsA'; function RasSetEntryDialParams; external rasapi32 name 'RasSetEntryDialParamsA'; function RasGetEntryDialParamsW; external rasapi32 name 'RasGetEntryDialParamsW'; function RasGetEntryDialParamsA; external rasapi32 name 'RasGetEntryDialParamsA'; function RasGetEntryDialParams; external rasapi32 name 'RasGetEntryDialParamsA'; function RasEnumDevicesW; external rasapi32 name 'RasEnumDevicesW'; function RasEnumDevicesA; external rasapi32 name 'RasEnumDevicesA'; function RasEnumDevices; external rasapi32 name 'RasEnumDevicesA'; function RasGetCountryInfoW; external rasapi32 name 'RasGetCountryInfoW'; function RasGetCountryInfoA; external rasapi32 name 'RasGetCountryInfoA'; function RasGetCountryInfo; external rasapi32 name 'RasGetCountryInfoA'; function RasGetEntryPropertiesW; external rasapi32 name 'RasGetEntryPropertiesW'; function RasGetEntryPropertiesA; external rasapi32 name 'RasGetEntryPropertiesA'; function RasGetEntryProperties ; external rasapi32 name 'RasGetEntryPropertiesA'; function RasSetEntryPropertiesW; external rasapi32 name 'RasSetEntryPropertiesW'; function RasSetEntryPropertiesA; external rasapi32 name 'RasSetEntryPropertiesA'; function RasSetEntryProperties; external rasapi32 name 'RasSetEntryPropertiesA'; function RasRenameEntryW; external rasapi32 name 'RasRenameEntryW'; function RasRenameEntryA; external rasapi32 name 'RasRenameEntryA'; function RasRenameEntry ; external rasapi32 name 'RasRenameEntryA'; function RasDeleteEntryW; external rasapi32 name 'RasDeleteEntryW'; function RasDeleteEntryA; external rasapi32 name 'RasDeleteEntryA'; function RasDeleteEntry ; external rasapi32 name 'RasDeleteEntryA'; function RasValidateEntryNameW; external rasapi32 name 'RasValidateEntryNameW'; function RasValidateEntryNameA; external rasapi32 name 'RasValidateEntryNameA'; function RasValidateEntryName ; external rasapi32 name 'RasValidateEntryNameA'; {$ifdef WINVER401} function RasGetSubEntryHandleW; external rasapi32 name 'RasGetSubEntryHandleW'; function RasGetSubEntryHandleA; external rasapi32 name 'RasGetSubEntryHandleA'; function RasGetSubEntryHandle ; external rasapi32 name 'RasGetSubEntryHandleA'; function RasGetCredentialsA; external rasapi32 name 'RasGetCredentialsA'; function RasGetCredentialsW; external rasapi32 name 'RasGetCredentialsW'; function RasGetCredentials ; external rasapi32 name 'RasGetCredentialsA'; function RasSetCredentialsA; external rasapi32 name 'RasSetCredentialsA'; function RasSetCredentialsW; external rasapi32 name 'RasSetCredentialsW'; function RasSetCredentials; external rasapi32 name 'RasSetCredentialsA'; function RasConnectionNotificationA; external rasapi32 name 'RasConnectionNotificationA'; function RasConnectionNotificationW; external rasapi32 name 'RasConnectionNotificationW'; function RasConnectionNotification ; external rasapi32 name 'RasConnectionNotificationA'; function RasGetSubEntryPropertiesA; external rasapi32 name 'RasGetSubEntryPropertiesA'; function RasGetSubEntryPropertiesW; external rasapi32 name 'RasGetSubEntryPropertiesW'; function RasGetSubEntryProperties ; external rasapi32 name 'RasGetSubEntryPropertiesA'; function RasSetSubEntryPropertiesA; external rasapi32 name 'RasSetSubEntryPropertiesA'; function RasSetSubEntryPropertiesW; external rasapi32 name 'RasSetSubEntryPropertiesW'; function RasSetSubEntryProperties; external rasapi32 name 'RasSetSubEntryPropertiesA'; function RasGetAutodialAddressA; external rasapi32 name 'RasGetAutodialAddressA'; function RasGetAutodialAddressW; external rasapi32 name 'RasGetAutodialAddressW'; function RasGetAutodialAddress ; external rasapi32 name 'RasGetAutodialAddressA'; function RasSetAutodialAddressA; external rasapi32 name 'RasSetAutodialAddressA'; function RasSetAutodialAddressW; external rasapi32 name 'RasSetAutodialAddressW'; function RasSetAutodialAddress; external rasapi32 name 'RasSetAutodialAddressA'; function RasEnumAutodialAddressesA; external rasapi32 name 'RasEnumAutodialAddressesA'; function RasEnumAutodialAddressesW; external rasapi32 name 'RasEnumAutodialAddressesW'; function RasEnumAutodialAddresses ; external rasapi32 name 'RasEnumAutodialAddressesA'; function RasGetAutodialEnableA; external rasapi32 name 'RasGetAutodialEnableA'; function RasGetAutodialEnableW; external rasapi32 name 'RasGetAutodialEnableW'; function RasGetAutodialEnable ; external rasapi32 name 'RasGetAutodialEnableA'; function RasSetAutodialEnableA; external rasapi32 name 'RasSetAutodialEnableA'; function RasSetAutodialEnableW; external rasapi32 name 'RasSetAutodialEnableW'; function RasSetAutodialEnable ; external rasapi32 name 'RasSetAutodialEnableA'; function RasGetAutodialParamA; external rasapi32 name 'RasGetAutodialParamA'; function RasGetAutodialParamW; external rasapi32 name 'RasGetAutodialParamW'; function RasGetAutodialParam ; external rasapi32 name 'RasGetAutodialParamA'; function RasSetAutodialParamA; external rasapi32 name 'RasSetAutodialParamA'; function RasSetAutodialParamW; external rasapi32 name 'RasSetAutodialParamW'; function RasSetAutodialParam ; external rasapi32 name 'RasSetAutodialParamA'; {$ENDIF} {$ifdef WINVER500} function RasInvokeEapUI; external rasapi32 name ' RasInvokeEapUI'; {$endif} end.