@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: TODO - a short description !!!!C# Signature: [DllImport("rasapi32.dll", SetLastError=true,CharSet=CharSet.Auto)] static extern int RasEnumDevices( IntPtr lpRasDevInfo, ref int lpcb, ref int lpcDevices); !!!!Tips & Tricks: This structure needs to be defined. [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] public class RASDEVINFO { public const int RAS_MAXDEVICETYPE = 16; public const int RAS_MAXDEVICENAME = 128; public int dwSize; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MAXDEVICETYPE + 1)] public string szDeviceType ; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MAXDEVICENAME + 1)] public string szDeviceName ; } !!!!Sample Code: private RASDEVINFO[] getDevices() { RASDEVINFO[] rdiRets = new RASDEVINFO[1]; int intRet=0; int lpcb = 0; int lpcDevices = 0; IntPtr devinfo = IntPtr.Zero; intRet = RasEnumDevices(IntPtr.Zero,ref lpcb,ref lpcDevices); devinfo = Marshal.AllocHGlobal(lpcb); rdiRets[0] = new RASDEVINFO(); rdiRets[0].dwSize = Marshal.SizeOf(typeof(RASDEVINFO)); Marshal.WriteInt32(devinfo, Marshal.SizeOf(rdiRets[0])); intRet = RasEnumDevices(devinfo,ref lpcb,ref lpcDevices); if( intRet == 0) { rdiRets = new RASDEVINFO[lpcDevices]; for(int i=0;i<lpcDevices;i++) { rdiRets[i] = new RASDEVINFO(); Marshal.PtrToStructure(devinfo, rdiRets[i]); devinfo = ( IntPtr )(devinfo.ToInt32()+ Marshal.SizeOf(rdiRets[i])); } } return rdiRets; } !!!!VB Signature: This Signature is needed. Private Declare Auto Function RasEnumDevices Lib "rasapi32.dll" (ByVal lpRasDevInfo As IntPtr, ByRef lpcb As Integer, ByRef lpcDevices As Integer) As Integer !!!!User-Defined Types: This Structure Is Needed. !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: None. !!!!Tips & Tricks: This structure needs to be defined. <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Public Class CRasDevInfo Public Const RAS_MAXDEVICETYPE As Integer = 16 Public Const RAS_MAXDEVICENAME As Integer = 128 Public dwSize As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MAXDEVICETYPE + 1)> _ Public szDeviceType As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=RAS_MAXDEVICENAME + 1)> _ Public szDeviceName As String End Class !!!!Sample Code: Public Shared Function GetDevices() As CRasDevInfo() Dim intRet As Integer Dim lpcb As Integer Dim lpcDevices As Integer Dim devinfo As IntPtr Dim rdiRet As CRasDevInfo() Dim i As Integer RasEnumDevices(IntPtr.Zero, lpcb, lpcDevices) devinfo = Marshal.AllocHGlobal(lpcb) ReDim rdiRet(0) rdiRet(0) = New CRasDevInfo() Marshal.WriteInt32(devinfo, Marshal.SizeOf(rdiRet(0))) intRet = RasEnumDevices(devinfo, lpcb, lpcDevices) If intRet = 0 Then ReDim rdiRet(lpcDevices - 1) For i = 0 To lpcDevices - 1 rdiRet(i) = New CRasDevInfo() Marshal.PtrToStructure(devinfo, rdiRet(i)) devinfo = IntPtr.op_Explicit(devinfo.ToInt32() + Marshal.SizeOf(rdiRet(i))) Next Marshal.FreeHGlobal(devinfo) Return rdiRet Else Return Nothing End If End Function !!!!Alternative Managed API: http://www.codeplex.com/DotRas Documentation: RasEnumDevices@msdn on MSDN
Edit rasapi32.RasEnumD...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.