Bläddra i källkod

+ ras and raserror wince api units by Vasil Maximov.

git-svn-id: trunk@11906 -
yury 17 år sedan
förälder
incheckning
8850d715af

+ 2 - 0
.gitattributes

@@ -4627,6 +4627,8 @@ packages/winceunits/src/pimstore.pp svneol=native#text/plain
 packages/winceunits/src/pm.pp svneol=native#text/plain
 packages/winceunits/src/power.pp svneol=native#text/plain
 packages/winceunits/src/rapi.pp svneol=native#text/plain
+packages/winceunits/src/ras.pp svneol=native#text/plain
+packages/winceunits/src/raserror.pp svneol=native#text/plain
 packages/winceunits/src/ril.pp svneol=native#text/plain
 packages/winceunits/src/service.pp svneol=native#text/plain
 packages/winceunits/src/shellapi.pp svneol=native#text/plain

+ 3 - 3
packages/winceunits/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/10/16]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/10/17]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
@@ -275,10 +275,10 @@ ifeq ($(FULL_TARGET),arm-wince)
 override TARGET_UNITS+=comobj buildwinceunits
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone onnmgr devload devmgmt mmreg mmsystem msacm wininet activex ole2 comconst
+override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone onnmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror activex ole2 comconst
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone onnmgr devload devmgmt mmreg mmsystem msacm wininet activex ole2 comconst
+override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled phone onnmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror activex ole2 comconst
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_RSTS+=comconst

+ 1 - 1
packages/winceunits/Makefile.fpc

@@ -11,7 +11,7 @@ units_wince=comobj buildwinceunits
 implicitunits_wince=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi \
                     gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl \
                     sipapi cpl bt_api bt_sdp bthapi bthutil pimstore ril sms ws2bth keybd nled \
-                    phone onnmgr devload devmgmt mmreg mmsystem msacm wininet \
+                    phone onnmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror \
                     activex ole2 comconst
 
 units_win32=rapi cesync

+ 1 - 1
packages/winceunits/src/buildwinceunits.pp

@@ -25,7 +25,7 @@ uses
   gpsapi,todaycmn,windbase,cesync,gx,winioctl,msgqueue,pm,service,htmlctrl,
   sipapi, cpl, bt_api, bt_sdp, bthapi, bthutil, pimstore, ril, sms, ws2bth,
   keybd, nled, phone, connmgr, devload, devmgmt, mmreg, mmsystem, msacm,
-  wininet;
+  wininet, ras, raserror;
 
 implementation
 

+ 901 - 0
packages/winceunits/src/ras.pp

