Rasgetconnectstatus и .net

  • Автор темы zilberman
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zilberman

#1
Столкнулся с проблемой: вызываю RasGetConnectStatus(), а эта функция возвращает 632 ("An incorrect structure size was detected"). Код следующий:

public class ConstProvider
{
public const int RAS_MaxEntryName = 256;
public const int RAS_MaxDeviceType = 16;
public const int RAS_MaxDeviceName = 128;
public const int MAX_PATH = 260;
public const int RAS_MaxPhoneNumber = 128;
public const int RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;
public const int UNLEN = 256;
public const int PWLEN = 256;
public const int DNLEN = 15;
public const int INFINITE = -1;
}

public class RAS
{
[DllImport("rasapi32.dll")]
public static extern uint RasGetConnectStatus(
[In]IntPtr hrasconn,
[In, Out]ref RASCONNSTATUS lprasconnstatus
);

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Auto)]
public struct RASCONNSTATUS
{
public int dwSize;
public int rasconnstate;
public int dwError;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = ConstProvider.RAS_MaxDeviceType + 1)]
public string szDeviceType;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = ConstProvider.RAS_MaxDeviceName + 1)]
public string szDeviceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = ConstProvider.RAS_MaxPhoneNumber + 1)]
public string szPhoneNumber;
};
}

Далее: RAS.RASCONNSTATUS ConnStatus = new RAS.RASCONNSTATUS();
ConnStatus.dwSize = Marshal.SizeOf(typeof(RAS.RASCONNSTATUS));
nRet = RAS.RasGetConnectStatus(hRasConn, ref ConnStatus);
В чем проблема?
 
Статус
Закрыто для дальнейших ответов.