如何编程实现检测网线是否被拔下

可利用SDK   API:GetAdaptersInfo以及GetIfEntry实现。  
        GetAdaptersInfo返回系统中的所有网卡信息。  
        GetIfEntry则返回制定网口的速率、状态等信息。  
        如果觉得将相关数据结构改造到VB下很痛苦的话,可编写一个短小的DLL完成网口检测工作,并仅返回检测结果即可。  
        VC代码:  
        DWORD   dwOutBufLen=0;  
         
          PIP_ADAPTER_INFO   pAdapterInfo=NULL,pAdapter=NULL;  
         
          MIB_IFROW   zSNMP;  
         
          char   sTemp[20];  
         
          int   iReturn;          
         
          iReturn=GetAdaptersInfo(pAdapterInfo,&dwOutBufLen);  
         
          if(iReturn!=ERROR_BUFFER_OVERFLOW)  
         
          {  
         
          return   0;  
         
          }  
                   
          pAdapterInfo   =(PIP_ADAPTER_INFO)   HeapAlloc(GetProcessHeap(),   0,   dwOutBufLen);  
         
          iReturn=GetAdaptersInfo(pAdapterInfo,&dwOutBufLen);  
         
          if(iReturn!=ERROR_SUCCESS)  
         
          {  
         
          HeapFree(GetProcessHeap(),   0,   pAdapterInfo);  
         
          return   0;  
         
          }  
         
          pAdapter=pAdapterInfo;  
         
         
         
          //find   if   there   is   ppp   adapter  
         
          while(pAdapter!=NULL   )  
         
          {  
         
          zSNMP.dwIndex   =   pAdapter-> Index;  
         
          iReturn=GetIfEntry(&zSNMP);  
         
          if(iReturn!=NO_ERROR)  
         
          return   0;  
         
         
         
          m_iIfSpeed=zSNMP.dwSpeed/(1000*1000);  
         
          m_iIfAdminStatus=zSNMP.dwAdminStatus;  
         
          m_iIfOperStatus=zSNMP.dwOperStatus;  
         
          …  
         
          pAdapter=pAdapter-> Next;  
         
          }

posted on 2010-12-17 11:26 wrh 阅读(989) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

常用链接

留言簿(19)

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