在vb中使用Iphlpapi.dll获取网络信息_第1页
在vb中使用Iphlpapi.dll获取网络信息_第2页
在vb中使用Iphlpapi.dll获取网络信息_第3页
在vb中使用Iphlpapi.dll获取网络信息_第4页
在vb中使用Iphlpapi.dll获取网络信息_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在vb中使用Iphlpapi.dll获取网络信息第一章 前言Windows 98以上的操作系统在系统目录下都带有iphlpapi.dll这个动态链接库文件,它可以帮助程序员方便地获取计算机网络信息。对于C程序员来说,只要有iphlpapi的头文件,调用iphlpapi.dll是很简单的事,但是对于Vb程序员则是比较困难的问题。本文将就Vb中调用iphlpapi.dll来介绍iphlpapi的使用。第二章 IPHLPAPI 的主要函数本章将根据iphlpapi.dll提供函数的功能来分别讲解iphlpapi.dll的主要函数。编程时,我们可以调用这些函数迅速获得本机大部分网络信息。第一节 获取本

2、机网络适配器的信息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;失败,返回错

3、误代码。备注:此函数不能获得回环(Loopback)适配器的信息2、使用到的类型:IP_ADAPTER_INFO类型:包含本机网络适配器信息。Type IP_ADAPTER_INFONext As Long 在适配器列表中指向下一个适配器ComboIndex As Long 保留未用AdapterName As String * MAX_ADAPTER_NAME_LENGTH 适配器名推荐精选Description As String * MAX_ADAPTER_DESCRIPTION_LENGTH 对网卡的描述,实际上好象是驱动程序的名字AddressLength As Long 适配器物理

4、地址的长度 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

5、_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 是否启用WI

