IpHelpAPI中常用函数

1:GetNetworkParams:获取网络参数

ULONG
WINAPI     
GetAdaptersInfo(     
    _Out_writes_bytes_opt_(*SizePointer) PIP_ADAPTER_INFO AdapterInfo,     
    _Inout_                         PULONG           SizePointer //需要的内存空间    
    );    
         
typedef struct _IP_ADAPTER_INFO {    
    struct _IP_ADAPTER_INFO* Next;    
    DWORD ComboIndex;    
    char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];//适配器名称    
    char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];//描述    
    UINT AddressLength;//物理地址长度    
    BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];//物理地址    
    DWORD Index;//适配器索引    
    UINT Type;//适配器类型    
    UINT DhcpEnabled;//DHCP是否开启    
    PIP_ADDR_STRING CurrentIpAddress;//IP地址    
    IP_ADDR_STRING IpAddressList;    
    IP_ADDR_STRING GatewayList;    
    IP_ADDR_STRING DhcpServer;//DHCP服务器地址    
    BOOL HaveWins;    
    IP_ADDR_STRING PrimaryWinsServer;    
    IP_ADDR_STRING SecondaryWinsServer;    
    time_t LeaseObtained;    
    time_t LeaseExpires;    
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;


2:GetAdaptersInfo:获取适配器信息

ULONG
WINAPI      
GetAdaptersInfo(      
    _Out_writes_bytes_opt_(*SizePointer) PIP_ADAPTER_INFO AdapterInfo,      
    _Inout_                         PULONG           SizePointer //需要的内存空间     
    );     
           
typedef struct _IP_ADAPTER_INFO {     
    struct _IP_ADAPTER_INFO* Next;     
    DWORD ComboIndex;//保留值  
    char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];//适配器名称     
    char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];//描述     
    UINT AddressLength;//物理地址长度     
    BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];//物理地址     
    DWORD Index;//适配器索引     
    UINT Type;//适配器类型     
    UINT DhcpEnabled;//DHCP是否开启     
    PIP_ADDR_STRING CurrentIpAddress;//IP地址  
    IP_ADDR_STRING IpAddressList;   //IP地址链表  
    IP_ADDR_STRING GatewayList;   //网关地址链表  
    IP_ADDR_STRING DhcpServer;//DHCP服务器地址链表     
    BOOL HaveWins;   //这个适配器是否启用WINS(名称服务)  
    IP_ADDR_STRING PrimaryWinsServer;     
    IP_ADDR_STRING SecondaryWinsServer;     
    time_t LeaseObtained;     
    time_t LeaseExpires;     
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;


 3:GetNumberOfInterfaces:获取接口数目

DWORD
WINAPI   
GetNumberOfInterfaces(   
    _Out_ PDWORD  pdwNumIf   
    );


4:GetInterfaceInfo:获取接口信息

DWORD
WINAPI   
GetInterfaceInfo(   
    _Out_writes_bytes_opt_(*dwOutBufLen) PIP_INTERFACE_INFO  pIfTable,   
    _Inout_                        PULONG              dwOutBufLen   
    );   
       
typedef struct _IP_INTERFACE_INFO {   
    LONG    NumAdapters;//接口数目   
    IP_ADAPTER_INDEX_MAP Adapter[1];   
} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;   
       
typedef struct _IP_ADAPTER_INDEX_MAP {   
    ULONG   Index;//接口索引   
    WCHAR   Name[MAX_ADAPTER_NAME];//接口名称   
} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;


 

5:GetIfTable:获取网络接口信息

DWORD 
WINAPI    
GetIfTable(    
    _Out_writes_bytes_opt_(*pdwSize) PMIB_IFTABLE pIfTable,    
    _Inout_                    PULONG       pdwSize,    
    _In_                       BOOL         bOrder    
    );    
         
