| 1 | /** | 
 
 
 
 
 | 2 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 3 | * No warranty is given; refer to the file DISCLAIMER within this pack | 
 
 
 
 
 | 4 | */ | 
 
 
 
 
 | 5 |  | 
 
 
 
 
 | 6 | #ifndef _NETIOAPI_H_ | 
 
 
 
 
 | 7 | #define _NETIOAPI_H_ | 
 
 
 
 
 | 8 |  | 
 
 
 
 
 | 9 | #include <winapifamily.h> | 
 
 
 
 
 | 10 |  | 
 
 
 
 
 | 11 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) | 
 
 
 
 
 | 12 |  | 
 
 
 
 
 | 13 | #ifdef __cplusplus | 
 
 
 
 
 | 14 | extern "C" { | 
 
 
 
 
 | 15 | #endif | 
 
 
 
 
 | 16 |  | 
 
 
 
 
 | 17 | #ifndef ANY_SIZE | 
 
 
 
 
 | 18 | #define ANY_SIZE 1 | 
 
 
 
 
 | 19 | #endif | 
 
 
 
 
 | 20 |  | 
 
 
 
 
 | 21 | #ifdef __IPHLPAPI_H__ | 
 
 
 
 
 | 22 | #define NETIO_STATUS DWORD | 
 
 
 
 
 | 23 | #define NETIO_SUCCESS(x) ((x) == NO_ERROR) | 
 
 
 
 
 | 24 | #define NETIOAPI_API_ WINAPI | 
 
 
 
 
 | 25 | #else | 
 
 
 
 
 | 26 | #include <ws2def.h> | 
 
 
 
 
 | 27 | #ifndef __CYGWIN__ | 
 
 
 
 
 | 28 | #include <ws2ipdef.h> | 
 
 
 
 
 | 29 | #endif | 
 
 
 
 
 | 30 | #include <iprtrmib.h> | 
 
 
 
 
 | 31 | #include <ifdef.h> | 
 
 
 
 
 | 32 | #include <nldef.h> | 
 
 
 
 
 | 33 |  | 
 
 
 
 
 | 34 | #define NETIO_STATUS NTSTATUS | 
 
 
 
 
 | 35 | #define NETIO_SUCCESS(x) NT_SUCCESS (x) | 
 
 
 
 
 | 36 | #define NETIOAPI_API_ NTAPI | 
 
 
 
 
 | 37 | #endif | 
 
 
 
 
 | 38 |  | 
 
 
 
 
 | 39 | #define _NETIOAPI_SUCCESS_ | 
 
 
 
 
 | 40 | #define NETIOAPI_API NETIO_STATUS NETIOAPI_API_ | 
 
 
 
 
 | 41 |  | 
 
 
 
 
 | 42 | #define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE | 
 
 
 
 
 | 43 |  | 
 
 
 
 
 | 44 | typedef enum _MIB_NOTIFICATION_TYPE { | 
 
 
 
 
 | 45 | MibParameterNotification, | 
 
 
 
 
 | 46 | MibAddInstance, | 
 
 
 
 
 | 47 | MibDeleteInstance, | 
 
 
 
 
 | 48 | MibInitialNotification | 
 
 
 
 
 | 49 | } MIB_NOTIFICATION_TYPE,*PMIB_NOTIFICATION_TYPE; | 
 
 
 
 
 | 50 |  | 
 
 
 
 
 | 51 | #ifdef _WS2IPDEF_ | 
 
 
 
 
 | 52 | #include <ntddndis.h> | 
 
 
 
 
 | 53 |  | 
 
 
 
 
 | 54 | #define MIB_INVALID_TEREDO_PORT_NUMBER 0 | 
 
 
 
 
 | 55 |  | 
 
 
 
 
 | 56 | typedef enum _MIB_IF_TABLE_LEVEL { | 
 
 
 
 
 | 57 | MibIfTableNormal, | 
 
 
 
 
 | 58 | MibIfTableRaw | 
 
 
 
 
 | 59 | } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL; | 
 
 
 
 
 | 60 |  | 
 
 
 
 
 | 61 | typedef struct _MIB_IF_ROW2 { | 
 
 
 
 
 | 62 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 63 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 64 | GUID InterfaceGuid; | 
 
 
 
 
 | 65 | WCHAR Alias[IF_MAX_STRING_SIZE + 1]; | 
 
 
 
 
 | 66 | WCHAR Description[IF_MAX_STRING_SIZE + 1]; | 
 
 
 
 
 | 67 | ULONG PhysicalAddressLength; | 
 
 
 
 
 | 68 | UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]; | 
 
 
 
 
 | 69 | UCHAR PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]; | 
 
 
 
 
 | 70 | ULONG Mtu; | 
 
 
 
 
 | 71 | IFTYPE Type; | 
 
 
 
 
 | 72 | TUNNEL_TYPE TunnelType; | 
 
 
 
 
 | 73 | NDIS_MEDIUM MediaType; | 
 
 
 
 
 | 74 | NDIS_PHYSICAL_MEDIUM PhysicalMediumType; | 
 
 
 
 
 | 75 | NET_IF_ACCESS_TYPE AccessType; | 
 
 
 
 
 | 76 | NET_IF_DIRECTION_TYPE DirectionType; | 
 
 
 
 
 | 77 | struct { | 
 
 
 
 
 | 78 | BOOLEAN HardwareInterface : 1; | 
 
 
 
 
 | 79 | BOOLEAN FilterInterface : 1; | 
 
 
 
 
 | 80 | BOOLEAN ConnectorPresent : 1; | 
 
 
 
 
 | 81 | BOOLEAN NotAuthenticated : 1; | 
 
 
 
 
 | 82 | BOOLEAN NotMediaConnected : 1; | 
 
 
 
 
 | 83 | BOOLEAN Paused : 1; | 
 
 
 
 
 | 84 | BOOLEAN LowPower : 1; | 
 
 
 
 
 | 85 | BOOLEAN EndPointInterface : 1; | 
 
 
 
 
 | 86 | } InterfaceAndOperStatusFlags; | 
 
 
 
 
 | 87 | IF_OPER_STATUS OperStatus; | 
 
 
 
 
 | 88 | NET_IF_ADMIN_STATUS AdminStatus; | 
 
 
 
 
 | 89 | NET_IF_MEDIA_CONNECT_STATE MediaConnectState; | 
 
 
 
 
 | 90 | NET_IF_NETWORK_GUID NetworkGuid; | 
 
 
 
 
 | 91 | NET_IF_CONNECTION_TYPE ConnectionType; | 
 
 
 
 
 | 92 | ULONG64 TransmitLinkSpeed; | 
 
 
 
 
 | 93 | ULONG64 ReceiveLinkSpeed; | 
 
 
 
 
 | 94 | ULONG64 InOctets; | 
 
 
 
 
 | 95 | ULONG64 InUcastPkts; | 
 
 
 
 
 | 96 | ULONG64 InNUcastPkts; | 
 
 
 
 
 | 97 | ULONG64 InDiscards; | 
 
 
 
 
 | 98 | ULONG64 InErrors; | 
 
 
 
 
 | 99 | ULONG64 InUnknownProtos; | 
 
 
 
 
 | 100 | ULONG64 InUcastOctets; | 
 
 
 
 
 | 101 | ULONG64 InMulticastOctets; | 
 
 
 
 
 | 102 | ULONG64 InBroadcastOctets; | 
 
 
 
 
 | 103 | ULONG64 OutOctets; | 
 
 
 
 
 | 104 | ULONG64 OutUcastPkts; | 
 
 
 
 
 | 105 | ULONG64 OutNUcastPkts; | 
 
 
 
 
 | 106 | ULONG64 OutDiscards; | 
 
 
 
 
 | 107 | ULONG64 OutErrors; | 
 
 
 
 
 | 108 | ULONG64 OutUcastOctets; | 
 
 
 
 
 | 109 | ULONG64 OutMulticastOctets; | 
 
 
 
 
 | 110 | ULONG64 OutBroadcastOctets; | 
 
 
 
 
 | 111 | ULONG64 OutQLen; | 
 
 
 
 
 | 112 | } MIB_IF_ROW2,*PMIB_IF_ROW2; | 
 
 
 
 
 | 113 |  | 
 
 
 
 
 | 114 | typedef struct _MIB_IF_TABLE2 { | 
 
 
 
 
 | 115 | ULONG NumEntries; | 
 
 
 
 
 | 116 | MIB_IF_ROW2 Table[ANY_SIZE]; | 
 
 
 
 
 | 117 | } MIB_IF_TABLE2, *PMIB_IF_TABLE2; | 
 
 
 
 
 | 118 |  | 
 
 
 
 
 | 119 | typedef struct _MIB_IPINTERFACE_ROW { | 
 
 
 
 
 | 120 | ADDRESS_FAMILY Family; | 
 
 
 
 
 | 121 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 122 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 123 | ULONG MaxReassemblySize; | 
 
 
 
 
 | 124 | ULONG64 InterfaceIdentifier; | 
 
 
 
 
 | 125 | ULONG MinRouterAdvertisementInterval; | 
 
 
 
 
 | 126 | ULONG MaxRouterAdvertisementInterval; | 
 
 
 
 
 | 127 | BOOLEAN AdvertisingEnabled; | 
 
 
 
 
 | 128 | BOOLEAN ForwardingEnabled; | 
 
 
 
 
 | 129 | BOOLEAN WeakHostSend; | 
 
 
 
 
 | 130 | BOOLEAN WeakHostReceive; | 
 
 
 
 
 | 131 | BOOLEAN UseAutomaticMetric; | 
 
 
 
 
 | 132 | BOOLEAN UseNeighborUnreachabilityDetection; | 
 
 
 
 
 | 133 | BOOLEAN ManagedAddressConfigurationSupported; | 
 
 
 
 
 | 134 | BOOLEAN OtherStatefulConfigurationSupported; | 
 
 
 
 
 | 135 | BOOLEAN AdvertiseDefaultRoute; | 
 
 
 
 
 | 136 | NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior; | 
 
 
 
 
 | 137 | ULONG DadTransmits; | 
 
 
 
 
 | 138 | ULONG BaseReachableTime; | 
 
 
 
 
 | 139 | ULONG RetransmitTime; | 
 
 
 
 
 | 140 | ULONG PathMtuDiscoveryTimeout; | 
 
 
 
 
 | 141 | NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior; | 
 
 
 
 
 | 142 | ULONG LinkLocalAddressTimeout; | 
 
 
 
 
 | 143 | ULONG ZoneIndices[ScopeLevelCount]; | 
 
 
 
 
 | 144 | ULONG SitePrefixLength; | 
 
 
 
 
 | 145 | ULONG Metric; | 
 
 
 
 
 | 146 | ULONG NlMtu; | 
 
 
 
 
 | 147 | BOOLEAN Connected; | 
 
 
 
 
 | 148 | BOOLEAN SupportsWakeUpPatterns; | 
 
 
 
 
 | 149 | BOOLEAN SupportsNeighborDiscovery; | 
 
 
 
 
 | 150 | BOOLEAN SupportsRouterDiscovery; | 
 
 
 
 
 | 151 | ULONG ReachableTime; | 
 
 
 
 
 | 152 | NL_INTERFACE_OFFLOAD_ROD TransmitOffload; | 
 
 
 
 
 | 153 | NL_INTERFACE_OFFLOAD_ROD ReceiveOffload; | 
 
 
 
 
 | 154 | BOOLEAN DisableDefaultRoutes; | 
 
 
 
 
 | 155 | } MIB_IPINTERFACE_ROW,*PMIB_IPINTERFACE_ROW; | 
 
 
 
 
 | 156 |  | 
 
 
 
 
 | 157 | typedef struct _MIB_IPINTERFACE_TABLE { | 
 
 
 
 
 | 158 | ULONG NumEntries; | 
 
 
 
 
 | 159 | MIB_IPINTERFACE_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 160 | } MIB_IPINTERFACE_TABLE,*PMIB_IPINTERFACE_TABLE; | 
 
 
 
 
 | 161 |  | 
 
 
 
 
 | 162 | typedef struct _MIB_IFSTACK_ROW { | 
 
 
 
 
 | 163 | NET_IFINDEX HigherLayerInterfaceIndex; | 
 
 
 
 
 | 164 | NET_IFINDEX LowerLayerInterfaceIndex; | 
 
 
 
 
 | 165 | } MIB_IFSTACK_ROW,*PMIB_IFSTACK_ROW; | 
 
 
 
 
 | 166 |  | 
 
 
 
 
 | 167 | typedef struct _MIB_INVERTEDIFSTACK_ROW { | 
 
 
 
 
 | 168 | NET_IFINDEX LowerLayerInterfaceIndex; | 
 
 
 
 
 | 169 | NET_IFINDEX HigherLayerInterfaceIndex; | 
 
 
 
 
 | 170 | } MIB_INVERTEDIFSTACK_ROW,*PMIB_INVERTEDIFSTACK_ROW; | 
 
 
 
 
 | 171 |  | 
 
 
 
 
 | 172 | typedef struct _MIB_IFSTACK_TABLE { | 
 
 
 
 
 | 173 | ULONG NumEntries; | 
 
 
 
 
 | 174 | MIB_IFSTACK_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 175 | } MIB_IFSTACK_TABLE,*PMIB_IFSTACK_TABLE; | 
 
 
 
 
 | 176 |  | 
 
 
 
 
 | 177 | typedef struct _MIB_INVERTEDIFSTACK_TABLE { | 
 
 
 
 
 | 178 | ULONG NumEntries; | 
 
 
 
 
 | 179 | MIB_INVERTEDIFSTACK_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 180 | } MIB_INVERTEDIFSTACK_TABLE,*PMIB_INVERTEDIFSTACK_TABLE; | 
 
 
 
 
 | 181 |  | 
 
 
 
 
 | 182 | typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES { | 
 
 
 
 
 | 183 | NL_BANDWIDTH_INFORMATION InboundBandwidthInformation; | 
 
 
 
 
 | 184 | NL_BANDWIDTH_INFORMATION OutboundBandwidthInformation; | 
 
 
 
 
 | 185 | } MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES, *PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES; | 
 
 
 
 
 | 186 |  | 
 
 
 
 
 | 187 | typedef struct _MIB_UNICASTIPADDRESS_ROW { | 
 
 
 
 
 | 188 | SOCKADDR_INET Address; | 
 
 
 
 
 | 189 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 190 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 191 | NL_PREFIX_ORIGIN PrefixOrigin; | 
 
 
 
 
 | 192 | NL_SUFFIX_ORIGIN SuffixOrigin; | 
 
 
 
 
 | 193 | ULONG ValidLifetime; | 
 
 
 
 
 | 194 | ULONG PreferredLifetime; | 
 
 
 
 
 | 195 | UINT8 OnLinkPrefixLength; | 
 
 
 
 
 | 196 | BOOLEAN SkipAsSource; | 
 
 
 
 
 | 197 | NL_DAD_STATE DadState; | 
 
 
 
 
 | 198 | SCOPE_ID ScopeId; | 
 
 
 
 
 | 199 | LARGE_INTEGER CreationTimeStamp; | 
 
 
 
 
 | 200 | } MIB_UNICASTIPADDRESS_ROW,*PMIB_UNICASTIPADDRESS_ROW; | 
 
 
 
 
 | 201 |  | 
 
 
 
 
 | 202 | typedef struct _MIB_UNICASTIPADDRESS_TABLE { | 
 
 
 
 
 | 203 | ULONG NumEntries; | 
 
 
 
 
 | 204 | MIB_UNICASTIPADDRESS_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 205 | } MIB_UNICASTIPADDRESS_TABLE,*PMIB_UNICASTIPADDRESS_TABLE; | 
 
 
 
 
 | 206 |  | 
 
 
 
 
 | 207 | typedef struct _MIB_ANYCASTIPADDRESS_ROW { | 
 
 
 
 
 | 208 | SOCKADDR_INET Address; | 
 
 
 
 
 | 209 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 210 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 211 | SCOPE_ID ScopeId; | 
 
 
 
 
 | 212 | } MIB_ANYCASTIPADDRESS_ROW,*PMIB_ANYCASTIPADDRESS_ROW; | 
 
 
 
 
 | 213 |  | 
 
 
 
 
 | 214 | typedef struct _MIB_ANYCASTIPADDRESS_TABLE { | 
 
 
 
 
 | 215 | ULONG NumEntries; | 
 
 
 
 
 | 216 | MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 217 | } MIB_ANYCASTIPADDRESS_TABLE,*PMIB_ANYCASTIPADDRESS_TABLE; | 
 
 
 
 
 | 218 |  | 
 
 
 
 
 | 219 | typedef struct _MIB_MULTICASTIPADDRESS_ROW { | 
 
 
 
 
 | 220 | SOCKADDR_INET Address; | 
 
 
 
 
 | 221 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 222 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 223 | SCOPE_ID ScopeId; | 
 
 
 
 
 | 224 | } MIB_MULTICASTIPADDRESS_ROW,*PMIB_MULTICASTIPADDRESS_ROW; | 
 
 
 
 
 | 225 |  | 
 
 
 
 
 | 226 | typedef struct _MIB_MULTICASTIPADDRESS_TABLE { | 
 
 
 
 
 | 227 | ULONG NumEntries; | 
 
 
 
 
 | 228 | MIB_MULTICASTIPADDRESS_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 229 | } MIB_MULTICASTIPADDRESS_TABLE,*PMIB_MULTICASTIPADDRESS_TABLE; | 
 
 
 
 
 | 230 |  | 
 
 
 
 
 | 231 | typedef struct _IP_ADDRESS_PREFIX { | 
 
 
 
 
 | 232 | SOCKADDR_INET Prefix; | 
 
 
 
 
 | 233 | UINT8 PrefixLength; | 
 
 
 
 
 | 234 | } IP_ADDRESS_PREFIX,*PIP_ADDRESS_PREFIX; | 
 
 
 
 
 | 235 |  | 
 
 
 
 
 | 236 | typedef struct _MIB_IPFORWARD_ROW2 { | 
 
 
 
 
 | 237 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 238 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 239 | IP_ADDRESS_PREFIX DestinationPrefix; | 
 
 
 
 
 | 240 | SOCKADDR_INET NextHop; | 
 
 
 
 
 | 241 | UCHAR SitePrefixLength; | 
 
 
 
 
 | 242 | ULONG ValidLifetime; | 
 
 
 
 
 | 243 | ULONG PreferredLifetime; | 
 
 
 
 
 | 244 | ULONG Metric; | 
 
 
 
 
 | 245 | NL_ROUTE_PROTOCOL Protocol; | 
 
 
 
 
 | 246 | BOOLEAN Loopback; | 
 
 
 
 
 | 247 | BOOLEAN AutoconfigureAddress; | 
 
 
 
 
 | 248 | BOOLEAN Publish; | 
 
 
 
 
 | 249 | BOOLEAN Immortal; | 
 
 
 
 
 | 250 | ULONG Age; | 
 
 
 
 
 | 251 | NL_ROUTE_ORIGIN Origin; | 
 
 
 
 
 | 252 | } MIB_IPFORWARD_ROW2,*PMIB_IPFORWARD_ROW2; | 
 
 
 
 
 | 253 |  | 
 
 
 
 
 | 254 | typedef struct _MIB_IPFORWARD_TABLE2 { | 
 
 
 
 
 | 255 | ULONG NumEntries; | 
 
 
 
 
 | 256 | MIB_IPFORWARD_ROW2 Table[ANY_SIZE]; | 
 
 
 
 
 | 257 | } MIB_IPFORWARD_TABLE2,*PMIB_IPFORWARD_TABLE2; | 
 
 
 
 
 | 258 |  | 
 
 
 
 
 | 259 | typedef struct _MIB_IPPATH_ROW { | 
 
 
 
 
 | 260 | SOCKADDR_INET Source; | 
 
 
 
 
 | 261 | SOCKADDR_INET Destination; | 
 
 
 
 
 | 262 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 263 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 264 | SOCKADDR_INET CurrentNextHop; | 
 
 
 
 
 | 265 | ULONG PathMtu; | 
 
 
 
 
 | 266 | ULONG RttMean; | 
 
 
 
 
 | 267 | ULONG RttDeviation; | 
 
 
 
 
 | 268 | __C89_NAMELESS union { | 
 
 
 
 
 | 269 | ULONG LastReachable; | 
 
 
 
 
 | 270 | ULONG LastUnreachable; | 
 
 
 
 
 | 271 | }; | 
 
 
 
 
 | 272 | BOOLEAN IsReachable; | 
 
 
 
 
 | 273 | ULONG64 LinkTransmitSpeed; | 
 
 
 
 
 | 274 | ULONG64 LinkReceiveSpeed; | 
 
 
 
 
 | 275 | } MIB_IPPATH_ROW,*PMIB_IPPATH_ROW; | 
 
 
 
 
 | 276 |  | 
 
 
 
 
 | 277 | typedef struct _MIB_IPPATH_TABLE { | 
 
 
 
 
 | 278 | ULONG NumEntries; | 
 
 
 
 
 | 279 | MIB_IPPATH_ROW Table[ANY_SIZE]; | 
 
 
 
 
 | 280 | } MIB_IPPATH_TABLE,*PMIB_IPPATH_TABLE; | 
 
 
 
 
 | 281 |  | 
 
 
 
 
 | 282 | typedef struct _MIB_IPNET_ROW2 { | 
 
 
 
 
 | 283 | SOCKADDR_INET Address; | 
 
 
 
 
 | 284 | NET_IFINDEX InterfaceIndex; | 
 
 
 
 
 | 285 | NET_LUID InterfaceLuid; | 
 
 
 
 
 | 286 | UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]; | 
 
 
 
 
 | 287 | ULONG PhysicalAddressLength; | 
 
 
 
 
 | 288 | NL_NEIGHBOR_STATE State; | 
 
 
 
 
 | 289 | __C89_NAMELESS union { | 
 
 
 
 
 | 290 | __C89_NAMELESS struct { | 
 
 
 
 
 | 291 | BOOLEAN IsRouter : 1; | 
 
 
 
 
 | 292 | BOOLEAN IsUnreachable : 1; | 
 
 
 
 
 | 293 | }; | 
 
 
 
 
 | 294 | UCHAR Flags; | 
 
 
 
 
 | 295 | }; | 
 
 
 
 
 | 296 | union { | 
 
 
 
 
 | 297 | ULONG LastReachable; | 
 
 
 
 
 | 298 | ULONG LastUnreachable; | 
 
 
 
 
 | 299 | } ReachabilityTime; | 
 
 
 
 
 | 300 | } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2; | 
 
 
 
 
 | 301 |  | 
 
 
 
 
 | 302 | typedef struct _MIB_IPNET_TABLE2 { | 
 
 
 
 
 | 303 | ULONG NumEntries; | 
 
 
 
 
 | 304 | MIB_IPNET_ROW2 Table[ANY_SIZE]; | 
 
 
 
 
 | 305 | } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2; | 
 
 
 
 
 | 306 |  | 
 
 
 
 
 | 307 | typedef VOID (NETIOAPI_API_ *PIPINTERFACE_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPINTERFACE_ROW Row, MIB_NOTIFICATION_TYPE NotificationType); | 
 
 
 
 
 | 308 | typedef VOID (NETIOAPI_API_ *PUNICAST_IPADDRESS_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_ROW Row, MIB_NOTIFICATION_TYPE NotificationType); | 
 
 
 
 
 | 309 | typedef VOID (NETIOAPI_API_ *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_TABLE AddressTable); | 
 
 
 
 
 | 310 |  | 
 
 
 
 
 | 311 | typedef VOID (NETIOAPI_API_ *PTEREDO_PORT_CHANGE_CALLBACK) (PVOID CallerContext, USHORT Port, MIB_NOTIFICATION_TYPE NotificationType); | 
 
 
 
 
 | 312 | typedef VOID (NETIOAPI_API_ *PIPFORWARD_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPFORWARD_ROW2 Row, MIB_NOTIFICATION_TYPE NotificationType); | 
 
 
 
 
 | 313 |  | 
 
 
 
 
 | 314 | NETIO_STATUS NETIOAPI_API_ GetIfEntry2 (PMIB_IF_ROW2 Row); | 
 
 
 
 
 | 315 | NETIO_STATUS NETIOAPI_API_ GetIfTable2 (PMIB_IF_TABLE2 *Table); | 
 
 
 
 
 | 316 | NETIO_STATUS NETIOAPI_API_ GetIfTable2Ex (MIB_IF_TABLE_LEVEL Level, PMIB_IF_TABLE2 *Table); | 
 
 
 
 
 | 317 | NETIO_STATUS NETIOAPI_API_ GetIfStackTable (PMIB_IFSTACK_TABLE *Table); | 
 
 
 
 
 | 318 | NETIO_STATUS NETIOAPI_API_ GetInvertedIfStackTable (PMIB_INVERTEDIFSTACK_TABLE *Table); | 
 
 
 
 
 | 319 | NETIO_STATUS NETIOAPI_API_ GetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row); | 
 
 
 
 
 | 320 | NETIO_STATUS NETIOAPI_API_ GetIpInterfaceTable (ADDRESS_FAMILY Family, PMIB_IPINTERFACE_TABLE *Table); | 
 
 
 
 
 | 321 | VOID NETIOAPI_API_ InitializeIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row); | 
 
 
 
 
 | 322 | NETIO_STATUS NETIOAPI_API_ NotifyIpInterfaceChange (ADDRESS_FAMILY Family, PIPINTERFACE_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); | 
 
 
 
 
 | 323 | NETIO_STATUS NETIOAPI_API_ SetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row); | 
 
 
 
 
 | 324 | NETIO_STATUS NETIOAPI_API_ GetIpNetworkConnectionBandwidthEstimates (NET_IFINDEX InterfaceIndex, ADDRESS_FAMILY AddressFamily, PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES BandwidthEstimates); | 
 
 
 
 
 | 325 | NETIO_STATUS NETIOAPI_API_ CreateUnicastIpAddressEntry (CONST MIB_UNICASTIPADDRESS_ROW *Row); | 
 
 
 
 
 | 326 | NETIO_STATUS NETIOAPI_API_ DeleteUnicastIpAddressEntry (CONST MIB_UNICASTIPADDRESS_ROW *Row); | 
 
 
 
 
 | 327 | NETIO_STATUS NETIOAPI_API_ GetUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row); | 
 
 
 
 
 | 328 | NETIO_STATUS NETIOAPI_API_ GetUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table); | 
 
 
 
 
 | 329 | VOID NETIOAPI_API_ InitializeUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row); | 
 
 
 
 
 | 330 | NETIO_STATUS NETIOAPI_API_ NotifyUnicastIpAddressChange (ADDRESS_FAMILY Family, PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); | 
 
 
 
 
 | 331 | NETIO_STATUS NETIOAPI_API_ CreateAnycastIpAddressEntry (CONST MIB_ANYCASTIPADDRESS_ROW *Row); | 
 
 
 
 
 | 332 | NETIO_STATUS NETIOAPI_API_ DeleteAnycastIpAddressEntry (CONST MIB_ANYCASTIPADDRESS_ROW *Row); | 
 
 
 
 
 | 333 | NETIO_STATUS NETIOAPI_API_ GetAnycastIpAddressEntry (PMIB_ANYCASTIPADDRESS_ROW Row); | 
 
 
 
 
 | 334 | NETIO_STATUS NETIOAPI_API_ GetAnycastIpAddressTable (ADDRESS_FAMILY Family, PMIB_ANYCASTIPADDRESS_TABLE *Table); | 
 
 
 
 
 | 335 | NETIO_STATUS NETIOAPI_API_ NotifyStableUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table, PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback, PVOID CallerContext, HANDLE *NotificationHandle); | 
 
 
 
 
 | 336 | NETIO_STATUS NETIOAPI_API_ SetUnicastIpAddressEntry (CONST MIB_UNICASTIPADDRESS_ROW *Row); | 
 
 
 
 
 | 337 | NETIO_STATUS NETIOAPI_API_ GetMulticastIpAddressEntry (PMIB_MULTICASTIPADDRESS_ROW Row); | 
 
 
 
 
 | 338 | NETIO_STATUS NETIOAPI_API_ GetMulticastIpAddressTable (ADDRESS_FAMILY Family, PMIB_MULTICASTIPADDRESS_TABLE *Table); | 
 
 
 
 
 | 339 | NETIO_STATUS NETIOAPI_API_ CreateIpForwardEntry2 (CONST MIB_IPFORWARD_ROW2 *Row); | 
 
 
 
 
 | 340 | NETIO_STATUS NETIOAPI_API_ DeleteIpForwardEntry2 (CONST MIB_IPFORWARD_ROW2 *Row); | 
 
 
 
 
 | 341 | NETIO_STATUS NETIOAPI_API_ GetBestRoute2 (NET_LUID *InterfaceLuid, NET_IFINDEX InterfaceIndex, CONST SOCKADDR_INET *SourceAddress, CONST SOCKADDR_INET *DestinationAddress, ULONG AddressSortOptions, PMIB_IPFORWARD_ROW2 BestRoute, SOCKADDR_INET *BestSourceAddress); | 
 
 
 
 
 | 342 | NETIO_STATUS NETIOAPI_API_ GetIpForwardEntry2 (PMIB_IPFORWARD_ROW2 Row); | 
 
 
 
 
 | 343 | NETIO_STATUS NETIOAPI_API_ GetIpForwardTable2 (ADDRESS_FAMILY Family, PMIB_IPFORWARD_TABLE2 *Table); | 
 
 
 
 
 | 344 | VOID NETIOAPI_API_ InitializeIpForwardEntry (PMIB_IPFORWARD_ROW2 Row); | 
 
 
 
 
 | 345 | NETIO_STATUS NETIOAPI_API_ NotifyRouteChange2 (ADDRESS_FAMILY AddressFamily, PIPFORWARD_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); | 
 
 
 
 
 | 346 | NETIO_STATUS NETIOAPI_API_ SetIpForwardEntry2 (CONST MIB_IPFORWARD_ROW2 *Route); | 
 
 
 
 
 | 347 | NETIO_STATUS NETIOAPI_API_ FlushIpPathTable (ADDRESS_FAMILY Family); | 
 
 
 
 
 | 348 | NETIO_STATUS NETIOAPI_API_ GetIpPathEntry (PMIB_IPPATH_ROW Row); | 
 
 
 
 
 | 349 | NETIO_STATUS NETIOAPI_API_ GetIpPathTable (ADDRESS_FAMILY Family, PMIB_IPPATH_TABLE *Table); | 
 
 
 
 
 | 350 | NETIO_STATUS NETIOAPI_API_ CreateIpNetEntry2 (CONST MIB_IPNET_ROW2 *Row); | 
 
 
 
 
 | 351 | NETIO_STATUS NETIOAPI_API_ DeleteIpNetEntry2 (CONST MIB_IPNET_ROW2 *Row); | 
 
 
 
 
 | 352 | NETIO_STATUS NETIOAPI_API_ FlushIpNetTable2 (ADDRESS_FAMILY Family, NET_IFINDEX InterfaceIndex); | 
 
 
 
 
 | 353 | NETIO_STATUS NETIOAPI_API_ GetIpNetEntry2 (PMIB_IPNET_ROW2 Row); | 
 
 
 
 
 | 354 | NETIO_STATUS NETIOAPI_API_ GetIpNetTable2 (ADDRESS_FAMILY Family, PMIB_IPNET_TABLE2 *Table); | 
 
 
 
 
 | 355 | NETIO_STATUS NETIOAPI_API_ ResolveIpNetEntry2 (PMIB_IPNET_ROW2 Row, CONST SOCKADDR_INET *SourceAddress); | 
 
 
 
 
 | 356 | NETIO_STATUS NETIOAPI_API_ SetIpNetEntry2 (PMIB_IPNET_ROW2 Row); | 
 
 
 
 
 | 357 | NETIO_STATUS NETIOAPI_API_ NotifyTeredoPortChange (PTEREDO_PORT_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle); | 
 
 
 
 
 | 358 | NETIO_STATUS NETIOAPI_API_ GetTeredoPort (USHORT *Port); | 
 
 
 
 
 | 359 | NETIO_STATUS NETIOAPI_API_ CancelMibChangeNotify2 (HANDLE NotificationHandle); | 
 
 
 
 
 | 360 | VOID NETIOAPI_API_ FreeMibTable (PVOID Memory); | 
 
 
 
 
 | 361 | NETIO_STATUS NETIOAPI_API_ CreateSortedAddressPairs (const PSOCKADDR_IN6 SourceAddressList, ULONG SourceAddressCount, const PSOCKADDR_IN6 DestinationAddressList, ULONG DestinationAddressCount, ULONG AddressSortOptions, PSOCKADDR_IN6_PAIR *SortedAddressPairList, ULONG *SortedAddressPairCount); | 
 
 
 
 
 | 362 | #endif | 
 
 
 
 
 | 363 |  | 
 
 
 
 
 | 364 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceNameToLuidA (CONST CHAR *InterfaceName, NET_LUID *InterfaceLuid); | 
 
 
 
 
 | 365 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceNameToLuidW (CONST WCHAR *InterfaceName, NET_LUID *InterfaceLuid); | 
 
 
 
 
 | 366 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToNameA (CONST NET_LUID *InterfaceLuid, PSTR InterfaceName, SIZE_T Length); | 
 
 
 
 
 | 367 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToNameW (CONST NET_LUID *InterfaceLuid, PWSTR InterfaceName, SIZE_T Length); | 
 
 
 
 
 | 368 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToIndex (CONST NET_LUID *InterfaceLuid, PNET_IFINDEX InterfaceIndex); | 
 
 
 
 
 | 369 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceIndexToLuid (NET_IFINDEX InterfaceIndex, PNET_LUID InterfaceLuid); | 
 
 
 
 
 | 370 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToAlias (CONST NET_LUID *InterfaceLuid, PWSTR InterfaceAlias, SIZE_T Length); | 
 
 
 
 
 | 371 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceAliasToLuid (CONST WCHAR *InterfaceAlias, PNET_LUID InterfaceLuid); | 
 
 
 
 
 | 372 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceLuidToGuid (CONST NET_LUID *InterfaceLuid, GUID *InterfaceGuid); | 
 
 
 
 
 | 373 | NETIO_STATUS NETIOAPI_API_ ConvertInterfaceGuidToLuid (CONST GUID *InterfaceGuid, PNET_LUID InterfaceLuid); | 
 
 
 
 
 | 374 | NET_IFINDEX NETIOAPI_API_ if_nametoindex (PCSTR InterfaceName); | 
 
 
 
 
 | 375 | PCHAR NETIOAPI_API_ if_indextoname (NET_IFINDEX InterfaceIndex, PCHAR InterfaceName); | 
 
 
 
 
 | 376 | NET_IF_COMPARTMENT_ID NETIOAPI_API_ GetCurrentThreadCompartmentId (VOID); | 
 
 
 
 
 | 377 | NETIO_STATUS NETIOAPI_API_ SetCurrentThreadCompartmentId (NET_IF_COMPARTMENT_ID CompartmentId); | 
 
 
 
 
 | 378 | NET_IF_COMPARTMENT_ID NETIOAPI_API_ GetSessionCompartmentId (ULONG SessionId); | 
 
 
 
 
 | 379 | NETIO_STATUS NETIOAPI_API_ SetSessionCompartmentId (ULONG SessionId, NET_IF_COMPARTMENT_ID CompartmentId); | 
 
 
 
 
 | 380 | NETIO_STATUS NETIOAPI_API_ GetNetworkInformation (CONST NET_IF_NETWORK_GUID *NetworkGuid, PNET_IF_COMPARTMENT_ID CompartmentId, PULONG SiteId, PWCHAR NetworkName, ULONG Length); | 
 
 
 
 
 | 381 | NETIO_STATUS NETIOAPI_API_ SetNetworkInformation (CONST NET_IF_NETWORK_GUID *NetworkGuid, NET_IF_COMPARTMENT_ID CompartmentId, CONST WCHAR *NetworkName); | 
 
 
 
 
 | 382 | NETIO_STATUS NETIOAPI_API_ ConvertLengthToIpv4Mask (ULONG MaskLength, PULONG Mask); | 
 
 
 
 
 | 383 | NETIO_STATUS NETIOAPI_API_ ConvertIpv4MaskToLength (ULONG Mask, PUINT8 MaskLength); | 
 
 
 
 
 | 384 |  | 
 
 
 
 
 | 385 | #ifdef __cplusplus | 
 
 
 
 
 | 386 | } | 
 
 
 
 
 | 387 | #endif | 
 
 
 
 
 | 388 |  | 
 
 
 
 
 | 389 | #endif | 
 
 
 
 
 | 390 | #endif |