zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

iphlpapi.h (10485B) - Raw


      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