typedef struct _MIB_IFROW {    
    WCHAR wszName[MAX_INTERFACE_NAME_LEN];//网络接口名称    
    IF_INDEX dwIndex;//网络接口索引    
    IFTYPE dwType;//网络接口类型    
    DWORD dwMtu;//底层硬件的MTU    
    DWORD dwSpeed;//接口的bps    
    DWORD dwPhysAddrLen;//bPhysAddr的物理地址长度    
    UCHAR bPhysAddr[MAXLEN_PHYSADDR];//物理地址    
    DWORD dwAdminStatus;//接口管理状态    
    INTERNAL_IF_OPER_STATUS 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;//接口描述    
    UCHAR bDescr[MAXLEN_IFDESCR];    
} MIB_IFROW, *PMIB_IFROW;    
         
typedef struct _MIB_IFTABLE {    
    DWORD dwNumEntries;//接口数目    
    MIB_IFROW table[ANY_SIZE];    
} MIB_IFTABLE, *PMIB_IFTABLE;


6:GetIpAddrTable:获取IP地址表

DWORD  
WINAPI     
GetIpAddrTable(     
    _Out_writes_bytes_opt_(*pdwSize)    PMIB_IPADDRTABLE pIpAddrTable,     
    _Inout_                       PULONG           pdwSize,     
    _In_                          BOOL             bOrder     
    );    
         
typedef struct _MIB_IPADDRROW{    
    DWORD dwAddr;//IP地址    
    DWORD dwIndex;//适配器索引    
    DWORD dwMask;//子网掩码    
    DWORD dwBCastAddr;//广播地址    
    DWORD dwReasmSize;//    
    unsigned short unused1;    
    unsigned short wType;//类型    
} MIB_IPADDRROW, *PMIB_IPADDRROW;    
         
typedef struct _MIB_IPADDRTABLE {    
    DWORD dwNumEntries;    
    MIB_IPADDRROW table[ANY_SIZE];    
} MIB_IPADDRTABLE, *PMIB_IPADDRTABLE;


7:GetTcpTable:获取TCP连接链表

ULONG 
WINAPI    
GetTcpTable(    
    _Out_writes_bytes_opt_(*SizePointer)   PMIB_TCPTABLE TcpTable,    
    _Inout_                          PULONG        SizePointer,    
    _In_                             BOOL          Order    
    );    
         
typedef struct _MIB_TCPTABLE {    
    DWORD dwNumEntries;    
    MIB_TCPROW table[ANY_SIZE];    
} MIB_TCPTABLE, *PMIB_TCPTABLE;    
         
typedef struct _MIB_TCPROW{    
    union {    
        DWORD dwState;       // Old field used DWORD type.    
        MIB_TCP_STATE State; // New field uses enum type.    
    };//状态    
    DWORD dwLocalAddr;//本地IP    
    DWORD dwLocalPort;//本地端口    
    DWORD dwRemoteAddr;//目标IP    
    DWORD dwRemotePort;//目标端口    
} MIB_TCPROW, *PMIB_TCPROW;


8:GetUdpTable:获取UDP连接链表

ULONG  
WINAPI     
GetUdpTable(     
    _Out_writes_bytes_opt_(*SizePointer)   PMIB_UDPTABLE UdpTable,     
    _Inout_                          PULONG        SizePointer,     
    _In_                             BOOL          Order     
    );    
         
typedef struct _MIB_UDPROW {    
    DWORD dwLocalAddr;//本地IP    
    DWORD dwLocalPort;//本地端口    
} MIB_UDPROW, *PMIB_UDPROW;    
         
typedef struct _MIB_UDPTABLE {    
    DWORD dwNumEntries;    
    MIB_UDPROW table[ANY_SIZE];    
} MIB_UDPTABLE, *PMIB_UDPTABLE;


9:GetIpForwardTable:IP路由表

DWORD  
WINAPI     
GetIpForwardTable(     
    _Out_writes_bytes_opt_(*pdwSize)    PMIB_IPFORWARDTABLE pIpForwardTable,     
    _Inout_                       PULONG              pdwSize,     
    _In_                          BOOL                bOrder     
    );    
         
