diff win32/ras.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/ras.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,1029 @@
+/***********************************************************************\
+*                                 ras.d                                 *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.ras;
+pragma(lib, "rasapi32.lib");
+
+private import win32.basetyps, win32.lmcons, win32.w32api, win32.windef;
+
+align(4):
+
+const RAS_MaxDeviceType = 16;
+const RAS_MaxPhoneNumber = 128;
+const RAS_MaxIpAddress = 15;
+const RAS_MaxIpxAddress = 21;
+const RAS_MaxEntryName = 256;
+const RAS_MaxDeviceName = 128;
+const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;
+const RAS_MaxAreaCode = 10;
+const RAS_MaxPadType = 32;
+const RAS_MaxX25Address = 200;
+const RAS_MaxFacilities = 200;
+const RAS_MaxUserData = 200;
+const RAS_MaxReplyMessage = 1024;
+
+const RDEOPT_UsePrefixSuffix           = 0x00000001;
+const RDEOPT_PausedStates              = 0x00000002;
+const RDEOPT_IgnoreModemSpeaker        = 0x00000004;
+const RDEOPT_SetModemSpeaker           = 0x00000008;
+const RDEOPT_IgnoreSoftwareCompression = 0x00000010;
+const RDEOPT_SetSoftwareCompression    = 0x00000020;
+const RDEOPT_DisableConnectedUI        = 0x00000040;
+const RDEOPT_DisableReconnectUI        = 0x00000080;
+const RDEOPT_DisableReconnect          = 0x00000100;
+const RDEOPT_NoUser                    = 0x00000200;
+const RDEOPT_PauseOnScript             = 0x00000400;
+const RDEOPT_Router                    = 0x00000800;
+
+const REN_User = 0x00000000;
+const REN_AllUsers = 0x00000001;
+const VS_Default = 0;
+const VS_PptpOnly = 1;
+const VS_PptpFirst = 2;
+const VS_L2tpOnly = 3;
+const VS_L2tpFirst = 4;
+
+const RASDIALEVENT = "RasDialEvent";
+const WM_RASDIALEVENT = 0xCCCD;
+
+const RASEO_UseCountryAndAreaCodes = 0x00000001;
+const RASEO_SpecificIpAddr = 0x00000002;
+const RASEO_SpecificNameServers = 0x00000004;
+const RASEO_IpHeaderCompression = 0x00000008;
+const RASEO_RemoteDefaultGateway = 0x00000010;
+const RASEO_DisableLcpExtensions = 0x00000020;
+const RASEO_TerminalBeforeDial = 0x00000040;
+const RASEO_TerminalAfterDial = 0x00000080;
+const RASEO_ModemLights = 0x00000100;
+const RASEO_SwCompression = 0x00000200;
+const RASEO_RequireEncryptedPw = 0x00000400;
+const RASEO_RequireMsEncryptedPw = 0x00000800;
+const RASEO_RequireDataEncryption = 0x00001000;
+const RASEO_NetworkLogon = 0x00002000;
+const RASEO_UseLogonCredentials = 0x00004000;
+const RASEO_PromoteAlternates = 0x00008000;
+const RASNP_NetBEUI = 0x00000001;
+const RASNP_Ipx = 0x00000002;
+const RASNP_Ip = 0x00000004;
+const RASFP_Ppp = 0x00000001;
+const RASFP_Slip = 0x00000002;
+const RASFP_Ras = 0x00000004;
+
+const TCHAR[]
+	RASDT_Modem = "modem",
+	RASDT_Isdn = "isdn",
+	RASDT_X25 = "x25",
+	RASDT_Vpn = "vpn",
+	RASDT_Pad = "pad",
+	RASDT_Generic = "GENERIC",
+	RASDT_Serial = "SERIAL",
+	RASDT_FrameRelay = "FRAMERELAY",
+	RASDT_Atm = "ATM",
+	RASDT_Sonet = "SONET",
+	RASDT_SW56 = "SW56",
+	RASDT_Irda = "IRDA",
+	RASDT_Parallel = "PARALLEL";
+
+const RASET_Phone = 1;
+const RASET_Vpn = 2;
+const RASET_Direct = 3;
+const RASET_Internet = 4;
+
+static if (WINVER >= 0x0401) {
+	const RASEO_SecureLocalFiles = 0x00010000;
+	const RASCN_Connection = 0x00000001;
+	const RASCN_Disconnection = 0x00000002;
+	const RASCN_BandwidthAdded = 0x00000004;
+	const RASCN_BandwidthRemoved = 0x00000008;
+	const RASEDM_DialAll = 1;
+	const RASEDM_DialAsNeeded = 2;
+	const RASIDS_Disabled = 0xffffffff;
+	const RASIDS_UseGlobalValue = 0;
+	const RASADFLG_PositionDlg = 0x00000001;
+	const RASCM_UserName = 0x00000001;
+	const RASCM_Password = 0x00000002;
+	const RASCM_Domain = 0x00000004;
+	const RASADP_DisableConnectionQuery = 0;
+	const RASADP_LoginSessionDisable = 1;
+	const RASADP_SavedAddressesLimit = 2;
+	const RASADP_FailedConnectionTimeout = 3;
+	const RASADP_ConnectionQueryTimeout = 4;
+}
+static if (WINVER >= 0x0500) {
+	const RDEOPT_CustomDial = 0x00001000;
+	const RASLCPAP_PAP = 0xC023;
+	const RASLCPAP_SPAP = 0xC027;
+	const RASLCPAP_CHAP = 0xC223;
+	const RASLCPAP_EAP = 0xC227;
+	const RASLCPAD_CHAP_MD5 = 0x05;
+	const RASLCPAD_CHAP_MS = 0x80;
+	const RASLCPAD_CHAP_MSV2 = 0x81;
+	const RASLCPO_PFC    = 0x00000001;
+	const RASLCPO_ACFC   = 0x00000002;
+	const RASLCPO_SSHF   = 0x00000004;
+	const RASLCPO_DES_56 = 0x00000008;
+	const RASLCPO_3_DES  = 0x00000010;
+
+	const RASCCPCA_MPPC = 0x00000006;
+	const RASCCPCA_STAC = 0x00000005;
+
+	const RASCCPO_Compression      = 0x00000001;
+	const RASCCPO_HistoryLess      = 0x00000002;
+	const RASCCPO_Encryption56bit  = 0x00000010;
+	const RASCCPO_Encryption40bit  = 0x00000020;
+	const RASCCPO_Encryption128bit = 0x00000040;
+
+	const RASEO_RequireEAP          = 0x00020000;
+	const RASEO_RequirePAP          = 0x00040000;
+	const RASEO_RequireSPAP         = 0x00080000;
+	const RASEO_Custom              = 0x00100000;
+	const RASEO_PreviewPhoneNumber  = 0x00200000;
+	const RASEO_SharedPhoneNumbers  = 0x00800000;
+	const RASEO_PreviewUserPw       = 0x01000000;
+	const RASEO_PreviewDomain       = 0x02000000;
+	const RASEO_ShowDialingProgress = 0x04000000;
+	const RASEO_RequireCHAP         = 0x08000000;
+	const RASEO_RequireMsCHAP       = 0x10000000;
+	const RASEO_RequireMsCHAP2      = 0x20000000;
+	const RASEO_RequireW95MSCHAP    = 0x40000000;
+	const RASEO_CustomScript        = 0x80000000;
+
+	const RASIPO_VJ = 0x00000001;
+	const RCD_SingleUser = 0;
+	const RCD_AllUsers = 0x00000001;
+	const RCD_Eap = 0x00000002;
+	const RASEAPF_NonInteractive = 0x00000002;
+	const RASEAPF_Logon = 0x00000004;
+	const RASEAPF_Preview = 0x00000008;
+	const ET_40Bit = 1;
+	const ET_128Bit = 2;
+	const ET_None = 0;
+	const ET_Require = 1;
+	const ET_RequireMax = 2;
+	const ET_Optional = 3;
+}
+
+const RASCS_PAUSED = 0x1000;
+const RASCS_DONE = 0x2000;
+enum RASCONNSTATE {
+	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_StartAuthentication,
+	RASCS_CallbackComplete,
+	RASCS_LogonNetwork,
+	RASCS_SubEntryConnected,
+	RASCS_SubEntryDisconnected,
+	RASCS_Interactive = RASCS_PAUSED,
+	RASCS_RetryAuthentication,
+	RASCS_CallbackSetByCaller,
+	RASCS_PasswordExpired,
+//	static if (WINVER >= 0x0500) {
+		RASCS_InvokeEapUI,
+//	}
+	RASCS_Connected = RASCS_DONE,
+	RASCS_Disconnected
+}
+alias RASCONNSTATE* LPRASCONNSTATE;
+
+enum RASPROJECTION {
+	RASP_Amb =      0x10000,
+	RASP_PppNbf =   0x803F,
+	RASP_PppIpx =   0x802B,
+	RASP_PppIp =    0x8021,
+//	static if (WINVER >= 0x0500) {
+		RASP_PppCcp =   0x80FD,
+//	}
+	RASP_PppLcp =   0xC021,
+	RASP_Slip =     0x20000
+}
+alias RASPROJECTION* LPRASPROJECTION;
+
+typedef HANDLE HRASCONN;
+alias HRASCONN* LPHRASCONN;
+
+struct RASCONNW {
+	DWORD dwSize;
+	HRASCONN hrasconn;
+	WCHAR szEntryName[RAS_MaxEntryName + 1];
+	static if (WINVER >= 0x0400) {
+		WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+		WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+	}
+	static if (WINVER >= 0x0401) {
+		WCHAR szPhonebook[MAX_PATH];
+		DWORD dwSubEntry;
+	}
+	static if (WINVER >= 0x0500) {
+		GUID guidEntry;
+	}
+	static if (WINVER >= 0x0501) {
+		DWORD dwFlags;
+		LUID luid;
+	}
+}
+alias RASCONNW* LPRASCONNW;
+
+struct RASCONNA {
+	DWORD dwSize;
+	HRASCONN hrasconn;
+	CHAR szEntryName[RAS_MaxEntryName + 1];
+	static if (WINVER >= 0x0400) {
+		CHAR szDeviceType[RAS_MaxDeviceType + 1];
+		CHAR szDeviceName[RAS_MaxDeviceName + 1];
+	}
+	static if (WINVER >= 0x0401) {
+		CHAR szPhonebook[MAX_PATH];
+		DWORD dwSubEntry;
+	}
+	static if (WINVER >= 0x0500) {
+		GUID guidEntry;
+	}
+	static if (WINVER >= 0x0501) {
+		DWORD dwFlags;
+		LUID luid;
+	}
+}
+alias RASCONNA* LPRASCONNA;
+
+struct RASCONNSTATUSW {
+	DWORD dwSize;
+	RASCONNSTATE rasconnstate;
+	DWORD dwError;
+	WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+	WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+	static if (WINVER >= 0x0401) {
+		WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+	}
+}
+alias RASCONNSTATUSW* LPRASCONNSTATUSW;
+
+struct RASCONNSTATUSA {
+	DWORD dwSize;
+	RASCONNSTATE rasconnstate;
+	DWORD dwError;
+	CHAR szDeviceType[RAS_MaxDeviceType + 1];
+	CHAR szDeviceName[RAS_MaxDeviceName + 1];
+	static if (WINVER >= 0x0401) {
+		CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+	}
+}
+alias RASCONNSTATUSA* LPRASCONNSTATUSA;
+
+struct RASDIALPARAMSW {
+	DWORD dwSize;
+	WCHAR szEntryName[RAS_MaxEntryName + 1];
+	WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+	WCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1];
+	WCHAR szUserName[UNLEN + 1];
+	WCHAR szPassword[PWLEN + 1];
+	WCHAR szDomain[DNLEN + 1];
+	static if (WINVER >= 0x0401) {
+		DWORD dwSubEntry;
+		ULONG_PTR dwCallbackId;
+	}
+}
+alias RASDIALPARAMSW* LPRASDIALPARAMSW;
+
+struct RASDIALPARAMSA{
+	DWORD dwSize;
+	CHAR szEntryName[RAS_MaxEntryName + 1];
+	CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1];
+	CHAR szCallbackNumber[RAS_MaxCallbackNumber + 1];
+	CHAR szUserName[UNLEN + 1];
+	CHAR szPassword[PWLEN + 1];
+	CHAR szDomain[DNLEN + 1];
+	static if (WINVER >= 0x0401) {
+		DWORD dwSubEntry;
+		ULONG_PTR dwCallbackId;
+	}
+}
+alias RASDIALPARAMSA* LPRASDIALPARAMSA;
+
+static if (WINVER >= 0x0500) {
+	struct RASEAPINFO {
+		DWORD dwSizeofEapInfo;
+		BYTE *pbEapInfo;
+	}
+}
+
+struct RASDIALEXTENSIONS {
+	DWORD dwSize;
+	DWORD dwfOptions;
+	HWND hwndParent;
+	ULONG_PTR reserved;
+	static if (WINVER >= 0x0500) {
+		ULONG_PTR reserved1;
+		RASEAPINFO RasEapInfo;
+	}
+}
+alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS;
+
+struct RASENTRYNAMEW {
+	DWORD dwSize;
+	WCHAR szEntryName[RAS_MaxEntryName + 1];
+	static if (WINVER >= 0x0500) {
+		DWORD dwFlags;
+		WCHAR szPhonebookPath[MAX_PATH + 1];
+	}
+}
+alias RASENTRYNAMEW* LPRASENTRYNAMEW;
+
+struct RASENTRYNAMEA{
+	DWORD dwSize;
+	CHAR szEntryName[RAS_MaxEntryName + 1];
+	static if (WINVER >= 0x0500) {
+		DWORD dwFlags;
+		CHAR szPhonebookPath[MAX_PATH + 1];
+	}
+}
+alias RASENTRYNAMEA* LPRASENTRYNAMEA;
+
+struct RASAMBW{
+	DWORD dwSize;
+	DWORD dwError;
+	WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+	BYTE bLana;
+}
+alias RASAMBW* LPRASAMBW;
+
+struct RASAMBA{
+	DWORD dwSize;
+	DWORD dwError;
+	CHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+	BYTE bLana;
+}
+alias RASAMBA* LPRASAMBA;
+
+struct RASPPPNBFW{
+	DWORD dwSize;
+	DWORD dwError;
+	DWORD dwNetBiosError;
+	WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+	WCHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
+	BYTE bLana;
+}
+alias RASPPPNBFW* LPRASPPPNBFW;
+
+struct RASPPPNBFA{
+	DWORD dwSize;
+	DWORD dwError;
+	DWORD dwNetBiosError;
+	CHAR szNetBiosError[NETBIOS_NAME_LEN + 1];
+	CHAR szWorkstationName[NETBIOS_NAME_LEN + 1];
+	BYTE bLana;
+}
+alias RASPPPNBFA* LPRASPPPNBFA;
+
+struct RASPPPIPXW {
+	DWORD dwSize;
+	DWORD dwError;
+	WCHAR szIpxAddress[RAS_MaxIpxAddress + 1];
+}
+alias RASPPPIPXW* LPRASPPPIPXW;
+
+struct RASPPPIPXA {
+	DWORD dwSize;
+	DWORD dwError;
+	CHAR szIpxAddress[RAS_MaxIpxAddress + 1];
+}
+alias RASPPPIPXA* LPRASPPPIPXA;
+
+struct RASPPPIPW{
+	DWORD dwSize;
+	DWORD dwError;
+	WCHAR szIpAddress[RAS_MaxIpAddress + 1];
+	//#ifndef WINNT35COMPATIBLE
+	WCHAR szServerIpAddress[RAS_MaxIpAddress + 1];
+	//#endif
+	static if (WINVER >= 0x0500) {
+		DWORD dwOptions;
+		DWORD dwServerOptions;
+	}
+}
+alias RASPPPIPW* LPRASPPPIPW;
+
+struct RASPPPIPA{
+	DWORD dwSize;
+	DWORD dwError;
+	CHAR szIpAddress[RAS_MaxIpAddress + 1];
+	//#ifndef WINNT35COMPATIBLE
+	CHAR szServerIpAddress[RAS_MaxIpAddress + 1];
+	//#endif
+	static if (WINVER >= 0x0500) {
+		DWORD dwOptions;
+		DWORD dwServerOptions;
+	}
+}
+alias RASPPPIPA* LPRASPPPIPA;
+
+struct RASPPPLCPW{
+	DWORD dwSize;
+	BOOL fBundled;
+	static if (WINVER >= 0x0500) {
+		DWORD dwError;
+		DWORD dwAuthenticationProtocol;
+		DWORD dwAuthenticationData;
+		DWORD dwEapTypeId;
+		DWORD dwServerAuthenticationProtocol;
+		DWORD dwServerAuthenticationData;
+		DWORD dwServerEapTypeId;
+		BOOL fMultilink;
+		DWORD dwTerminateReason;
+		DWORD dwServerTerminateReason;
+		WCHAR szReplyMessage[RAS_MaxReplyMessage];
+		DWORD dwOptions;
+		DWORD dwServerOptions;
+	}
+}
+alias RASPPPLCPW* LPRASPPPLCPW;
+
+struct RASPPPLCPA{
+	DWORD dwSize;
+	BOOL fBundled;
+	static if (WINVER >= 0x0500) {
+		DWORD dwError;
+		DWORD dwAuthenticationProtocol;
+		DWORD dwAuthenticationData;
+		DWORD dwEapTypeId;
+		DWORD dwServerAuthenticationProtocol;
+		DWORD dwServerAuthenticationData;
+		DWORD dwServerEapTypeId;
+		BOOL fMultilink;
+		DWORD dwTerminateReason;
+		DWORD dwServerTerminateReason;
+		CHAR szReplyMessage[RAS_MaxReplyMessage];
+		DWORD dwOptions;
+		DWORD dwServerOptions;
+	}
+}
+alias RASPPPLCPA* LPRASPPPLCPA;
+
+struct RASSLIPW{
+	DWORD dwSize;
+	DWORD dwError;
+	WCHAR szIpAddress[RAS_MaxIpAddress + 1];
+}
+alias RASSLIPW* LPRASSLIPW;
+
+struct RASSLIPA{
+	DWORD dwSize;
+	DWORD dwError;
+	CHAR szIpAddress[RAS_MaxIpAddress + 1];
+}
+alias RASSLIPA* LPRASSLIPA;
+
+struct RASDEVINFOW{
+	DWORD dwSize;
+	WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+	WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+}
+alias RASDEVINFOW* LPRASDEVINFOW;
+
+struct RASDEVINFOA{
+	DWORD dwSize;
+	CHAR szDeviceType[RAS_MaxDeviceType + 1];
+	CHAR szDeviceName[RAS_MaxDeviceName + 1];
+}
+alias RASDEVINFOA* LPRASDEVINFOA;
+
+struct RASCTRYINFO {
+	DWORD dwSize;
+	DWORD dwCountryID;
+	DWORD dwNextCountryID;
+	DWORD dwCountryCode;
+	DWORD dwCountryNameOffset;
+}
+alias RASCTRYINFO* LPRASCTRYINFO;
+alias RASCTRYINFO  RASCTRYINFOW, RASCTRYINFOA;
+alias RASCTRYINFOW* LPRASCTRYINFOW;
+alias RASCTRYINFOA* LPRASCTRYINFOA;
+
+struct RASIPADDR {
+	BYTE a;
+	BYTE b;
+	BYTE c;
+	BYTE d;
+}
+
+struct RASENTRYW {
+	DWORD dwSize;
+	DWORD dwfOptions;
+	DWORD dwCountryID;
+	DWORD dwCountryCode;
+	WCHAR szAreaCode[RAS_MaxAreaCode + 1];
+	WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+	DWORD dwAlternateOffset;
+	RASIPADDR ipaddr;
+	RASIPADDR ipaddrDns;
+	RASIPADDR ipaddrDnsAlt;
+	RASIPADDR ipaddrWins;
+	RASIPADDR ipaddrWinsAlt;
+	DWORD dwFrameSize;
+	DWORD dwfNetProtocols;
+	DWORD dwFramingProtocol;
+	WCHAR szScript[MAX_PATH];
+	WCHAR szAutodialDll[MAX_PATH];
+	WCHAR szAutodialFunc[MAX_PATH];
+	WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+	WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+	WCHAR szX25PadType[RAS_MaxPadType + 1];
+	WCHAR szX25Address[RAS_MaxX25Address + 1];
+	WCHAR szX25Facilities[RAS_MaxFacilities + 1];
+	WCHAR szX25UserData[RAS_MaxUserData + 1];
+	DWORD dwChannels;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+	static if (WINVER >= 0x0401) {
+		DWORD dwSubEntries;
+		DWORD dwDialMode;
+		DWORD dwDialExtraPercent;
+		DWORD dwDialExtraSampleSeconds;
+		DWORD dwHangUpExtraPercent;
+		DWORD dwHangUpExtraSampleSeconds;
+		DWORD dwIdleDisconnectSeconds;
+	}
+	static if (WINVER >= 0x0500) {
+		DWORD dwType;
+		DWORD dwEncryptionType;
+		DWORD dwCustomAuthKey;
+		GUID guidId;
+		WCHAR szCustomDialDll[MAX_PATH];
+		DWORD dwVpnStrategy;
+	}
+}
+alias RASENTRYW* LPRASENTRYW;
+
+struct RASENTRYA {
+	DWORD dwSize;
+	DWORD dwfOptions;
+	DWORD dwCountryID;
+	DWORD dwCountryCode;
+	CHAR szAreaCode[RAS_MaxAreaCode + 1];
+	CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+	DWORD dwAlternateOffset;
+	RASIPADDR ipaddr;
+	RASIPADDR ipaddrDns;
+	RASIPADDR ipaddrDnsAlt;
+	RASIPADDR ipaddrWins;
+	RASIPADDR ipaddrWinsAlt;
+	DWORD dwFrameSize;
+	DWORD dwfNetProtocols;
+	DWORD dwFramingProtocol;
+	CHAR szScript[MAX_PATH];
+	CHAR szAutodialDll[MAX_PATH];
+	CHAR szAutodialFunc[MAX_PATH];
+	CHAR szDeviceType[RAS_MaxDeviceType + 1];
+	CHAR szDeviceName[RAS_MaxDeviceName + 1];
+	CHAR szX25PadType[RAS_MaxPadType + 1];
+	CHAR szX25Address[RAS_MaxX25Address + 1];
+	CHAR szX25Facilities[RAS_MaxFacilities + 1];
+	CHAR szX25UserData[RAS_MaxUserData + 1];
+	DWORD dwChannels;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+	static if (WINVER >= 0x0401) {
+		DWORD dwSubEntries;
+		DWORD dwDialMode;
+		DWORD dwDialExtraPercent;
+		DWORD dwDialExtraSampleSeconds;
+		DWORD dwHangUpExtraPercent;
+		DWORD dwHangUpExtraSampleSeconds;
+		DWORD dwIdleDisconnectSeconds;
+	}
+	static if (WINVER >= 0x0500) {
+		DWORD dwType;
+		DWORD dwEncryptionType;
+		DWORD dwCustomAuthKey;
+		GUID guidId;
+		CHAR szCustomDialDll[MAX_PATH];
+		DWORD dwVpnStrategy;
+	}
+}
+alias RASENTRYA* LPRASENTRYA;
+
+
+static if (WINVER >= 0x0401) {
+	struct RASADPARAMS {
+		DWORD dwSize;
+		HWND hwndOwner;
+		DWORD dwFlags;
+		LONG xDlg;
+		LONG yDlg;
+	}
+	alias RASADPARAMS* LPRASADPARAMS;
+
+	struct RASSUBENTRYW{
+		DWORD dwSize;
+		DWORD dwfFlags;
+		WCHAR szDeviceType[RAS_MaxDeviceType + 1];
+		WCHAR szDeviceName[RAS_MaxDeviceName + 1];
+		WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+		DWORD dwAlternateOffset;
+	}
+	alias RASSUBENTRYW* LPRASSUBENTRYW;
+
+	struct RASSUBENTRYA{
+		DWORD dwSize;
+		DWORD dwfFlags;
+		CHAR szDeviceType[RAS_MaxDeviceType + 1];
+		CHAR szDeviceName[RAS_MaxDeviceName + 1];
+		CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
+		DWORD dwAlternateOffset;
+	}
+	alias RASSUBENTRYA* LPRASSUBENTRYA;
+
+	struct RASCREDENTIALSW{
+		DWORD dwSize;
+		DWORD dwMask;
+		WCHAR szUserName[UNLEN + 1];
+		WCHAR szPassword[PWLEN + 1];
+		WCHAR szDomain[DNLEN + 1];
+	}
+	alias RASCREDENTIALSW* LPRASCREDENTIALSW;
+
+	struct RASCREDENTIALSA{
+		DWORD dwSize;
+		DWORD dwMask;
+		CHAR szUserName[UNLEN + 1];
+		CHAR szPassword[PWLEN + 1];
+		CHAR szDomain[DNLEN + 1];
+	}
+	alias RASCREDENTIALSA* LPRASCREDENTIALSA;
+
+	struct RASAUTODIALENTRYW{
+		DWORD dwSize;
+		DWORD dwFlags;
+		DWORD dwDialingLocation;
+		WCHAR szEntry[RAS_MaxEntryName + 1];
+	}
+	alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW;
+
+	struct RASAUTODIALENTRYA{
+		DWORD dwSize;
+		DWORD dwFlags;
+		DWORD dwDialingLocation;
+		CHAR szEntry[RAS_MaxEntryName + 1];
+	}
+	alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA;
+}
+
+static if (WINVER >= 0x0500) {
+	struct RASPPPCCP{
+		DWORD dwSize;
+		DWORD dwError;
+		DWORD dwCompressionAlgorithm;
+		DWORD dwOptions;
+		DWORD dwServerCompressionAlgorithm;
+		DWORD dwServerOptions;
+	}
+	alias RASPPPCCP* LPRASPPPCCP;
+
+	struct RASEAPUSERIDENTITYW{
+		WCHAR szUserName[UNLEN + 1];
+		DWORD dwSizeofEapInfo;
+		BYTE pbEapInfo[1];
+	}
+	alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW;
+
+	struct RASEAPUSERIDENTITYA{
+		CHAR szUserName[UNLEN + 1];
+		DWORD dwSizeofEapInfo;
+		BYTE pbEapInfo[1];
+	}
+	alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA;
+
+	struct RAS_STATS{
+		DWORD 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;
+	}
+	alias RAS_STATS* PRAS_STATS;
+}
+
+
+/* UNICODE typedefs for structures*/
+version (Unicode) {
+	alias RASCONNW RASCONN;
+	alias RASENTRYW RASENTRY;
+	alias RASCONNSTATUSW RASCONNSTATUS;
+	alias RASDIALPARAMSW RASDIALPARAMS;
+	alias RASAMBW RASAMB;
+	alias RASPPPNBFW RASPPPNBF;
+	alias RASPPPIPXW RASPPPIPX;
+	alias RASPPPIPW RASPPPIP;
+	alias RASPPPLCPW RASPPPLCP;
+	alias RASSLIPW RASSLIP;
+	alias RASDEVINFOW RASDEVINFO;
+	alias RASENTRYNAMEW RASENTRYNAME;
+
+	static if (WINVER >= 0x0401) {
+		alias RASSUBENTRYW RASSUBENTRY;
+		alias RASCREDENTIALSW RASCREDENTIALS;
+		alias RASAUTODIALENTRYW RASAUTODIALENTRY;
+	}
+
+	static if (WINVER >= 0x0500) {
+		alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY;
+	}
+
+} else { // ! defined UNICODE
+
+	alias RASCONNA RASCONN;
+	alias RASENTRYA  RASENTRY;
+	alias RASCONNSTATUSA RASCONNSTATUS;
+	alias RASDIALPARAMSA RASDIALPARAMS;
+	alias RASAMBA RASAMB;
+	alias RASPPPNBFA RASPPPNBF;
+	alias RASPPPIPXA RASPPPIPX;
+	alias RASPPPIPA RASPPPIP;
+	alias RASPPPLCPA RASPPPLCP;
+	alias RASSLIPA RASSLIP;
+	alias RASDEVINFOA  RASDEVINFO;
+	alias RASENTRYNAMEA RASENTRYNAME;
+
+	static if (WINVER >= 0x0401) {
+		alias RASSUBENTRYA RASSUBENTRY;
+		alias RASCREDENTIALSA RASCREDENTIALS;
+		alias RASAUTODIALENTRYA RASAUTODIALENTRY;
+	}
+	static if (WINVER >= 0x0500) {
+		alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY;
+	}
+}// ! UNICODE
+
+
+alias RASCONN* LPRASCONN;
+alias RASENTRY* LPRASENTRY;
+alias RASCONNSTATUS* LPRASCONNSTATUS;
+alias RASDIALPARAMS* LPRASDIALPARAMS;
+alias RASAMB* LPRASAM;
+alias RASPPPNBF* LPRASPPPNBF;
+alias RASPPPIPX* LPRASPPPIPX;
+alias RASPPPIP* LPRASPPPIP;
+alias RASPPPLCP* LPRASPPPLCP;
+alias RASSLIP* LPRASSLIP;
+alias RASDEVINFO* LPRASDEVINFO;
+alias RASENTRYNAME* LPRASENTRYNAME;
+
+static if (WINVER >= 0x0401) {
+	alias RASSUBENTRY* LPRASSUBENTRY;
+	alias RASCREDENTIALS* LPRASCREDENTIALS;
+	alias RASAUTODIALENTRY* LPRASAUTODIALENTRY;
+}
+static if (WINVER >= 0x0500) {
+	alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY;
+}
+
+/* Callback prototypes */
+deprecated {
+	alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC;
+}
+
+alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC;
+alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD,
+DWORD) RASDIALFUNC1;
+alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT,
+RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2;
+
+/* External functions */
+DWORD RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA,
+DWORD, LPVOID, LPHRASCONN);
+DWORD RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW,
+DWORD, LPVOID, LPHRASCONN);
+DWORD RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD);
+DWORD RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD);
+DWORD RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD,
+LPDWORD);
+DWORD RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD,
+LPDWORD);
+DWORD RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA);
+DWORD RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW);
+DWORD RasGetErrorStringA (UINT, LPSTR, DWORD);
+DWORD RasGetErrorStringW (UINT, LPWSTR, DWORD);
+DWORD RasHangUpA (HRASCONN);
+DWORD RasHangUpW (HRASCONN);
+DWORD RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID,
+LPDWORD);
+DWORD RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID,
+LPDWORD);
+DWORD RasCreatePhonebookEntryA (HWND, LPCSTR);
+DWORD RasCreatePhonebookEntryW (HWND, LPCWSTR);
+DWORD RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR);
+DWORD RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR);
+DWORD RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL);
+DWORD RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL);
+DWORD RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL);
+DWORD RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL);
+DWORD RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD);
+DWORD RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD);
+DWORD RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD);
+DWORD RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD);
+DWORD RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD,
+LPBYTE, LPDWORD);
+DWORD RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW,
+LPDWORD, LPBYTE, LPDWORD);
+DWORD RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD,
+LPBYTE, DWORD);
+DWORD RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD,
+LPBYTE, DWORD);
+DWORD RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR);
+DWORD RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR);
+DWORD RasDeleteEntryA (LPCSTR, LPCSTR);
+DWORD RasDeleteEntryW (LPCWSTR, LPCWSTR);
+DWORD RasValidateEntryNameA (LPCSTR, LPCSTR);
+DWORD RasValidateEntryNameW (LPCWSTR, LPCWSTR);
+
+static if (WINVER >= 0x0401) {
+	alias BOOL function (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA;
+	alias BOOL function (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW;
+
+	DWORD RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN);
+	DWORD RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN);
+	DWORD RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA);
+	DWORD RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW);
+	DWORD RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL);
+	DWORD RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL);
+	DWORD RasConnectionNotificationA (HRASCONN, HANDLE, DWORD);
+	DWORD RasConnectionNotificationW (HRASCONN, HANDLE, DWORD);
+	DWORD RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD,
+	LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD);
+	DWORD RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD,
+	LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD);
+	DWORD RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD,
+	LPRASSUBENTRYA, DWORD, LPBYTE, DWORD);
+	DWORD RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD,
+	LPRASSUBENTRYW, DWORD, LPBYTE, DWORD);
+	DWORD RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA,
+	LPDWORD, LPDWORD);
+	DWORD RasGetAutodialAddressW (LPCWSTR, LPDWORD,
+	LPRASAUTODIALENTRYW, LPDWORD, LPDWORD);
+	DWORD RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA,
+	DWORD, DWORD);
+	DWORD RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW,
+	DWORD, DWORD);
+	DWORD RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD);
+	DWORD RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD);
+	DWORD RasGetAutodialEnableA (DWORD, LPBOOL);
+	DWORD RasGetAutodialEnableW (DWORD, LPBOOL);
+	DWORD RasSetAutodialEnableA (DWORD, BOOL);
+	DWORD RasSetAutodialEnableW (DWORD, BOOL);
+	DWORD RasGetAutodialParamA (DWORD, LPVOID, LPDWORD);
+	DWORD RasGetAutodialParamW (DWORD, LPVOID, LPDWORD);
+	DWORD RasSetAutodialParamA (DWORD, LPVOID, DWORD);
+	DWORD RasSetAutodialParamW (DWORD, LPVOID, DWORD);
+}
+
+static if (WINVER >= 0x0500) {
+	alias DWORD function (HRASCONN) RasCustomHangUpFn;
+	alias DWORD function (LPCTSTR,	LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn;
+	alias DWORD function (HINSTANCE, LPRASDIALEXTENSIONS,
+	LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn;
+
+	DWORD RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND);
+	DWORD RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*);
+	DWORD RasGetConnectionStatistics (HRASCONN, RAS_STATS*);
+	DWORD RasClearLinkStatistics (HRASCONN, DWORD);
+	DWORD RasClearConnectionStatistics (HRASCONN);
+	DWORD RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*);
+	DWORD RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*);
+	DWORD RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD);
+	DWORD RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD);
+	DWORD RasGetCustomAuthDataA (LPCSTR,	LPCSTR,	BYTE*,	DWORD*);
+	DWORD RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*);
+	DWORD RasSetCustomAuthDataA (LPCSTR,	LPCSTR,	BYTE*,	DWORD);
+	DWORD RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD);
+	DWORD RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*);
+	DWORD RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*);
+	void RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW);
+	void RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA);
+}
+
+
+/* UNICODE defines for functions */
+version(Unicode) {
+	alias RasDialW RasDial;
+	alias RasEnumConnectionsW RasEnumConnections;
+	alias RasEnumEntriesW RasEnumEntries;
+	alias RasGetConnectStatusW RasGetConnectStatus;
+	alias RasGetErrorStringW RasGetErrorString;
+	alias RasHangUpW RasHangUp;
+	alias RasGetProjectionInfoW RasGetProjectionInfo;
+	alias RasCreatePhonebookEntryW RasCreatePhonebookEntry;
+	alias RasEditPhonebookEntryW RasEditPhonebookEntry;
+	alias RasSetEntryDialParamsW RasSetEntryDialParams;
+	alias RasGetEntryDialParamsW RasGetEntryDialParams;
+	alias RasEnumDevicesW RasEnumDevices;
+	alias RasGetCountryInfoW RasGetCountryInfo;
+	alias RasGetEntryPropertiesW RasGetEntryProperties;
+	alias RasSetEntryPropertiesW RasSetEntryProperties;
+	alias RasRenameEntryW RasRenameEntry;
+	alias RasDeleteEntryW RasDeleteEntry;
+	alias RasValidateEntryNameW RasValidateEntryName;
+
+	static if (WINVER >= 0x0401) {
+		alias RASADFUNCW RASADFUNC;
+		alias RasGetSubEntryHandleW RasGetSubEntryHandle;
+		alias RasConnectionNotificationW RasConnectionNotification;
+		alias RasGetSubEntryPropertiesW RasGetSubEntryProperties;
+		alias RasSetSubEntryPropertiesW RasSetSubEntryProperties;
+		alias RasGetCredentialsW RasGetCredentials;
+		alias RasSetCredentialsW RasSetCredentials;
+		alias RasGetAutodialAddressW RasGetAutodialAddress;
+		alias RasSetAutodialAddressW RasSetAutodialAddress;
+		alias RasEnumAutodialAddressesW RasEnumAutodialAddresses;
+		alias RasGetAutodialEnableW RasGetAutodialEnable;
+		alias RasSetAutodialEnableW RasSetAutodialEnable;
+		alias RasGetAutodialParamW RasGetAutodialParam;
+		alias RasSetAutodialParamW RasSetAutodialParam;
+	}
+
+	static if (WINVER >= 0x0500) {
+		alias RasGetEapUserDataW RasGetEapUserData;
+		alias RasSetEapUserDataW RasSetEapUserData;
+		alias RasGetCustomAuthDataW RasGetCustomAuthData;
+		alias RasSetCustomAuthDataW RasSetCustomAuthData;
+		alias RasGetEapUserIdentityW RasGetEapUserIdentity;
+		alias RasFreeEapUserIdentityW RasFreeEapUserIdentity;
+	}
+
+} else { // ! defined UNICODE
+	alias RasDialA RasDial;
+	alias RasEnumConnectionsA RasEnumConnections;
+	alias RasEnumEntriesA RasEnumEntries;
+	alias RasGetConnectStatusA RasGetConnectStatus;
+	alias RasGetErrorStringA RasGetErrorString;
+	alias RasHangUpA RasHangUp;
+	alias RasGetProjectionInfoA RasGetProjectionInfo;
+	alias RasCreatePhonebookEntryA RasCreatePhonebookEntry;
+	alias RasEditPhonebookEntryA RasEditPhonebookEntry;
+	alias RasSetEntryDialParamsA RasSetEntryDialParams;
+	alias RasGetEntryDialParamsA RasGetEntryDialParams;
+	alias RasEnumDevicesA RasEnumDevices;
+	alias RasGetCountryInfoA RasGetCountryInfo;
+	alias RasGetEntryPropertiesA RasGetEntryProperties;
+	alias RasSetEntryPropertiesA RasSetEntryProperties;
+	alias RasRenameEntryA RasRenameEntry;
+	alias RasDeleteEntryA RasDeleteEntry;
+	alias RasValidateEntryNameA RasValidateEntryName;
+
+	static if (WINVER >= 0x0401) {
+		alias RASADFUNCA RASADFUNC;
+		alias RasGetSubEntryHandleA RasGetSubEntryHandle;
+		alias RasConnectionNotificationA RasConnectionNotification;
+		alias RasGetSubEntryPropertiesA RasGetSubEntryProperties;
+		alias RasSetSubEntryPropertiesA RasSetSubEntryProperties;
+		alias RasGetCredentialsA RasGetCredentials;
+		alias RasSetCredentialsA RasSetCredentials;
+		alias RasGetAutodialAddressA RasGetAutodialAddress;
+		alias RasSetAutodialAddressA RasSetAutodialAddress;
+		alias RasEnumAutodialAddressesA RasEnumAutodialAddresses;
+		alias RasGetAutodialEnableA RasGetAutodialEnable;
+		alias RasSetAutodialEnableA RasSetAutodialEnable;
+		alias RasGetAutodialParamA RasGetAutodialParam;
+		alias RasSetAutodialParamA RasSetAutodialParam;
+	}
+
+	static if (WINVER >= 0x0500) {
+		alias RasGetEapUserDataA RasGetEapUserData;
+		alias RasSetEapUserDataA RasSetEapUserData;
+		alias RasGetCustomAuthDataA RasGetCustomAuthData;
+		alias RasSetCustomAuthDataA RasSetCustomAuthData;
+		alias RasGetEapUserIdentityA RasGetEapUserIdentity;
+		alias RasFreeEapUserIdentityA RasFreeEapUserIdentity;
+	}
+} //#endif // ! UNICODE