6、NS(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_STRINGNe

7、xt As Long 指向列表中下一个IP_ADDR_STRING类型。为空,则是最后一个地址IpAddress As String * 16 点式十进制字串表示Ip地址IpMask As String * 16 子网掩码Context As Long 网络IP地址标识,符合AddIPAddress和DeleteIPAddress函数中的网接口关联参数。End Type3、使用到的常量:Const MAX_ADAPTER_NAME_LENGTH = 260 /适配器名字长度Const MAX_ADAPTER_ADDRESS_LENGTH = 8 /适配器物理地址长度Const MAX_ADAP

8、TER_DESCRIPTION_LENGTH = 132 /适配器描述长度4、主要代码分析:调用函数GetAdaptersInfo,以及在调用中应该注意的问题:对函数GetAdaptersInfo进行两次调用,第一次调用获得参数pOutBufLen的实际大小;第二次调用获取IpAdapterInfo的数据。代码如下:pOutBufLen = 0error = GetAdaptersInfo(ByVal 0&, pOutBufLen) 推荐精选ReDim AdapterInfoBuffer(pOutBufLen - 1)error = GetAdaptersInfo(AdapterInf

9、oBuffer(0), pOutBufLen) IpAdapterInfo中可能包含多个IP_ADAPTER_INFO类型,因此下一步使用copymemory函数将数据拷贝到IP_ADAPTER_INFO类型:CopyMemory AdapterInfo, AdapterInfoBuffer(0), pOutBufLen获得了首个IP_ADAPTER_INFO类型后,根据IP_ADAPTER_INFO类型中的Next成员并调用循环语句(DoLoop Until)来获得所有IP_ADAPTER_INFO类型:DopAdapt = AdapterInfo.NextIf pAdapt <>

10、; 0 ThenCopyMemory AdapterInfo, ByVal pAdapt, AdapterInfoSizeEnd IfLoop Until pAdapt = 0 由每次获得的IP_ADAPTER_INFO类型来获取网络适配器物理地址: PhysicalAddress = "" For i = 0 To AdapterInfo.AddressLength - 1 PhysicalAddress = PhysicalAddress & Hex(AdapterInfo.Address(i) If i < AdapterInfo.AddressLeng

11、th - 1 Then PhysicalAddress = PhysicalAddress & "-" End IfNext 对于属于IP_ADDR_STRING类型的IpAddressList、GatewayList、DhcpServer、PrimaryWinsServer、SecondaryWinsServer,同样要注意IP_ADDR_STRING中Next成员的使用:推荐精选 Do CopyMemory IP_ADDR_STRING, AdapterInfo.IpAddressList, LenB(IP_ADDR_STRING) Print "IP

12、 Address: " & IP_ADDR_STRING.IpAddress Print "Subnet Mask: " & IP_ADDR_STRING.IpMask pAddrStr = IP_ADDR_STRING.Next If pAddrStr <> 0 Then CopyMemory IP_ADDR_STRING.IpAddressList, ByVal pAddrStr, _ LenB(IP_ADDR_STRING.IpAddressList) End If Loop Until pAddrStr = 0 5、运行时截图:

13、第二节 获取MIB-II 接口表1、函数:Private Declare Function GetIfTable Lib "iphlpapi.dll" (ByRef pIfTable As MIB_IFTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long参数说明:pIfTable:输入成功的话指向一个MIB_IFTABLE类型的缓冲区。PdwSize:输入,输出指定pIfTable参数所占缓冲区的大小,如果缓冲区不是足够大返回接口表,函数设置这个参数等于所必须的缓冲区大小。bOrder:输入指定返回的接口表是

14、否按接口序号按上升顺序排列。如果参数为TRUE那么按上升顺序排列。返回值:成功,返回0;失败,返回错误代码。推荐精选2、使用到的类型:MIB_IFTABLE 包含接口表Private Type MIB_IFTABLE dwNumEntries As Long '当前网络接口的总数 MIB_Table(9) As MIB_IFROW '指向一个包含MIB_IFROW类型的指针End TypeMIB_IFROW 保存接口信息Private Type MIB_IFROW wszName(0 To 511) As Byte '接口名称的Unicode字符串,必须为512字节 d

15、wIndex As Long '接口编号 dwType As Long '接口类型,参看IP_ADAPTER_INFO类型的Type成员 dwMtu As Long '最大传输单元 dwSpeed As Long '接口速度(字节) dwPhysAddrLen As Long '由bPhysAddr获得的物理地址有效长度 bPhysAddr(0 To 7) As Byte '物理地址 dwAdminStatus As Long '接口管理状态dwOperStatus As Long '操作状态,以下值之一:常量名称 值 说明 MI

16、B_IF_OPER_STATUS_NON_OPERATIONAL 0 网络适配器被禁止,例如:地址冲突 MIB_IF_OPER_STATUS_UNREACHABLE 1 没有连接 MIB_IF_OPER_STATUS_DISCONNECTED 2 局域网:电缆未连接;广域网:无载波信号推荐精选 MIB_IF_OPER_STATUS_CONNECTING 3 广域网适配器连接中 MIB_IF_OPER_STATUS_CONNECTED 4 广域网适配器连接上远程对等点 MIB_IF_OPER_STATUS_OPERATIONAL 5 局域网适配器默认状态 dwLastChange As Long

17、 '操作状态最后改变的时间 dwInOctets As Long '总共收到(字节) dwInUcastPkts As Long '总共收到(unicast包) dwInNUcastPkts As Long '总共收到(non-unicast包),包括广播包和多点传送包 dwInDiscards As Long '收到后丢弃包总数(即使没有错误) dwInErrors As Long '收到出错包总数 dwInUnknownProtos As Long '收到后因协议不明而丢弃的包总数 dwOutOctets As Long '总

18、共发送(字节) dwOutUcastPkts As Long '总共发送(unicast包) dwOutNUcastPkts As Long '总共发送(non-unicast包),包括广播包和多点传送包 dwOutDiscards As Long '发送丢弃包总数(即使没有错误) dwOutErrors As Long '发送出错包总数 dwOutQLen As Long '发送队列长度 dwDescrLen As Long ' bDescr部分有效长度 bDescr(0 To 255) As Byte '接口描述End Type 推荐

19、精选3、使用到的常量:无 4、主要代码分析:分配足够大的缓存空间,然后直接调用GetIfTable获得接口信息:Dim ifT As MIB_IFTABLELenIfT = Len(ifT)RValue = GetIfTable(ifT, LenIfT, True)由ifT.dwNumEntries获得接口数量,然后用fornext循环获取每个接口信息:For i = 0 To ifT.dwNumEntries - 1Print "接口编号:" & ifT.MIB_Table(i).dwIndex Print "接口速度:" & ifT.

20、MIB_Table(i).dwSpeedNext物理地址的获得: PhysAddr = Right("00" & Hex(ifT.MIB_Table(i).bPhysAddr(0), 2) For j = 1 To 5 PhysAddr = PhysAddr & "-" & Right("00" & Hex(ifT.MIB_Table(i).bPhysAddr(j), 2) NextPrint "物理地址:" & PhysAddr5、运行时截图:推荐精选第三节 获取本机TCP

21、 信息列表1、函数:Private Declare Function GetTcpStatistics Lib "iphlpapi.dll" (ByRef pTcpStats As MIB_TCPSTATS) As Long参数说明:pStats :输出指向一个接收本机TCP统计表的MIB_TCPSTATS类型返回值:成功,返回0;失败,返回错误代码。 2、使用到的类型:MIB_TCPSTATS 包含本机上正运行的TCP协议的统计表Type MIB_TCPSTATSdwRtoAlgorithm As Long 指定重传输(RTO:retransmission time-ou

22、t)算法 dwRtoMin As Long 重传输超时的最小值,毫秒 dwRtoMax As Long 重传输超时的最大值,毫秒 dwMaxConn As Long 连接最大数目,如果为-1,则连接的最大数目是可变的 dwActiveOpens As Long 主动连接数目,即客户端正向服务器进行连接数目 dwPassiveOpens As Long 被动连接数目,即服务器监听连接客户端请求数目 dwAttemptFails As Long 尝试连接失败的次数 dwEstabResets As Long 对已建立的连接实行重设的次数 dwCurrEstab As Long 目前已建立的连接 d

23、wInSegs As Long 收到分段数据报的数目 dwOutSegs As Long 传输的分段数据报数目,不包括转发的数据包推荐精选 dwRetransSegs As Long 转发的分段数据报数目 dwInErrs As Long 收到错误的数目 dwOutRsts As Long 重设标志设定后传输分段数据报数目 dwNumConns As Long 累计连接的总数End Type 3、使用到的常量:无 4、主要代码分析: 定义一个MIB_TCPSTATS类型变量,然后直接调用GetTcpStatistics:Dim mTcpS As MIB_TCPSTATSRValue = Get

24、TcpStatistics(mTcpS) 5、运行时截图: 第四节 获取当前TCP连接情况1、函数:Private Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long参数说明:pTcpTable:输入指向包含了MIB_TCPTABLE类型的TCP 连接表。pdwSize:输入,输出指向pTcpTable参数的缓冲区大小,如果分配的缓冲不够,那么就等于最小需要缓

25、冲。 推荐精选bOrder:输入指定连接表是否按照类型排列。TRUE,那么就按以下类型顺序排列:Local IP address,Local port,Remote IP address,Remote port。返回值:成功,返回0;失败,返回错误代码。 2、使用到的类型:MIB_TCPTABLE 类型包含Tcp连接表。Type MIB_TCPTABLEdwNum_Of_Entries As Long 当前包含MIB_TCPROW类型的总数TCP_Table() As MIB_TCPROW 指向包含MIB_TCPROW类型的指针End Type备注:实际使用中可以定义:TCP_Table(12

26、0) As MIB_TCPROW ' 预留足够缓存 MIB_TCPROW 类型包含了TCP连接信息。Type MIB_TCPROWdwState As Long ' TCP连接状态,为以下值之一: 常量名称 值 说明 MIB_TCP_STATE_CLOSED 1 关闭 MIB_TCP_STATE_LISTEN 2 正在监听 MIB_TCP_STATE_SYN_SENT 3 同步发送 MIB_TCP_STATE_SYN_RCVD 4 同步接收 MIB_TCP_STATE_ESTAB 5 已建立 MIB_TCP_STATE_FIN_WAIT1 6 FINWAIT 1推荐精选 MIB

27、_TCP_STATE_FIN_WAIT2 7 FINWAIT 2 MIB_TCP_STATE_CLOSE_WAIT 8 关闭等待 MIB_TCP_STATE_CLOSING 9 正在关闭 MIB_TCP_STATE_LAST_ACK 10 最后一次确认 MIB_TCP_STATE_TIME_WAIT 11 时间等待 MIB_TCP_STATE_DELETE_TCB 12 删除连接 dwLocalAddr As Long '本地IPdwLocalPort As Long '本地端口dwRemoteAddr As Long '远程机器IPdwRemotePort As Lo

28、ng '远程机器端口End Type 3、使用到的常量:无 4、主要代码分析:定义一个MIB_TCPTABLE类型的变量,因为我们在定义MIB_TCPTABLE类型的时候预留了足够的缓存( TCP_Table(120) As MIB_TCPROW ),因此获得定义变量的大小后直接调用GetTcpTable,但是要注意的是,实际获得的TCP连接的总数应为dwNum_Of_Entries的值,一般小于我们的定义(120):Dim mtcp As MIB_TCPTABLE推荐精选mtcplen = Len(mtcp)rvalue = GetTcpTable(mtcp, mtcplen, Tr

29、ue)使用ForNext循环遍历各个Tcp连接的信息:For i = 0 To mtcp.dwNum_Of_Entries - 1Print mtcp.TCP_Table(i).dwLocalAddr & "->" & mtcp.TCP_Table(i).dwRemoteAddrNext因为MIB_TCPROW 类型中dwLocalAddr、dwRemoteAddr均为一长整型数,因此要通过转换来获得IP地址:Dim Ip_Buf(1 To 4) As ByteCopyMemory Ip_Buf(1), dwLocalAddr, 4GetIp = CS

30、tr(Ip_Buf(1) + "." + CStr(Ip_Buf(2) + "." + CStr(Ip_Buf(3) + "." + CStr(Ip_Buf(4) 因为MIB_TCPROW 类型中dwLocalPort、dwRemotePort均为一长整型数,因此要通过转换来获得端口:GetPort = dwLocalPort/ 256 + (dwLocalPort Mod 256) * 256 5、运行时截图:第五节 获取本机UDP信息列表1、函数:Private Declare Function GetUdpStatistics

31、Lib "iphlpapi.dll" (pStats As MIB_UDPSTATS) As Long参数说明:pStats:输出指向一个接收到本机UDP统计表的MIB_UDPSTATS类型推荐精选返回值:成功,返回0;失败,返回错误代码。 2、使用到的类型:MIB_UDPSTATS 包含UDP (User Datagram Protocol) 运行信息Type MIB_UDPSTATS dwInDatagrams As Long '已收到数据报数目 dwNoPorts As Long '因为端口号有误而丢弃的数据报数目 dwInErrors As Long

32、 '已收到多少错误数据报,不包括dwNoPorts中统计的数目 dwOutDatagrams As Long '已传输数据报数目 dwNumAddrs As Long 'UDP监听者表中接口数目End Type3、使用到的常量:无 4、主要代码分析:定义一个MIB_UDPSTATS类型的变量,然后直接使用GetUdpStatistics函数即可:Dim Mudp As MIB_UDPSTATSr = GetUdpStatistics(Mudp) 5、运行时截图:第六节 获取当前UDP连接情况推荐精选1、函数:Private Declare Function GetUdp

33、Table Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_UDPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long参数说明:pUdpTable:输出指向一个缓存作为MIB_UDPTABLE类型用来接收UDP监听表。pdwSize:输入或输出输入,指定pUdpTable参数所占缓存大小;输出,如果指定的缓存大小不足,将设置为所须的大小。bOrder:输入指定返回的表是否按分类排列。如果为TRUE,按以下分类排列:1、IP地址;2、端口。返回值:成功,返回0;失败,返回错

34、误代码。 2、使用到的类型:MIB_UDPTABLE 包含MIB_UDPROW类型Type MIB_UDPTABLE dwNum_Of_Entries As Long '当前 UDP连接的总数 UDP_Table() As MIB_UDPROW '指向包含MIB_UDPROW类型的指针End Type备注:实际使用中可以定义:UDP_Table(120) As MIB_UDPROW ' 预留足够缓存 MIB_UDPROW包含发送和接收UDP数据包的地址信息。它的格式如下:Type MIB_UDPROW dwLocalAddr As Long '本地IP dwLo

35、calPort As Long '本地端口End Type推荐精选 3、使用到的常量:无 4、主要代码分析:定义一个MIB_TCPTABLE类型的变量,因为我们在定义MIB_TCPTABLE类型的时候预留了足够的缓存( TCP_Table(120) As MIB_TCPROW ),因此获得定义变量的大小后直接调用GetTcpTable。但是要注意的是,实际获得的UDP连接的总数应为dwNum_Of_Entries的值,一般小于我们的定义(120):Dim Mudp As MIB_UDPTABLEmudplen = Len(Mudp)rvalue = GetUdpTable(Mudp,

36、mudplen, True)使用ForNext循环遍历各个Tcp连接的信息:For i = 0 To Mudp.dwNum_Of_Entries - 1 Print Mudp.UDP_Table(i).dwLocalAddr & ":" & Mudp.UDP_Table(i).dwLocalPortNext因为MIB_UDPTABLE 类型中dwLocalAddr为一长整型数,因此要通过转换来获得IP地址:Dim Ip_Buf(1 To 4) As ByteCopyMemory Ip_Buf(1), dwLocalAddr, 4GetIp = CStr(Ip

37、_Buf(1) + "." + CStr(Ip_Buf(2) + "." + CStr(Ip_Buf(3) + "." + CStr(Ip_Buf(4) 因为MIB_UDPTABLE类型中dwLocalPort为一长整型数,因此要通过转换来获得端口:推荐精选GetPort = dwLocalPort/ 256 + (dwLocalPort Mod 256) * 256 5、运行时截图:第七节 获取本机网间控制报文协议(ICMP:Internet Control Message Protocol)信息1、函数:Private Decla

38、re Function GetIcmpStatistics Lib "iphlpapi.dll" (pStats As MIB_ICMP) As Long参数说明:pStats:输出 指向一个本机收到ICMP 统计表的MIB_ICMP类型。返回值:成功,返回0;失败,返回错误代码。 2、使用到的类型:MIB_ICMP 为特殊适配器包含网间控制报文协议(ICMP:Internet Control Message Protocol)统计表。Public Type MIB_ICMP stats As MIBICMPINFO '指定MIBICMPINFO类型包含了电脑ICM

39、P统计信息表End Type MIBICMPINFO通过MIBICMPSTATS结构存储的接收或发出的ICMP信息。Public Type MIBICMPINFO icmpInStats As MIBICMPSTATS '指向MIBICMPSTATS类型,包含接收数据 icmpOutStats As MIBICMPSTATS '指向MIBICMPSTATS类型,包含发出数据推荐精选End Type MIBICMPSTATS包含ICMP (Internet Control Message Protocol)接收或发出的统计信息。Public Type MIBICMPSTATS d

40、wMsgs As Long '已收发多少消息 dwErrors As Long '已收发多少错误 dwDestUnreachs As Long '已收发多少"目标不可抵达"消息 dwTimeExcds As Long '已收发多少生存期已过消息 dwParmProbs As Long '已收发多少表明数据报内有错误IP信息的消息 dwSrcQuenchs As Long '已收发多少源结束消息 dwRedirects As Long '已收发多少重定向消息 dwEchos As Long '已收发多少ICMP响

41、应请求 dwEchoReps As Long '已收发多少ICMP响应应答 dwTimestamps As Long '已收发多少时间戳请求 dwTimestampReps As Long '已收发多少时间戳响应 dwAddrMasks As Long '已收发多少地址掩码 dwAddrMaskReps As Long '已收发多少地址掩码响应End Type 3、使用到的常量:无 推荐精选4、主要代码分析:定义一个MIB_ICMP类型的变量,然后直接调用GetIcmpStatistics:Dim Micmp As MIB_ICMPr = GetIcmp

42、Statistics(Micmp)使用Micmp.stats.icmpInStats成员获取收到的数据信息;使用Micmp.stats.icmpOutStats成员获取发送的数据信息。 5、运行时截图:第八节 获取本机网络参数1、函数:Private Declare Function GetNetworkParams Lib "IPHlpApi.dll" (FixedInfo As Any, pOutBufLen As Long) As Long参数说明:pFixedInfo:输出指向一个接收本机网络参数的数据块。pOutBufLen:输入,输出指向一个ULONG变量,改变

43、量指定了FixedInfo参数的大小。如果指定的大小不够大,将设置为须要的大小并返回ERROR_BUFFER_OVERFLOW错误。返回值:成功,返回0;失败,返回错误代码。 2、使用到的类型:IP_ADDR_STRING描述IP 地址链表的节点。见 第二章 第一节 2 FIXED_INFO包含电脑网络参数信息推荐精选Type FIXED_INFOHostName As String * MAX_HOSTNAME_LEN 本机名DomainName As String * MAX_DOMAIN_NAME_LEN 本机DNS域CurrentDnsServer As Long 保留,使用DnsSe

44、rverList获取DNS服务器的IP地址DnsServerList As IP_ADDR_STRING 本机采用的DNS服务器链表NodeType As Long 节点类型,以下值: 1 BROADCAST_NODETYPE IP广播,b节点NetBIOS名字解析法 2 PEER_TO_PEER_NODETYPE 点到点通信,p节点名字解析 4 MIXED_NODETYPE Mixed,m节点NetBIOS名字解析法 8 HYBRID_NODETYPE Hybrid,h节点NetBIOS名字解析法Else 未知节点类型ScopeId As String * MAX_SCOPE_ID_LEN

45、DHCP范围名字EnableRouting As Long 本机能否路由EnableProxy As Long 本机能否作为地址解析协议(ARP)代理EnableDns As Long 本机能否DNS查询End Type备注:此类型在vb中和c中的定义有所不同,详情请参看MSDN。 3、使用到的常量:Const MAX_HOSTNAME_LEN = 132Const MAX_DOMAIN_NAME_LEN = 132推荐精选Const MAX_SCOPE_ID_LEN = 260 4、主要代码分析:由于IP_ADDR_STRING的实际大小未知,我们不能直接获取其大小,所以首先对函数GetNe

46、tworkParams进行两次调用,第一次调用获得参数pOutBufLen的实际大小;第二次调用获取FixedInfoBuffer(0)的数据。代码如下: Dim FixedInfoBuffer() As ByteFixedInfoSize = 0rvalue = GetNetworkParams(ByVal 0, FixedInfoSize)ReDim FixedInfoBuffer(FixedInfoSize - 1)rvalue = GetNetworkParams(FixedInfoBuffer(0), FixedInfoSize)使用copymemory函数将数据拷贝到FixedIn

47、fo中,然后就可以使用FIXED_INFO结构了:CopyMemory FixedInfo, FixedInfoBuffer(0), FixedInfoSizePrint "Host Name", FixedInfo.HostName采用Do循环来获取所有DNS服务器地址:Print "DnsServer IP", FixedInfo.DnsServerList.IpAddresspAddrStr = FixedInfo.DnsServerList.NextDo While pAddrStr <> 0 CopyMemory IPAS, ByV

48、al pAddrStr, LenB(IPAS) Print "DNSServer IP", IPAS.IpAddress pAddrStr = IPAS.NextLoop 推荐精选5、运行时截图:第九节 获取网卡IP地址映射表1、函数:Private Declare Function GetIpAddrTable Lib "iphlpapi.dll" (pIpAddrTable As MIB_IPADDRTABLE, pdwSize As Long, bOrder As Long) As Long参数说明:pIpAddrTable:输出 指向一个接收网卡

49、IP地址映射表的 MIB_IPADDRTABLE类型的指针。pdwSize:输入,输出输入,指定pIpAddrTable 参数指向缓存的大小;输出,如果指定的缓存大小不够大,将设置此参数为必须的大小。bOrder:输入 指定返回的映射表是否按照IP地址排列。TRUE,按顺序排列。 返回值:成功,返回0;失败,返回错误代码。 2、使用到的类型:MIB_IPADDRTABLE 包含IP地址入口表Type MIB_IPADDRTABLE dwNumEntries As Long '表明table字段数组中有多少MIB_IPADDROW条目 table() As MIB_IPADDRROW '指向MIB_IPADDRROW类型End TypeMIB_IPADDRROW 指定特殊IP地址的信息Type

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论