typedef struct _MIB_IPFORWARDROW {    
    DWORD dwForwardDest;//目标IP    
    DWORD dwForwardMask;//子网掩码    
    DWORD dwForwardPolicy;    
    DWORD dwForwardNextHop;//绕送下一站    
    IF_INDEX dwForwardIfIndex;    
    union {    
        DWORD dwForwardType;              // Old field name uses DWORD type.    
        MIB_IPFORWARD_TYPE ForwardType;   // New field name uses enum type.    
    };//路由类型    
    union {    
        DWORD dwForwardProto;             // Old field name uses DWORD type.    
        MIB_IPFORWARD_PROTO ForwardProto; // New field name uses enum type.    
    };//路由协议    
    DWORD dwForwardAge;    
    DWORD dwForwardNextHopAS;    
    DWORD dwForwardMetric1;    
    DWORD dwForwardMetric2;    
    DWORD dwForwardMetric3;    
    DWORD dwForwardMetric4;    
    DWORD dwForwardMetric5;    
} MIB_IPFORWARDROW, *PMIB_IPFORWARDROW;    
         
typedef struct _MIB_IPFORWARDTABLE {    
    DWORD dwNumEntries;    
    MIB_IPFORWARDROW table[ANY_SIZE];    
} MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;


10:GetIpNetTable:获取ARP列表

ULONG
WINAPI   
GetIpNetTable(   
    _Out_writes_bytes_opt_(*SizePointer) PMIB_IPNETTABLE IpNetTable,   
    _Inout_                        PULONG          SizePointer,   
    _In_                           BOOL            Order   
    );   
       
typedef struct _MIB_IPNETROW_LH {   
    IF_INDEX dwIndex;//接口索引   
    DWORD dwPhysAddrLen;//物理地址长度   
    UCHAR bPhysAddr[MAXLEN_PHYSADDR];//物理地址   
    DWORD dwAddr;//IP地址   
    union {   
        DWORD dwType;           // Old field name was just a DWORD.   
        MIB_IPNET_TYPE Type;    // New field name uses the enum type.   
    };//类型   
} MIB_IPNETROW_LH, *PMIB_IPNETROW_LH;   
       
typedef struct _MIB_IPNETTABLE {   
    DWORD dwNumEntries;//ARP缓存数目   
    MIB_IPNETROW table[ANY_SIZE];   
} MIB_IPNETTABLE, *PMIB_IPNETTABLE;


11:GetExtendedTcpTable:获取进程关联TCP列表

DWORD
WINAPI   
GetExtendedTcpTable(   
    _Out_writes_bytes_opt_(*pdwSize)        PVOID           pTcpTable,   
    _Inout_   
    _When_(ulAf == AF_INET, _Deref_in_range_(>=, sizeof(MIB_TCPTABLE)))   
    _When_(   
        (TableClass == TCP_TABLE_OWNER_PID_LISTENER ||   
         TableClass == TCP_TABLE_OWNER_PID_CONNECTIONS ||   
         TableClass == TCP_TABLE_OWNER_PID_ALL) && ulAf == AF_INET6,   
        _Deref_in_range_(>=, sizeof(MIB_TCP6TABLE_OWNER_PID)))   
    _When_(   
        (TableClass == TCP_TABLE_OWNER_MODULE_LISTENER ||   
         TableClass == TCP_TABLE_OWNER_MODULE_CONNECTIONS ||   
         TableClass == TCP_TABLE_OWNER_MODULE_ALL) && ulAf == AF_INET6,   
        _Deref_in_range_(>=, sizeof(MIB_TCP6TABLE_OWNER_MODULE)))   
    PDWORD          pdwSize,   
    _In_                          BOOL            bOrder,   
    _In_                          ULONG           ulAf,   
    _In_                          TCP_TABLE_CLASS TableClass,   
    _In_                          ULONG           Reserved   
    );   
       
typedef struct _MIB_TCPROW_OWNER_PID   
{   
    DWORD       dwState;//状态   
    DWORD       dwLocalAddr;//本地IP   
    DWORD       dwLocalPort;//本地端口   
    DWORD       dwRemoteAddr;//远程IP   
    DWORD       dwRemotePort;//远程端口   
    DWORD       dwOwningPid;//pid   
} MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID;   
       
typedef struct _MIB_TCPTABLE_OWNER_PID   
{   
    DWORD                dwNumEntries;//列表数目   
    MIB_TCPROW_OWNER_PID table[ANY_SIZE];   
} MIB_TCPTABLE_OWNER_PID, *PMIB_TCPTABLE_OWNER_PID;


 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值