解决拨号连网导致的不能正常关机的问题

来源:互联网 发布:局域网禁止p2p软件 编辑:程序博客网 时间:2024/05/16 18:44

         前几天老大说我们的机子拨号连网后,按关机键,机子会死掉,马上要出货了,必须解决。

         检查发现,只要新建了拨号连接,打开界面后关机也会导致死机。其实系统就启动了一个RNAAPP的进程,结束了这个进程,怎么关机都可以。由此得知这个进程才是根源,代码估计没时间看了,因为看了一天也没看出什么来。只能从偏方着手,枚举rnaapp那个进程后,再结束他应该可行,可是并不然。一是驱动中实现这段代码,速度奇慢,并且不好引用TOOLHELP的库。

         上午总算找到一个好方法了,那就是枚举出所有的网络连接,再把它们断掉,这个方法速度快,比平时关机延时一秒钟,客户应该可以接受的。

 

代码如下:

     LPRASCONN pRasConn;
     DWORD      cb;
     DWORD Connections;
     DWORD      dwRetVal = 0;   
     DWORD dwRetEnable = 0;
     BYTE RasConnData[20*sizeof(RASCONN)];
     TCHAR lpszEntryName[256] = {0};
     pRasConn = (LPRASCONN) RasConnData;
     pRasConn->dwSize = sizeof(RASCONN);
     Connections = 0;
     cb = 20 * sizeof (RASCONN);;
     dwRetVal =RasEnumConnections(pRasConn, &cb, &Connections);
     if(dwRetVal != 0)
     {
      RETAILMSG(1, (TEXT("[AUTODIAL] RasEnumConnections dwRetVal = %d!/r/n"),dwRetVal)); 
     }
     for (int i=0;i<(int)Connections;i++)
     {
      RasHangUp (pRasConn[i].hrasconn);
     }

 

代码是从别处拷来的,谢谢原作者

原创粉丝点击