我想编写一个程序,完成的功能是首先自动获取当前激活的拨号连接,然后采用程序的方法关闭它。
我首先调用的是RasEnumConnection(),但是该函数的返回值总是为632,报告错误原因为:检测到一个不正确的结构大小,我的程序如下,请各位高人指点迷津。多谢!多谢!//我的程序都是从MSDN中复制而来,已经可以顺利编译调试,但就是返回出错。LPRASCONN lpRasConn;
lpRasConn = (LPRASCONN)new char[sizeof(RASCONN)];
if (NULL==lpRasConn) return;
lpRasConn->dwSize = sizeof(RASCONN);DWORD nRet=0;
DWORD lpcb= sizeof(RASCONN);
DWORD lpcConnections = 0;
nRet = RasEnumConnections(lpRasConn, &lpcb, &lpcConnections);if (nRet != 0)
{
    TRACE("\nRasEnumConnections failed: Error = %d\n", nRet);
}
else
{
    printf("The following RAS connections are currently active\n\n");
}

char  szBuf[256] = "";
if (nRet)
{//出错处理
  RasGetErrorString((UINT)nRet, (LPSTR)szBuf, 256);
  TRACE(CString("Internal error ") + CString(szBuf) + "\n");
}

解决方案 »

  1.   

    我把你的代码贴过来编译、运行都很正常,我是WIN2000系统,不知你的WINVER是否有设置
      

  2.   

    编译的版本和你的机器上动态库版本不一致加上_WIN32_WINNT 0x0500或0x0401试试
      

  3.   

    win2k 编译运行是可以的,但是RasEnumConnections()返回的值总是632(MSDN上的解释是返回一个不正确的结构大小)
    加上_WIN32_WINNT 也还是不行
      

  4.   

    造成这种问题的原因是使用了不正确的ras.h,所以编译器会报这个错,你必须保证正确的编译顺序,最好是更新platform sdk。
      

  5.   

    RASCONN RasConn[16]={0};
    DWORD nConnections=0;
    DWORD cb=sizeof(RasConn);RasConn[0].dwSize=sizeof(RASCONN);
    ret=RasEnumConnections(RasConn,&cb,&m_nConnections);
      

  6.   

    请问WINVER该如何设置呢?是不是不同的系统采用不同的数值啊?请明确答复,谢谢!