Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


RAScreate and dial RAS connection on Win CE5.0

Hello Everyone,

I am trying to create and dial a RAS connection in Windows CE 5.0. I have a device running Win CE 5.0 and has GPRS modem on it. I want to "Make a connection" programatically and dial it.

I have followed all the instructions (i hope) given on the MSDN. However am not able to get through. I always get error "ERROR_INVALID_SIZE" (code 632) when I call RasGetEntryProperties().
I am now almost fed up. The size of RASENTRY i get is 3280

Following are the constants i Use (for Windows CE 5.0)
public const int RAS_MaxDeviceType = 16;
public const int RAS_MaxPhoneNumber = 128;
public const int RAS_MaxIpAddress = 15;
public const int RAS_MaxIpxAddress = 21;
public const int MAX_PATH = 260;//
public const int RAS_MaxEntryName = 20;
public const int RAS_MaxDeviceName = 32;
public const int RAS_MaxCallbackNumber = 48;

public const int RAS_MaxAreaCode = 10;
public const int RAS_MaxPadType = 32;
public const int RAS_MaxX25Address = 200;
public const int RAS_MaxFacilities = 200;
public const int RAS_MaxUserData = 200;
public const int RAS_MaxReplyMessage = 1024;
public const int RAS_MaxDnsSuffix = 256;
public const int UNLEN = 256;
public const int PWLEN = 256;
public const int DNLEN = 15;

Following is my RASENTRY structure

public struct RASENTRY
public uint dwSize;
public uint dwfOptions;
// Location/phone number.
public int dwCountryID;
public int dwCountryCode;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxAreaCode + 1)]
public string szAreaCode;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxPhoneNumber + 1)]
public string szLocalPhoneNumber;
public int dwAlternateOffset;
// PPP/Ip
public RASIPADDR ipaddr;
public RASIPADDR ipaddrDns;
public RASIPADDR ipaddrDnsAlt;
public RASIPADDR ipaddrWins;
public RASIPADDR ipaddrWinsAlt;
// Framing
public int dwFrameSize;
public int dwfNetProtocols;
public int dwFramingProtocol;
// Scripting
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.MAX_PATH)]
public string szScript;
// AutoDial
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.MAX_PATH)]
public string szAutodialDll;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.MAX_PATH)]
public string szAutodialFunc;
// Device
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxDeviceType + 1)]
public string szDeviceType;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxDeviceName + 1)]
public string szDeviceName;
// X.25
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxPadType + 1)]
public string szX25PadType;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxX25Address + 1)]
public string szX25Address;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxFacilities + 1)]
public string szX25Facilities;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxUserData + 1)]
public string szX25UserData;
public int dwChannels;
// Reserved
public int dwReserved1;
public int dwReserved2;


// EAP extension type to use
public int dwCustomAuthKey;


#if WINVER401

// Multilink and BAP
public int dwSubEntries;
public int dwDialMode;
public int dwDialExtraPercent;
public int dwDialExtraSampleSeconds;
public int dwHangUpExtraPercent;
public int dwHangUpExtraSampleSeconds;
// Idle time out
public int dwIdleDisconnectSeconds;


#if WINVER500

public EntryTypes dwType;
public EncryptionTypes dwEncryptionType;
public int dwCustomAuthKey;
public GUID guidId;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH)]
public string szCustomDialDll;
public int dwVpnStrategy;


#if WINVER501

public int dwfOptions2;
public int dwfOptions3;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxDnsSuffix + 1)]
public string szDnsSuffix;
public int dwTcpWindowSize;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = RASConstants.MAX_PATH)]
public string szPrerequisitePbk;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)RASConstants.RAS_MaxEntryName + 1)]
public string szPrerequisiteEntry;
public int dwRedialCount;
public int dwRedialPause;



1. I have used # define WINVERCE500.
2. Is the RASENTRY structure size 3280 correct for Win CE 5.0

3. The function I call is dwGetEntry = RasGetEntryProperties(null, "gprs",ref RasEntry, ref dwSize, null, ref temp);
dwGetEntry is always 632 no matter what I do.

4. I have followed the correct RASENTRY structure as mentioned on MSDN. Plese point me where am I going wrong.

Please giude me in the right direction.

Thank you



  • ana_are_mereana_are_mere Member Posts: 2

    Before call the function RasGetEntryProperties(), you must initialize the member dwSize of object RASENTRY with sizeof(RASENTRY).

    Good luck,
Sign In or Register to comment.