Home | History | Annotate | Download | only in include
      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
    391