在vb中使用Iphlpapi.dll获取网络信息 第二章 第十二节 获得本机系统网络接口适配器的列表

来源:互联网 发布:二次元人设软件 编辑:程序博客网 时间:2024/06/06 18:01

※==================================================================
※本连载文章说明:
※1、连载首发于《软件报》(http://www.sweek.com)2006年21期(2006年5月22日);
※2、此次网上连载采用的是原稿件结构,内容与《软件报》发表略有不同;
※3、谢绝除《软件报》及其相关刊物之外的传统媒体部分或全部转载;
※4、谢绝任何收费媒体、网络转载;
※5、原作者:uruseibest ,blog:http://blog.csdn.net/uruseibest;
※6、如有其它疑问,请联系作者;
※7、如有转载,必须连同本说明一并发表,否则将追究转载者责任。
※======================================================================

第十二节 获得本机系统网络接口适配器的列表

1、函数:

Private Declare Function GetInterfaceInfo Lib "iphlpapi.dll" (pIfTable As IP_INTERFACE_INFO, dwOutBufLen As Long) As Long

参数说明:

pIfTable: [输入] 指向一个指定一个包含了适配器列表的IP_INTERFACE_INFO类型的缓存。这个缓存应当由调用者分配。

dwOutBufLen:[输出] 指向一个DWORD变量。如果pIfTable参数为空,或者缓存不够大,这个参数返回必须的大小。

返回值:成功,返回0;失败,返回错误代码。

 

2、使用到的类型:

①IP_INTERFACE_INFO 包含本机系统网络适配器列表

Public Type IP_INTERFACE_INFO

    NumAdapters As Long             '适配器编号

    Adapter(1) As IP_ADAPTER_INDEX_MAP     'IP_ADAPTER_INDEX_MAP类型的数组

End Type

 

②IP_ADAPTER_INDEX_MAP 存储和适配器名称关联的接口序号

Public Type IP_ADAPTER_INDEX_MAP

    Index As Long       '和适配器关联的接口序号

Name As String * MAX_ADAPTER_NAME_LENGTH  

'指向一个包含了适配器名称的Unicode字符串

End Type

 

3、使用到的常量:

Const MAX_ADAPTER_NAME_LENGTH = 260

 

4、主要代码分析:

①定义一个IP_INTERFACE_INFO类型的变量,对函数GetInterfaceInfo进行两次调用,第一次调用获得参数dwOutBufLen的实际大小;第二次调用获取pIfTable数据:

Dim pIfTable As IP_INTERFACE_INFO

r = GetInterfaceInfo(pIfTable, dwOutBufLen)

r = GetInterfaceInfo(pIfTable, dwOutBufLen)

②调用For…Next循环,获取每个网络接口适配器的信息,使用StrConv函数对获得的Unicode适配器名称进行转换:

For i = 0 To pIfTable.NumAdapters - 1

    Print pIfTable.Adapter(i).Index

    Print StrConv(pIfTable.Adapter(i).Name, vbFromUnicode)

Next

5、运行时截图:

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/UruseiBest/archive/2006/12/20/1450381.aspx