diff --git a/dlls/rasapi32/rasapi.c b/dlls/rasapi32/rasapi.c
index 2db85a5c84bcfb4eb39ebd9ba864083f4fe9bfc8..994669fc6c11170f8f6ca0020c9565ff3170d5c0 100644
--- a/dlls/rasapi32/rasapi.c
+++ b/dlls/rasapi32/rasapi.c
@@ -22,8 +22,8 @@ DWORD WINAPI RasEnumConnectionsA( LPRASCONNA rca, LPDWORD x, LPDWORD y) {
 /**************************************************************************
  *                 RasEnumEntriesA		        	[RASAPI32.546]
  */
-DWORD WINAPI RasEnumEntriesA( LPSTR Reserved, LPSTR lpszPhoneBook,
-        LPRASENTRYNAME lpRasEntryName, 
+DWORD WINAPI RasEnumEntriesA( LPCSTR Reserved, LPCSTR lpszPhoneBook,
+        LPRASENTRYNAMEA lpRasEntryName, 
         LPDWORD lpcb, LPDWORD lpcEntries) 
 {
 	FIXME("(%p,%s,%p,%p,%p),stub!\n",Reserved,debugstr_a(lpszPhoneBook),
@@ -35,8 +35,8 @@ DWORD WINAPI RasEnumEntriesA( LPSTR Reserved, LPSTR lpszPhoneBook,
 /**************************************************************************
  *                 RasGetEntryDialParamsA			[RASAPI32.550]
  */
-DWORD WINAPI RasGetEntryDialParamsA( LPSTR lpszPhoneBook,
-        LPRASDIALPARAMS lpRasDialParams,
+DWORD WINAPI RasGetEntryDialParamsA( LPCSTR lpszPhoneBook,
+        LPRASDIALPARAMSA lpRasDialParams,
         LPBOOL lpfPassword) 
 {
 	FIXME("(%s,%p,%p),stub!\n",debugstr_a(lpszPhoneBook),
diff --git a/include/ras.h b/include/ras.h
index 428c2109fe9859af61d40f49bffd00f271c6f811..c2edf74983eb1b4e6fbebfb1497616a2d4681603 100644
--- a/include/ras.h
+++ b/include/ras.h
@@ -4,22 +4,68 @@
 #include "windef.h"
 #include "lmcons.h"
 
-#define RAS_MaxEntryName	256
-#define RAS_MaxPhoneNumber  128
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "pshpack4.h"
+
 #define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
+#define RAS_MaxDeviceName     128
+#define RAS_MaxDeviceType     16
+#define RAS_MaxEntryName      256
+#define RAS_MaxPhoneNumber    128
+
+DECLARE_HANDLE(HRASCONN);
 
 typedef struct tagRASCONNA {
-	DWORD		dwSize;
-	HRASCONN	hRasConn;
-	CHAR		szEntryName[RAS_MaxEntryName+1];
+    DWORD    dwSize;
+    HRASCONN hRasConn;
+    CHAR     szEntryName[ RAS_MaxEntryName + 1 ];
+    CHAR     szDeviceType[ RAS_MaxDeviceType + 1 ];
+    CHAR     szDeviceName[ RAS_MaxDeviceName + 1 ];
+    CHAR     szPhonebook[ MAX_PATH ];
+    DWORD    dwSubEntry;
 } RASCONNA,*LPRASCONNA;
 
-typedef struct tagRASENTRYNAME {
+typedef struct tagRASCONNW {
+    DWORD    dwSize;
+    HRASCONN hRasConn;
+    WCHAR    szEntryName[ RAS_MaxEntryName + 1 ];
+    WCHAR    szDeviceType[ RAS_MaxDeviceType + 1 ];
+    WCHAR    szDeviceName[ RAS_MaxDeviceName + 1 ];
+    WCHAR    szPhonebook[ MAX_PATH ];
+    DWORD    dwSubEntry;
+} RASCONNW,*LPRASCONNW;
+
+DECL_WINELIB_TYPE_AW(RASCONN)
+DECL_WINELIB_TYPE_AW(LPRASCONN)
+
+typedef struct tagRASENTRYNAMEA {
     DWORD dwSize;
     CHAR  szEntryName[ RAS_MaxEntryName + 1 ];
-} RASENTRYNAME, *LPRASENTRYNAME;
+} RASENTRYNAMEA, *LPRASENTRYNAMEA;
 
-typedef struct tagRASDIALPARAMS {
+typedef struct tagRASENTRYNAMEW {
+    DWORD dwSize;
+    WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
+} RASENTRYNAMEW, *LPRASENTRYNAMEW;
+
+DECL_WINELIB_TYPE_AW(RASENTRYNAME)
+DECL_WINELIB_TYPE_AW(LPRASENTRYNAME)
+
+typedef struct tagRASDIALPARAMSA {
+    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 ];
+    DWORD dwSubEntry;
+    DWORD dwCallbackId;
+} RASDIALPARAMSA, *LPRASDIALPARAMSA;
+
+typedef struct tagRASDIALPARAMSW {
     DWORD dwSize;
     WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
     WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
@@ -29,16 +75,28 @@ typedef struct tagRASDIALPARAMS {
     WCHAR szDomain[ DNLEN + 1 ];
     DWORD dwSubEntry;
     DWORD dwCallbackId;
-} RASDIALPARAMS, *LPRASDIALPARAMS;
+} RASDIALPARAMSW, *LPRASDIALPARAMSW;
+
+DECL_WINELIB_TYPE_AW(RASDIALPARAMS)
+DECL_WINELIB_TYPE_AW(LPRASDIALPARAMS)
 
 
-DWORD WINAPI RasEnumConnectionsA( LPRASCONNA rc, LPDWORD x, LPDWORD y);
-DWORD WINAPI RasEnumEntriesA( LPSTR Reserved, LPSTR lpszPhoneBook,
-        LPRASENTRYNAME lpRasEntryName, 
-        LPDWORD lpcb, LPDWORD lpcEntries); 
-DWORD WINAPI RasGetEntryDialParamsA( LPSTR lpszPhoneBook,
-        LPRASDIALPARAMS lpRasDialParams,
-        LPBOOL lpfPassword); 
+DWORD WINAPI RasEnumConnectionsA(LPRASCONNA,LPDWORD,LPDWORD);
+DWORD WINAPI RasEnumConnectionsW(LPRASCONNW,LPDWORD,LPDWORD);
+#define      RasEnumConnections WINELIB_NAME_AW(RasEnumConnections)
+DWORD WINAPI RasEnumEntriesA(LPCSTR,LPCSTR,LPRASENTRYNAMEA,LPDWORD,LPDWORD); 
+DWORD WINAPI RasEnumEntriesW(LPCWSTR,LPCWSTR,LPRASENTRYNAMEW,LPDWORD,LPDWORD); 
+#define      RasEnumEntries WINELIB_NAME_AW(RasEnumEntries)
+DWORD WINAPI RasGetEntryDialParamsA(LPCSTR,LPRASDIALPARAMSA,LPBOOL); 
+DWORD WINAPI RasGetEntryDialParamsW(LPCWSTR,LPRASDIALPARAMSW,LPBOOL); 
+#define      RasGetEntryDialParams WINELIB_NAME_AW(RasGetEntryDialParams)
+DWORD WINAPI RasHangUpA(HRASCONN);
+DWORD WINAPI RasHangUpW(HRASCONN);
+#define      RasHangUp WINELIB_NAME_AW(RasHangUp)
 
+#include "poppack.h"
+#ifdef __cplusplus
+}
+#endif
 
 #endif
diff --git a/include/windef.h b/include/windef.h
index 16d795d6ecba4b384b9e25787298c965a70332bf..430d1da80c2d1ca15316f33c71694d1ce7c6fde1 100644
--- a/include/windef.h
+++ b/include/windef.h
@@ -98,7 +98,6 @@ DECLARE_HANDLE(HWINSTA);
 DECLARE_HANDLE(HDESK);
 DECLARE_HANDLE(HWND);
 DECLARE_HANDLE(HKL);
-DECLARE_HANDLE(HRASCONN);
 
 /* Handle types that must remain interchangeable even with strict on */