[Home]
[Edit this page]
[Recent Changes]
[Special Pages]
[Help]
DialupImport
[Edit this page] [Page history] [What links here] [Discuss this topic] [Printer Friendly]
DialupImport
unit URAS;
interface
uses Windows, SysUtils;
const
// RAS field length constants
RAS_MaxEntryName = 256;
RAS_MaxDeviceName = 128;
RAS_MaxDeviceType = 16;
RAS_MaxParamKey = 32;
RAS_MaxParamValue = 128;
RAS_MaxPhoneNumber = 128;
RAS_MaxCallbackNumber = 128;
UNLEN = 256; // Maximum user name length
PWLEN = 256; // Maximum password length
DNLEN = 15; // Maximum domain name length
RAS_MaxIpAddress = 15;
ERROR_BUFFER_TOO_SMALL = 603;
WM_RASDIALEVENT = $CCCD;
// RAS dwNotifierType constant
RAS_NOTIFY_HWND = $FFFFFFFF;
RAS_NOTIFY_FUNC1 = $0;
// RAS Connection State
RASCS_PAUSED = $1000;
RASCS_DONE = $2000;
RASCS_OpenPort = 0;
RASCS_PortOpened = 1;
RASCS_ConnectDevice = 2;
RASCS_DeviceConnected = 3;
RASCS_AllDevicesConnnected = 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;
RASCS_CallbackComplete = 20;
RASCS_LogonNetwork = 21;
RASCS_Interactive = RASCS_PAUSED;
RASCS_RetryAuthentication = RASCS_PAUSED + 1;
RASCS_CallbackSetByCaller = RASCS_PAUSED + 2;
RASCS_PasswordExpired = RASCS_PAUSED + 3;
RASCS_CONNECTED = RASCS_DONE;
RASCS_DISCONNECTED = RASCS_DONE + 1;
// RasProjection type
RASP_PPPIP = $8021;
type
TEntryName = array[0..RAS_MaxEntryName] of char;
TRASErrorString = array[0..255] of char;
PRasEntryName = ^TRasEntryName;
TRasEntryName = record
dwSize: DWORD;
szEntryName: array[0..RAS_MaxEntryName] of char;
end;
PRasDialParams = ^TRasDialParams;
TRasDialParams = record
dwSize: DWORD;
szEntryName: array[0..RAS_MaxEntryName] of char;
szPhoneNumber: array[0.. RAS_MaxPhoneNumber] of char;
szCallbackNumber: array[0..RAS_MaxCallbackNumber] of char;
szUserName: array[0..UNLEN] of char;
szPassword: array[0..PWLEN] of char;
szDomain: array[0..DNLEN] of char;
end;
PRasConn = ^TRasConn;
TRasConn = record
dwSize: DWORD;
hRasConn: THandle;
szEntryName: array[0..RAS_MaxEntryName] of char;
szDeviceType: array[0..RAS_MaxDeviceType] of char;
szDeviceName: array[0..RAS_MaxDeviceName] of char;
end;
PRasConnStatus = ^TRasConnStatus;
TRasConnStatus = record
dwSize: DWORD;
RasConnState: DWORD;
dwError: DWORD;
szDeviceType: array[0..RAS_MaxDeviceType] of char;
szDeviceName: array[0..RAS_MaxDeviceName] of char;
end;
TRasDialExtensions = record
dwSize: DWORD;
dwfOptions: DWORD;
hwndParent: THandle;
dwReserved: DWORD;
end;
PRasDialExtensions = ^TRasDialExtensions;
TRasPPPIP = record
dwsize: DWORD;
dwerror: DWORD;
szlpAddress: array[0..RAS_MaxIpAddress] of char;
end;
TRasDialFunc1 = procedure (
hrasconn: DWord; // handle to RAS connection
unMsg : Cardinal; // type of event that has occurred
rascs : Integer; // connection state about to be entered
dwError : DWORD; // error that may have occurred
dwExtendedError : DWORD); // extended error information for some errors);
TRASDial = function (lpRasDialExtensions: PRasDialExtensions; lpszPhonebookPath: PAnsiChar;
var lpRasDialParams: TRasDialParams; dwNotifierType: DWORD; notifier: Pointer;
var lphRasConn: THandle): DWORD; stdcall;
TRASEnumEntries = function (lpszresrved: Pointer; lpszPhonebookPath: Pointer;
lprasentryname: Pointer; var lpcb: DWORD; var lpcEntries: DWORD): DWord; stdcall;
TRASEnumConnections = function (lpRasConn: Pointer; var lpcb: DWORD;
var lpcConnections: DWORD): DWORD; stdcall;
TRASHangUp=function (hRasConn: THandle): DWORD; stdcall;
TRASGetConnectStatus=function (hRasConn: THandle;
var lpRasConnStatus: TRasConnStatus): DWORD; stdcall;
TRASGetErrorString=function (uErrorValue: UINT; var lpszErrorString: TRASErrorString;
cBufSize: DWORD): DWORD; stdcall;
TRASGetEntryDialParams=function (lpszPhonebook : Pointer;
var lpRasDialParams: TRasDialParams; var lpfPassword : LongBool): DWORD; stdcall;
TRASGetProjectionInfo=function (hRasConn: THandle; RasProjection: DWORD;
var lpRasPPPIP: TRasPPPIP; var lpcb: DWORD): DWORD; stdcall;
var
RASDial : TRASDial = nil;
RASEnumEntries : TRASEnumEntries = nil;
RASEnumConnections : TRASEnumConnections = nil;
RASHangUp : TRASHangUp = nil;
RASGetErrorString : TRASGetErrorString = nil;
RASGetEntryDialParams : TRASGetEntryDialParams = nil;
RASGetProjectionInfo : TRASGetProjectionInfo = nil;
RASGetConnectStatus : TRASGetConnectStatus = nil;
procedure LoadRasModule;
procedure UnLoadRasModule;
implementation
var
ModuleRef : Integer;
Module : DWord = 0;
procedure LoadRasModule;
begin
if ModuleRef = 0 then
begin
Module := LoadLibrary('RASAPI32.DLL');
Win32Check(LongBool(Module));
RASDial := GetProcAddress(Module, 'RasDialA');
RASEnumEntries := GetProcAddress(Module, 'RasEnumEntriesA');
RASEnumConnections := GetProcAddress(Module, 'RasEnumConnectionsA');
RASHangUp := GetProcAddress(Module, 'RasHangUpA');
RASGetErrorString := GetProcAddress(Module, 'RasGetErrorStringA');
RASGetEntryDialParams := GetProcAddress(Module, 'RasGetEntryDialParamsA');
RASGetProjectionInfo := GetProcAddress(Module, 'RasGetProjectionInfoA');
RASGetConnectStatus := GetProcAddress(Module, 'RasGetConnectStatusA');
if not (Assigned(RASDial)
and Assigned(RASEnumEntries)
and Assigned(RASEnumConnections)
and Assigned(RASHangUp)
and Assigned(RASGetErrorString)
and Assigned(RASGetEntryDialParams)
and Assigned(RASGetProjectionInfo)
and Assigned(RASGetConnectStatus)) then
RaiseLastWin32Error;
end;
Inc(ModuleRef);
end;
procedure UnLoadRasModule;
begin
Dec(ModuleRef);
if ModuleRef = 0 then
begin
FreeLibrary(Module);
RASDial := nil;
RASEnumEntries := nil;
RASEnumConnections := nil;
RASHangUp := nil;
RASGetErrorString := nil;
RASGetEntryDialParams := nil;
RASGetProjectionInfo := nil;
RASGetConnectStatus := nil;
end;
end;
end.
[Edit this page] [Page history] [What links here] [Discuss this topic] [Printer Friendly]
