1 | /**
|
---|
2 | * This file is part of the mingw-w64 runtime package.
|
---|
3 | * No warranty is given; refer to the file DISCLAIMER within this package.
|
---|
4 | */
|
---|
5 |
|
---|
6 | #ifndef __IPHLPAPI_H__
|
---|
7 | #define __IPHLPAPI_H__
|
---|
8 |
|
---|
9 | #include <winapifamily.h>
|
---|
10 |
|
---|
11 | #ifdef __cplusplus
|
---|
12 | extern "C" {
|
---|
13 | #endif
|
---|
14 |
|
---|
15 | #include <iprtrmib.h>
|
---|
16 | #include <ipexport.h>
|
---|
17 | #include <iptypes.h>
|
---|
18 | #include <tcpestats.h>
|
---|
19 |
|
---|
20 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00
|
---|
21 |
|
---|
22 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
|
---|
23 |
|
---|
24 | DWORD WINAPI GetNumberOfInterfaces (PDWORD pdwNumIf);
|
---|
25 | DWORD WINAPI GetIfEntry (PMIB_IFROW pIfRow);
|
---|
26 | DWORD WINAPI GetIfTable (PMIB_IFTABLE pIfTable, PULONG pdwSize, WINBOOL bOrder);
|
---|
27 | DWORD WINAPI GetIpAddrTable (PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, WINBOOL bOrder);
|
---|
28 | ULONG WINAPI GetIpNetTable (PMIB_IPNETTABLE IpNetTable, PULONG SizePointer, WINBOOL Order);
|
---|
29 | DWORD WINAPI GetIpForwardTable (PMIB_IPFORWARDTABLE pIpForwardTable, PULONG pdwSize, WINBOOL bOrder);
|
---|
30 | ULONG WINAPI GetTcpTable (PMIB_TCPTABLE TcpTable, PULONG SizePointer, WINBOOL Order);
|
---|
31 | DWORD WINAPI GetExtendedTcpTable (PVOID pTcpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved);
|
---|
32 | DWORD WINAPI GetOwnerModuleFromTcpEntry (PMIB_TCPROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
|
---|
33 | ULONG WINAPI GetUdpTable (PMIB_UDPTABLE UdpTable, PULONG SizePointer, WINBOOL Order);
|
---|
34 | DWORD WINAPI GetExtendedUdpTable (PVOID pUdpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved);
|
---|
35 | DWORD WINAPI GetOwnerModuleFromUdpEntry (PMIB_UDPROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
|
---|
36 | #if NTDDI_VERSION < 0x06000000
|
---|
37 | DWORD AllocateAndGetTcpExTableFromStack (PVOID *ppTcpTable, WINBOOL bOrder, HANDLE hHeap, DWORD dwFlags, DWORD dwFamily);
|
---|
38 | DWORD AllocateAndGetUdpExTableFromStack (PVOID *ppUdpTable, WINBOOL bOrder, HANDLE hHeap, DWORD dwFlags, DWORD dwFamily);
|
---|
39 | #else
|
---|
40 | ULONG WINAPI GetTcpTable2 (PMIB_TCPTABLE2 TcpTable, PULONG SizePointer, WINBOOL Order);
|
---|
41 | #endif
|
---|
42 |
|
---|
43 | #ifdef _WS2IPDEF_
|
---|
44 |
|
---|
45 | #if NTDDI_VERSION >= 0x06000000
|
---|
46 | ULONG WINAPI GetTcp6Table (PMIB_TCP6TABLE TcpTable, PULONG SizePointer, WINBOOL Order);
|
---|
47 | ULONG WINAPI GetTcp6Table2 (PMIB_TCP6TABLE2 TcpTable, PULONG SizePointer, WINBOOL Order);
|
---|
48 | ULONG WINAPI GetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize);
|
---|
49 | ULONG WINAPI SetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset);
|
---|
50 | ULONG WINAPI GetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize);
|
---|
51 | ULONG WINAPI SetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset);
|
---|
52 | ULONG WINAPI GetUdp6Table (PMIB_UDP6TABLE Udp6Table, PULONG SizePointer, WINBOOL Order);
|
---|
53 | #endif
|
---|
54 | DWORD WINAPI GetOwnerModuleFromTcp6Entry (PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
|
---|
55 | DWORD WINAPI GetOwnerModuleFromUdp6Entry (PMIB_UDP6ROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
|
---|
56 | #endif
|
---|
57 | DWORD GetOwnerModuleFromPidAndInfo (ULONG ulPid, ULONGLONG *pInfo, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
|
---|
58 | ULONG WINAPI GetIpStatistics (PMIB_IPSTATS Statistics);
|
---|
59 | ULONG WINAPI GetIcmpStatistics (PMIB_ICMP Statistics);
|
---|
60 | ULONG WINAPI GetTcpStatistics (PMIB_TCPSTATS Statistics);
|
---|
61 | ULONG WINAPI GetUdpStatistics (PMIB_UDPSTATS Stats);
|
---|
62 | ULONG WINAPI GetIpStatisticsEx (PMIB_IPSTATS Statistics, ULONG Family);
|
---|
63 | ULONG WINAPI SetIpStatisticsEx (PMIB_IPSTATS Statistics, ULONG Family);
|
---|
64 | ULONG WINAPI GetIcmpStatisticsEx (PMIB_ICMP_EX Statistics, ULONG Family);
|
---|
65 | ULONG WINAPI GetTcpStatisticsEx (PMIB_TCPSTATS Statistics, ULONG Family);
|
---|
66 | ULONG WINAPI GetUdpStatisticsEx (PMIB_UDPSTATS Statistics, ULONG Family);
|
---|
67 | DWORD WINAPI SetIfEntry (PMIB_IFROW pIfRow);
|
---|
68 | DWORD WINAPI CreateIpForwardEntry (PMIB_IPFORWARDROW pRoute);
|
---|
69 | DWORD WINAPI SetIpForwardEntry (PMIB_IPFORWARDROW pRoute);
|
---|
70 | DWORD WINAPI DeleteIpForwardEntry (PMIB_IPFORWARDROW pRoute);
|
---|
71 | DWORD WINAPI SetIpStatistics (PMIB_IPSTATS pIpStats);
|
---|
72 | DWORD WINAPI SetIpTTL (UINT nTTL);
|
---|
73 | DWORD WINAPI CreateIpNetEntry (PMIB_IPNETROW pArpEntry);
|
---|
74 | DWORD WINAPI SetIpNetEntry (PMIB_IPNETROW pArpEntry);
|
---|
75 | DWORD WINAPI DeleteIpNetEntry (PMIB_IPNETROW pArpEntry);
|
---|
76 | DWORD WINAPI FlushIpNetTable (DWORD dwIfIndex);
|
---|
77 | DWORD WINAPI CreateProxyArpEntry (DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex);
|
---|
78 | DWORD WINAPI DeleteProxyArpEntry (DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex);
|
---|
79 | DWORD WINAPI SetTcpEntry (PMIB_TCPROW pTcpRow);
|
---|
80 | DWORD WINAPI GetInterfaceInfo (PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen);
|
---|
81 | DWORD WINAPI GetUniDirectionalAdapterInfo (PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, PULONG dwOutBufLen);
|
---|
82 | #ifndef NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED
|
---|
83 | #define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED
|
---|
84 | DWORD WINAPI NhpAllocateAndGetInterfaceInfoFromStack (IP_INTERFACE_NAME_INFO **ppTable, PDWORD pdwCount, WINBOOL bOrder, HANDLE hHeap, DWORD dwFlags);
|
---|
85 | #endif
|
---|
86 | DWORD WINAPI GetBestInterface (IPAddr dwDestAddr, PDWORD pdwBestIfIndex);
|
---|
87 | DWORD WINAPI GetBestInterfaceEx (struct sockaddr *pDestAddr, PDWORD pdwBestIfIndex);
|
---|
88 | DWORD WINAPI GetBestRoute (DWORD dwDestAddr, DWORD dwSourceAddr, PMIB_IPFORWARDROW pBestRoute);
|
---|
89 | DWORD WINAPI NotifyAddrChange (PHANDLE Handle, LPOVERLAPPED overlapped);
|
---|
90 | DWORD WINAPI NotifyRouteChange (PHANDLE Handle, LPOVERLAPPED overlapped);
|
---|
91 | WINBOOL WINAPI CancelIPChangeNotify (LPOVERLAPPED notifyOverlapped);
|
---|
92 | DWORD WINAPI GetAdapterIndex (LPWSTR AdapterName, PULONG IfIndex);
|
---|
93 | DWORD WINAPI AddIPAddress (IPAddr Address, IPMask IpMask, DWORD IfIndex, PULONG NTEContext, PULONG NTEInstance);
|
---|
94 | DWORD WINAPI DeleteIPAddress (ULONG NTEContext);
|
---|
95 | DWORD WINAPI GetNetworkParams (PFIXED_INFO pFixedInfo, PULONG pOutBufLen);
|
---|
96 | ULONG WINAPI GetAdaptersInfo (PIP_ADAPTER_INFO AdapterInfo, PULONG SizePointer);
|
---|
97 | PIP_ADAPTER_ORDER_MAP WINAPI GetAdapterOrderMap (VOID);
|
---|
98 |
|
---|
99 | #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */
|
---|
100 |
|
---|
101 | #ifdef _WINSOCK2API_
|
---|
102 | ULONG WINAPI GetAdaptersAddresses (ULONG Family, ULONG Flags, PVOID Reserved, PIP_ADAPTER_ADDRESSES AdapterAddresses, PULONG SizePointer);
|
---|
103 | #endif
|
---|
104 |
|
---|
105 | DWORD WINAPI GetPerAdapterInfo (ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen);
|
---|
106 | DWORD WINAPI IpReleaseAddress (PIP_ADAPTER_INDEX_MAP AdapterInfo);
|
---|
107 | DWORD WINAPI IpRenewAddress (PIP_ADAPTER_INDEX_MAP AdapterInfo);
|
---|
108 | DWORD WINAPI SendARP (IPAddr DestIP, IPAddr SrcIP, PVOID pMacAddr, PULONG PhyAddrLen);
|
---|
109 | WINBOOL WINAPI GetRTTAndHopCount (IPAddr DestIpAddress, PULONG HopCount, ULONG MaxHops, PULONG RTT);
|
---|
110 | DWORD WINAPI GetFriendlyIfIndex (DWORD IfIndex);
|
---|
111 | DWORD WINAPI EnableRouter (HANDLE *pHandle, OVERLAPPED *pOverlapped);
|
---|
112 | DWORD WINAPI UnenableRouter (OVERLAPPED *pOverlapped, LPDWORD lpdwEnableCount);
|
---|
113 | DWORD WINAPI DisableMediaSense (HANDLE *pHandle, OVERLAPPED *pOverLapped);
|
---|
114 | DWORD WINAPI RestoreMediaSense (OVERLAPPED *pOverlapped, LPDWORD lpdwEnableCount);
|
---|
115 |
|
---|
116 | #if NTDDI_VERSION >= 0x06000000
|
---|
117 | #define NET_STRING_IPV4_ADDRESS 0x00000001
|
---|
118 | #define NET_STRING_IPV4_SERVICE 0x00000002
|
---|
119 | #define NET_STRING_IPV4_NETWORK 0x00000004
|
---|
120 | #define NET_STRING_IPV6_ADDRESS 0x00000008
|
---|
121 | #define NET_STRING_IPV6_ADDRESS_NO_SCOPE 0x00000010
|
---|
122 | #define NET_STRING_IPV6_SERVICE 0x00000020
|
---|
123 | #define NET_STRING_IPV6_SERVICE_NO_SCOPE 0x00000040
|
---|
124 | #define NET_STRING_IPV6_NETWORK 0x00000080
|
---|
125 | #define NET_STRING_NAMED_ADDRESS 0x00000100
|
---|
126 | #define NET_STRING_NAMED_SERVICE 0x00000200
|
---|
127 |
|
---|
128 | #define NET_STRING_IP_ADDRESS (NET_STRING_IPV4_ADDRESS | NET_STRING_IPV6_ADDRESS)
|
---|
129 | #define NET_STRING_IP_ADDRESS_NO_SCOPE (NET_STRING_IPV4_ADDRESS | NET_STRING_IPV6_ADDRESS_NO_SCOPE)
|
---|
130 | #define NET_STRING_IP_SERVICE (NET_STRING_IPV4_SERVICE | NET_STRING_IPV6_SERVICE)
|
---|
131 | #define NET_STRING_IP_SERVICE_NO_SCOPE (NET_STRING_IPV4_SERVICE | NET_STRING_IPV6_SERVICE_NO_SCOPE)
|
---|
132 | #define NET_STRING_IP_NETWORK (NET_STRING_IPV4_NETWORK | NET_STRING_IPV6_NETWORK)
|
---|
133 | #define NET_STRING_ANY_ADDRESS (NET_STRING_NAMED_ADDRESS | NET_STRING_IP_ADDRESS)
|
---|
134 | #define NET_STRING_ANY_ADDRESS_NO_SCOPE (NET_STRING_NAMED_ADDRESS | NET_STRING_IP_ADDRESS_NO_SCOPE)
|
---|
135 | #define NET_STRING_ANY_SERVICE (NET_STRING_NAMED_SERVICE | NET_STRING_IP_SERVICE)
|
---|
136 | #define NET_STRING_ANY_SERVICE_NO_SCOPE (NET_STRING_NAMED_SERVICE | NET_STRING_IP_SERVICE_NO_SCOPE)
|
---|
137 |
|
---|
138 | typedef enum NET_ADDRESS_FORMAT_ {
|
---|
139 | NET_ADDRESS_FORMAT_UNSPECIFIED = 0,
|
---|
140 | NET_ADDRESS_DNS_NAME,
|
---|
141 | NET_ADDRESS_IPV4,
|
---|
142 | NET_ADDRESS_IPV6
|
---|
143 | } NET_ADDRESS_FORMAT;
|
---|
144 |
|
---|
145 | #if defined (_WS2DEF_) && defined (_WS2IPDEF_) && defined (_WINDNS_INCLUDED_)
|
---|
146 | typedef struct NET_ADDRESS_INFO_ {
|
---|
147 | NET_ADDRESS_FORMAT Format;
|
---|
148 | __C89_NAMELESS union {
|
---|
149 | struct {
|
---|
150 | WCHAR Address[DNS_MAX_NAME_BUFFER_LENGTH];
|
---|
151 | WCHAR Port[6];
|
---|
152 | } NamedAddress;
|
---|
153 | SOCKADDR_IN Ipv4Address;
|
---|
154 | SOCKADDR_IN6 Ipv6Address;
|
---|
155 | SOCKADDR IpAddress;
|
---|
156 | };
|
---|
157 | } NET_ADDRESS_INFO,*PNET_ADDRESS_INFO;
|
---|
158 |
|
---|
159 | DWORD WINAPI ParseNetworkString (CONST WCHAR *NetworkString, DWORD Types, PNET_ADDRESS_INFO AddressInfo, USHORT *PortNumber, BYTE *PrefixLength);
|
---|
160 | #endif
|
---|
161 | DWORD WINAPI GetIpErrorString (IP_STATUS ErrorCode, PWSTR Buffer, PDWORD Size);
|
---|
162 | #ifdef _WS2DEF_
|
---|
163 | ULONG WINAPI ResolveNeighbor (SOCKADDR *NetworkAddress, PVOID PhysicalAddress, PULONG PhysicalAddressLength);
|
---|
164 | #endif
|
---|
165 | ULONG WINAPI CreatePersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
|
---|
166 | ULONG WINAPI CreatePersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
|
---|
167 | ULONG WINAPI DeletePersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts);
|
---|
168 | ULONG WINAPI DeletePersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts);
|
---|
169 | ULONG WINAPI LookupPersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
|
---|
170 | ULONG WINAPI LookupPersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
|
---|
171 | #endif
|
---|
172 |
|
---|
173 | #if NTDDI_VERSION >= 0x06000000
|
---|
174 | #include <netioapi.h>
|
---|
175 | #endif
|
---|
176 |
|
---|
177 | #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00 */
|
---|
178 |
|
---|
179 | #ifdef __cplusplus
|
---|
180 | }
|
---|
181 | #endif
|
---|
182 |
|
---|
183 | #endif
|
---|