获取网卡信息
来源:互联网 发布:知世和小樱同人图 编辑:程序博客网 时间:2024/06/02 21:20
用api 函数 GetIfTable()
适用范围: windows98及以上操作系统
包含文件:iphlpapi.h
库文件: iphlpapi.lib
说明: GetIfTable()可以从操作系统维护的MIB库中读出本机各个接口的当前信息,如接口数目、类型、速率、物理地址、接收/发送字节数、错语字节数等等等等。
根据接口类型可以推断出接口的种类,如MIB_IF_TYPE_ETHERNET是指以太网口,MIB_IF_TYPE_TOKENRING是指令牌环网类型等等。而modem使用PPP协议接入网络,对应接口类型为MIB_IF_TYPE_PPP (值为23)。
在程序中你读出本机所有接口的信息后,可以根据接口类型推断出是否是指modem, 即MIB_IF_TYPE_PPP类型的接口即modem(注意,逻辑上这里可能存在一些小问题,不必细究),然后取相应接口速率即为你所想知道的拨号上网的连接速率。
以下是我写的一个小例子,示范getiftable()的用法,列举本机当前所有接口的类型及速率及索引号。
如有不周之处,请各位指出。
// GetIfTable.cpp
// A sample try to get the speed of a modem by using GetIfTable() func
#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>
#pragma comment ( lib, "iphlpapi.lib" )
int main( void )
{
MIB_IFTABLE *pIfTable = NULL;
ULONG dwSize = 0;
DWORD dwRet;
printf( "This program try to get the speed of a modem by using GetIfTable()/n" );
dwRet = GetIfTable( pIfTable, &dwSize, TRUE );
if ( dwRet == ERROR_INSUFFICIENT_BUFFER )
{
pIfTable = ( MIB_IFTABLE * ) new char[dwSize];
if ( pIfTable != NULL )
{
dwRet = GetIfTable( pIfTable, &dwSize, TRUE );
if ( dwRet == NO_ERROR )
{
printf( "dwNumEntries = %u/n", pIfTable->dwNumEntries );
for ( int i=0; i<pIfTable->dwNumEntries; i++ )
{
printf( "table[%1d].dwIndex = %u/n",
i,
(pIfTable->table[i]).dwIndex );
printf( " dwType = %u/n",
(pIfTable->table[i]).dwType );
printf( " dwSpeed = %u/n",
(pIfTable->table[i]).dwSpeed );
}
}
else
{
printf( "Some error occured!/n" );
}
}
else
{
printf( "Memory allocate failue/n" );
}
}
else
{
printf( "Some error occured!/n" );
}
return 0;
}
- 获取网卡信息
- 获取网卡信息
- 获取网卡相关信息
- VB6获取网卡信息
- 获取网卡信息 VC
- 获取网卡信息
- 获取网卡信息
- ioctl获取网卡信息
- 获取网卡信息
- 获取适配器网卡信息
- VC 获取网卡信息
- Linux 获取网卡信息
- Linux获取网卡信息
- 获取网卡驱动信息
- c# 获取网卡信息
- C#获取网卡信息
- 获取网卡信息
- linux获取网卡信息
- [C#3.0]新特性概览
- JDBC总结
- WCF安全操练(1)--X509证书
- 思维与存在 - 学习马哲时用Xmind整的思维导图
- BDS系统
- 获取网卡信息
- BREW设备系统架构
- Hibernate学习笔记:继承映射之每个子类一张表,使用辨别标志
- BREW SDK的组成
- BREW SDK的目录结构
- JDBC总结
- BREW环境
- brew真机测试
- 编译的过程