From d0a58e218ad267cb6e1d999bae1b261f0afc737f Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Fri, 8 Nov 2002 18:53:19 +0000 Subject: [PATCH] New structures: RASIPADDR, RASDEVINFO, RASENTRY. New stubs: RasSetEntryProperties. RasEnumDevicesA enhanced. --- dlls/rasapi32/rasapi.c | 85 ++++++++++--- dlls/rasapi32/rasapi32.spec | 4 +- include/ras.h | 230 ++++++++++++++++++++++++++++++++++++ 3 files changed, 298 insertions(+), 21 deletions(-) diff --git a/dlls/rasapi32/rasapi.c b/dlls/rasapi32/rasapi.c index 9c9fbefe360..36ed838ec28 100644 --- a/dlls/rasapi32/rasapi.c +++ b/dlls/rasapi32/rasapi.c @@ -1,7 +1,7 @@ /* * RASAPI32 * - * Copyright 1998 Marcus Meissner + * Copyright 1998,2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -64,9 +64,9 @@ DWORD WINAPI RasEnumEntriesA( LPCSTR Reserved, LPCSTR lpszPhoneBook, /************************************************************************** * RasGetEntryDialParamsA [RASAPI32.550] */ -DWORD WINAPI RasGetEntryDialParamsA( LPCSTR lpszPhoneBook, - LPRASDIALPARAMSA lpRasDialParams, - LPBOOL lpfPassword) +DWORD WINAPI RasGetEntryDialParamsA( + LPCSTR lpszPhoneBook, LPRASDIALPARAMSA lpRasDialParams, + LPBOOL lpfPassword) { FIXME("(%s,%p,%p),stub!\n",debugstr_a(lpszPhoneBook), lpRasDialParams,lpfPassword); @@ -118,17 +118,25 @@ DWORD WINAPI RasEnumAutodialAddressesW(LPCWSTR *a, LPDWORD b, LPDWORD c) return 0; } -typedef LPVOID LPRASDEVINFOA; -typedef LPVOID LPRASDEVINFOW; typedef LPVOID LPRASAUTODIALENTRYA; typedef LPVOID LPRASAUTODIALENTRYW; /************************************************************************** * RasEnumDevicesA [RASAPI32.19] + * + * Just return a virtual modem too see what other APIs programs will + * call with it. */ -DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA a, LPDWORD b, LPDWORD c) +DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA lpRasDevinfo, LPDWORD lpcb, LPDWORD lpcDevices) { - FIXME("(%p,%p,%p),stub!\n",a,b,c); + FIXME("(%p,%p,%p),stub!\n",lpRasDevinfo,lpcb,lpcDevices); + if (*lpcb < sizeof(RASDEVINFOA)) { + *lpcb = sizeof(RASDEVINFOA); + return ERROR_BUFFER_TOO_SMALL; + } + /* honor dwSize ? */ + strcpy(lpRasDevinfo->szDeviceType, RASDT_Modem); + strcpy(lpRasDevinfo->szDeviceName, "WINE virtmodem"); return 0; } @@ -182,18 +190,18 @@ DWORD WINAPI RasGetAutodialEnableW(DWORD a, LPBOOL b) /************************************************************************** * RasGetAutodialParamA [RASAPI32.28] */ -DWORD WINAPI RasGetAutodialParamA(DWORD a, LPVOID b, LPDWORD c) +DWORD WINAPI RasGetAutodialParamA(DWORD dwKey, LPVOID lpvValue, LPDWORD lpdwcbValue) { - FIXME("(%lx,%p,%p),stub!\n",a,b,c); + FIXME("(%lx,%p,%p),stub!\n",dwKey,lpvValue,lpdwcbValue); return 0; } /************************************************************************** * RasGetAutodialParamW [RASAPI32.29] */ -DWORD WINAPI RasGetAutodialParamW(DWORD a, LPVOID b, LPDWORD c) +DWORD WINAPI RasGetAutodialParamW(DWORD dwKey, LPVOID lpvValue, LPDWORD lpdwcbValue) { - FIXME("(%lx,%p,%p),stub!\n",a,b,c); + FIXME("(%lx,%p,%p),stub!\n",dwKey,lpvValue,lpdwcbValue); return 0; } @@ -220,18 +228,18 @@ DWORD WINAPI RasSetAutodialAddressW(LPCWSTR a, DWORD b, LPRASAUTODIALENTRYW c, /************************************************************************** * RasSetAutodialEnableA [RASAPI32.59] */ -DWORD WINAPI RasSetAutodialEnableA(DWORD a, BOOL b) +DWORD WINAPI RasSetAutodialEnableA(DWORD dwDialingLocation, BOOL fEnabled) { - FIXME("(%lx,%x),stub!\n",a,b); + FIXME("(%lx,%x),stub!\n",dwDialingLocation,fEnabled); return 0; } /************************************************************************** * RasSetAutodialEnableW [RASAPI32.60] */ -DWORD WINAPI RasSetAutodialEnableW(DWORD a, BOOL b) +DWORD WINAPI RasSetAutodialEnableW(DWORD dwDialingLocation, BOOL fEnabled) { - FIXME("(%lx,%x),stub!\n",a,b); + FIXME("(%lx,%x),stub!\n",dwDialingLocation,fEnabled); return 0; } @@ -254,9 +262,48 @@ DWORD WINAPI RasSetAutodialParamW(DWORD a, LPVOID b, DWORD c) } /************************************************************************** - * RasValidateEntryNameA [RASAPI32.72] + * RasSetEntryPropertiesA [RASAPI32.67] */ -DWORD WINAPI RasValidateEntryNameA(LPSTR lpszPhonebook, LPSTR lpszEntry) { - FIXME("(%s,%s), stub!\n",lpszPhonebook,lpszEntry); +DWORD WINAPI RasSetEntryPropertiesA(LPCSTR lpszPhonebook, LPCSTR lpszEntry, + LPRASENTRYA lpRasEntry, DWORD dwEntryInfoSize, LPBYTE lpbDeviceInfo, + DWORD dwDeviceInfoSize +) { + FIXME("(%s,%s,%p,%ld,%p,%ld), stub!\n", + debugstr_a(lpszPhonebook),debugstr_a(lpszEntry), + lpRasEntry,dwEntryInfoSize,lpbDeviceInfo,dwDeviceInfoSize + ); + FIXME("Rasentry:\n"); + FIXME("\tdwfOptions %lx\n",lpRasEntry->dwfOptions); + FIXME("\tszLocalPhoneNumber %s\n",debugstr_a(lpRasEntry->szLocalPhoneNumber)); + return 0; +} + +/************************************************************************** + * RasSetEntryPropertiesW [RASAPI32.68] + */ +DWORD WINAPI RasSetEntryPropertiesW(LPCWSTR lpszPhonebook, LPCWSTR lpszEntry, + LPRASENTRYW lpRasEntry, DWORD dwEntryInfoSize, LPBYTE lpbDeviceInfo, + DWORD dwDeviceInfoSize +) { + FIXME("(%s,%s,%p,%ld,%p,%ld), stub!\n", + debugstr_w(lpszPhonebook),debugstr_w(lpszEntry), + lpRasEntry,dwEntryInfoSize,lpbDeviceInfo,dwDeviceInfoSize + ); + return 0; +} + +/************************************************************************** + * RasValidateEntryNameA [RASAPI32.72] + */ +DWORD WINAPI RasValidateEntryNameA(LPCSTR lpszPhonebook, LPCSTR lpszEntry) { + FIXME("(%s,%s), stub!\n",debugstr_a(lpszPhonebook),debugstr_a(lpszEntry)); + return 0; +} + +/************************************************************************** + * RasValidateEntryNameW [RASAPI32.73] + */ +DWORD WINAPI RasValidateEntryNameW(LPCWSTR lpszPhonebook, LPCWSTR lpszEntry) { + FIXME("(%s,%s), stub!\n",debugstr_w(lpszPhonebook),debugstr_w(lpszEntry)); return 0; } diff --git a/dlls/rasapi32/rasapi32.spec b/dlls/rasapi32/rasapi32.spec index 6b252394ed3..c1d9452d825 100644 --- a/dlls/rasapi32/rasapi32.spec +++ b/dlls/rasapi32/rasapi32.spec @@ -36,8 +36,8 @@ 62 stdcall RasSetAutodialParamW(long ptr long) RasSetAutodialParamW 63 stub RasSetCredentialsA 64 stub RasSetCredentialsW -67 stub RasSetEntryPropertiesA -68 stub RasSetEntryPropertiesW +67 stdcall RasSetEntryPropertiesA( str str ptr long ptr long) RasSetEntryPropertiesA +68 stdcall RasSetEntryPropertiesW(wstr wstr ptr long ptr long) RasSetEntryPropertiesW 69 stub RasSetOldPassword 70 stub RasSetSubEntryPropertiesA 71 stub RasSetSubEntryPropertiesW diff --git a/include/ras.h b/include/ras.h index ea4ae72fd4d..3b71d4862ea 100644 --- a/include/ras.h +++ b/include/ras.h @@ -32,9 +32,39 @@ extern "C" { #define RAS_MaxDeviceType 16 #define RAS_MaxEntryName 256 #define RAS_MaxPhoneNumber 128 +#define RAS_MaxAreaCode 10 +#define RAS_MaxPadType 32 +#define RAS_MaxX25Address 200 +#define RAS_MaxFacilities 200 +#define RAS_MaxUserData 200 DECLARE_HANDLE(HRASCONN); +/* szDeviceType strings for RASDEVINFO */ +#define RASDT_Direct "direct" +#define RASDT_Modem "modem" +#define RASDT_Isdn "isdn" +#define RASDT_X25 "x25" + +#define RASBASE 600 +#define ERROR_BUFFER_TOO_SMALL (RASBASE+3) +#define ERROR_INVALID_SIZE (RASBASE+32) + +typedef struct tagRASDEVINFOA { + DWORD dwSize; + CHAR szDeviceType[ RAS_MaxDeviceType + 1 ]; + CHAR szDeviceName[ RAS_MaxDeviceName + 1 ]; +} RASDEVINFOA, *LPRASDEVINFOA; + +typedef struct tagRASDEVINFOW { + DWORD dwSize; + WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ]; + WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ]; +} RASDEVINFOW, *LPRASDEVINFOW; + +DECL_WINELIB_TYPE_AW(RASDEVINFO) +DECL_WINELIB_TYPE_AW(LPRASDEVINFO) + typedef struct tagRASCONNA { DWORD dwSize; HRASCONN hRasConn; @@ -98,6 +128,190 @@ typedef struct tagRASDIALPARAMSW { DECL_WINELIB_TYPE_AW(RASDIALPARAMS) DECL_WINELIB_TYPE_AW(LPRASDIALPARAMS) +typedef struct tagRASIPADDR { + BYTE classA,classB,classC,classD; +} RASIPADDR; + +#define RASEO_UseCountryAndAreaCodes 0x0001 +#define RASEO_SpecificIpAddr 0x0002 +#define RASEO_SpecificNameServers 0x0004 +#define RASEO_IpHeaderCompression 0x0008 +#define RASEO_RemoteDefaultGateway 0x0010 +#define RASEO_DisableLcpExtensions 0x0020 +#define RASEO_TerminalBeforeDial 0x0040 +#define RASEO_TerminalAfterDial 0x0080 +#define RASEO_ModemLights 0x0100 +#define RASEO_SwCompression 0x0200 +#define RASEO_RequireEncryptedPw 0x0400 +#define RASEO_RequireMsEncryptedPw 0x0800 +#define RASEO_RequireDataEncryption 0x1000 +#define RASEO_NetworkLogon 0x2000 +#define RASEO_UseLogonCredentials 0x4000 +#define RASEO_PromoteAlternates 0x8000 +typedef struct tagRASENTRYA { + DWORD dwSize; + DWORD dwfOptions; + + /* Location */ + + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR szAreaCode[ RAS_MaxAreaCode + 1 ]; + CHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ]; + DWORD dwAlternateOffset; + + /* IP related stuff */ + + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + + /* Framing (for ppp/isdn etc...) */ + + 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 ]; + + /* x25 only */ + + 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; + +#if (WINVER >= 0x401) + + /* Multilink and BAP */ + + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + + /* Idle time out */ + DWORD dwIdleDisconnectSeconds; + +#endif +#if (WINVER >= 0x500) + + DWORD dwType; /* entry type */ + DWORD dwEncryptionType; /* type of encryption to use */ + DWORD dwCustomAuthKey; /* authentication key for EAP */ + GUID guidId; /* guid that represents the phone-book entry */ + CHAR szCustomDialDll[MAX_PATH]; /* DLL for custom dialing */ + DWORD dwVpnStrategy; /* specifies type of VPN protocol */ +#endif +#if (WINVER >= 0x501) + DWORD dwfOptions2; + DWORD dwfOptions3; + CHAR szDnsSuffix[RAS_MaxDnsSuffix]; + DWORD dwTcpWindowSize; + CHAR szPrerequisitePbk[MAX_PATH]; + CHAR szPrerequisiteEntry[RAS_MaxEntryName + 1]; + DWORD dwRedialCount; + DWORD dwRedialPause; +#endif +} RASENTRYA, *LPRASENTRYA; + +typedef struct tagRASENTRYW { + DWORD dwSize; + DWORD dwfOptions; + + /* Location */ + + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR szAreaCode[ RAS_MaxAreaCode + 1 ]; + WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ]; + DWORD dwAlternateOffset; + + /* IP related stuff */ + + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + + /* Framing (for ppp/isdn etc...) */ + + 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 ]; + + /* x25 only */ + + 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; + +#if (WINVER >= 0x401) + + /* Multilink and BAP */ + + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + + /* Idle time out */ + DWORD dwIdleDisconnectSeconds; + +#endif +#if (WINVER >= 0x500) + + DWORD dwType; /* entry type */ + DWORD dwEncryptionType; /* type of encryption to use */ + DWORD dwCustomAuthKey; /* authentication key for EAP */ + GUID guidId; /* guid that represents the phone-book entry */ + WCHAR szCustomDialDll[MAX_PATH]; /* DLL for custom dialing */ + DWORD dwVpnStrategy; /* specifies type of VPN protocol */ +#endif +#if (WINVER >= 0x501) + DWORD dwfOptions2; + DWORD dwfOptions3; + WCHAR szDnsSuffix[RAS_MaxDnsSuffix]; + DWORD dwTcpWindowSize; + WCHAR szPrerequisitePbk[MAX_PATH]; + WCHAR szPrerequisiteEntry[RAS_MaxEntryName + 1]; + DWORD dwRedialCount; + DWORD dwRedialPause; +#endif +} RASENTRYW, *LPRASENTRYW; + +DECL_WINELIB_TYPE_AW(RASENTRY) + DWORD WINAPI RasEnumConnectionsA(LPRASCONNA,LPDWORD,LPDWORD); DWORD WINAPI RasEnumConnectionsW(LPRASCONNW,LPDWORD,LPDWORD); @@ -111,6 +325,22 @@ DWORD WINAPI RasGetEntryDialParamsW(LPCWSTR,LPRASDIALPARAMSW,LPBOOL); DWORD WINAPI RasHangUpA(HRASCONN); DWORD WINAPI RasHangUpW(HRASCONN); #define RasHangUp WINELIB_NAME_AW(RasHangUp) +DWORD WINAPI RasValidateEntryNameA(LPCSTR lpszPhonebook, LPCSTR lpszEntry); +DWORD WINAPI RasValidateEntryNameW(LPCWSTR lpszPhonebook, LPCWSTR lpszEntry); +#define RasValidateEntryName WINELIB_NAME_AW(RasValidateEntryName) +DWORD WINAPI RasSetEntryPropertiesA(LPCSTR lpszPhonebook, LPCSTR lpszEntry, + LPRASENTRYA lpRasEntry, DWORD dwEntryInfoSize, LPBYTE lpbDeviceInfo, + DWORD dwDeviceInfoSize); +DWORD WINAPI RasSetEntryPropertiesW(LPCWSTR lpszPhonebook, LPCWSTR lpszEntry, + LPRASENTRYW lpRasEntry, DWORD dwEntryInfoSize, LPBYTE lpbDeviceInfo, + DWORD dwDeviceInfoSize); +#define RasSetEntryProperties WINELIB_NAME_AW(RasSetEntryProperties) +DWORD WINAPI RasGetAutodialParamA(DWORD dwKey, LPVOID lpvValue, LPDWORD lpdwcbValue); +DWORD WINAPI RasGetAutodialParamW(DWORD dwKey, LPVOID lpvValue, LPDWORD lpdwcbValue); +#define RasGetAutodialParam WINELIB_NAME_AW(RasGetAutodialParam) +DWORD WINAPI RasSetAutodialEnableA(DWORD dwDialingLocation, BOOL fEnabled); +DWORD WINAPI RasSetAutodialEnableW(DWORD dwDialingLocation, BOOL fEnabled); +#define RasSetAutodialEnable WINELIB_NAME_AW(RasSetAutodialEnable) #include "poppack.h" #ifdef __cplusplus