前几天老大说我们的机子拨号连网后,按关机键,机子会死掉,马上要出货了,必须解决。
检查发现,只要新建了拨号连接,打开界面后关机也会导致死机。其实系统就启动了一个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);
}
代码是从别处拷来的,谢谢原作者