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 14extern "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 391