@@ -0,0 +1,901 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2008 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ ********************************************************************** }
+//
+// Module Name:
+//
+//   ras.h
+//
+// Abstract:
+//
+//   Remote Access Service structures and defines
+//
+
+//
+//  Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit RAS;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, Tapi;
+
+{$PACKRECORDS 4} // #include "pshpack4.h"
+
+const
+      RAS_MaxEntryName      = 20;
+      RAS_MaxDeviceName     = 128;
+      RAS_MaxDeviceType     = 16;
+      RAS_MaxParamKey       = 32;
+      RAS_MaxParamValue     = 128;
+      RAS_MaxPhoneNumber    = 128;
+      RAS_MaxCallbackNumber = 48;
+      RAS_MaxIpAddress      = 15;
+      RAS_MaxIpxAddress     = 21;
+
+// Ras extensions
+
+     	RAS_MaxAreaCode			= 10;
+     	RAS_MaxPadType			 = 32;
+     	RAS_MaxX25Address	= 200;
+     	RAS_MaxFacilities	= 200;
+     	RAS_MaxUserData			= 200;
+
+// RAS IP Address
+
+type
+     tagRasIpAddr = record
+       a:byte;
+       b:byte;
+       c:byte;
+       d:byte;
+     end;
+     RASIPADDR = tagRasIpAddr;
+
+// RAS Entry Definition
+type
+      tagRASENTRYW = RECORD
+	       dwSize:DWORD;
+	       dwfOptions:DWORD;
+	       dwCountryID:DWORD;
+	       dwCountryCode:DWORD;
+			     szAreaCode:array[0..RAS_MaxAreaCode] of WCHAR;
+	       szLocalPhoneNumber:array[0..RAS_MaxPhoneNumber] of WCHAR;
+        dwAlternateOffset:DWORD;
+	       ipaddr:RASIPADDR;
+	       ipaddrDns:RASIPADDR;
+	       ipaddrDnsAlt:RASIPADDR;
+	       ipaddrWins:RASIPADDR;
+	       ipaddrWinsAlt:RASIPADDR;
+	       dwFrameSize:DWORD;
+	       dwfNetProtocols:DWORD;
+	       dwFramingProtocol:DWORD;
+        szScript:array[0..MAX_PATH-1] of WCHAR;
+	       szAutodialDll:array[0..MAX_PATH-1] of WCHAR;
+	       szAutodialFunc:array[0..MAX_PATH-1] of WCHAR;
+			     szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+	       szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+	       szX25PadType:array[0..RAS_MaxPadType] of WCHAR;
+	       szX25Address:array[0..RAS_MaxX25Address] of WCHAR;
+	       szX25Facilities:array[0..RAS_MaxFacilities] of WCHAR;
+	       szX25UserData:array[0..RAS_MaxUserData] of WCHAR;
+	       dwChannels:DWORD;
+	       dwReserved1:DWORD;
+	       dwReserved2:DWORD;
+
+	       dwCustomAuthKey:DWORD; // EAP extension type to use
+      end;
+      RASENTRYW = tagRASENTRYW;
+
+      RASENTRY    = RASENTRYW;
+      LPRASENTRYW = ^RASENTRYW;
+      LPRASENTRY  = ^RASENTRY;
+
+// Describes Country Information
+
+      RASCTRYINFO = record
+	       dwSize:DWORD;
+	       dwCountryID:DWORD;
+	       dwNextCountryID:DWORD;
+	       dwCountryCode:DWORD;
+	       dwCountryNameOffset:DWORD;
+      end;
+
+      LPRASCTRYINFO = ^RASCTRYINFO;
+      RASCTRYINFOW  = RASCTRYINFO;
+      LPRASCTRYINFOW = ^RASCTRYINFOW;
+
+// Describes RAS Device Information
+      tagRASDEVINFOW = record
+        dwSize:DWORD;
+	       szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+	       szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+      end;
+      RASDEVINFOW = tagRASDEVINFOW;
+      RASDEVINFO		= RASDEVINFOW;
+      LPRASDEVINFOW	= ^RASDEVINFOW;
+      LPRASDEVINFO	= ^RASDEVINFO;
+
+// 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;
+      RASEO_SecureLocalFiles        = $00010000;
+      RASEO_DialAsLocalCall         = $00020000;
+
+      RASEO_ProhibitPAP             = $00040000;
+      RASEO_ProhibitCHAP            = $00080000;
+      RASEO_ProhibitMsCHAP          = $00100000;
+      RASEO_ProhibitMsCHAP2         = $00200000;
+      RASEO_ProhibitEAP             = $00400000;
+      RASEO_PreviewUserPw           = $01000000;
+      RASEO_NoUserPwRetryDialog     = $02000000;
+      RASEO_CustomScript            = $80000000;
+
+
+// RASENTRY 'dwfNetProtocols' bit flags. (session negotiated protocols)
+      RASNP_NetBEUI       = $00000001;  // Negotiate NetBEUI
+      RASNP_Ipx           = $00000002;  // Negotiate IPX
+      RASNP_Ip            = $00000004;  // Negotiate TCP/IP
+
+
+// RASENTRY 'dwFramingProtocols' (framing protocols used by the server)
+      RASFP_Ppp           = $00000001;  // Point-to-Point Protocol (PPP)
+      RASFP_Slip          = $00000002;  // Serial Line Internet Protocol (SLIP)
+      RASFP_Ras           = $00000004;  // Microsoft proprietary protocol
+
+
+// RASENTRY 'szDeviceType' strings
+      RASDT_Direct        = 'direct';    // Direct Connect (WINCE Extension)
+      RASDT_Modem         = 'modem';     // Modem
+      RASDT_Isdn          = 'isdn';      // ISDN
+      RASDT_X25           = 'x25';       // X.25
+      RASDT_Vpn           = 'vpn';		  // PPTP
+      RASDT_PPPoE         = 'PPPoE';     // PPPoE
+
+type
+    HRASCONN = HANDLE;
+    LPHRASCONN = ^HRASCONN;
+
+// Identifies an active RAS connection.  (See RasEnumConnections)
+
+    tagRASCONNW = record
+      dwSize:DWORD;
+      hrasconn:HRASCONN;
+      szEntryName:array[0..RAS_MaxEntryName] of WCHAR;
+    end;
+    RASCONNW = tagRASCONNW;
+    RASCONN = RASCONNW;
+
+    LPRASCONNW = ^RASCONNW;
+    LPRASCONN  = ^RASCONN;
+
+
+// Enumerates intermediate states to a connection.  (See RasDial)
+const
+      RASCS_PAUSED = $1000;
+      RASCS_DONE   = $2000;
+
+type
+      tagRASCONNSTATE = (RASCS_OpenPort := 0,
+                         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,
+
+                         RASCS_Interactive 			= RASCS_PAUSED,
+                         RASCS_RetryAuthentication,
+                         RASCS_CallbackSetByCaller,
+                         RASCS_PasswordExpired,
+
+                         RASCS_Connected 			= RASCS_DONE,
+                         RASCS_Disconnected
+                        );
+      RASCONNSTATE = tagRASCONNSTATE;
+      LPRASCONNSTATE = ^tagRASCONNSTATE;
+
+
+// Describes the status of a RAS connection.  (See RasConnectionStatus)
+
+      tagRASCONNSTATUSW = record
+        dwSize:DWORD;
+        rasconnstate:RASCONNSTATE;
+        dwError:DWORD;
+        szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+        szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+      end;
+      RASCONNSTATUSW = tagRASCONNSTATUSW;
+      RASCONNSTATUS = RASCONNSTATUSW;
+      LPRASCONNSTATUSW = ^RASCONNSTATUSW;
+      LPRASCONNSTATUS  = ^RASCONNSTATUS;
+
+// Describes connection establishment parameters.  (See RasDial)
+
+      tagRASDIALPARAMSW = record
+        dwSize:DWORD;
+        szEntryName:array[0..RAS_MaxEntryName] of WCHAR;
+        szPhoneNumber:array[0..RAS_MaxPhoneNumber] of WCHAR;
+        szCallbackNumber:array[0..RAS_MaxCallbackNumber] of WCHAR;
+        szUserName:array[0..UNLEN] of WCHAR;
+        szPassword:array[0..PWLEN] of WCHAR;
+        szDomain:array[0..DNLEN] of WCHAR;
+      end;
+      RASDIALPARAMSW = tagRASDIALPARAMSW;
+      RASDIALPARAMS = RASDIALPARAMSW;
+
+      LPRASDIALPARAMSW = ^RASDIALPARAMSW;
+      LPRASDIALPARAMS  = ^RASDIALPARAMS;
+
+// Describes extended connection establishment options.  (See RasDial)
+
+      tagRASDIALEXTENSIONS = record
+        dwSize:DWORD;
+        dwfOptions:DWORD;
+        hwndParent:HWND;
+        reserved:DWORD;
+      end;
+      RASDIALEXTENSIONS = tagRASDIALEXTENSIONS;
+      LPRASDIALEXTENSIONS = ^RASDIALEXTENSIONS;
+
+// 'dwfOptions' bit flags.
+const
+      RDEOPT_UsePrefixSuffix           = $00000001;
+      RDEOPT_PausedStates              = $00000002;
+      RDEOPT_IgnoreModemSpeaker        = $00000004;
+      RDEOPT_SetModemSpeaker           = $00000008;
+      RDEOPT_IgnoreSoftwareCompression = $00000010;
+      RDEOPT_SetSoftwareCompression    = $00000020;
+
+
+// Describes an enumerated RAS phone book entry name.  (See RasEntryEnum)
+type
+     tagRASENTRYNAMEW = record
+       dwSize:DWORD;
+       szEntryName:array[0..RAS_MaxEntryName] of WCHAR;
+     end;
+     RASENTRYNAMEW = tagRASENTRYNAMEW;
+     RASENTRYNAME = RASENTRYNAMEW;
+     LPRASENTRYNAMEW = ^RASENTRYNAMEW;
+     LPRASENTRYNAME  = ^RASENTRYNAME;
+
+//
+// Custom Script Dll Support
+//
+type
+     tagRASCOMMSETTINGS = record
+       dwSize:DWORD;
+       bParity:byte;
+       bStop:byte;
+       wAlign:word;
+     end;
+     RASCOMMSETTINGS = tagRASCOMMSETTINGS;
+     LPRASCOMMSETTINGS = ^tagRASCOMMSETTINGS;
+
+type
+      PFNRASSETCOMMSETTINGS = function(hPort:HANDLE;
+                                       pRasCommSettings:LPRASCOMMSETTINGS;
+                                       pvReserved:PVOID):DWORD; cdecl;
+
+type
+     RASCUSTOMSCRIPTEXTENSIONS = record
+       dwSize:DWORD;
+       pfRasSetCommSettings:PFNRASSETCOMMSETTINGS;
+     end;
+
+type
+     PFNRASGETBUFFER = function(ppBuffer:LPBYTE;
+                                pdwSize:LPDWORD):DWORD; cdecl;
+
+     PFNRASFREEBUFFER = function (pBuffer:LPBYTE):DWORD; cdecl;
+
+     PFNRASSENDBUFFER = function(hPort:HANDLE;
+                                 pBuffer:LPBYTE;
+                                 dwSize:DWORD):DWORD; cdecl;
+
+     PFNRASRECEIVEBUFFER = function(hPort:HANDLE;
+                                    pBuffer:LPBYTE;
+                                    pdwSize:LPDWORD;
+                                    dwTimeoutMilliseconds:DWORD;
+                                    hEvent:HANDLE):DWORD; cdecl;
+
+    PFNRASRETRIEVEBUFFER = function(hPort:HANDLE;
+                                    pBuffer:LPBYTE;
+                                    pdwSize:LPDWORD):DWORD; cdecl;
+
+// Protocol code to projection data structure mapping.
+
+type
+     tagRASPROJECTION = (RASP_PppIp := $8021,
+                         RASP_PppIpx := $802B,
+                         RASP_PppNbf := $803F,
+                         RASP_PppIpV6 := $8057,
+                         RASP_PppLcp := $C021,
+                         RASP_Amb := $10000,
+                         RASP_Slip := $20000);
+     RASPROJECTION = tagRASPROJECTION;
+     LPRASPROJECTION = ^RASPROJECTION;
+
+{*
+** 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
+     tagRASAMBA = record
+       dwSize:DWORD;
+       dwError:DWORD;
+       szNetBiosError:array[0..NETBIOS_NAME_LEN] of TCHAR;
+       bLana:byte;
+     end;
+     LPRASAMB = ^RASAMB;
+
+// Describes the result of a PPP NBF (NetBEUI) projection.
+
+type
+     tagRASPPPNBFW = record
+       dwSize:DWORD;
+       dwError:DWORD;
+       dwNetBiosError:DWORD;
+       szNetBiosError:array[0..NETBIOS_NAME_LEN] of TCHAR;
+       szWorkstationName:array[0..NETBIOS_NAME_LEN] of TCHAR;
+       bLana:byte;
+     end;
+
+     RASPPPNBF = tagRASPPPNBFW;
+     LPRASPPPNBF = ^tagRASPPPNBFW;
+
+
+// Describes the results of a PPP IPX (Internetwork Packet Exchange)
+// projection.
+
+type
+     tagRASIPX = record
+       dwSize:DWORD;
+       dwError:DWORD;
+       szIpxAddress:array[0..RAS_MaxIpxAddress] of TCHAR;
+     end;
+     RASPPPIPX = tagRASIPX;
+     LPRASPPPIPX = ^tagRASIPX;
+
+// Describes the results of an PPP IP (Internet) projection.
+
+     tagRASPPPIPW = record
+       dwSize:DWORD;
+       dwError:DWORD;
+       szIpAddress:array[0..RAS_MaxIpAddress] of WCHAR;
+       szServerIpAddress:array[0..RAS_MaxIpAddress] of WCHAR;
+	      dwOptions:DWORD;
+	      dwServerOptions:DWORD;
+     end;
+     RASPPPIPW = tagRASPPPIPW;
+     RASPPPIP = RASPPPIPW;
+
+     LPRASPPPIPW = ^RASPPPIPW;
+     LPRASPPPIP  = ^RASPPPIP;
+
+//
+// RASPPPIP 'dwOptions' and 'dwServerOptions' flags.
+//
+const
+      RASIPO_VJ       = $00000001;		// Indicates that VJ compression is on
+
+// Describes the results of an PPP IPV6 (Internet) projection.
+type
+     tagRASPPPIPV6 = record
+       dwSize:DWORD;
+       dwError:DWORD;
+       LocalInterfaceIdentifier:array[0..7]of byte;
+       PeerInterfaceIdentifier:array[0..7] of byte;
+	      LocalCompressionProtocol:array[0..1] of byte;
+	      PeerCompressionProtocol:array[0..1] of byte;
+     end;
+     RASPPPIPV6 = tagRASPPPIPV6;
+     LPRASPPPIPV6 = ^RASPPPIPV6;
+
+// Describes results of a GET_WINS/DNS I/O control. If
+// the requested address has been negotiated the boolean
+// valid is TRUE and the IpAddress contains the address of
+// the requested server.  If Valid is false IpAddress is
+// zero.
+
+     tagRASPPPAddr = record
+	      dwSize:DWORD;
+	      dwError:DWORD;
+	      Valid:BOOL;
+	      IpAddress:DWORD;
+     end;
+     RASPPPADDR = tagRASPPPAddr;
+
+// Describes the results of a SLIP (Serial Line IP) projection.
+type
+     tagRASSLIPW = record
+       dwSize:DWORD;
+       dwError:DWORD;
+       szIpAddress:array[0..RAS_MaxIpAddress] of WCHAR;
+     end;
+     RASSLIPW = tagRASSLIPW;
+     RASSLIP = RASSLIPW;
+     LPRASSLIPW = ^RASSLIPW;
+     LPRASSLIP = ^RASSLIP;
+
+
+// 	RAS Control Structures
+//
+// 	Control Request Enumeration
+type
+     tagRasCntlEnum = (RASCNTL_SET_DEBUG,							// obsolete
+	                      RASCNTL_LOCK_STATUS,						// obsolete
+                       RASCNTL_PRINT_CS,							// obsolete
+                       RASCNTL_STATISTICS,							// Get statistics
+                       RASCNTL_ENUMDEV,							// Enum Devices
+                       RASCNTL_GETPROJINFO,						// RasGetProjectionInfoW
+                       RASCNTL_GETDISPPHONE,						// RasGetDispPhoneNumW
+                       RASCNTL_DEVCONFIGDIALOGEDIT,				// RasDevConfigDialogEditW
+                       RASCNTL_SERVER_GET_STATUS,					// Get status of PPP server and lines               NULL                   RASCNTL_SERVERSTATUS + dwNumLines * RASCNTL_SERVERLINE
+                       RASCNTL_SERVER_ENABLE,					    // Turn the PPP server on                           NULL                   NULL
+                       RASCNTL_SERVER_DISABLE,					    // Turn the PPP server off                          NULL                   NULL
+                       RASCNTL_SERVER_GET_PARAMETERS,				// Get global server parameters                     NULL                   RASCNTL_SERVERSTATUS
+                       RASCNTL_SERVER_SET_PARAMETERS,				// Set global server parameters                     RASCNTL_SERVERSTATUS   NULL
+                       RASCNTL_SERVER_LINE_ADD,					// Add a line to be managed by the PPP server       RASCNTL_SERVERLINE     NULL
+                       RASCNTL_SERVER_LINE_REMOVE,					// Remove a line being managed by the PPP server    RASCNTL_SERVERLINE     NULL
+                       RASCNTL_SERVER_LINE_ENABLE,				    // Enable management of a line                      RASCNTL_SERVERLINE     NULL
+                       RASCNTL_SERVER_LINE_DISABLE,			    // Disable management of a line                     RASCNTL_SERVERLINE     NULL
+                       RASCNTL_SERVER_LINE_GET_PARAMETERS,		    // Get line parameters                              RASCNTL_SERVERLINE     RASCNTL_SERVERLINE
+                       RASCNTL_SERVER_LINE_SET_PARAMETERS,		    // Set line parameters                              RASCNTL_SERVERLINE     NULL
+                       RASCNTL_SERVER_USER_SET_CREDENTIALS,		// Allow a username/password                        RASCNTL_SERVERUSERCREDENTIALS NULL
+                       RASCNTL_SERVER_USER_DELETE_CREDENTIALS,		// Remove a username                                RASCNTL_SERVERUSERCREDENTIALS NULL
+                       RASCNTL_EAP_GET_USER_DATA,					// Get a ras entry's EAP user data
+                       RASCNTL_EAP_SET_USER_DATA,					// Set a ras entry's EAP user data
+                       RASCNTL_EAP_GET_CONNECTION_DATA,			// Get a ras entry's EAP conn data
+                       RASCNTL_EAP_SET_CONNECTION_DATA,			// Set a ras entry's EAP conn data
+                       RASCNTL_ENABLE_LOGGING,					    // Load logging extension dll if present
+                       RASCNTL_DISABLE_LOGGING,					// Unload logging extension dll if loaded, stop logging
+                       RASCNTL_SERVER_LINE_GET_CONNECTION_INFO,    // Get state info on a server lines                 RASCNTL_SERVERLINE               RASCNTL_SERVERCONNECTION
+                       RASCNTL_SERVER_GET_IPV6_NET_PREFIX,         // Get IPV6 Network prefix pool                     NULL                             RASCNTL_SERVER_IPV6_NET_PREFIX
+                       RASCNTL_SERVER_SET_IPV6_NET_PREFIX,         // Set IPV6 Network prefix pool                     PRASCNTL_SERVER_IPV6_NET_PREFIX  NULL
+                       RASCNTL_LAYER_OPEN,                         // Open LCP/Auth/CCP/IPCP                           DWORD (Layer Id)                 NULL
+                       RASCNTL_LAYER_CLOSE,                        // Close LCP/Auth/CCP/IPCP                          DWORD (Layer Id)                 NULL
+                       RASCNTL_LAYER_RENEGOTIATE,                  // Renegotiate LCP/Auth/CCP/IPCP                    DWORD (Layer Id)                 NULL
+                       RASCNTL_LAYER_PARAMETER_GET,                // Get LCP/Auth/CCP/IPCP value                      RASCNTL_LAYER_PARAMETER          RASCNTL_LAYER_PARAMETER
+                       RASCNTL_LAYER_PARAMETER_SET                 // Set LCP/Auth/CCP/IPCP value                      RASCNTL_LAYER_PARAMETER          NULL
+                       // Add others here
+                      );
+     RasCntlEnum_t = tagRasCntlEnum;
+
+const
+      RASCNTL_LAYER_PARAMETER_TYPE_NONE	 = 0;
+      RASCNTL_LAYER_PARAMETER_TYPE_DWORD	= 1;
+      RASCNTL_LAYER_PARAMETER_TYPE_BYTES	= 2;
+
+type
+     _RASCNTL_LAYER_PARAMETER = record
+	      dwProtocolType:DWORD;
+	      dwParameterId:DWORD;
+	      dwValueType:DWORD;
+	      dwValueSize:DWORD;
+       case DWORD of
+         0: (dwValue:DWORD);       // for most (simple integer) values
+         1: (bytesValue:array[0..0] of byte); // array of bytes (size 1 is placeholder)
+     end;
+     RASCNTL_LAYER_PARAMETER = _RASCNTL_LAYER_PARAMETER;
+     PRASCNTL_LAYER_PARAMETER = ^_RASCNTL_LAYER_PARAMETER;
+
+type
+     tagRasCntlDevConfigDlgEdit = record
+	      szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+	      szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+	      hWndOwner:HWND;
+	      dwSize:DWORD;
+	      DataBuf:array[0..0] of byte;
+     end;
+     RASCNTL_DEVCFGDLGED = tagRasCntlDevConfigDlgEdit;
+     PRASCNTL_DEVCFGDLGED = ^tagRasCntlDevConfigDlgEdit;
+
+const
+      MAX_IF_NAME_LEN	= 256;
+
+//
+//	RASCNTL_SERVERSTATUS is...
+//
+//	..Returned by:
+//		RASCNTL_SERVER_GET_STATUS
+//		RASCNTL_SERVER_GET_PARAMETERS
+//  ..Passed to:
+//		RASCNTL_SERVER_SET_PARAMETERS
+//
+const
+      PPPSRV_FLAG_REQUIRE_DATA_ENCRYPTION			   = 1 shl 1;	// Require encryption on this connection.
+      PPPSRV_FLAG_ALLOW_UNAUTHENTICATED_ACCESS	= 1 shl 2;	// Do not require authentication on the connection
+      PPPSRV_FLAG_NO_VJ_HEADER_COMPRESSION		   = 1 shl 3;	// Prevent VJ TCP/IP header compression
+      PPPSRV_FLAG_NO_DATA_COMPRESSION				      = 1 shl 4;	// Prevent MS data compression
+      PPPSRV_FLAG_ADD_CLIENT_SUBNET				        = 1 shl 5;	// Add a subnet route for a client connection
+
+type
+     tagRasCntlServerStatus = record
+	      bEnable:BOOL;
+	      bmFlags:DWORD;
+	      bUseDhcpAddresses:BOOL;		// Obtain addresses from DHCP server rather than static pool
+	      dwStaticIpAddrStart:DWORD;	// If using static IP address pool, this is the first address
+	      dwStaticIpAddrCount:DWORD;	// Number of static IP addresses following IpAddrStart in pool
+	      bmAuthenticationMethods:DWORD;// Bitmask of authentication methods to be disallowed, see
+      // RASEO_ProhibitXxx in ras.h
+
+	      dwNumLines:DWORD;
+
+	      bUseAutoIpAddresses:BOOL;    // TRUE if IP addresses for clients should be generated from AutoIp pool
+	      dwAutoIpSubnet:DWORD;         // Defines AutoIP address pool
+	      dwAutoIpSubnetMask:DWORD;
+
+	      wszDhcpInterface:array[0..MAX_IF_NAME_LEN] of WCHAR;
+     end;
+     RASCNTL_SERVERSTATUS = tagRasCntlServerStatus;
+     PRASCNTL_SERVERSTATUS = ^tagRasCntlServerStatus;
+
+//
+//	Structure passed to the following IOCTLs
+//		 RASCNTL_SERVER_LINE_GET_PARAMETERS
+//		 RASCNTL_SERVER_LINE_SET_PARAMETERS
+//		 RASCNTL_SERVER_LINE_ENABLE
+//		 RASCNTL_SERVER_LINE_DISABLE
+//
+type
+     tagRasCntlServerLine = record
+		     rasDevInfo:RASDEVINFO;				// szDeviceType and szDeviceName of the line
+	      bEnable:BOOL;
+	      bmFlags:DWORD;
+	      DisconnectIdleSeconds:UINT;
+	      dwDevConfigSize:DWORD;
+	      DevConfig:array[0..0] of byte;			// Variable size (dwDevConfigSize bytes) array of device config info
+     end;
+     RASCNTL_SERVERLINE = tagRasCntlServerLine;
+     PRASCNTL_SERVERLINE = ^tagRasCntlServerLine;
+
+//
+//	Structure passed to the following IOCTLs
+//		RASCNTL_SERVER_USER_SET_CREDENTIALS			 Allow a username/password
+//		RASCNTL_SERVER_USER_DELETE_CREDENTIALS		 Remove a username
+//
+type
+     tagRasCntlServerUser = record
+	      tszUserName:array[0..UNLEN] of TCHAR;
+	      tszDomainName:array[0..DNLEN] of TCHAR;			// may be null
+	      password:array[0..PWLEN-1] of byte;
+			    cbPassword:DWORD;
+     end;
+     RASCNTL_SERVERUSERCREDENTIALS = tagRasCntlServerUser;
+     PRASCNTL_SERVERUSERCREDENTIALS = ^tagRasCntlServerUser;
+
+//
+//  Structure containing info describing an enabled line's connection status
+//
+//  Used with the IOCTLS:
+//	    RASCNTL_SERVER_LINE_GET_CONNECTION_INFO
+//
+type
+     tagRasCntlServerConnection = record
+       rasDevInfo:RASDEVINFO;		                 // szDeviceType and szDeviceName of the line
+       hrasconn:HRASCONN;                           // handle that can be used in RasGetLinkStatistics (NULL if line is not enabled)
+       dwServerIpAddress:DWORD;                  // IP Address for server line IP interface
+       dwClientIpAddress:DWORD;                  // IP Address that will be assigned to client connecting to this line
+       RasConnState:RASCONNSTATE;                       // RASCS_Disconnected, etc.
+       tszUserName:array[0..DNLEN+1+UNLEN] of TCHAR; // Name of user logged in to the port
+     end;
+     RASCNTL_SERVERCONNECTION = tagRasCntlServerConnection;
+     PRASCNTL_SERVERCONNECTION = ^tagRasCntlServerConnection;
+
+//
+//  Structure containing info describing the pool of IPV6 network prefixes that
+//  can be assigned by the server.
+//  Used with the IOCTLS:
+//	    RASCNTL_SERVER_GET_IPV6_NET_PREFIX
+//	    RASCNTL_SERVER_SET_IPV6_NET_PREFIX
+//
+type
+     tagRasCntlServerIPV6NetPrefix = record
+       IPV6NetPrefix:array[0..15] of byte;
+       IPV6NetPrefixBitLength:DWORD;
+       IPV6NetPrefixCount:DWORD;
+     end;
+     RASCNTL_SERVER_IPV6_NET_PREFIX = tagRasCntlServerIPV6NetPrefix;
+     PRASCNTL_SERVER_IPV6_NET_PREFIX = ^tagRasCntlServerIPV6NetPrefix;
+
+//
+// RasDial message notifications are sent with Message ID set to
+// WM_RASDIALEVENT
+//
+const
+      RASDIALEVENT    	= 'RasDialEvent';
+
+      WM_RASDIALEVENT 	= $CCCD;
+
+
+type
+     _RAS_STATS = record
+       dwSize:DWORD;
+       dwBytesXmited:DWORD;
+       dwBytesRcved:DWORD;
+       dwFramesXmited:DWORD;
+       dwFramesRcved:DWORD;
+       dwCrcErr:DWORD;
+       dwTimeoutErr:DWORD;
+       dwAlignmentErr:DWORD;
+       dwHardwareOverrunErr:DWORD;
+       dwFramingErr:DWORD;
+       dwBufferOverrunErr:DWORD;
+       dwCompressionRatioIn:DWORD;
+       dwCompressionRatioOut:DWORD;
+       dwBps:DWORD;
+       dwConnectDuration:DWORD;
+     end;
+
+     RAS_STATS = _RAS_STATS;
+     PRAS_STATS = ^_RAS_STATS;
+
+
+{$IFDEF WINCE} // #ifdef UNDER_CE
+
+// This structure is used by the RnaApp application on WINCE
+// to signal when a connection has occured.
+
+type
+     tagRNAAppInfo = record
+	      dwSize:DWORD;					// The size of this structure
+	      hWndRNAApp:DWORD;				// The handle of the RNAApp window
+	      Context:DWORD;				// Context value specified on CmdLine
+	      ErrorCode:DWORD;				// Last error code
+	      RasEntryName:array[0..RAS_MaxEntryName] of TCHAR;
+     end;
+     RNAAPP_INFO = tagRNAAppInfo;
+     PRNAAPP_INFO = ^tagRNAAppInfo;
+
+const
+      RNA_RASCMD		= WM_USER+1;
+      RNA_ADDREF		= 1;
+      RNA_DELREF		= 2;
+{$ENDIF WINCE}
+
+{$PACKRECORDS DEFAULT} // #include "poppack.h"
+
+{$IFNDEF RASAPI}
+{$DEFINE RASAPI}
+{$ENDIF RASAPI}
+
+function RasDial(dialExtensions:LPRASDIALEXTENSIONS;
+	                phoneBookPath:LPTSTR;
+	                rasDialParam:LPRASDIALPARAMS;
+	                NotifierType:DWORD;
+	                notifier:LPVOID;
+	                pRasConn:LPHRASCONN):DWORD; external KernelDLL name 'RasDial'; // index 1F3
+
+function RasDialW(dialExtensions:LPRASDIALEXTENSIONS;
+ 	                phoneBookPath:LPTSTR;
+	                 rasDialParam:LPRASDIALPARAMS;
+	                 NotifierType:DWORD;
+	                 notifier:LPVOID;
+	                 pRasConn:LPHRASCONN):DWORD; external KernelDLL name 'RasDial'; // index 1F3
+
+function RasHangUp(Session:HRASCONN):DWORD; external KernelDLL name 'RasHangUp'; // index 1F4, 1F5
+function RasHangUpW(Session:HRASCONN):DWORD; external KernelDLL name 'RasHangUp'; // index 1F4, 1F5
+
+function RasEnumEntries(Reserved:LPWSTR;
+		                      lpszPhoneBookPath:LPWSTR;
+		                      lprasentryname:LPRASENTRYNAME;
+		                      lpcb:LPDWORD;
+		                      lpcEntries:LPDWORD):DWORD; external KernelDLL name 'RasEnumEntries'; // index 1F6
+function RasEnumEntriesW(Reserved:LPWSTR;
+		                       lpszPhoneBookPath:LPWSTR;
+		                       lprasentryname:LPRASENTRYNAME;
+		                       lpcb:LPDWORD;
+		                       lpcEntries:LPDWORD):DWORD; external KernelDLL name 'RasEnumEntries'; // index 1F6
+
+function RasGetEntryDialParams(lpszPhoneBook:LPWSTR;
+			                            lpRasDialParams:LPRASDIALPARAMS;
+			                            lpfPassword:LPBOOL):DWORD; external KernelDLL name 'RasGetEntryDialParams'; // index 1F7 
+function RasGetEntryDialParamsW(lpszPhoneBook:LPWSTR;
+			                             lpRasDialParams:LPRASDIALPARAMS;
+			                             lpfPassword:LPBOOL):DWORD; external KernelDLL name 'RasGetEntryDialParams'; // index 1F7
+
+function RasSetEntryDialParams(lpszPhoneBook:LPWSTR;
+			                            lpRasDialParams:LPRASDIALPARAMS;
+			                            fRemovePassword:BOOL):DWORD; external KernelDLL name 'RasSetEntryDialParams'; // index 1F8
+function RasSetEntryDialParamsW(lpszPhoneBook:LPWSTR;
+			                             lpRasDialParams:LPRASDIALPARAMS;
+			                             fRemovePassword:BOOL):DWORD; external KernelDLL name 'RasSetEntryDialParams'; // index 1F8
+
+function RasGetEntryProperties(lpszPhoneBook:LPWSTR;
+			                            szEntry:LPWSTR;
+			                            lpEntry:LPRASENTRY;
+			                            lpdwEntrySize:LPDWORD;
+			                            lpb:LPBYTE;
+			                            lpdwSize:LPDWORD):DWORD; external KernelDLL name 'RasGetEntryProperties'; // index 1F9
+function RasGetEntryPropertiesW(lpszPhoneBook:LPWSTR;
+			                             szEntry:LPWSTR;
+			                             lpEntry:LPRASENTRY;
+			                             lpdwEntrySize:LPDWORD;
+			                             lpb:LPBYTE;
+			                             lpdwSize:LPDWORD):DWORD; external KernelDLL name 'RasGetEntryProperties'; // index 1F9
+
+
+function RasSetEntryProperties(lpszPhoneBook:LPWSTR;
+			                            szEntry:LPWSTR;
+			                            lpEntry:LPRASENTRY;
+			                            dwEntrySize:DWORD;
+			                            lpb:LPBYTE;
+			                            dwSize:DWORD):DWORD; external KernelDLL name 'RasSetEntryProperties'; // index 1FA
+function RasSetEntryPropertiesW(lpszPhoneBook:LPWSTR;
+			                             szEntry:LPWSTR;
+			                             lpEntry:LPRASENTRY;
+			                             dwEntrySize:DWORD;
+			                             lpb:LPBYTE;
+			                             dwSize:DWORD):DWORD; external KernelDLL name 'RasSetEntryProperties'; // index 1FA
+
+function RasValidateEntryName(lpszPhonebook:LPCWSTR;
+			                           lpszEntry:LPCWSTR):DWORD; external KernelDLL name 'RasValidateEntryName'; // index 1FB
+function RasValidateEntryNameW(lpszPhonebook:LPCWSTR;
+			                            lpszEntry:LPCWSTR):DWORD; external KernelDLL name 'RasValidateEntryName'; // index 1FB
+
+function RasDeleteEntry(lpszPhonebook:LPWSTR;
+		                      lpszEntry:LPWSTR):DWORD; external KernelDLL name 'RasDeleteEntry'; // index 1FC
+function RasDeleteEntryW(lpszPhonebook:LPWSTR;
+		                      lpszEntry:LPWSTR):DWORD; external KernelDLL name 'RasDeleteEntry'; // index 1FC
+
+function RasRenameEntry(lpszPhonebook:LPWSTR;
+		                      lpszOldEntry:LPWSTR;
+		                      lpszNewEntry:LPWSTR):DWORD; external KernelDLL name 'RasRenameEntry'; // index 1FD
+function RasRenameEntryW(lpszPhonebook:LPWSTR;
+		                       lpszOldEntry:LPWSTR;
+		                       lpszNewEntry:LPWSTR):DWORD; external KernelDLL name 'RasRenameEntry'; // index 1FD
+
+function RasEnumConnections(lprasconn:LPRASCONN;
+			                         lpcb:LPDWORD;
+			                         lpcConnections:LPDWORD):DWORD; external KernelDLL name 'RasEnumConnections'; // index 1FE
+function RasEnumConnectionsW(lprasconn:LPRASCONN;
+			                          lpcb:LPDWORD;
+			                          lpcConnections:LPDWORD):DWORD; external KernelDLL name 'RasEnumConnections'; // index 1FE
+
+function RasGetConnectStatus(rasconn:HRASCONN;
+			                          lprasconnstatus:LPRASCONNSTATUS):DWORD; external KernelDLL name 'RasGetConnectStatus'; // index 1FF
+function RasGetConnectStatusW(rasconn:HRASCONN;
+			                           lprasconnstatus:LPRASCONNSTATUS):DWORD; external KernelDLL name 'RasGetConnectStatus'; // index 1FF
+
+function RasGetEntryDevConfig(szPhonebook:LPCTSTR;
+			                           szEntry:LPCTSTR;
+			                           pdwDeviceID:LPDWORD;
+			                           pdwSize:LPDWORD;
+			                           pDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasGetEntryDevConfig'; // index 200
+function RasGetEntryDevConfigW(szPhonebook:LPCTSTR;
+			                            szEntry:LPCTSTR;
+			                            pdwDeviceID:LPDWORD;
+			                            pdwSize:LPDWORD;
+			                            pDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasGetEntryDevConfig'; // index 200
+
+function RasSetEntryDevConfig(szPhonebook:LPCTSTR;
+			                           szEntry:LPCTSTR;
+			                           dwDeviceID:DWORD;
+				                          lpDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasSetEntryDevConfig'; // index 201
+function RasSetEntryDevConfigW(szPhonebook:LPCTSTR;
+			                            szEntry:LPCTSTR;
+			                            dwDeviceID:DWORD;
+				                           lpDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasSetEntryDevConfig'; // index 201
+
+
+function RasEnumDevicesW(lpRasDevinfo:LPRASDEVINFOW;
+                         lpcb:LPDWORD;
+                         lpcDevices:LPDWORD):DWORD; external KernelDLL name 'RasEnumDevicesW'; // index 203
+function RasEnumDevices(lpRasDevinfo:LPRASDEVINFOW;
+                        lpcb:LPDWORD;
+                        lpcDevices:LPDWORD):DWORD; external KernelDLL name 'RasEnumDevicesW'; // index 203
+
+function RasGetProjectionInfoW(hrasconn:HRASCONN;
+                               rasprojection:RASPROJECTION;
+                               lpprojection:LPVOID;
+                               lpcb:LPDWORD):DWORD; external KernelDLL name 'RasGetProjectionInfoW'; // index 204
+function RasGetProjectionInfo(hrasconn:HRASCONN;
+                              rasprojection:RASPROJECTION;
+                              lpprojection:LPVOID;
+                              lpcb:LPDWORD):DWORD; external KernelDLL name 'RasGetProjectionInfoW'; // index 204
+
+function RasGetLinkStatistics(hRasConn:HRASCONN;
+                              dwSubEntry:DWORD;
+                              lpStatistics:PRAS_STATS):DWORD; external KernelDLL name 'RasGetLinkStatistics'; // index 205
+
+function RasGetDispPhoneNumW(szPhonebook:LPCWSTR;
+								                     szEntry:LPCWSTR;
+								                     szPhoneNum:LPWSTR;
+								                     dwPhoneNumLen:DWORD):DWORD; external KernelDLL name 'RasGetDispPhoneNumW'; // index 206
+function RasGetDispPhoneNum(szPhonebook:LPCWSTR;
+								                    szEntry:LPCWSTR;
+								                    szPhoneNum:LPWSTR;
+								                    dwPhoneNumLen:DWORD):DWORD; external KernelDLL name 'RasGetDispPhoneNumW'; // index 206
+
+function RasDevConfigDialogEditW(szDeviceName:LPCWSTR;
+                                 szDeviceType:LPCWSTR;
+										                       hWndOwner:HWND;
+                                 lpDeviceConfigIn:LPVOID;
+										                       dwSize:DWORD;
+                                 lpDeviceConfigOut:LPVARSTRING):DWORD; external KernelDLL name 'RasDevConfigDialogEditW'; // index 207
+function RasDevConfigDialogEdit(szDeviceName:LPCWSTR;
+                                szDeviceType:LPCWSTR;
+										                      hWndOwner:HWND;
+                                lpDeviceConfigIn:LPVOID;
+										                      dwSize:DWORD;
+                                lpDeviceConfigOut:LPVARSTRING):DWORD; external KernelDLL name 'RasDevConfigDialogEditW'; // index 207
+
+function RasIOControl(hRasConn:LPVOID;
+                      dwCode:DWORD;
+                      pBufIn:LPBYTE;
+                      dwLenIn:DWORD;
+                      pBufOut:LPBYTE;
+                      dwLenOut:DWORD;
+                      pdwActualOut:LPDWORD):DWORD; external KernelDLL name 'RasIOControl'; // index 202
+
+function RasGetEapUserData(hToken:HANDLE;           // access token for user
+	                          pszPhonebook:LPCTSTR;     // path to phone book to use
+	                          pszEntry:LPCTSTR;         // name of entry in phone book
+	                          pbEapData:LPBYTE;        // retrieved data for the user
+	                          pdwSizeofEapData:LPDWORD // size of retrieved data
+                          ):DWORD; external KernelDLL name 'RasGetEapUserData'; // index 208
+
+function RasSetEapUserData(hToken:HANDLE;           // access token for user
+	                          pszPhonebook:LPCTSTR;     // path to phone book to use
+	                          pszEntry:LPCTSTR;         // name of entry in phone book
+	                          pbEapData:LPBYTE;        // data to store for the user
+	                          dwSizeofEapData:DWORD   // size of data
+                          ):DWORD; external KernelDLL name 'RasSetEapUserData'; // index 209
+
+function RasGetEapConnectionData(pszPhonebook:LPCTSTR;     // path to phone book to use
+	                                pszEntry:LPCTSTR;         // name of entry in phone book
+	                                pbEapData:LPBYTE;        // retrieved data for the user
+	                                pdwSizeofEapData:LPDWORD // size of retrieved data
+                                ):DWORD; external KernelDLL name 'RasGetEapConnectionData'; // index 20A
+
+function RasSetEapConnectionData(pszPhonebook:LPCTSTR;    // path to phone book to use
+	                                pszEntry:LPCTSTR;        // name of entry in phone book
+	                                pbEapData:LPBYTE;       // data to store for the connection
+	                                dwSizeofEapData:DWORD  // size of data
+                                ):DWORD; external KernelDLL name 'RasSetEapConnectionData'; // index 20B
+
+implementation
+
+end.

+ 210 - 0
packages/winceunits/src/raserror.pp

@@ -0,0 +1,210 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2008 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ ********************************************************************** }
+//
+// Module Name:
+//
+//   raserror.h
+//
+// Abstract:
+//
+//   Remote Access external API
+//   RAS specific error codes
+//
+
+//
+//  Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit RASError;
+
+interface
+
+const
+      RASBASE = 600;
+      SUCCESS = 0;
+
+
+      PENDING                              = RASBASE + 0;
+      ERROR_INVALID_PORT_HANDLE            = RASBASE + 1;
+      ERROR_PORT_ALREADY_OPEN              = RASBASE + 2;
+      ERROR_BUFFER_TOO_SMALL               = RASBASE + 3;
+      ERROR_WRONG_INFO_SPECIFIED           = RASBASE + 4;
+      ERROR_CANNOT_SET_PORT_INFO           = RASBASE + 5;
+      ERROR_PORT_NOT_CONNECTED             = RASBASE + 6;
+      ERROR_EVENT_INVALID                  = RASBASE + 7;
+      ERROR_DEVICE_DOES_NOT_EXIST          = RASBASE + 8;
+      ERROR_DEVICETYPE_DOES_NOT_EXIST      = RASBASE + 9;
+      ERROR_BUFFER_INVALID                 = RASBASE + 10;
+      ERROR_ROUTE_NOT_AVAILABLE            = RASBASE + 11;
+      ERROR_ROUTE_NOT_ALLOCATED            = RASBASE + 12;
+      ERROR_INVALID_COMPRESSION_SPECIFIED  = RASBASE + 13;
+      ERROR_OUT_OF_BUFFERS                 = RASBASE + 14;
+      ERROR_PORT_NOT_FOUND                 = RASBASE + 15;
+      ERROR_ASYNC_REQUEST_PENDING          = RASBASE + 16;
+      ERROR_ALREADY_DISCONNECTING          = RASBASE + 17;
+      ERROR_PORT_NOT_OPEN                  = RASBASE + 18;
+      ERROR_PORT_DISCONNECTED              = RASBASE + 19;
+      ERROR_NO_ENDPOINTS                   = RASBASE + 20;
+      ERROR_CANNOT_OPEN_PHONEBOOK          = RASBASE + 21;
+      ERROR_CANNOT_LOAD_PHONEBOOK          = RASBASE + 22;
+      ERROR_CANNOT_FIND_PHONEBOOK_ENTRY    = RASBASE + 23;
+      ERROR_CANNOT_WRITE_PHONEBOOK         = RASBASE + 24;
+      ERROR_CORRUPT_PHONEBOOK              = RASBASE + 25;
+      ERROR_CANNOT_LOAD_STRING             = RASBASE + 26;
+      ERROR_KEY_NOT_FOUND                  = RASBASE + 27;
+      ERROR_DISCONNECTION                  = RASBASE + 28;
+      ERROR_REMOTE_DISCONNECTION           = RASBASE + 29;
+      ERROR_HARDWARE_FAILURE               = RASBASE + 30;
+      ERROR_USER_DISCONNECTION             = RASBASE + 31;
+      ERROR_INVALID_SIZE                   = RASBASE + 32;
+      ERROR_PORT_NOT_AVAILABLE             = RASBASE + 33;
+      ERROR_CANNOT_PROJECT_CLIENT          = RASBASE + 34;
+      ERROR_UNKNOWN                        = RASBASE + 35;
+      ERROR_WRONG_DEVICE_ATTACHED          = RASBASE + 36;
+      ERROR_BAD_STRING                     = RASBASE + 37;
+      ERROR_REQUEST_TIMEOUT                = RASBASE + 38;
+      ERROR_CANNOT_GET_LANA                = RASBASE + 39;
+      ERROR_NETBIOS_ERROR                  = RASBASE + 40;
+      ERROR_SERVER_OUT_OF_RESOURCES        = RASBASE + 41;
+      ERROR_NAME_EXISTS_ON_NET             = RASBASE + 42;
+      ERROR_SERVER_GENERAL_NET_FAILURE     = RASBASE + 43;
+      WARNING_MSG_ALIAS_NOT_ADDED          = RASBASE + 44;
+      ERROR_AUTH_INTERNAL                  = RASBASE + 45;
+      ERROR_RESTRICTED_LOGON_HOURS         = RASBASE + 46;
+      ERROR_ACCT_DISABLED                  = RASBASE + 47;
+      ERROR_PASSWD_EXPIRED                 = RASBASE + 48;
+      ERROR_NO_DIALIN_PERMISSION           = RASBASE + 49;
+      ERROR_SERVER_NOT_RESPONDING          = RASBASE + 50;
+      ERROR_FROM_DEVICE                    = RASBASE + 51;
+      ERROR_UNRECOGNIZED_RESPONSE          = RASBASE + 52;
+      ERROR_MACRO_NOT_FOUND                = RASBASE + 53;
+      ERROR_MACRO_NOT_DEFINED              = RASBASE + 54;
+      ERROR_MESSAGE_MACRO_NOT_FOUND        = RASBASE + 55;
+      ERROR_DEFAULTOFF_MACRO_NOT_FOUND     = RASBASE + 56;
+      ERROR_FILE_COULD_NOT_BE_OPENED       = RASBASE + 57;
+      ERROR_DEVICENAME_TOO_LONG            = RASBASE + 58;
+      ERROR_DEVICENAME_NOT_FOUND           = RASBASE + 59;
+      ERROR_NO_RESPONSES                   = RASBASE + 60;
+      ERROR_NO_COMMAND_FOUND               = RASBASE + 61;
+      ERROR_WRONG_KEY_SPECIFIED            = RASBASE + 62;
+      ERROR_UNKNOWN_DEVICE_TYPE            = RASBASE + 63;
+      ERROR_ALLOCATING_MEMORY              = RASBASE + 64;
+      ERROR_PORT_NOT_CONFIGURED            = RASBASE + 65;
+      ERROR_DEVICE_NOT_READY               = RASBASE + 66;
+      ERROR_READING_INI_FILE               = RASBASE + 67;
+      ERROR_NO_CONNECTION                  = RASBASE + 68;
+      ERROR_BAD_USAGE_IN_INI_FILE          = RASBASE + 69;
+      ERROR_READING_SECTIONNAME            = RASBASE + 70;
+      ERROR_READING_DEVICETYPE             = RASBASE + 71;
+      ERROR_READING_DEVICENAME             = RASBASE + 72;
+      ERROR_READING_USAGE                  = RASBASE + 73;
+      ERROR_READING_MAXCONNECTBPS          = RASBASE + 74;
+      ERROR_READING_MAXCARRIERBPS          = RASBASE + 75;
+      ERROR_LINE_BUSY                      = RASBASE + 76;
+      ERROR_VOICE_ANSWER                   = RASBASE + 77;
+      ERROR_NO_ANSWER                      = RASBASE + 78;
+      ERROR_NO_CARRIER                     = RASBASE + 79;
+      ERROR_NO_DIALTONE                    = RASBASE + 80;
+      ERROR_IN_COMMAND                     = RASBASE + 81;
+      ERROR_WRITING_SECTIONNAME            = RASBASE + 82;
+      ERROR_WRITING_DEVICETYPE             = RASBASE + 83;
+      ERROR_WRITING_DEVICENAME             = RASBASE + 84;
+      ERROR_WRITING_MAXCONNECTBPS          = RASBASE + 85;
+      ERROR_WRITING_MAXCARRIERBPS          = RASBASE + 86;
+      ERROR_WRITING_USAGE                  = RASBASE + 87;
+      ERROR_WRITING_DEFAULTOFF             = RASBASE + 88;
+      ERROR_READING_DEFAULTOFF             = RASBASE + 89;
+      ERROR_EMPTY_INI_FILE                 = RASBASE + 90;
+      ERROR_AUTHENTICATION_FAILURE         = RASBASE + 91;
+      ERROR_PORT_OR_DEVICE                 = RASBASE + 92;
+      ERROR_NOT_BINARY_MACRO               = RASBASE + 93;
+      ERROR_DCB_NOT_FOUND                  = RASBASE + 94;
+      ERROR_STATE_MACHINES_NOT_STARTED     = RASBASE + 95;
+      ERROR_STATE_MACHINES_ALREADY_STARTED = RASBASE + 96;
+      ERROR_PARTIAL_RESPONSE_LOOPING       = RASBASE + 97;
+      ERROR_UNKNOWN_RESPONSE_KEY           = RASBASE + 98;
+      ERROR_RECV_BUF_FULL                  = RASBASE + 99;
+      ERROR_CMD_TOO_LONG                   = RASBASE + 100;
+      ERROR_UNSUPPORTED_BPS                = RASBASE + 101;
+      ERROR_UNEXPECTED_RESPONSE            = RASBASE + 102;
+      ERROR_INTERACTIVE_MODE               = RASBASE + 103;
+      ERROR_BAD_CALLBACK_NUMBER            = RASBASE + 104;
+      ERROR_INVALID_AUTH_STATE             = RASBASE + 105;
+      ERROR_WRITING_INITBPS                = RASBASE + 106;
+      ERROR_X25_DIAGNOSTIC                 = RASBASE + 107;
+      ERROR_ACCT_EXPIRED                   = RASBASE + 108;
+      ERROR_CHANGING_PASSWORD              = RASBASE + 109;
+      ERROR_OVERRUN                        = RASBASE + 110;
+      ERROR_RASMAN_CANNOT_INITIALIZE	      = RASBASE + 111;
+      ERROR_BIPLEX_PORT_NOT_AVAILABLE      = RASBASE + 112;
+      ERROR_NO_ACTIVE_ISDN_LINES           = RASBASE + 113;
+      ERROR_NO_ISDN_CHANNELS_AVAILABLE     = RASBASE + 114;
+      ERROR_TOO_MANY_LINE_ERRORS           = RASBASE + 115;
+      ERROR_IP_CONFIGURATION               = RASBASE + 116;
+      ERROR_NO_IP_ADDRESSES                = RASBASE + 117;
+      ERROR_PPP_TIMEOUT                    = RASBASE + 118;
+      ERROR_PPP_REMOTE_TERMINATED          = RASBASE + 119;
+      ERROR_PPP_NO_PROTOCOLS_CONFIGURED    = RASBASE + 120;
+      ERROR_PPP_NO_RESPONSE                = RASBASE + 121;
+      ERROR_PPP_INVALID_PACKET             = RASBASE + 122;
+      ERROR_PHONE_NUMBER_TOO_LONG          = RASBASE + 123;
+      ERROR_IPXCP_NO_DIALOUT_CONFIGURED    = RASBASE + 124;
+      ERROR_IPXCP_NO_DIALIN_CONFIGURED     = RASBASE + 125;
+      ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE   = RASBASE + 126;
+      ERROR_ACCESSING_TCPCFGDLL            = RASBASE + 127;
+      ERROR_NO_IP_RAS_ADAPTER              = RASBASE + 128;
+      ERROR_SLIP_REQUIRES_IP               = RASBASE + 129;
+      ERROR_PROJECTION_NOT_COMPLETE        = RASBASE + 130;
+      ERROR_PROTOCOL_NOT_CONFIGURED        = RASBASE + 131;
+      ERROR_PPP_NOT_CONVERGING             = RASBASE + 132;
+      ERROR_PPP_CP_REJECTED                = RASBASE + 133;
+      ERROR_PPP_LCP_TERMINATED             = RASBASE + 134;
+      ERROR_PPP_REQUIRED_ADDRESS_REJECTED  = RASBASE + 135;
+      ERROR_PPP_NCP_TERMINATED             = RASBASE + 136;
+      ERROR_PPP_LOOPBACK_DETECTED          = RASBASE + 137;
+      ERROR_PPP_NO_ADDRESS_ASSIGNED        = RASBASE + 138;
+      ERROR_CANNOT_USE_LOGON_CREDENTIALS   = RASBASE + 139;
+      ERROR_TAPI_CONFIGURATION             = RASBASE + 140;
+      ERROR_NO_LOCAL_ENCRYPTION            = RASBASE + 141;
+      ERROR_NO_REMOTE_ENCRYPTION           = RASBASE + 142;
+      ERROR_REMOTE_REQUIRES_ENCRYPTION     = RASBASE + 143;
+      ERROR_IPXCP_NET_NUMBER_CONFLICT      = RASBASE + 144;
+      ERROR_INVALID_SMM                    = RASBASE + 145;
+      ERROR_SMM_UNINITIALIZED              = RASBASE + 146;
+      ERROR_NO_MAC_FOR_PORT                = RASBASE + 147;
+      ERROR_SMM_TIMEOUT                    = RASBASE + 148;
+      ERROR_BAD_PHONE_NUMBER               = RASBASE + 149;
+      ERROR_WRONG_MODULE                   = RASBASE + 150;
+      ERROR_PPP_MAC						                  = RASBASE + 151;
+      ERROR_PPP_LCP						                  = RASBASE + 152;
+      ERROR_PPP_AUTH						                 = RASBASE + 153;
+      ERROR_PPP_NCP						                  = RASBASE + 154;
+      ERROR_POWER_OFF						                = RASBASE + 155;
+      ERROR_POWER_OFF_CD					              = RASBASE + 156;
+
+
+      ERROR_DIAL_ALREADY_IN_PROGRESS       = RASBASE + 157;
+      ERROR_RASAUTO_CANNOT_INITIALIZE      = RASBASE + 158;
+      ERROR_UNABLE_TO_AUTHENTICATE_SERVER  = RASBASE + 178;
+
+
+      RASBASEEND                           = RASBASE + 158;
+
+      ROUTEBASE                            = 900;
+
+      ERROR_IDLE_DISCONNECTED              = ROUTEBASE + 26;
+// The port has been disconnected due to inactivity.%0
+
+implementation
+
+end.