关闭gprs连接

typedef   struct   _CONNMGR_CONNECTIONINFO  
  {  
          DWORD   cbSize;               //   @field   Size   of   this   structure  
          DWORD   dwParams;           //   @field   Valid   parms,   set   of   CONNMGR_PARAM_*  
          DWORD   dwFlags;             //   @field   Connection   flags,   set   of   CONNMGR_FLAG_*  
          DWORD   dwPriority;       //   @field   Priority,   one   of   CONNMGR_PRIORITY_*  
          BOOL   bExclusive;         //   @field   Connection   is   exclusive,   see   comments  
          BOOL   bDisabled;           //   @field   Don't   actually   connect  
          GUID   guidDestNet;       //   @field   GUID   of   network   to   connect   to  
          HWND   hWnd;                     //   @field   hWnd   to   post   status   change   messages   to  
          UINT   uMsg;                     //   @field   Msg   to   use   when   posting   status   changes  
          LPARAM   lParam;             //   @field   lParam   to   use   when   posting   status   changes  
          ULONG   ulMaxCost;         //   @field   Max   acceptable   cost   of   connection  
          ULONG   ulMinRcvBw;       //   @field   Min   acceptable   receive   bandwidth   of   connection  
          ULONG   ulMaxConnLatency;   //   @field   Max   acceptable   connect   latency  
  }   CONNMGR_CONNECTIONINFO;  
   
  里面的bExclusive需要为TRUE

默认FALSE 是共享网络连接,设置为true后则为不共享,这样调用release时就会关闭连接了。

 

建立一个连接,不与其他应用共享就可以了.在应用退出时,会自动断开连接.

sConInfo.bExclusive = TRUE;
该默认值是FALSE,与其他连接共享一个线路.所以建立之后.应用退出.gprs不会断开.
把这个标志改为TRUE就可以了.

 

连接管理器是有自己的连接、断开策略的,使用连接管理器函数建立连接或断开连接并不一定就立刻生效,是否成功要看当前连接管理器的状态和其逻辑判断,微软 的文档上有一些介绍,可以参考,需要做大量试验来证明这些策略
对上面的问题,手动禁止掉比如cmnet连接,实际上注册表中有一项来表示某个APN是否是disable的,对disable掉的连接连接管理器是不会考虑连接使用的。
微软默认有四个meta-network,对应了四个GUID,默认使用internet那个,也可以自己增加新的meta-network,定义自己的连接规则和GUID,使用这个GUID就可以定制建立什么连接了。
所 以说ConnMgrReleaseConnection函数是有作用的,但是不一定会立刻生效。比如你建立了连接,获得连接句柄,调用 ConnMgrReleaseConnection断开时没有其他应用在使用该连接,这时由该函数的参数来决定是否断开及断开的时间是多少。
在无任何应用使用连接的情况下,默认会使用注册表中的一个键值来决定连接保持时间。
如果ConnMgrReleaseConnection参数是0会立刻断开
如果是>1的一个数字表示断开需要的时间,具体察看SDK等相关文档

使用RAS相关函数断开是可以的,但是因为RAS会绕开连接管理器,所以微软不建议使用该函数,这样可能会影响到连接管理器的内部逻辑,造成状态混乱影响使用。
RAS断开的方法,枚举所有连接,然后一一断开,我试验过,完全可以,现在做程序时也一直作为保留的压箱底方法,因为连接管理器的函数不一定会立刻生效。

此外,断开连接的方法还可以是,停止创建连接的进程或线程。如果知道创建连接的是哪个线程,杀掉他,GPRS连接也会立刻断开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值