自适应网卡有100Mbps/10Mbps...如何获知当前网卡的工作速率,我用GetIfEntry,但是拔掉网线后,此时已经断开连接,但还可以通过_MIB_IFROW结构下的dwSpeed得到速率,难道自适应网卡不是根据流量,协商选定当前速率?怎么在断开情况下还能获得当前工作速率?
另:当前网卡的工作模式,全双工还是半双工如何获取?

解决方案 »

  1.   

    GetIfEntry()是取一个特定Index接口的信息。  
            GetIfTable()     是取本机所有接口的信息。  
            调用了后者当然不用再调用前者了。  
            一般地,不考虑速度,调用这种需要未知缓冲区大小的函数是这样作的:  
          例如:  
              PMIB_IFTABLE     pIf                   =   NULL;  
              DWORD                   dwIfBufSize   =   0;  
              BOOL                     bRet;  
               
              bRet   =   ::GetIfTable(   pIf,   &dwIfBufSize,   TRUE   );  
              if   (   bRet   ==   ERROR_INSUFFICIENT_BUFFER   )  
              {  
                      if(   pIf   !=   NULL   )  
                              delete[]   pIf;  
                      pIf   =   (   MIB_IFTABLE   *   )   new   char[dwIfBufSize];  
                      bRet   =   ::GetIfTable(   pIf,   &dwIfBufSize,   TRUE   );  
              }  
                      .........................     
      1.  rfc1213中这样解释IfSpeed:  
      "An   estimate   of   the   interface's   current   bandwidth   in   bits   per   second.     For   interfaces   which   do   not   vary   in   bandwidth   or   for   those   where   no   accurate   estimation   can   be   made,   this   object   should   contain  
        the   nominal   bandwidth."  
       
          所以说明该接口的速率(带宽)是恒定值,标称带宽2Gbps.(光纤?)  
       
       
      5.   对于接口自己本身来说,当前速率是无意的。只有一个统计平均值。如bits   per   second。   你要想显示“当前速率”,可以每1秒或几秒取一次in/out   octets的值,   两次的差值除以时间间隔得出。注意,如果后一次取得的值小于前一次,说明dword已经超出表示范围过,得把后一次作一下处理再用。  
      

  2.   

    并不是网卡的实时速率,是获取自适应网卡当前的工作速率(100Mbps/10Mbps...)
      

  3.   

    能否根据当前接口,或者说某一段时间内的流量,获知自适应网卡当前是处于100Mbps还是10Mbps的速率?
    MIB_IFROW结构下的dwSpeed可以得到速率,但是网络断开情况下,仍然可以获取,难道自适应网卡不是根据服务器/对方的网络状况,协商选定当前速率?都是取100Mbps作为自适应网卡的恒定速率?
      

  4.   

    自适应网卡,指网卡的主控IC能自动适当LAN的速率。
    既然是由IC控制,那驱动程序没有提供这个查询功能(一般是ioctl()函数进行IC的寄存器操作。),那我们无法得知他的自适的结果是什么,即时10 mbps, 100 mbps, 或者1000 mbps.
      

  5.   

    本帖最后由 wenxy1 于 2009-05-26 11:36:18 编辑