|  iphlpapi.h (5.2.3790.3959-Windows 5.0)  |   |  iphlpapi.h (6.0.6002.18005-Windows 6.0)  | 
 
       |   |  | 
      | skipping to change at line 28 |   | skipping to change at line 28 | 
      | #if _MSC_VER > 1000 |   | #if _MSC_VER > 1000 | 
      | #pragma once |   | #pragma once | 
      | #endif |   | #endif | 
       |   |  | 
      | #ifdef __cplusplus |   | #ifdef __cplusplus | 
      | extern "C" { |   | extern "C" { | 
      | #endif |   | #endif | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
       | 
      | // IPRTRMIB.H has the definitions of the strcutures used to set and get     // |   | // IPRTRMIB.H has the definitions of the structures used to set and get     // | 
      | // information                                                              // |   | // information                                                              // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
      | #include <iprtrmib.h> |   | #include <iprtrmib.h> | 
      | #include <ipexport.h> |   | #include <ipexport.h> | 
      | #include <iptypes.h> |   | #include <iptypes.h> | 
       | 
       |   | #include <tcpestats.h> | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // The GetXXXTable APIs take a buffer and a size of buffer.  If the buffer  // |   | // The GetXXXTable APIs take a buffer and a size of buffer.  If the buffer  // | 
      | // is not large enough, the APIs return ERROR_INSUFFICIENT_BUFFER  and      // |   | // is not large enough, the APIs return ERROR_INSUFFICIENT_BUFFER  and      // | 
      | // *pdwSize is the required buffer size                                     // |   | // *pdwSize is the required buffer size                                     // | 
      | // The bOrder is a BOOLEAN, which if TRUE sorts the table according to      // |   | // The bOrder is a BOOLEAN, which if TRUE sorts the table according to      // | 
      | // MIB-II (RFC XXXX)                                                        // |   | // MIB-II (RFC XXXX)                                                        // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
      | skipping to change at line 108 |   | skipping to change at line 109 | 
      |     IN OUT PULONG           pdwSize, |   |     IN OUT PULONG           pdwSize, | 
      |     IN     BOOL             bOrder |   |     IN     BOOL             bOrder | 
      |     ); |   |     ); | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Gets the current IP Address to Physical Address (ARP) mapping            // |   | // Gets the current IP Address to Physical Address (ARP) mapping            // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetIpNetTable( |   | GetIpNetTable( | 
       | 
      |     OUT    PMIB_IPNETTABLE pIpNetTable, |   |     OUT PMIB_IPNETTABLE IpNetTable, | 
      |     IN OUT PULONG          pdwSize, |   |     IN OUT PULONG SizePointer, | 
      |     IN     BOOL            bOrder |   |     IN BOOL Order | 
      |     ); |   |     ); | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Gets the IP Routing Table  (RFX XXXX)                                    // |   | // Gets the IP Routing Table  (RFX XXXX)                                    // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
       |   |  | 
      | skipping to change at line 136 |   | skipping to change at line 137 | 
      |     IN OUT PULONG              pdwSize, |   |     IN OUT PULONG              pdwSize, | 
      |     IN     BOOL                bOrder |   |     IN     BOOL                bOrder | 
      |     ); |   |     ); | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Gets TCP Connection/UDP Listener Table                                   // |   | // Gets TCP Connection/UDP Listener Table                                   // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetTcpTable( |   | GetTcpTable( | 
       | 
      |     OUT    PMIB_TCPTABLE pTcpTable, |   |     OUT PMIB_TCPTABLE TcpTable, | 
      |     IN OUT PDWORD        pdwSize, |   |     IN OUT PULONG SizePointer, | 
      |     IN     BOOL          bOrder |   |     IN BOOL Order | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
       | 
       |   | GetExtendedTcpTable( | 
       |   |     OUT    PVOID           pTcpTable, | 
       |   |     IN OUT PDWORD          pdwSize, | 
       |   |     IN     BOOL            bOrder, | 
       |   |     IN     ULONG           ulAf, | 
       |   |     IN     TCP_TABLE_CLASS TableClass, | 
       |   |     IN     ULONG           Reserved | 
       |   |     ); | 
       |   |  | 
       |   | DWORD | 
       |   | WINAPI | 
       |   | GetOwnerModuleFromTcpEntry( | 
       |   |     IN     PMIB_TCPROW_OWNER_MODULE      pTcpEntry, | 
       |   |     IN     TCPIP_OWNER_MODULE_INFO_CLASS Class, | 
       |   |     OUT    PVOID                         pBuffer, | 
       |   |     IN OUT PDWORD                        pdwSize | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
      | GetUdpTable( |   | GetUdpTable( | 
       | 
      |     OUT    PMIB_UDPTABLE pUdpTable, |   |     OUT PMIB_UDPTABLE UdpTable, | 
      |     IN OUT PDWORD        pdwSize, |   |     IN OUT PULONG SizePointer, | 
      |     IN     BOOL          bOrder |   |     IN BOOL Order | 
       |   |     ); | 
       |   |  | 
       |   | DWORD | 
       |   | WINAPI | 
       |   | GetExtendedUdpTable( | 
       |   |     OUT    PVOID           pUdpTable, | 
       |   |     IN OUT PDWORD          pdwSize, | 
       |   |     IN     BOOL            bOrder, | 
       |   |     IN     ULONG           ulAf, | 
       |   |     IN     UDP_TABLE_CLASS TableClass, | 
       |   |     IN     ULONG           Reserved | 
       |   |     ); | 
       |   |  | 
       |   | DWORD | 
       |   | WINAPI | 
       |   | GetOwnerModuleFromUdpEntry( | 
       |   |     IN     PMIB_UDPROW_OWNER_MODULE      pUdpEntry, | 
       |   |     IN     TCPIP_OWNER_MODULE_INFO_CLASS Class, | 
       |   |     OUT    PVOID                         pBuffer, | 
       |   |     IN OUT PDWORD                        pdwSize | 
       |   |     ); | 
       |   |  | 
       |   | #if (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | GetTcpTable2( | 
       |   |     OUT PMIB_TCPTABLE2 TcpTable, | 
       |   |     IN OUT PULONG SizePointer, | 
       |   |     IN BOOL Order | 
       |   |     ); | 
       |   | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   |  | 
       |   | #if (NTDDI_VERSION < NTDDI_LONGHORN) | 
       |   | // | 
       |   | // Deprecated APIs, Added for documentation. | 
       |   | // | 
       |   |  | 
       |   | DWORD | 
       |   | AllocateAndGetTcpExTableFromStack( | 
       |   |     OUT PVOID         *ppTcpTable, | 
       |   |     IN  BOOL          bOrder, | 
       |   |     IN  HANDLE        hHeap, | 
       |   |     IN  DWORD         dwFlags, | 
       |   |     IN  DWORD         dwFamily | 
       |   |     ); | 
       |   |  | 
       |   | DWORD | 
       |   | AllocateAndGetUdpExTableFromStack( | 
       |   |     OUT PVOID         *ppUdpTable, | 
       |   |     IN  BOOL          bOrder, | 
       |   |     IN  HANDLE        hHeap, | 
       |   |     IN  DWORD         dwFlags, | 
       |   |     IN  DWORD         dwFamily | 
       |   |     ); | 
       |   |  | 
       |   | #endif // (NTDDI_VERSION < NTDDI_LONGHORN) | 
       |   |  | 
       |   | #ifdef _WS2IPDEF_ | 
       |   | // | 
       |   | // The following definitions require Winsock2. | 
       |   | // | 
       |   |  | 
       |   | #if (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | GetTcp6Table( | 
       |   |     OUT PMIB_TCP6TABLE TcpTable, | 
       |   |     IN OUT PULONG SizePointer, | 
       |   |     IN BOOL Order | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | GetTcp6Table2( | 
       |   |     OUT PMIB_TCP6TABLE2 TcpTable, | 
       |   |     IN OUT PULONG SizePointer, | 
       |   |     IN BOOL Order | 
       |   |     ); | 
       |   |  | 
       |   | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   |  | 
       |   | #ifdef WINAPI | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | GetPerTcpConnectionEStats( | 
       |   |     PMIB_TCPROW Row, | 
       |   |     TCP_ESTATS_TYPE EstatsType, | 
       |   |     __out_bcount_opt(RwSize) PUCHAR Rw, | 
       |   |     ULONG RwVersion, | 
       |   |     ULONG RwSize, | 
       |   |     __out_bcount_opt(RosSize) PUCHAR Ros, | 
       |   |     ULONG RosVersion, | 
       |   |     ULONG RosSize, | 
       |   |     __out_bcount_opt(RodSize) PUCHAR Rod, | 
       |   |     ULONG RodVersion, | 
       |   |     ULONG RodSize | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | SetPerTcpConnectionEStats( | 
       |   |     PMIB_TCPROW Row, | 
       |   |     TCP_ESTATS_TYPE EstatsType, | 
       |   |     __in_bcount(RwSize) PUCHAR Rw, | 
       |   |     ULONG RwVersion, | 
       |   |     ULONG RwSize, | 
       |   |     ULONG Offset | 
       |   |     ); | 
       |   |  | 
       |   | #ifdef _WS2IPDEF_ | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | GetPerTcp6ConnectionEStats( | 
       |   |     PMIB_TCP6ROW Row, | 
       |   |     TCP_ESTATS_TYPE EstatsType, | 
       |   |     __out_bcount_opt(RwSize) PUCHAR Rw, | 
       |   |     ULONG RwVersion, | 
       |   |     ULONG RwSize, | 
       |   |     __out_bcount_opt(RosSize) PUCHAR Ros, | 
       |   |     ULONG RosVersion, | 
       |   |     ULONG RosSize, | 
       |   |     __out_bcount_opt(RodSize) PUCHAR Rod, | 
       |   |     ULONG RodVersion, | 
       |   |     ULONG RodSize | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | SetPerTcp6ConnectionEStats( | 
       |   |     PMIB_TCP6ROW Row, | 
       |   |     TCP_ESTATS_TYPE EstatsType, | 
       |   |     __in_bcount(RwSize) PUCHAR Rw, | 
       |   |     ULONG RwVersion, | 
       |   |     ULONG RwSize, | 
       |   |     ULONG Offset | 
       |   |     ); | 
       |   |  | 
       |   | #endif // _WS2IPDEF_ | 
       |   |  | 
       |   | #endif // WINAPI | 
       |   |  | 
       |   | DWORD | 
       |   | WINAPI | 
       |   | GetOwnerModuleFromTcp6Entry( | 
       |   |     IN     PMIB_TCP6ROW_OWNER_MODULE     pTcpEntry, | 
       |   |     IN     TCPIP_OWNER_MODULE_INFO_CLASS Class, | 
       |   |     OUT    PVOID                         pBuffer, | 
       |   |     IN OUT PDWORD                        pdwSize | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | GetUdp6Table( | 
       |   |     OUT PMIB_UDP6TABLE Udp6Table, | 
       |   |     IN OUT PULONG SizePointer, | 
       |   |     IN BOOL Order | 
       |   |     ); | 
       |   |  | 
       |   | DWORD | 
       |   | WINAPI | 
       |   | GetOwnerModuleFromUdp6Entry( | 
       |   |     IN     PMIB_UDP6ROW_OWNER_MODULE     pUdpEntry, | 
       |   |     IN     TCPIP_OWNER_MODULE_INFO_CLASS Class, | 
       |   |     OUT    PVOID                         pBuffer, | 
       |   |     IN OUT PDWORD                        pdwSize | 
       |   |     ); | 
       |   |  | 
       |   | #endif // _WS2IPDEF_ | 
       |   |  | 
       |   | DWORD | 
       |   | GetOwnerModuleFromPidAndInfo( | 
       |   |     IN ULONG                         ulPid, | 
       |   |     IN ULONGLONG                     *pInfo, | 
       |   |     IN TCPIP_OWNER_MODULE_INFO_CLASS Class, | 
       |   |     OUT PVOID                        pBuffer, | 
       |   |     IN OUT PDWORD                    pdwSize | 
      |     ); |   |     ); | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Gets IP/ICMP/TCP/UDP Statistics                                          // |   | // Gets IP/ICMP/TCP/UDP Statistics                                          // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
       | 
      | DWORD |   | #if (NTDDI_VERSION >= NTDDI_WIN2K) | 
       |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetIpStatistics( |   | GetIpStatistics( | 
       | 
      |     OUT  PMIB_IPSTATS   pStats |   |     OUT PMIB_IPSTATS Statistics | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetIpStatisticsEx( |   | GetIpStatisticsEx( | 
       | 
      |     OUT  PMIB_IPSTATS   pStats, |   |     OUT PMIB_IPSTATS Statistics, | 
      |     IN   DWORD          dwFamily |   |     IN ULONG Family | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
       |   | WINAPI | 
       |   | SetIpStatisticsEx( | 
       |   |     IN PMIB_IPSTATS Statistics, | 
       |   |     IN ULONG Family | 
       |   |     ); | 
       |   |  | 
       |   | #endif | 
       |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetIcmpStatistics( |   | GetIcmpStatistics( | 
       | 
      |     OUT PMIB_ICMP   pStats |   |     OUT PMIB_ICMP Statistics | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | DWORD |   | #if (NTDDI_VERSION >= NTDDI_XPSP1) | 
       |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetIcmpStatisticsEx( |   | GetIcmpStatisticsEx( | 
       | 
      |     OUT PMIB_ICMP_EX    pStats, |   |     OUT PMIB_ICMP_EX Statistics, | 
      |     IN  DWORD           dwFamily |   |     IN ULONG Family | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
       | 
      | DWORD |   | #if (NTDDI_VERSION >= NTDDI_WIN2K) | 
       |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetTcpStatistics( |   | GetTcpStatistics( | 
       | 
      |     OUT PMIB_TCPSTATS   pStats |   |     OUT PMIB_TCPSTATS Statistics | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetTcpStatisticsEx( |   | GetTcpStatisticsEx( | 
       | 
      |     OUT PMIB_TCPSTATS   pStats, |   |     OUT PMIB_TCPSTATS Statistics, | 
      |     IN  DWORD           dwFamily |   |     IN ULONG Family | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetUdpStatistics( |   | GetUdpStatistics( | 
       | 
      |     OUT PMIB_UDPSTATS   pStats |   |     OUT PMIB_UDPSTATS Stats | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetUdpStatisticsEx( |   | GetUdpStatisticsEx( | 
       | 
      |     OUT PMIB_UDPSTATS   pStats, |   |     OUT PMIB_UDPSTATS Statistics, | 
      |     IN  DWORD           dwFamily |   |     IN ULONG Family | 
      |     ); |   |     ); | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Used to set the ifAdminStatus on an interface.  The only fields of the   // |   | // Used to set the ifAdminStatus on an interface.  The only fields of the   // | 
      | // MIB_IFROW that are relevant are the dwIndex (index of the interface      // |   | // MIB_IFROW that are relevant are the dwIndex (index of the interface      // | 
      | // whose status needs to be set) and the dwAdminStatus which can be either  // |   | // whose status needs to be set) and the dwAdminStatus which can be either  // | 
      | // MIB_IF_ADMIN_STATUS_UP or MIB_IF_ADMIN_STATUS_DOWN                       // |   | // MIB_IF_ADMIN_STATUS_UP or MIB_IF_ADMIN_STATUS_DOWN                       // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
      | skipping to change at line 263 |   | skipping to change at line 475 | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Used to set the ipForwarding to ON or OFF (currently only ON->OFF is     // |   | // Used to set the ipForwarding to ON or OFF (currently only ON->OFF is     // | 
      | // allowed) and to set the defaultTTL.  If only one of the fields needs to  // |   | // allowed) and to set the defaultTTL.  If only one of the fields needs to  // | 
      | // be modified and the other needs to be the same as before the other field // |   | // be modified and the other needs to be the same as before the other field // | 
      | // needs to be set to MIB_USE_CURRENT_TTL or MIB_USE_CURRENT_FORWARDING as  // |   | // needs to be set to MIB_USE_CURRENT_TTL or MIB_USE_CURRENT_FORWARDING as  // | 
      | // the case may be                                                          // |   | // the case may be                                                          // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
       | 
       |   | #if (NTDDI_VERSION >= NTDDI_WIN2K) | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | SetIpStatistics( |   | SetIpStatistics( | 
      |     IN PMIB_IPSTATS pIpStats |   |     IN PMIB_IPSTATS pIpStats | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Used to set the defaultTTL.                                              // |   | // Used to set the defaultTTL.                                              // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | SetIpTTL( |   | SetIpTTL( | 
       |   |  | 
      | skipping to change at line 364 |   | skipping to change at line 578 | 
      |     IN PIP_INTERFACE_INFO pIfTable, |   |     IN PIP_INTERFACE_INFO pIfTable, | 
      |     OUT PULONG            dwOutBufLen |   |     OUT PULONG            dwOutBufLen | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | GetUniDirectionalAdapterInfo(OUT PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, |   | GetUniDirectionalAdapterInfo(OUT PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, | 
      |                  OUT PULONG dwOutBufLen |   |                  OUT PULONG dwOutBufLen | 
      |                  ); |   |                  ); | 
       |   |  | 
       | 
      | #ifndef NhpAllocateAndGetInterfaceInfoFromStack_DEFINED |   | #if (NTDDI_VERSION >= NTDDI_WIN2KSP1) | 
      | #define NhpAllocateAndGetInterfaceInfoFromStack_DEFINED |   | #ifndef NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED | 
       |   | #define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | NhpAllocateAndGetInterfaceInfoFromStack( |   | NhpAllocateAndGetInterfaceInfoFromStack( | 
      |     OUT IP_INTERFACE_NAME_INFO **ppTable, |   |     OUT IP_INTERFACE_NAME_INFO **ppTable, | 
      |     OUT PDWORD                 pdwCount, |   |     OUT PDWORD                 pdwCount, | 
      |     IN BOOL                    bOrder, |   |     IN BOOL                    bOrder, | 
      |     IN HANDLE                  hHeap, |   |     IN HANDLE                  hHeap, | 
      |     IN DWORD                   dwFlags |   |     IN DWORD                   dwFlags | 
      |     ); |   |     ); | 
       |   |  | 
      | #endif |   | #endif | 
       | 
       |   | #endif // (NTDDI_VERSION >= NTDDI_WIN2KSP1) | 
       |   |  | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
      | //                                                                          // |   | //                                                                          // | 
      | // Gets the "best" outgoing interface for the specified destination address // |   | // Gets the "best" outgoing interface for the specified destination address // | 
      | //                                                                          // |   | //                                                                          // | 
      | ////////////////////////////////////////////////////////////////////////////// |   | ////////////////////////////////////////////////////////////////////////////// | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | GetBestInterface( |   | GetBestInterface( | 
       |   |  | 
      | skipping to change at line 443 |   | skipping to change at line 659 | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | CancelIPChangeNotify( |   | CancelIPChangeNotify( | 
      |     IN  LPOVERLAPPED notifyOverlapped |   |     IN  LPOVERLAPPED notifyOverlapped | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | GetAdapterIndex( |   | GetAdapterIndex( | 
       | 
      |     IN LPWSTR  AdapterName, |   |     __in IN LPWSTR  AdapterName, | 
      |     OUT PULONG IfIndex |   |     __inout OUT PULONG IfIndex | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | AddIPAddress( |   | AddIPAddress( | 
      |     IPAddr  Address, |   |     IPAddr  Address, | 
      |     IPMask  IpMask, |   |     IPMask  IpMask, | 
      |     DWORD   IfIndex, |   |     DWORD   IfIndex, | 
      |     PULONG  NTEContext, |   |     PULONG  NTEContext, | 
      |     PULONG  NTEInstance |   |     PULONG  NTEInstance | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | DeleteIPAddress( |   | DeleteIPAddress( | 
      |     ULONG NTEContext |   |     ULONG NTEContext | 
      |     ); |   |     ); | 
       |   |  | 
       | 
       |   | #if (NTDDI_VERSION >= NTDDI_WIN2KSP1) | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | GetNetworkParams( |   | GetNetworkParams( | 
      |     PFIXED_INFO pFixedInfo, PULONG pOutBufLen |   |     PFIXED_INFO pFixedInfo, PULONG pOutBufLen | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetAdaptersInfo( |   | GetAdaptersInfo( | 
       | 
      |     PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen |   |     IN PIP_ADAPTER_INFO AdapterInfo, | 
       |   |     IN OUT PULONG SizePointer | 
      |     ); |   |     ); | 
       |   |  | 
      | PIP_ADAPTER_ORDER_MAP |   | PIP_ADAPTER_ORDER_MAP | 
      | WINAPI |   | WINAPI | 
      | GetAdapterOrderMap( |   | GetAdapterOrderMap( | 
      |     VOID |   |     VOID | 
      |     ); |   |     ); | 
       |   |  | 
      | #ifdef _WINSOCK2API_ |   | #ifdef _WINSOCK2API_ | 
       |   |  | 
      | // |   | // | 
      | // The following functions require Winsock2. |   | // The following functions require Winsock2. | 
      | // |   | // | 
       |   |  | 
       | 
      | DWORD |   | ULONG | 
      | WINAPI |   | WINAPI | 
      | GetAdaptersAddresses( |   | GetAdaptersAddresses( | 
       | 
      |     IN     ULONG                 Family, |   |     IN ULONG Family, | 
      |     IN     DWORD                 Flags, |   |     IN ULONG Flags, | 
      |     IN     PVOID                 Reserved, |   |     IN PVOID Reserved, | 
      |     OUT    PIP_ADAPTER_ADDRESSES pAdapterAddresses, |   |     __out_bcount_opt(*SizePointer) PIP_ADAPTER_ADDRESSES AdapterAddresses, | 
      |     IN OUT PULONG                pOutBufLen |   |     IN OUT PULONG SizePointer | 
      |     ); |   |     ); | 
       |   |  | 
      | #endif |   | #endif | 
       |   |  | 
       | 
       |   | #if (NTDDI_VERSION >= NTDDI_WIN2KSP1) | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | GetPerAdapterInfo( |   | GetPerAdapterInfo( | 
      |     ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen |   |     ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | IpReleaseAddress( |   | IpReleaseAddress( | 
      |     PIP_ADAPTER_INDEX_MAP  AdapterInfo |   |     PIP_ADAPTER_INDEX_MAP  AdapterInfo | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | IpRenewAddress( |   | IpRenewAddress( | 
      |     PIP_ADAPTER_INDEX_MAP  AdapterInfo |   |     PIP_ADAPTER_INDEX_MAP  AdapterInfo | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | SendARP( |   | SendARP( | 
      |     IPAddr DestIP, |   |     IPAddr DestIP, | 
      |     IPAddr SrcIP, |   |     IPAddr SrcIP, | 
       | 
      |     PULONG pMacAddr, |   |     PVOID pMacAddr, | 
      |     PULONG  PhyAddrLen |   |     PULONG  PhyAddrLen | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | GetRTTAndHopCount( |   | GetRTTAndHopCount( | 
      |     IPAddr DestIpAddress, |   |     IPAddr DestIpAddress, | 
      |     PULONG HopCount, |   |     PULONG HopCount, | 
      |     ULONG  MaxHops, |   |     ULONG  MaxHops, | 
      |     PULONG RTT |   |     PULONG RTT | 
       |   |  | 
      | skipping to change at line 568 |   | skipping to change at line 789 | 
      |     OVERLAPPED *pOverLapped |   |     OVERLAPPED *pOverLapped | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | RestoreMediaSense( |   | RestoreMediaSense( | 
      |     OVERLAPPED* pOverlapped, |   |     OVERLAPPED* pOverlapped, | 
      |     LPDWORD lpdwEnableCount OPTIONAL |   |     LPDWORD lpdwEnableCount OPTIONAL | 
      |     ); |   |     ); | 
       |   |  | 
       | 
       |   | #if (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   |                                                                                  | 
      | DWORD |   | DWORD | 
      | WINAPI |   | WINAPI | 
      | GetIpErrorString( |   | GetIpErrorString( | 
      |     IN IP_STATUS ErrorCode, |   |     IN IP_STATUS ErrorCode, | 
       | 
      |     OUT PWCHAR Buffer, |   |     __out_ecount_opt(*Size + 1) PWSTR Buffer, | 
      |     IN OUT PDWORD Size |   |     __inout PDWORD Size | 
       |   |     ); | 
       |   |  | 
       |   | #if (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   | #ifdef _WS2DEF_ | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | ResolveNeighbor( | 
       |   |     IN SOCKADDR *NetworkAddress, | 
       |   |     OUT PVOID PhysicalAddress, | 
       |   |     IN OUT PULONG PhysicalAddressLength | 
       |   |     ); | 
       |   | #endif | 
       |   | #endif | 
       |   | // | 
       |   | // Port reservation API routines. | 
       |   | // | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | CreatePersistentTcpPortReservation( | 
       |   |     IN USHORT StartPort, | 
       |   |     IN USHORT NumberOfPorts, | 
       |   |     OUT PULONG64 Token | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | CreatePersistentUdpPortReservation( | 
       |   |     IN USHORT StartPort, | 
       |   |     IN USHORT NumberOfPorts, | 
       |   |     OUT PULONG64 Token | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | DeletePersistentTcpPortReservation( | 
       |   |     IN USHORT StartPort, | 
       |   |     IN USHORT NumberOfPorts | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | DeletePersistentUdpPortReservation( | 
       |   |     IN USHORT StartPort, | 
       |   |     IN USHORT NumberOfPorts | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | LookupPersistentTcpPortReservation( | 
       |   |     IN USHORT StartPort, | 
       |   |     IN USHORT NumberOfPorts, | 
       |   |     OUT PULONG64 Token | 
       |   |     ); | 
       |   |  | 
       |   | ULONG | 
       |   | WINAPI | 
       |   | LookupPersistentUdpPortReservation( | 
       |   |     IN USHORT StartPort, | 
       |   |     IN USHORT NumberOfPorts, | 
       |   |     OUT PULONG64 Token | 
      |     ); |   |     ); | 
       |   |  | 
       | 
       |   | // | 
       |   | // Network String parsing API | 
       |   | // | 
       |   |  | 
       |   | #define NET_STRING_IPV4_ADDRESS           0x00000001 | 
       |   |    // The string identifies an IPv4 Host/router using literal address. | 
       |   |    // (port or prefix not allowed) | 
       |   | #define NET_STRING_IPV4_SERVICE           0x00000002 | 
       |   |    // The string identifies an IPv4 service using literal address. | 
       |   |    // (port required; prefix not allowed) | 
       |   | #define NET_STRING_IPV4_NETWORK           0x00000004 | 
       |   |    // The string identifies an IPv4 network. | 
       |   |    // (prefix required; port not allowed) | 
       |   | #define NET_STRING_IPV6_ADDRESS           0x00000008 | 
       |   |    // The string identifies an IPv6 Host/router using literal address. | 
       |   |    // (port or prefix not allowed; scope-id allowed) | 
       |   | #define NET_STRING_IPV6_ADDRESS_NO_SCOPE  0x00000010 | 
       |   |    // The string identifies an IPv6 Host/router using literal address | 
       |   |    // where the interface context is already known. | 
       |   |    // (port or prefix not allowed; scope-id not allowed) | 
       |   | #define NET_STRING_IPV6_SERVICE           0x00000020 | 
       |   |    // The string identifies an IPv6 service using literal address. | 
       |   |    // (port required; prefix not allowed; scope-id allowed) | 
       |   | #define NET_STRING_IPV6_SERVICE_NO_SCOPE  0x00000040 | 
       |   |    // The string identifies an IPv6 service using literal address | 
       |   |    // where the interface context is already known. | 
       |   |    // (port required; prefix not allowed; scope-id not allowed) | 
       |   | #define NET_STRING_IPV6_NETWORK           0x00000080 | 
       |   |    // The string identifies an IPv6 network. | 
       |   |    // (prefix required; port or scope-id not allowed) | 
       |   | #define NET_STRING_NAMED_ADDRESS          0x00000100 | 
       |   |    // The string identifies an Internet Host using DNS. | 
       |   |    // (port or prefix or scope-id not allowed) | 
       |   | #define NET_STRING_NAMED_SERVICE          0x00000200 | 
       |   |    // The string identifies an Internet service using DNS. | 
       |   |    // (port required; prefix or scope-id not allowed) | 
       |   |  | 
       |   | #define NET_STRING_IP_ADDRESS             (NET_STRING_IPV4_ADDRESS   | \ | 
       |   |                                            NET_STRING_IPV6_ADDRESS) | 
       |   |  | 
       |   | #define NET_STRING_IP_ADDRESS_NO_SCOPE    (NET_STRING_IPV4_ADDRESS   | \ | 
       |   |                                            NET_STRING_IPV6_ADDRESS_NO_SCOPE) | 
       |   |  | 
       |   | #define NET_STRING_IP_SERVICE             (NET_STRING_IPV4_SERVICE   | \ | 
       |   |                                            NET_STRING_IPV6_SERVICE) | 
       |   |  | 
       |   | #define NET_STRING_IP_SERVICE_NO_SCOPE    (NET_STRING_IPV4_SERVICE   | \ | 
       |   |                                            NET_STRING_IPV6_SERVICE_NO_SCOPE) | 
       |   |  | 
       |   | #define NET_STRING_IP_NETWORK             (NET_STRING_IPV4_NETWORK   | \ | 
       |   |                                            NET_STRING_IPV6_NETWORK) | 
       |   |  | 
       |   | #define NET_STRING_ANY_ADDRESS            (NET_STRING_NAMED_ADDRESS  | \ | 
       |   |                                            NET_STRING_IP_ADDRESS) | 
       |   |  | 
       |   | #define NET_STRING_ANY_ADDRESS_NO_SCOPE   (NET_STRING_NAMED_ADDRESS  | \ | 
       |   |                                            NET_STRING_IP_ADDRESS_NO_SCOPE) | 
       |   |  | 
       |   | #define NET_STRING_ANY_SERVICE            (NET_STRING_NAMED_SERVICE  | \ | 
       |   |                                            NET_STRING_IP_SERVICE) | 
       |   |  | 
       |   | #define NET_STRING_ANY_SERVICE_NO_SCOPE   (NET_STRING_NAMED_SERVICE  | \ | 
       |   |                                            NET_STRING_IP_SERVICE_NO_SCOPE) | 
       |   |  | 
       |   | typedef enum NET_ADDRESS_FORMAT_ | 
       |   | { | 
       |   |    NET_ADDRESS_FORMAT_UNSPECIFIED = 0, | 
       |   |  | 
       |   |    NET_ADDRESS_DNS_NAME, | 
       |   |    NET_ADDRESS_IPV4, | 
       |   |    NET_ADDRESS_IPV6 | 
       |   |  | 
       |   | } NET_ADDRESS_FORMAT; | 
       |   |  | 
       |   | #if defined (_WS2DEF_) && defined (_WS2IPDEF_) && defined(_WINDNS_INCLUDED_) | 
       |   |        // app must include winsock2.h, ws2ipdef.h, and windns.h to use this API | 
       |   |  | 
       |   | typedef struct NET_ADDRESS_INFO_ | 
       |   | { | 
       |   |    NET_ADDRESS_FORMAT Format; | 
       |   |  | 
       |   |    union | 
       |   |    { | 
       |   |       struct { | 
       |   |          WCHAR Address[DNS_MAX_NAME_BUFFER_LENGTH]; | 
       |   |          WCHAR Port[6]; | 
       |   |       } NamedAddress; | 
       |   |  | 
       |   |       SOCKADDR_IN Ipv4Address; | 
       |   |       SOCKADDR_IN6 Ipv6Address; | 
       |   |       SOCKADDR IpAddress; | 
       |   |    }; | 
       |   |  | 
       |   | } NET_ADDRESS_INFO, *PNET_ADDRESS_INFO; | 
       |   |  | 
       |   | DWORD | 
       |   | WINAPI | 
       |   | ParseNetworkString( | 
       |   |    IN CONST WCHAR* NetworkString, | 
       |   |    IN DWORD Types, | 
       |   |    OUT PNET_ADDRESS_INFO AddressInfo OPTIONAL, | 
       |   |    OUT USHORT* PortNumber OPTIONAL, | 
       |   |    OUT BYTE* PrefixLength OPTIONAL | 
       |   |    ); | 
       |   |  | 
       |   | #endif | 
       |   |  | 
       |   | #include <netioapi.h> | 
       |   |  | 
       |   | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) | 
       |   |                                                                                  | 
      | #ifdef __cplusplus |   | #ifdef __cplusplus | 
      | } |   | } | 
      | #endif |   | #endif | 
       |   |  | 
      | #endif //__IPHLPAPI_H__ |   | #endif //__IPHLPAPI_H__ | 
      |   |  | 
     |  End of changes. 43 change blocks.  | 
     | 47 lines changed or deleted |   | 442 lines changed or added | 
      |