vb用Iphlpapi.dll获取网络信息教程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

vb用Iphlpapi.dll获取网络信息

第一章前言

Windows 98以上的操作系统在系统目录下都带有iphlpapi.dll这个动态链接库文件,它可以帮助程序员方便地获取计算机网络信息。对于C程序员来说,只要有iphlpapi的头文件,调用iphlpapi.dll是很简单的事,但是对于Vb程序员则是比较困难的问题。本文将就Vb中调用iphlpapi.dll来介绍iphlpapi的使用。

第二章IPHLPAPI 的主要函数

本章将根据iphlpapi.dll提供函数的功能来分别讲解iphlpapi.dll的主要函数。编程时,我们可以调用这些函数迅速获得本机大部分网络信息。

第一节获取本机网络适配器的信息

1、函数:

Private Declare Function GetAdaptersInfo Lib "iphlpapi.dll" ( IpAdapterInfo As Any, pOutBufLen As Long) As Long

参数说明:

pAdapterInfo:[输出] 指向一个IP_ADAPTER_INFO类型的连接表;

pOutBufLen:[输入] 指定pAdapterInfo参数的大小,如果指定大小不足,GetAdaptersInfo 将此参数置为所需大小, 并返回一个ERROR_BUFFER_OVERFLOW错误代码。

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

备注:此函数不能获得回环(Loopback)适配器的信息

2、使用到的类型:

①IP_ADAPTER_INFO类型:包含本机网络适配器信息。

Type IP_ADAPTER_INFO

Next As Long ‘在适配器列表中指向下一个适配器

ComboIndex As Long ‘保留未用

AdapterName As String * MAX_ADAPTER_NAME_LENGTH ‘适配器名

Description As String * MAX_ADAPTER_DESCRIPTION_LENGTH ‘对网卡的描述,

‘实际上好象是驱动程序的名字

AddressLength As Long ‘适配器物理地址的长度

Address(MAX_ADAPTER_ADDRESS_LENGTH - 1) As Byte

‘物理地址,每个字节存放一个十六进制的数值Index As Long ‘适配器索引号

Type As Long ‘适配器类型,包含以下类型的适配器(见下表):

常量名称值说明

MIB_IF_TYPE_ETHERNET 6 以太网适配器

MIB_IF_TYPE_TOKENRING 9 令牌环适配器

MIB_IF_TYPE_FDDI 15 光纤接口适配器

MIB_IF_TYPE_PPP 23 点到点协议适配器

MIB_IF_TYPE_LOOPBACK 24 回环(Loopback)适配器

MIB_IF_TYPE_SLIP 28 串行适配器

MIB_IF_TYPE_OTHER 其他值其他类型的适配器DhcpEnabled As Long ‘适配器是否启用了动态主机配置协议(DHCP)CurrentIpAddress As Long ‘保留(当前使用的IP地址?)

IpAddressList As IP_ADDR_STRING ‘绑定到此适配器的IP地址链表GatewayList As IP_ADDR_STRING ‘默认网关地址链表

DhcpServer As IP_ADDR_STRING ‘DHCP服务器地址,DhcpEnabled=TRUE时有效HaveWins As Byte ‘是否启用WINS(Windows Internet Name Service)PrimaryWinsServer As IP_ADDR_STRING ‘主WINS地址SecondaryWinsServer As IP_ADDR_STRING ‘辅WINS地址

LeaseObtained As Long ‘向DHCP服务器租用IP地址的时间,DhcpEnabled=TRUE时有效

LeaseExpires As Long ‘向DHCP服务器租用IP地址到期时间,DhcpEnabled=TRUE时有效

End Type

②IP_ADDR_STRING描述IP 地址链表的节点。

Type IP_ADDR_STRING

Next As Long ‘指向列表中下一个IP_ADDR_STRING类型。为空,则是最后一个地址

IpAddress As String * 16 ‘点式十进制字串表示Ip地址

IpMask As String * 16 ‘子网掩码

Context As Long ‘网络IP地址标识,符合AddIPAddress和DeleteIPAddress函数中的网‘接口关联参数。

End Type

3、使用到的常量:

Const MAX_ADAPTER_NAME_LENGTH = 260 //适配器名字长度

Const MAX_ADAPTER_ADDRESS_LENGTH = 8 //适配器物理地址长度

Const MAX_ADAPTER_DESCRIPTION_LENGTH = 132 //适配器描述长度

4、主要代码分析:

①调用函数GetAdaptersInfo,以及在调用中应该注意的问题:对函数GetAdaptersInfo进行两次调用,第一次调用获得参数pOutBufLen的实际大小;第二次调用获取IpAdapterInfo的数据。代码如下:

pOutBufLen = 0

error = GetAdaptersInfo(ByVal 0&, pOutBufLen)

ReDim AdapterInfoBuffer(pOutBufLen - 1)

error = GetAdaptersInfo(AdapterInfoBuffer(0), pOutBufLen)

②IpAdapterInfo中可能包含多个IP_ADAPTER_INFO类型,因此下一步使用copymemory

相关文档
最新文档