hur.cn - 华软网

 热门搜索

如何理解下面这50行代码,谢一辈子, MIB_IFTABLE 是什么,?C++有相应变量吗

  作者:未知    来源:网络    更新时间:2010/7/5
int GetTraffic(void)
{
 
 DWORD dwSize = 0;
 DWORD dwRetVal = 0;

 int i = 0;
 int j = 0;

 /* variables used for GetIfTable and GetIfEntry */
 MIB_IFTABLE *pIfTable;
 MIB_IFROW *pIfRow;

 // Allocate memory for our pointers.
 pIfTable = (MIB_IFTABLE *) MALLOC(sizeof (MIB_IFTABLE));
 if (pIfTable == NULL) 
 {
  return 0;
 }
 // Make an initial call to GetIfTable to get the
 // necessary size into dwSize
 dwSize = sizeof (MIB_IFTABLE);
 if (GetIfTable(pIfTable, &dwSize, FALSE) == ERROR_INSUFFICIENT_BUFFER) 
 {
  FREE(pIfTable);
  pIfTable = (MIB_IFTABLE *) MALLOC(dwSize);
  if (pIfTable == NULL) 
  {
   return 0;
  }
 }

 // Make a second call to GetIfTable to get the actual
 // data we want.
 if ((dwRetVal = GetIfTable(pIfTable, &dwSize, FALSE)) == NO_ERROR) 
 {
  for (i = 0; i < (int) pIfTable->dwNumEntries; i++) 
  {
   pIfRow = (MIB_IFROW *) & pIfTable->table[i];

   if ((pIfRow->dwType == IF_TYPE_ETHERNET_CSMACD) || (pIfRow->dwType == IF_TYPE_PPP))//以太网
   {
    m_lConnection = TRUE;
    //////////////////////////////////////////////////////////////////////////
    if (strstr(Descr,"cmwap") || strstr(Descr,"cmnet"))//接入点是cmwap
    {
     {
      sprintf(m_sNowTraffic,"%1.2f",pIfRow->dwInOctets / 1024.0);//现在的流量
      m_bReturn = TRUE;
     }
    }
    if (pIfTable != NULL) 
    {
     FREE(pIfTable);
     pIfTable = NULL;
    }
   }
  }
 }
 else
 {
  if (pIfTable != NULL) 
  {
   FREE(pIfTable);
   pIfTable = NULL;
  }  
  return 0;
  // Here you can use FormatMessage to find out why 
  // it failed.
 }
 if (pIfTable != NULL) 
 {
  FREE(pIfTable);
  pIfTable = NULL;
 }
}

---华软 网友回答---
看到代码就头疼,帮你顶一下
---华软网友回复---
根据它的字面去看懂做什么就好了,不用一行一行的看,当然如果需要修改其中代码的话,就要仔细看了。

The MIB_IFTABLE structure contains a table of interface entries.


typedef struct _MIB_IFTABLE {  DWORD dwNumEntries;  MIB_IFROW table[ANY_SIZE];
} MIB_IFTABLE,  *PMIB_IFTABLE;
Members
dwNumEntries 
The number of interface entries in the array.

table 
An array of MIB_IFROW structures containing interface entries.


---华软网友回复---
直接去看MSDN
---华软网友回复---
这个是可能是自己定义的数据类型宏,你能够在工程的资料中搜索一下有没有这个定义,如果没有再去MSDN中搜索一下就好了。
---华软网友回复---
引用 2 楼 nola 的回复:
根据它的字面去看懂做什么就好了,不用一行一行的看,当然如果需要修改其中代码的话,就要仔细看了。

The MIB_IFTABLE structure contains a table of interface entries.


typedef struct _MIB_IFTABLE { DWORD dwNumEntries; MIB_IFROW table[ANY_SIZE];
}……

哈哈看来不是~
---华软网友回复---
直接右键点击相关类型选择
go to definition
---华软网友回复---
引用 6 楼 goalcn 的回复:
直接右键点击相关类型选择
go to definition

那段代码怎么理解啊 
---华软网友回复---
typedef struct _MIB_IFROW
{
    WCHAR   wszName[MAX_INTERFACE_NAME_LEN];
    DWORD    dwIndex;
    DWORD    dwType;
    DWORD    dwMtu;
    DWORD    dwSpeed;
    DWORD    dwPhysAddrLen;
    BYTE    bPhysAddr[MAXLEN_PHYSADDR];
    DWORD    dwAdminStatus;
    DWORD    dwOperStatus;
    DWORD    dwLastChange;
    DWORD    dwInOctets;
    DWORD    dwInUcastPkts;
    DWORD    dwInNUcastPkts;
    DWORD    dwInDiscards;
    DWORD    dwInErrors;
    DWORD    dwInUnknownProtos;
    DWORD    dwOutOctets;
    DWORD    dwOutUcastPkts;
    DWORD    dwOutNUcastPkts;
    DWORD    dwOutDiscards;
    DWORD    dwOutErrors;
    DWORD    dwOutQLen;
    DWORD    dwDescrLen;
    BYTE    bDescr[MAXLEN_IFDESCR];
} MIB_IFROW,*PMIB_IFROW;

typedef struct _MIB_IFTABLE
{
    DWORD     dwNumEntries;
    MIB_IFROW table[ANY_SIZE];
} MIB_IFTABLE, *PMIB_IFTABLE;
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。