iphlpapi.h
上传用户:zhuzhu0204
上传日期:2020-07-13
资源大小:13165k
文件大小:16k
- //
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //
- //
- // Use of this source code is subject to the terms of the Microsoft end-user
- // license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
- // If you did not accept the terms of the EULA, you are not authorized to use
- // this source code. For a copy of the EULA, please see the LICENSE.RTF on your
- // install media.
- //
- /*++
- Module Name:
- publicsdkinciphlpapi.h
- Abstract:
- Header file for functions to interact with the IP Stack for MIB-II and
- related functionality
- --*/
- #ifndef __IPHLPAPI_H__
- #define __IPHLPAPI_H__
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- //////////////////////////////////////////////////////////////////////////////
- // //
- // IPRTRMIB.H has the definitions of the strcutures used to set and get //
- // information //
- // //
- //////////////////////////////////////////////////////////////////////////////
- #include <iprtrmib.h>
- #include "ipexport.h"
- #include "iptypes.h"
- //
- // dwForwardProto types
- //
- #define PROTO_IP_OTHER 1
- #define PROTO_IP_LOCAL 2
- #define PROTO_IP_NETMGMT 3
- #define PROTO_IP_ICMP 4
- //////////////////////////////////////////////////////////////////////////////
- // //
- // The GetXXXTable APIs take a buffer and a size of buffer. If the buffer //
- // is not large enough, the APIs return ERROR_INSUFFICIENT_BUFFER and //
- // *pdwSize is the required buffer size //
- // The bOrder is a BOOLEAN, which if TRUE sorts the table according to //
- // MIB-II (RFC XXXX) //
- // //
- //////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Retrieves the number of interfaces in the system. These include LAN and //
- // WAN interfaces //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetNumberOfInterfaces(
- OUT PDWORD pdwNumIf
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the MIB-II ifEntry //
- // The dwIndex field of the MIB_IFROW should be set to the index of the //
- // interface being queried //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetIfEntry(
- IN OUT PMIB_IFROW pIfRow
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the MIB-II IfTable //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetIfTable(
- OUT PMIB_IFTABLE pIfTable,
- IN OUT PULONG pdwSize,
- IN BOOL bOrder
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the Interface to IP Address mapping //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetIpAddrTable(
- OUT PMIB_IPADDRTABLE pIpAddrTable,
- IN OUT PULONG pdwSize,
- IN BOOL bOrder
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the current IP Address to Physical Address (ARP) mapping //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetIpNetTable(
- OUT PMIB_IPNETTABLE pIpNetTable,
- IN OUT PULONG pdwSize,
- IN BOOL bOrder
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the IP Routing Table (RFX XXXX) //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetIpForwardTable(
- OUT PMIB_IPFORWARDTABLE pIpForwardTable,
- IN OUT PULONG pdwSize,
- IN BOOL bOrder
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets TCP Connection/UDP Listener Table //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetTcpTable(
- OUT PMIB_TCPTABLE pTcpTable,
- IN OUT PDWORD pdwSize,
- IN BOOL bOrder
- );
- DWORD
- WINAPI
- GetUdpTable(
- OUT PMIB_UDPTABLE pUdpTable,
- IN OUT PDWORD pdwSize,
- IN BOOL bOrder
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets IP/ICMP/TCP/UDP Statistics //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetIpStatistics(
- OUT PMIB_IPSTATS pStats
- );
- DWORD
- WINAPI
- GetIpStatisticsEx(
- OUT PMIB_IPSTATS pStats,
- IN DWORD dwFamily
- );
- DWORD
- WINAPI
- GetIcmpStatistics(
- OUT PMIB_ICMP pStats
- );
- /*
- DWORD
- WINAPI
- GetIcmpStatisticsEx(
- OUT PMIB_ICMP_EX pStats,
- IN DWORD dwFamily
- );
- */
- DWORD
- WINAPI
- GetTcpStatistics(
- OUT PMIB_TCPSTATS pStats
- );
- DWORD
- WINAPI
- GetTcpStatisticsEx(
- OUT PMIB_TCPSTATS pStats,
- IN DWORD dwFamily
- );
- DWORD
- WINAPI
- GetUdpStatistics(
- OUT PMIB_UDPSTATS pStats
- );
- DWORD
- WINAPI
- GetUdpStatisticsEx(
- OUT PMIB_UDPSTATS pStats,
- IN DWORD dwFamily
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to set the ifAdminStatus on an interface. The only fields of the //
- // MIB_IFROW that are relevant are the dwIndex (index of the interface //
- // whose status needs to be set) and the dwAdminStatus which can be either //
- // MIB_IF_ADMIN_STATUS_UP or MIB_IF_ADMIN_STATUS_DOWN //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- SetIfEntry(
- IN PMIB_IFROW pIfRow
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to create, modify or delete a route. In all cases the //
- // dwForwardIfIndex, dwForwardDest, dwForwardMask, dwForwardNextHop and //
- // dwForwardPolicy MUST BE SPECIFIED. Currently dwForwardPolicy is unused //
- // and MUST BE 0. //
- // For a set, the complete MIB_IPFORWARDROW structure must be specified //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- CreateIpForwardEntry(
- IN PMIB_IPFORWARDROW pRoute
- );
- DWORD
- WINAPI
- SetIpForwardEntry(
- IN PMIB_IPFORWARDROW pRoute
- );
- DWORD
- WINAPI
- DeleteIpForwardEntry(
- IN PMIB_IPFORWARDROW pRoute
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to set the ipForwarding to ON or OFF (currently only ON->OFF is //
- // allowed) and to set the defaultTTL. If only one of the fields needs to //
- // be modified and the other needs to be the same as before the other field //
- // needs to be set to MIB_USE_CURRENT_TTL or MIB_USE_CURRENT_FORWARDING as //
- // the case may be //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- SetIpStatistics(
- IN PMIB_IPSTATS pIpStats
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to set the defaultTTL. //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- SetIpTTL(
- UINT nTTL
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to create, modify or delete an ARP entry. In all cases the dwIndex //
- // dwAddr field MUST BE SPECIFIED. //
- // For a set, the complete MIB_IPNETROW structure must be specified //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- CreateIpNetEntry(
- IN PMIB_IPNETROW pArpEntry
- );
- DWORD
- WINAPI
- SetIpNetEntry(
- IN PMIB_IPNETROW pArpEntry
- );
- DWORD
- WINAPI
- DeleteIpNetEntry(
- IN PMIB_IPNETROW pArpEntry
- );
- DWORD
- WINAPI
- FlushIpNetTable(
- IN DWORD dwIfIndex
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to create or delete a Proxy ARP entry. The dwIndex is the index of //
- // the interface on which to PARP for the dwAddress. If the interface is //
- // of a type that doesnt support ARP, e.g. PPP, then the call will fail //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- CreateProxyArpEntry(
- IN DWORD dwAddress,
- IN DWORD dwMask,
- IN DWORD dwIfIndex
- );
- DWORD
- WINAPI
- DeleteProxyArpEntry(
- IN DWORD dwAddress,
- IN DWORD dwMask,
- IN DWORD dwIfIndex
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Used to set the state of a TCP Connection. The only state that it can be //
- // set to is MIB_TCP_STATE_DELETE_TCB. The complete MIB_TCPROW structure //
- // MUST BE SPECIFIED //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- SetTcpEntry(
- IN PMIB_TCPROW pTcpRow
- );
- DWORD
- WINAPI
- GetInterfaceInfo(
- IN PIP_INTERFACE_INFO pIfTable,
- OUT PULONG dwOutBufLen
- );
- DWORD
- WINAPI
- GetUniDirectionalAdapterInfo(OUT PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo,
- OUT PULONG dwOutBufLen
- );
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the "best" outgoing interface for the specified destination address //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetBestInterface(
- IN IPAddr dwDestAddr,
- OUT PDWORD pdwBestIfIndex
- );
- #pragma warning(push)
- #pragma warning(disable:4115)
- DWORD
- WINAPI
- GetBestInterfaceEx(
- IN struct sockaddr *pDestAddr,
- OUT PDWORD pdwBestIfIndex
- );
- #pragma warning(pop)
- //////////////////////////////////////////////////////////////////////////////
- // //
- // Gets the best (longest matching prefix) route for the given destination //
- // If the source address is also specified (i.e. is not 0x00000000), and //
- // there are multiple "best" routes to the given destination, the returned //
- // route will be one that goes out over the interface which has an address //
- // that matches the source address //
- // //
- //////////////////////////////////////////////////////////////////////////////
- DWORD
- WINAPI
- GetBestRoute(
- IN DWORD dwDestAddr,
- IN DWORD dwSourceAddr, OPTIONAL
- OUT PMIB_IPFORWARDROW pBestRoute
- );
- DWORD
- WINAPI
- NotifyAddrChange(
- OUT PHANDLE Handle,
- IN LPOVERLAPPED overlapped
- );
- DWORD
- WINAPI
- NotifyRouteChange(
- OUT PHANDLE Handle,
- IN LPOVERLAPPED overlapped
- );
- DWORD
- WINAPI
- GetAdapterIndex(
- IN LPWSTR AdapterName,
- OUT PULONG IfIndex
- );
- DWORD
- WINAPI
- AddIPAddress(
- IPAddr Address,
- IPMask IpMask,
- DWORD IfIndex,
- PULONG NTEContext,
- PULONG NTEInstance
- );
- DWORD
- WINAPI
- DeleteIPAddress(
- ULONG NTEContext
- );
- DWORD
- WINAPI
- GetNetworkParams(
- PFIXED_INFO pFixedInfo, PULONG pOutBufLen
- );
- DWORD
- WINAPI
- GetAdaptersInfo(
- PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen
- );
- #ifdef _WINSOCK2API_
- //
- // The following functions require Winsock2.
- //
- DWORD
- WINAPI
- GetAdaptersAddresses(
- IN ULONG Family,
- IN DWORD Flags,
- IN PVOID Reserved,
- OUT PIP_ADAPTER_ADDRESSES pAdapterAddresses,
- IN OUT PULONG pOutBufLen
- );
- #endif
- DWORD
- WINAPI
- GetPerAdapterInfo(
- ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen
- );
- DWORD
- WINAPI
- IpReleaseAddress(
- PIP_ADAPTER_INDEX_MAP AdapterInfo
- );
- DWORD
- WINAPI
- IpRenewAddress(
- PIP_ADAPTER_INDEX_MAP AdapterInfo
- );
- DWORD
- WINAPI
- SendARP(
- IPAddr DestIP,
- IPAddr SrcIP,
- PULONG pMacAddr,
- PULONG PhyAddrLen
- );
- BOOL
- WINAPI
- GetRTTAndHopCount(
- IPAddr DestIpAddress,
- PULONG HopCount,
- ULONG MaxHops,
- PULONG RTT
- );
- DWORD
- WINAPI
- GetFriendlyIfIndex(
- DWORD IfIndex
- );
- DWORD
- WINAPI
- EnableRouter(
- HANDLE* pHandle,
- OVERLAPPED* pOverlapped
- );
- DWORD
- WINAPI
- UnenableRouter(
- OVERLAPPED* pOverlapped,
- LPDWORD lpdwEnableCount OPTIONAL
- );
- #ifndef UNDER_CE
- DWORD
- WINAPI
- DisableMediaSense(
- HANDLE *pHandle,
- OVERLAPPED *pOverLapped
- );
- DWORD
- WINAPI
- RestoreMediaSense(
- OVERLAPPED* pOverlapped,
- LPDWORD lpdwEnableCount OPTIONAL
- );
- #endif
- DWORD
- WINAPI
- GetIpErrorString(
- IN IP_STATUS ErrorCode,
- OUT PWCHAR Buffer,
- IN OUT PDWORD Size
- );
- #ifdef __cplusplus
- }
- #endif
- #endif //__IPHLPAPI_H__