|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the w64 mingw-runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  | #ifndef _INC_NETIOAPI | 
|  | #define _INC_NETIOAPI | 
|  |  | 
|  | #include <ws2def.h> | 
|  | #include <iprtrmib.h> | 
|  | #include <ifdef.h> | 
|  |  | 
|  | #ifndef ANY_SIZE | 
|  | #define ANY_SIZE 1 | 
|  | #endif | 
|  |  | 
|  | #if (_WIN32_WINNT >= 0x0600) | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #ifdef __IPHLPAPI_H__ | 
|  | #define NETIO_STATUS DWORD | 
|  | #define NETIOAPI_API_ WINAPI | 
|  | #else | 
|  | #define NETIO_STATUS NTSTATUS | 
|  | #define NETIOAPI_API_ NTAPI | 
|  | #endif | 
|  |  | 
|  | #define NETIOAPI_API NETIO_STATUS NETIOAPI_API_ | 
|  | #define ConvertInterfaceLuidToName __MINGW_NAME_AW(ConvertInterfaceLuidToName) | 
|  | #define ConvertInterfaceNameToLuid __MINGW_NAME_AW(ConvertInterfaceNameToLuid) | 
|  |  | 
|  | typedef enum _MIB_NOTIFICATION_TYPE { | 
|  | MibParameterNotification   = 0, | 
|  | MibAddInstance             = 1, | 
|  | MibDeleteInstance          = 2, | 
|  | MibInitialNotification     = 3 | 
|  | } MIB_NOTIFICATION_TYPE, *PMIB_NOTIFICATION_TYPE; | 
|  |  | 
|  | typedef struct _MIB_ANYCASTIPADDRESS_ROW { | 
|  | SOCKADDR_INET Address; | 
|  | NET_LUID      InterfaceLuid; | 
|  | NET_IFINDEX   InterfaceIndex; | 
|  | SCOPE_ID      ScopeId; | 
|  | } MIB_ANYCASTIPADDRESS_ROW, *PMIB_ANYCASTIPADDRESS_ROW; | 
|  |  | 
|  | typedef struct _MIB_ANYCASTIPADDRESS_TABLE { | 
|  | ULONG                    NumEntries; | 
|  | MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE]; | 
|  | } MIB_ANYCASTIPADDRESS_TABLE, *PMIB_ANYCASTIPADDRESS_TABLE; | 
|  |  | 
|  | typedef struct _IP_ADDRESS_PREFIX { | 
|  | SOCKADDR_INET Prefix; | 
|  | UINT8         PrefixLength; | 
|  | } IP_ADDRESS_PREFIX, *PIP_ADDRESS_PREFIX; | 
|  |  | 
|  | typedef struct _MIB_IPFORWARD_ROW2 { | 
|  | NET_LUID          InterfaceLuid; | 
|  | NET_IFINDEX       InterfaceIndex; | 
|  | IP_ADDRESS_PREFIX DestinationPrefix; | 
|  | SOCKADDR_INET     NextHop; | 
|  | UCHAR             SitePrefixLength; | 
|  | ULONG             ValidLifetime; | 
|  | ULONG             PreferredLifetime; | 
|  | ULONG             Metric; | 
|  | NL_ROUTE_PROTOCOL Protocol; | 
|  | BOOLEAN           Loopback; | 
|  | BOOLEAN           AutoconfigureAddress; | 
|  | BOOLEAN           Publish; | 
|  | BOOLEAN           Immortal; | 
|  | ULONG             Age; | 
|  | NL_ROUTE_ORIGIN   Origin; | 
|  | } MIB_IPFORWARD_ROW2, *PMIB_IPFORWARD_ROW2; | 
|  |  | 
|  | typedef struct _MIB_IPNET_ROW2 { | 
|  | SOCKADDR_INET     Address; | 
|  | NET_IFINDEX       InterfaceIndex; | 
|  | NET_LUID          InterfaceLuid; | 
|  | UCHAR             PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]; | 
|  | ULONG             PhysicalAddressLength; | 
|  | NL_NEIGHBOR_STATE State; | 
|  | __C89_NAMELESS union { | 
|  | __C89_NAMELESS struct { | 
|  | BOOLEAN IsRouter  :1; | 
|  | BOOLEAN IsUnreachable  :1; | 
|  | }; | 
|  | UCHAR  Flags; | 
|  | }; | 
|  | union { | 
|  | ULONG LastReachable; | 
|  | ULONG LastUnreachable; | 
|  | } ReachabilityTime; | 
|  | } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2; | 
|  |  | 
|  | typedef struct _MIB_IPNET_TABLE2 { | 
|  | ULONG          NumEntries; | 
|  | MIB_IPNET_ROW2 Table[ANY_SIZE]; | 
|  | } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2; | 
|  |  | 
|  | typedef struct _MIB_IPFORWARD_TABLE2 { | 
|  | ULONG              NumEntries; | 
|  | MIB_IPFORWARD_ROW2 Table[ANY_SIZE]; | 
|  | } MIB_IPFORWARD_TABLE2, *PMIB_IPFORWARD_TABLE2; | 
|  |  | 
|  | typedef struct _MIB_IPINTERFACE_ROW { | 
|  | ADDRESS_FAMILY                 Family; | 
|  | NET_LUID                       InterfaceLuid; | 
|  | NET_IFINDEX                    InterfaceIndex; | 
|  | ULONG                          MaxReassemblySize; | 
|  | ULONG64                        InterfaceIdentifier; | 
|  | ULONG                          MinRouterAdvertisementInterval; | 
|  | ULONG                          MaxRouterAdvertisementInterval; | 
|  | BOOLEAN                        AdvertisingEnabled; | 
|  | BOOLEAN                        ForwardingEnabled; | 
|  | BOOLEAN                        WeakHostSend; | 
|  | BOOLEAN                        WeakHostReceive; | 
|  | BOOLEAN                        UseAutomaticMetric; | 
|  | BOOLEAN                        UseNeighborUnreachabilityDetection; | 
|  | BOOLEAN                        ManagedAddressConfigurationSupported; | 
|  | BOOLEAN                        OtherStatefulConfigurationSupported; | 
|  | BOOLEAN                        AdvertiseDefaultRoute; | 
|  | NL_ROUTER_DISCOVERY_BEHAVIOR   RouterDiscoveryBehavior; | 
|  | ULONG                          DadTransmits; | 
|  | ULONG                          BaseReachableTime; | 
|  | ULONG                          RetransmitTime; | 
|  | ULONG                          PathMtuDiscoveryTimeout; | 
|  | NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior; | 
|  | ULONG                          LinkLocalAddressTimeout; | 
|  | ULONG                          ZoneIndices[ScopeLevelCount]; | 
|  | ULONG                          SitePrefixLength; | 
|  | ULONG                          Metric; | 
|  | ULONG                          NlMtu; | 
|  | BOOLEAN                        Connected; | 
|  | BOOLEAN                        SupportsWakeUpPatterns; | 
|  | BOOLEAN                        SupportsNeighborDiscovery; | 
|  | BOOLEAN                        SupportsRouterDiscovery; | 
|  | ULONG                          ReachableTime; | 
|  | NL_INTERFACE_OFFLOAD_ROD       TransmitOffload; | 
|  | NL_INTERFACE_OFFLOAD_ROD       ReceiveOffload; | 
|  | BOOLEAN                        DisableDefaultRoutes; | 
|  | } MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW; | 
|  |  | 
|  | typedef struct _MIB_IPINTERFACE_TABLE { | 
|  | ULONG               NumEntries; | 
|  | MIB_IPINTERFACE_ROW Table[ANY_SIZE]; | 
|  | } MIB_IPINTERFACE_TABLE, *PMIB_IPINTERFACE_TABLE; | 
|  |  | 
|  | typedef struct _MIB_UNICASTIPADDRESS_ROW { | 
|  | SOCKADDR_INET    Address; | 
|  | NET_LUID         InterfaceLuid; | 
|  | NET_IFINDEX      InterfaceIndex; | 
|  | NL_PREFIX_ORIGIN PrefixOrigin; | 
|  | NL_SUFFIX_ORIGIN SuffixOrigin; | 
|  | ULONG            ValidLifetime; | 
|  | ULONG            PreferredLifetime; | 
|  | UINT8            OnLinkPrefixLength; | 
|  | BOOLEAN          SkipAsSource; | 
|  | NL_DAD_STATE     DadState; | 
|  | SCOPE_ID         ScopeId; | 
|  | LARGE_INTEGER    CreationTimeStamp; | 
|  | } MIB_UNICASTIPADDRESS_ROW, *PMIB_UNICASTIPADDRESS_ROW; | 
|  |  | 
|  | typedef struct _MIB_UNICASTIPADDRESS_TABLE { | 
|  | ULONG                    NumEntries; | 
|  | MIB_UNICASTIPADDRESS_ROW Table[ANY_SIZE]; | 
|  | } MIB_UNICASTIPADDRESS_TABLE, *PMIB_UNICASTIPADDRESS_TABLE; | 
|  |  | 
|  | typedef struct _MIB_IF_ROW2 { | 
|  | NET_LUID                   InterfaceLuid; | 
|  | NET_IFINDEX                InterfaceIndex; | 
|  | GUID                       InterfaceGuid; | 
|  | WCHAR                      Alias[IF_MAX_STRING_SIZE + 1]; | 
|  | WCHAR                      Description[IF_MAX_STRING_SIZE + 1]; | 
|  | ULONG                      PhysicalAddressLength; | 
|  | UCHAR                     PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]; | 
|  | UCHAR                     PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH]; | 
|  | ULONG                      Mtu; | 
|  | IFTYPE                     Type; | 
|  | TUNNEL_TYPE                TunnelType; | 
|  | NDIS_MEDIUM                MediaType; | 
|  | NDIS_PHYSICAL_MEDIUM       PhysicalMediumType; | 
|  | NET_IF_ACCESS_TYPE         AccessType; | 
|  | NET_IF_DIRECTION_TYPE      DirectionType; | 
|  | struct { | 
|  | BOOLEAN HardwareInterface  :1; | 
|  | BOOLEAN FilterInterface  :1; | 
|  | BOOLEAN ConnectorPresent   :1; | 
|  | BOOLEAN NotAuthenticated  :1; | 
|  | BOOLEAN NotMediaConnected  :1; | 
|  | BOOLEAN Paused  :1; | 
|  | BOOLEAN LowPower  :1; | 
|  | BOOLEAN EndPointInterface  :1; | 
|  | } InterfaceAndOperStatusFlags; | 
|  | IF_OPER_STATUS             OperStatus; | 
|  | NET_IF_ADMIN_STATUS        AdminStatus; | 
|  | NET_IF_MEDIA_CONNECT_STATE MediaConnectState; | 
|  | NET_IF_NETWORK_GUID        NetworkGuid; | 
|  | NET_IF_CONNECTION_TYPE     ConnectionType; | 
|  | ULONG64                    TransmitLinkSpeed; | 
|  | ULONG64                    ReceiveLinkSpeed; | 
|  | ULONG64                    InOctets; | 
|  | ULONG64                    InUcastPkts; | 
|  | ULONG64                    InNUcastPkts; | 
|  | ULONG64                    InDiscards; | 
|  | ULONG64                    InErrors; | 
|  | ULONG64                    InUnknownProtos; | 
|  | ULONG64                    InUcastOctets; | 
|  | ULONG64                    InMulticastOctets; | 
|  | ULONG64                    InBroadcastOctets; | 
|  | ULONG64                    OutOctets; | 
|  | ULONG64                    OutUcastPkts; | 
|  | ULONG64                    OutNUcastPkts; | 
|  | ULONG64                    OutDiscards; | 
|  | ULONG64                    OutErrors; | 
|  | ULONG64                    OutUcastOctets; | 
|  | ULONG64                    OutMulticastOctets; | 
|  | ULONG64                    OutBroadcastOctets; | 
|  | ULONG64                    OutQLen; | 
|  | } MIB_IF_ROW2, *PMIB_IF_ROW2; | 
|  |  | 
|  | typedef struct _MIB_IF_TABLE2 { | 
|  | ULONG       NumEntries; | 
|  | MIB_IF_ROW2 Table[ANY_SIZE]; | 
|  | } MIB_IF_TABLE2, *PMIB_IF_TABLE2; | 
|  |  | 
|  | typedef struct _MIB_IFSTACK_ROW { | 
|  | NET_IFINDEX HigherLayerInterfaceIndex; | 
|  | NET_IFINDEX LowerLayerInterfaceIndex; | 
|  | } MIB_IFSTACK_ROW, *PMIB_IFSTACK_ROW; | 
|  |  | 
|  | typedef struct _MIB_IFSTACK_TABLE { | 
|  | ULONG           NumEntries; | 
|  | MIB_IFSTACK_ROW Table[ANY_SIZE]; | 
|  | } MIB_IFSTACK_TABLE, *PMIB_IFSTACK_TABLE; | 
|  |  | 
|  | typedef struct _MIB_INVERTEDIFSTACK_ROW { | 
|  | NET_IFINDEX LowerLayerInterfaceIndex; | 
|  | NET_IFINDEX HigherLayerInterfaceIndex; | 
|  | } MIB_INVERTEDIFSTACK_ROW, *PMIB_INVERTEDIFSTACK_ROW; | 
|  |  | 
|  | typedef struct _MIB_INVERTEDIFSTACK_TABLE { | 
|  | ULONG                   NumEntries; | 
|  | MIB_INVERTEDIFSTACK_ROW Table[ANY_SIZE]; | 
|  | } MIB_INVERTEDIFSTACK_TABLE, *PMIB_INVERTEDIFSTACK_TABLE; | 
|  |  | 
|  | typedef struct _MIB_IPPATH_ROW { | 
|  | SOCKADDR_INET Source; | 
|  | SOCKADDR_INET Destination; | 
|  | NET_LUID      InterfaceLuid; | 
|  | NET_IFINDEX   InterfaceIndex; | 
|  | SOCKADDR_INET CurrentNextHop; | 
|  | ULONG         PathMtu; | 
|  | ULONG         RttMean; | 
|  | ULONG         RttDeviation; | 
|  | __C89_NAMELESS union { | 
|  | ULONG LastReachable; | 
|  | ULONG LastUnreachable; | 
|  | }; | 
|  | BOOLEAN       IsReachable; | 
|  | ULONG64       LinkTransmitSpeed; | 
|  | ULONG64       LinkReceiveSpeed; | 
|  | } MIB_IPPATH_ROW, *PMIB_IPPATH_ROW; | 
|  |  | 
|  | typedef struct _MIB_IPPATH_TABLE { | 
|  | ULONG          NumEntries; | 
|  | MIB_IPPATH_ROW Table[ANY_SIZE]; | 
|  | } MIB_IPPATH_TABLE, *PMIB_IPPATH_TABLE; | 
|  |  | 
|  | typedef struct _MIB_MULTICASTIPADDRESS_ROW { | 
|  | SOCKADDR_INET Address; | 
|  | NET_IFINDEX   InterfaceIndex; | 
|  | NET_LUID      InterfaceLuid; | 
|  | SCOPE_ID      ScopeId; | 
|  | } MIB_MULTICASTIPADDRESS_ROW, *PMIB_MULTICASTIPADDRESS_ROW; | 
|  |  | 
|  | typedef struct _MIB_MULTICASTIPADDRESS_TABLE { | 
|  | ULONG                      NumEntries; | 
|  | MIB_MULTICASTIPADDRESS_ROW Table[ANY_SIZE]; | 
|  | } MIB_MULTICASTIPADDRESS_TABLE, *PMIB_MULTICASTIPADDRESS_TABLE; | 
|  |  | 
|  | NETIOAPI_API CancelMibChangeNotify2( | 
|  | HANDLE NotificationHandle | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceAliasToLuid( | 
|  | const WCHAR *InterfaceAlias, | 
|  | PNET_LUID InterfaceLuid | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceLuidToNameA( | 
|  | const NET_LUID *InterfaceLuid, | 
|  | PSTR InterfaceName, | 
|  | SIZE_T Length | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceLuidToNameW( | 
|  | const NET_LUID *InterfaceLuid, | 
|  | PWSTR InterfaceName, | 
|  | SIZE_T Length | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceNameToLuidA( | 
|  | const CHAR *InterfaceName, | 
|  | PNET_LUID InterfaceLuid | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceNameToLuidW( | 
|  | const WCHAR *InterfaceName, | 
|  | PNET_LUID InterfaceLuid | 
|  | ); | 
|  |  | 
|  | PCHAR WINAPI if_indextoname( | 
|  | NET_IFINDEX InterfaceIndex, | 
|  | PCHAR InterfaceName | 
|  | ); | 
|  |  | 
|  | NET_IFINDEX WINAPI if_nametoindex( | 
|  | PCSTR InterfaceName | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceGuidToLuid( | 
|  | const GUID *InterfaceGuid, | 
|  | PNET_LUID InterfaceLuid | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceIndexToLuid( | 
|  | NET_IFINDEX InterfaceIndex, | 
|  | PNET_LUID InterfaceLuid | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceLuidToAlias( | 
|  | const NET_LUID *InterfaceLuid, | 
|  | PWSTR InterfaceAlias, | 
|  | SIZE_T Length | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceLuidToGuid( | 
|  | const NET_LUID *InterfaceLuid, | 
|  | GUID *InterfaceGuid | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertInterfaceLuidToIndex( | 
|  | const NET_LUID *InterfaceLuid, | 
|  | PNET_IFINDEX InterfaceIndex | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertIpv4MaskToLength( | 
|  | ULONG Mask, | 
|  | PUINT8 MaskLength | 
|  | ); | 
|  |  | 
|  | NETIO_STATUS WINAPI ConvertLengthToIpv4Mask( | 
|  | ULONG MaskLength, | 
|  | PULONG Mask | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API CreateAnycastIpAddressEntry( | 
|  | const MIB_ANYCASTIPADDRESS_ROW *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API CreateIpForwardEntry2( | 
|  | const MIB_IPFORWARD_ROW2 *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpNetTable2( | 
|  | ADDRESS_FAMILY Family, | 
|  | PMIB_IPNET_TABLE2 *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpNetEntry2( | 
|  | PMIB_IPNET_ROW2 Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API CreateIpNetEntry2( | 
|  | const MIB_IPNET_ROW2 *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API CreateSortedAddressPairs( | 
|  | const PSOCKADDR_IN6 SourceAddressList, | 
|  | ULONG SourceAddressCount, | 
|  | const PSOCKADDR_IN6 DestinationAddressList, | 
|  | ULONG DestinationAddressCount, | 
|  | ULONG AddressSortOptions, | 
|  | PSOCKADDR_IN6_PAIR *SortedAddressPairList, | 
|  | ULONG *SortedAddressPairCount | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API CreateIpNetEntry2( | 
|  | const MIB_IPNET_ROW2 *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API CreateUnicastIpAddressEntry( | 
|  | const MIB_UNICASTIPADDRESS_ROW *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API DeleteIpForwardEntry2( | 
|  | const MIB_IPFORWARD_ROW2 *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpForwardTable2( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_IPFORWARD_TABLE2 *Table | 
|  | ); | 
|  |  | 
|  | VOID NETIOAPI_API_ FreeMibTable( | 
|  | PVOID Memory | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API DeleteIpNetEntry2( | 
|  | const MIB_IPNET_ROW2 *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpNetTable2( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_IPNET_TABLE2 *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API DeleteUnicastIpAddressEntry( | 
|  | const MIB_UNICASTIPADDRESS_ROW *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetUnicastIpAddressEntry( | 
|  | PMIB_UNICASTIPADDRESS_ROW Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API DeleteAnycastIpAddressEntry( | 
|  | const MIB_ANYCASTIPADDRESS_ROW *Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API FlushIpNetTable2( | 
|  | ADDRESS_FAMILY  Family, | 
|  | NET_IFINDEX InterfaceIndex | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API FlushIpPathTable( | 
|  | ADDRESS_FAMILY  Family | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetAnycastIpAddressEntry( | 
|  | PMIB_ANYCASTIPADDRESS_ROW Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetAnycastIpAddressTable( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_ANYCASTIPADDRESS_TABLE *Table | 
|  | ); | 
|  |  | 
|  | 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 | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIfEntry2( | 
|  | PMIB_IF_ROW2 Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIfTable2( | 
|  | PMIB_IF_TABLE2 *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API  GetIfStackTable( | 
|  | PMIB_IFSTACK_TABLE *Table | 
|  | ); | 
|  |  | 
|  | typedef enum _MIB_IF_TABLE_LEVEL { | 
|  | MibIfTableNormal = 0, | 
|  | MibIfTableRaw    = 1 | 
|  | } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL; | 
|  |  | 
|  | NETIOAPI_API GetIfTable2Ex( | 
|  | MIB_IF_TABLE_LEVEL Level, | 
|  | PMIB_IF_TABLE2 *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API  GetInvertedIfStackTable( | 
|  | PMIB_INVERTEDIFSTACK_TABLE *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpForwardEntry2( | 
|  | PMIB_IPFORWARD_ROW2 Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpInterfaceEntry( | 
|  | PMIB_IPINTERFACE_ROW Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API  GetIpInterfaceTable( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_IPINTERFACE_TABLE *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpNetEntry2( | 
|  | PMIB_IPNET_ROW2 Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpPathEntry( | 
|  | PMIB_IPPATH_ROW Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetIpPathTable( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_IPPATH_TABLE *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetMulticastIpAddressEntry( | 
|  | PMIB_MULTICASTIPADDRESS_ROW Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetMulticastIpAddressTable( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_MULTICASTIPADDRESS_TABLE *Table | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetTeredoPort( | 
|  | USHORT *Port | 
|  | ); | 
|  |  | 
|  | typedef void (WINAPI *PTEREDO_PORT_CHANGE_CALLBACK)(void* callerContext, USHORT Port, MIB_NOTIFICATION_TYPE type); | 
|  |  | 
|  | NETIOAPI_API NotifyTeredoPortChange( | 
|  | PTEREDO_PORT_CHANGE_CALLBACK Callback, | 
|  | PVOID CallerContext, | 
|  | BOOLEAN InitialNotification, | 
|  | HANDLE *NotificationHandle | 
|  | ); | 
|  |  | 
|  | typedef void (WINAPI *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK)(void* callerContext, MIB_UNICASTIPADDRESS_TABLE *AddressTable); | 
|  |  | 
|  | NETIOAPI_API NotifyStableUnicastIpAddressTable( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_UNICASTIPADDRESS_TABLE *Table, | 
|  | PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback, | 
|  | PVOID CallerContext, | 
|  | HANDLE *NotificationHandle | 
|  | ); | 
|  |  | 
|  | typedef void (WINAPI *PUNICAST_IPADDRESS_CHANGE_CALLBACK)(void* callerContext, PMIB_UNICASTIPADDRESS_ROW row, MIB_NOTIFICATION_TYPE type); | 
|  |  | 
|  | NETIOAPI_API NotifyUnicastIpAddressChange( | 
|  | ADDRESS_FAMILY Family, | 
|  | PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback, | 
|  | PVOID CallerContext, | 
|  | BOOLEAN InitialNotification, | 
|  | HANDLE *NotificationHandle | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API GetUnicastIpAddressTable( | 
|  | ADDRESS_FAMILY  Family, | 
|  | PMIB_UNICASTIPADDRESS_TABLE *Table | 
|  | ); | 
|  |  | 
|  | typedef VOID (*PIPINTERFACE_CHANGE_CALLBACK) ( | 
|  | PVOID CallerContext, PMIB_IPINTERFACE_ROW Row, | 
|  | MIB_NOTIFICATION_TYPE NotificationType | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API NotifyIpInterfaceChange( | 
|  | ADDRESS_FAMILY Family, | 
|  | PIPINTERFACE_CHANGE_CALLBACK Callback, | 
|  | PVOID CallerContext, | 
|  | BOOLEAN InitialNotification, | 
|  | HANDLE *NotificationHandle | 
|  | ); | 
|  |  | 
|  | typedef LPVOID PIPFORWARD_CHANGE_CALLBACK; | 
|  |  | 
|  | NETIOAPI_API NotifyRouteChange2( | 
|  | ADDRESS_FAMILY Family, | 
|  | PIPFORWARD_CHANGE_CALLBACK Callback, | 
|  | PVOID CallerContext, | 
|  | BOOLEAN InitialNotification, | 
|  | HANDLE *NotificationHandle | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API ResolveIpNetEntry2( | 
|  | PMIB_IPNET_ROW2 Row, | 
|  | const SOCKADDR_INET *SourceAddress | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API SetIpForwardEntry2( | 
|  | const MIB_IPFORWARD_ROW2 *Route | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API SetIpInterfaceEntry( | 
|  | PMIB_IPINTERFACE_ROW Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API SetIpNetEntry2( | 
|  | PMIB_IPNET_ROW2 Row | 
|  | ); | 
|  |  | 
|  | NETIOAPI_API SetUnicastIpAddressEntry( | 
|  | const MIB_UNICASTIPADDRESS_ROW *Row | 
|  | ); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif /*(_WIN32_WINNT >= 0x0600)*/ | 
|  |  | 
|  | #endif /*_INC_NETIOAPI*/ |