Headers diff for iphlpapi.dll between 6.1.7601.17514-Windows_7.0 and 6.3.9600.17415-Windows_8.1 versions



 fltdefs.h (6.1.7601.17514-Windows_7.0)   fltdefs.h (6.3.9600.17415-Windows_8.1) 
skipping to change at line 28 skipping to change at line 28
--*/ --*/
#ifndef _FLTDEFS_H #ifndef _FLTDEFS_H
#define _FLTDEFS_H #define _FLTDEFS_H
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
typedef PVOID FILTER_HANDLE, *PFILTER_HANDLE; typedef PVOID FILTER_HANDLE, *PFILTER_HANDLE;
typedef PVOID INTERFACE_HANDLE, *PINTERFACE_HANDLE; typedef PVOID INTERFACE_HANDLE, *PINTERFACE_HANDLE;
#ifdef _M_CEE_PURE #ifdef _M_CEE_PURE
#define PFEXPORT #define PFEXPORT
#else #else
#define PFEXPORT __declspec(dllexport) #define PFEXPORT __declspec(dllexport)
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
skipping to change at line 396 skipping to change at line 401
PFAPIENTRY PFAPIENTRY
PfTestPacket( PfTestPacket(
INTERFACE_HANDLE pInInterface OPTIONAL, INTERFACE_HANDLE pInInterface OPTIONAL,
INTERFACE_HANDLE pOutInterface OPTIONAL, INTERFACE_HANDLE pOutInterface OPTIONAL,
DWORD cBytes, DWORD cBytes,
PBYTE pbPacket, PBYTE pbPacket,
PPFFORWARD_ACTION ppAction PPFFORWARD_ACTION ppAction
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif #endif
 End of changes. 2 change blocks. 
0 lines changed or deleted 8 lines changed or added


 icmpapi.h (6.1.7601.17514-Windows_7.0)   icmpapi.h (6.3.9600.17415-Windows_8.1) 
skipping to change at line 29 skipping to change at line 29
Notes: Notes:
--*/ --*/
#ifndef _ICMP_INCLUDED_ #ifndef _ICMP_INCLUDED_
#define _ICMP_INCLUDED_ #define _ICMP_INCLUDED_
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// //
// Exported Routines. // Exported Routines.
// //
//++ //++
skipping to change at line 118 skipping to change at line 122
// Return Value: // Return Value:
// //
// TRUE if the handle was closed successfully, otherwise FALSE. Extended // TRUE if the handle was closed successfully, otherwise FALSE. Extended
// error information is available by calling GetLastError(). // error information is available by calling GetLastError().
// //
//-- //--
BOOL BOOL
WINAPI WINAPI
IcmpCloseHandle( IcmpCloseHandle(
__in HANDLE IcmpHandle _In_ HANDLE IcmpHandle
); );
//++ //++
// //
// Routine Name: // Routine Name:
// //
// IcmpSendEcho // IcmpSendEcho
// //
// Routine Description: // Routine Description:
// //
skipping to change at line 172 skipping to change at line 176
// Returns the number of ICMP_ECHO_REPLY structures stored in ReplyBuffer. // Returns the number of ICMP_ECHO_REPLY structures stored in ReplyBuffer.
// The status of each reply is contained in the structure. If the return // The status of each reply is contained in the structure. If the return
// value is zero, extended error information is available via // value is zero, extended error information is available via
// GetLastError(). // GetLastError().
// //
//-- //--
DWORD DWORD
WINAPI WINAPI
IcmpSendEcho( IcmpSendEcho(
__in HANDLE IcmpHandle, _In_ HANDLE IcmpHandle,
__in IPAddr DestinationAddress, _In_ IPAddr DestinationAddress,
__in_bcount(RequestSize) LPVOID RequestData, _In_reads_bytes_(RequestSize) LPVOID RequestData,
__in WORD RequestSize, _In_ WORD RequestSize,
__in_opt PIP_OPTION_INFORMATION RequestOptions, _In_opt_ PIP_OPTION_INFORMATION RequestOptions,
__out_bcount(ReplySize) LPVOID ReplyBuffer, _Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
__in DWORD ReplySize, _In_range_(>=, sizeof(ICMP_ECHO_REPLY) + RequestSize + 8)
__in DWORD Timeout DWORD ReplySize,
_In_ DWORD Timeout
); );
//++ //++
// //
// Routine Description: // Routine Description:
// //
// Sends an ICMP Echo request and the call returns either immediately // Sends an ICMP Echo request and the call returns either immediately
// (if Event or ApcRoutine is NonNULL) or returns after the specified // (if Event or ApcRoutine is NonNULL) or returns after the specified
// timeout. The ReplyBuffer contains the ICMP responses, if any. // timeout. The ReplyBuffer contains the ICMP responses, if any.
// //
skipping to change at line 252 skipping to change at line 257
// is provided for this purpose. // is provided for this purpose.
// //
// On non-NT platforms, // On non-NT platforms,
// Event, ApcRoutine and ApcContext are IGNORED. // Event, ApcRoutine and ApcContext are IGNORED.
// //
//-- //--
DWORD DWORD
WINAPI WINAPI
IcmpSendEcho2( IcmpSendEcho2(
__in HANDLE IcmpHandle, _In_ HANDLE IcmpHandle,
__in_opt HANDLE Event, _In_opt_ HANDLE Event,
#ifdef PIO_APC_ROUTINE_DEFINED #ifdef PIO_APC_ROUTINE_DEFINED
__in_opt PIO_APC_ROUTINE ApcRoutine, _In_opt_ PIO_APC_ROUTINE ApcRoutine,
#else #else
__in_opt FARPROC ApcRoutine, _In_opt_ FARPROC ApcRoutine,
#endif #endif
__in_opt PVOID ApcContext, _In_opt_ PVOID ApcContext,
__in IPAddr DestinationAddress, _In_ IPAddr DestinationAddress,
__in_bcount(RequestSize) LPVOID RequestData, _In_reads_bytes_(RequestSize) LPVOID RequestData,
__in WORD RequestSize, _In_ WORD RequestSize,
__in_opt PIP_OPTION_INFORMATION RequestOptions, _In_opt_ PIP_OPTION_INFORMATION RequestOptions,
__out_bcount(ReplySize) LPVOID ReplyBuffer, _Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
__in DWORD ReplySize, _In_range_(>=, sizeof(ICMP_ECHO_REPLY) + RequestSize + 8)
__in DWORD Timeout DWORD ReplySize,
_In_ DWORD Timeout
); );
#if (NTDDI_VERSION >= NTDDI_VISTASP1) #if (NTDDI_VERSION >= NTDDI_VISTASP1)
DWORD DWORD
WINAPI WINAPI
IcmpSendEcho2Ex( IcmpSendEcho2Ex(
__in HANDLE IcmpHandle, _In_ HANDLE IcmpHandle,
__in_opt HANDLE Event, _In_opt_ HANDLE Event,
#ifdef PIO_APC_ROUTINE_DEFINED #ifdef PIO_APC_ROUTINE_DEFINED
__in_opt PIO_APC_ROUTINE ApcRoutine, _In_opt_ PIO_APC_ROUTINE ApcRoutine,
#else #else
__in_opt FARPROC ApcRoutine, _In_opt_ FARPROC ApcRoutine,
#endif #endif
__in_opt PVOID ApcContext, _In_opt_ PVOID ApcContext,
__in IPAddr SourceAddress, _In_ IPAddr SourceAddress,
__in IPAddr DestinationAddress, _In_ IPAddr DestinationAddress,
__in_bcount(RequestSize) LPVOID RequestData, _In_reads_bytes_(RequestSize) LPVOID RequestData,
__in WORD RequestSize, _In_ WORD RequestSize,
__in_opt PIP_OPTION_INFORMATION RequestOptions, _In_opt_ PIP_OPTION_INFORMATION RequestOptions,
__out_bcount(ReplySize) LPVOID ReplyBuffer, _Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
__in DWORD ReplySize, _In_range_(>=, sizeof(ICMP_ECHO_REPLY) + RequestSize + 8)
__in DWORD Timeout DWORD ReplySize,
_In_ DWORD Timeout
); );
#endif #endif
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
DWORD DWORD
WINAPI WINAPI
Icmp6SendEcho2( Icmp6SendEcho2(
__in HANDLE IcmpHandle, _In_ HANDLE IcmpHandle,
__in_opt HANDLE Event, _In_opt_ HANDLE Event,
#ifdef PIO_APC_ROUTINE_DEFINED #ifdef PIO_APC_ROUTINE_DEFINED
__in_opt PIO_APC_ROUTINE ApcRoutine, _In_opt_ PIO_APC_ROUTINE ApcRoutine,
#else #else
__in_opt FARPROC ApcRoutine, _In_opt_ FARPROC ApcRoutine,
#endif #endif
__in_opt PVOID ApcContext, _In_opt_ PVOID ApcContext,
__in struct sockaddr_in6 *SourceAddress, _In_ struct sockaddr_in6 *SourceAddress,
__in struct sockaddr_in6 *DestinationAddress, _In_ struct sockaddr_in6 *DestinationAddress,
__in_bcount(RequestSize) LPVOID RequestData, _In_reads_bytes_(RequestSize) LPVOID RequestData,
__in WORD RequestSize, _In_ WORD RequestSize,
__in_opt PIP_OPTION_INFORMATION RequestOptions, _In_opt_ PIP_OPTION_INFORMATION RequestOptions,
__out_bcount(ReplySize) LPVOID ReplyBuffer, _Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
__in DWORD ReplySize, _In_range_(>=, sizeof(ICMPV6_ECHO_REPLY) + RequestSize + 8)
__in DWORD Timeout DWORD ReplySize,
_In_ DWORD Timeout
); );
#endif #endif
//++ //++
// //
// Routine Description: // Routine Description:
// //
// Parses the reply buffer provided and returns the number of ICMP responses found. // Parses the reply buffer provided and returns the number of ICMP responses found.
// //
// Arguments: // Arguments:
skipping to change at line 342 skipping to change at line 350
// //
// Remarks: // Remarks:
// This function SHOULD NOT BE USED on a reply buffer that was passed to Send IcmpEcho. // This function SHOULD NOT BE USED on a reply buffer that was passed to Send IcmpEcho.
// SendIcmpEcho actually parses the buffer before returning back to the user. This function // SendIcmpEcho actually parses the buffer before returning back to the user. This function
// is meant to be used only with SendIcmpEcho2. // is meant to be used only with SendIcmpEcho2.
//-- //--
DWORD DWORD
WINAPI WINAPI
IcmpParseReplies( IcmpParseReplies(
__in_bcount(ReplySize) LPVOID ReplyBuffer, _Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
__in DWORD ReplySize _In_range_(>=, sizeof(ICMP_ECHO_REPLY) + 8)
DWORD ReplySize
); );
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
DWORD DWORD
WINAPI WINAPI
Icmp6ParseReplies( Icmp6ParseReplies(
__in_bcount(ReplySize) LPVOID ReplyBuffer, _Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
__in DWORD ReplySize _In_range_(>, sizeof(ICMPV6_ECHO_REPLY) + 8)
DWORD ReplySize
); );
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // _ICMP_INCLUDED_ #endif // _ICMP_INCLUDED_
 End of changes. 18 change blocks. 
51 lines changed or deleted 64 lines changed or added


 iphlpapi.h (6.1.7601.17514-Windows_7.0)   iphlpapi.h (6.3.9600.17415-Windows_8.1) 
skipping to change at line 21 skipping to change at line 21
related functionality related functionality
--*/ --*/
#ifndef __IPHLPAPI_H__ #ifndef __IPHLPAPI_H__
#define __IPHLPAPI_H__ #define __IPHLPAPI_H__
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// IPRTRMIB.H has the definitions of the structures used to set and get // // IPRTRMIB.H has the definitions of the structures used to set and get //
// information // // information //
// // // //
skipping to change at line 58 skipping to change at line 62
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Retrieves the number of interfaces in the system. These include LAN and // // Retrieves the number of interfaces in the system. These include LAN and //
// WAN interfaces // // WAN interfaces //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
GetNumberOfInterfaces( GetNumberOfInterfaces(
__out PDWORD pdwNumIf _Out_ PDWORD pdwNumIf
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets the MIB-II ifEntry // // Gets the MIB-II ifEntry //
// The dwIndex field of the MIB_IFROW should be set to the index of the // // The dwIndex field of the MIB_IFROW should be set to the index of the //
// interface being queried // // interface being queried //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
GetIfEntry( GetIfEntry(
__inout PMIB_IFROW pIfRow _Inout_ PMIB_IFROW pIfRow
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets the MIB-II IfTable // // Gets the MIB-II IfTable //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
GetIfTable( GetIfTable(
__out_bcount_opt(*pdwSize) PMIB_IFTABLE pIfTable, _Out_writes_bytes_opt_(*pdwSize) PMIB_IFTABLE pIfTable,
__inout PULONG pdwSize, _Inout_ PULONG pdwSize,
__in BOOL bOrder _In_ BOOL bOrder
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets the Interface to IP Address mapping // // Gets the Interface to IP Address mapping //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
GetIpAddrTable( GetIpAddrTable(
__out_bcount_opt(*pdwSize) PMIB_IPADDRTABLE pIpAddrTable, _Out_writes_bytes_opt_(*pdwSize) PMIB_IPADDRTABLE pIpAddrTable,
__inout PULONG pdwSize, _Inout_ 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 //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
ULONG ULONG
WINAPI WINAPI
GetIpNetTable( GetIpNetTable(
__out_bcount_opt(*SizePointer) PMIB_IPNETTABLE IpNetTable, _Out_writes_bytes_opt_(*SizePointer) PMIB_IPNETTABLE IpNetTable,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets the IP Routing Table (RFX XXXX) // // Gets the IP Routing Table (RFX XXXX) //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
GetIpForwardTable( GetIpForwardTable(
__out_bcount_opt(*pdwSize) PMIB_IPFORWARDTABLE pIpForwardTable, _Out_writes_bytes_opt_(*pdwSize) PMIB_IPFORWARDTABLE pIpForwardTable,
__inout PULONG pdwSize, _Inout_ PULONG pdwSize,
__in BOOL bOrder _In_ BOOL bOrder
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets TCP Connection/UDP Listener Table // // Gets TCP Connection/UDP Listener Table //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
ULONG ULONG
WINAPI WINAPI
GetTcpTable( GetTcpTable(
__out_bcount_opt(*SizePointer) PMIB_TCPTABLE TcpTable, _Out_writes_bytes_opt_(*SizePointer) PMIB_TCPTABLE TcpTable,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
DWORD DWORD
WINAPI WINAPI
GetExtendedTcpTable( GetExtendedTcpTable(
__out_bcount_opt(*pdwSize) PVOID pTcpTable, _Out_writes_bytes_opt_(*pdwSize) PVOID pTcpTable,
__inout PDWORD pdwSize, _Inout_
__in BOOL bOrder, _When_(ulAf == AF_INET, _Deref_in_range_(>=, sizeof(MIB_TCPTABLE)))
__in ULONG ulAf, _When_(
__in TCP_TABLE_CLASS TableClass, (TableClass == TCP_TABLE_OWNER_PID_LISTENER ||
__in ULONG Reserved TableClass == TCP_TABLE_OWNER_PID_CONNECTIONS ||
TableClass == TCP_TABLE_OWNER_PID_ALL) && ulAf == AF_INET6,
_Deref_in_range_(>=, sizeof(MIB_TCP6TABLE_OWNER_PID)))
_When_(
(TableClass == TCP_TABLE_OWNER_MODULE_LISTENER ||
TableClass == TCP_TABLE_OWNER_MODULE_CONNECTIONS ||
TableClass == TCP_TABLE_OWNER_MODULE_ALL) && ulAf == AF_INET6,
_Deref_in_range_(>=, sizeof(MIB_TCP6TABLE_OWNER_MODULE)))
PDWORD pdwSize,
_In_ BOOL bOrder,
_In_ ULONG ulAf,
_In_ TCP_TABLE_CLASS TableClass,
_In_ ULONG Reserved
); );
DWORD DWORD
WINAPI WINAPI
GetOwnerModuleFromTcpEntry( GetOwnerModuleFromTcpEntry(
__in PMIB_TCPROW_OWNER_MODULE pTcpEntry, _In_ PMIB_TCPROW_OWNER_MODULE pTcpEntry,
__in TCPIP_OWNER_MODULE_INFO_CLASS Class, _In_ TCPIP_OWNER_MODULE_INFO_CLASS Class,
__out_bcount(*pdwSize) PVOID pBuffer, _Out_writes_bytes_(*pdwSize) PVOID pBuffer,
__inout PDWORD pdwSize _Inout_ PDWORD pdwSize
); );
ULONG ULONG
WINAPI WINAPI
GetUdpTable( GetUdpTable(
__out_bcount_opt(*SizePointer) PMIB_UDPTABLE UdpTable, _Out_writes_bytes_opt_(*SizePointer) PMIB_UDPTABLE UdpTable,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
DWORD DWORD
WINAPI WINAPI
GetExtendedUdpTable( GetExtendedUdpTable(
__out_bcount_opt(*pdwSize) PVOID pUdpTable, _Out_writes_bytes_opt_(*pdwSize) PVOID pUdpTable,
__inout PDWORD pdwSize, _Inout_ PDWORD pdwSize,
__in BOOL bOrder, _In_ BOOL bOrder,
__in ULONG ulAf, _In_ ULONG ulAf,
__in UDP_TABLE_CLASS TableClass, _In_ UDP_TABLE_CLASS TableClass,
__in ULONG Reserved _In_ ULONG Reserved
); );
DWORD DWORD
WINAPI WINAPI
GetOwnerModuleFromUdpEntry( GetOwnerModuleFromUdpEntry(
__in PMIB_UDPROW_OWNER_MODULE pUdpEntry, _In_ PMIB_UDPROW_OWNER_MODULE pUdpEntry,
__in TCPIP_OWNER_MODULE_INFO_CLASS Class, _In_ TCPIP_OWNER_MODULE_INFO_CLASS Class,
__out_bcount(*pdwSize) PVOID pBuffer, _Out_writes_bytes_(*pdwSize) PVOID pBuffer,
__inout PDWORD pdwSize _Inout_ PDWORD pdwSize
); );
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
ULONG ULONG
WINAPI WINAPI
GetTcpTable2( GetTcpTable2(
__out_bcount_opt(*SizePointer) PMIB_TCPTABLE2 TcpTable, _Out_writes_bytes_opt_(*SizePointer) PMIB_TCPTABLE2 TcpTable,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
#endif // (NTDDI_VERSION >= NTDDI_VISTA) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
#if (NTDDI_VERSION < NTDDI_VISTA) #if (NTDDI_VERSION < NTDDI_VISTA)
// //
// Deprecated APIs, Added for documentation. // Deprecated APIs, Added for documentation.
// //
DWORD DWORD
AllocateAndGetTcpExTableFromStack( AllocateAndGetTcpExTableFromStack(
__deref_out PVOID *ppTcpTable, _Outptr_ PVOID *ppTcpTable,
__in BOOL bOrder, _In_ BOOL bOrder,
__in HANDLE hHeap, _In_ HANDLE hHeap,
__in DWORD dwFlags, _In_ DWORD dwFlags,
__in DWORD dwFamily _In_ DWORD dwFamily
); );
DWORD DWORD
AllocateAndGetUdpExTableFromStack( AllocateAndGetUdpExTableFromStack(
__deref_out PVOID *ppUdpTable, _Outptr_ PVOID *ppUdpTable,
__in BOOL bOrder, _In_ BOOL bOrder,
__in HANDLE hHeap, _In_ HANDLE hHeap,
__in DWORD dwFlags, _In_ DWORD dwFlags,
__in DWORD dwFamily _In_ DWORD dwFamily
); );
#endif // (NTDDI_VERSION < NTDDI_VISTA) #endif // (NTDDI_VERSION < NTDDI_VISTA)
#ifdef _WS2IPDEF_ #ifdef _WS2IPDEF_
// //
// The following definitions require Winsock2. // The following definitions require Winsock2.
// //
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
ULONG ULONG
WINAPI WINAPI
GetTcp6Table( GetTcp6Table(
__out_bcount(*SizePointer) PMIB_TCP6TABLE TcpTable, _Out_writes_bytes_(*SizePointer) PMIB_TCP6TABLE TcpTable,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
ULONG ULONG
WINAPI WINAPI
GetTcp6Table2( GetTcp6Table2(
__out_bcount(*SizePointer) PMIB_TCP6TABLE2 TcpTable, _Out_writes_bytes_(*SizePointer) PMIB_TCP6TABLE2 TcpTable,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
#endif // (NTDDI_VERSION >= NTDDI_VISTA) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
#ifdef WINAPI #ifdef WINAPI
ULONG ULONG
WINAPI WINAPI
GetPerTcpConnectionEStats( GetPerTcpConnectionEStats(
__in PMIB_TCPROW Row, _In_ PMIB_TCPROW Row,
__in TCP_ESTATS_TYPE EstatsType, _In_ TCP_ESTATS_TYPE EstatsType,
__out_bcount_opt(RwSize) PUCHAR Rw, _Out_writes_bytes_opt_(RwSize) PUCHAR Rw,
__in ULONG RwVersion, _In_ ULONG RwVersion,
__in ULONG RwSize, _In_ ULONG RwSize,
__out_bcount_opt(RosSize) PUCHAR Ros, _Out_writes_bytes_opt_(RosSize) PUCHAR Ros,
__in ULONG RosVersion, _In_ ULONG RosVersion,
__in ULONG RosSize, _In_ ULONG RosSize,
__out_bcount_opt(RodSize) PUCHAR Rod, _Out_writes_bytes_opt_(RodSize) PUCHAR Rod,
__in ULONG RodVersion, _In_ ULONG RodVersion,
__in ULONG RodSize _In_ ULONG RodSize
); );
ULONG ULONG
WINAPI WINAPI
SetPerTcpConnectionEStats( SetPerTcpConnectionEStats(
__in PMIB_TCPROW Row, _In_ PMIB_TCPROW Row,
__in TCP_ESTATS_TYPE EstatsType, _In_ TCP_ESTATS_TYPE EstatsType,
__in_bcount(RwSize) PUCHAR Rw, _In_reads_bytes_(RwSize) PUCHAR Rw,
__in ULONG RwVersion, _In_ ULONG RwVersion,
__in ULONG RwSize, _In_ ULONG RwSize,
__in ULONG Offset _In_ ULONG Offset
); );
#ifdef _WS2IPDEF_ #ifdef _WS2IPDEF_
ULONG ULONG
WINAPI WINAPI
GetPerTcp6ConnectionEStats( GetPerTcp6ConnectionEStats(
__in PMIB_TCP6ROW Row, _In_ PMIB_TCP6ROW Row,
__in TCP_ESTATS_TYPE EstatsType, _In_ TCP_ESTATS_TYPE EstatsType,
__out_bcount_opt(RwSize) PUCHAR Rw, _Out_writes_bytes_opt_(RwSize) PUCHAR Rw,
__in ULONG RwVersion, _In_ ULONG RwVersion,
__in ULONG RwSize, _In_ ULONG RwSize,
__out_bcount_opt(RosSize) PUCHAR Ros, _Out_writes_bytes_opt_(RosSize) PUCHAR Ros,
__in ULONG RosVersion, _In_ ULONG RosVersion,
__in ULONG RosSize, _In_ ULONG RosSize,
__out_bcount_opt(RodSize) PUCHAR Rod, _Out_writes_bytes_opt_(RodSize) PUCHAR Rod,
__in ULONG RodVersion, _In_ ULONG RodVersion,
__in ULONG RodSize _In_ ULONG RodSize
); );
ULONG ULONG
WINAPI WINAPI
SetPerTcp6ConnectionEStats( SetPerTcp6ConnectionEStats(
__in PMIB_TCP6ROW Row, _In_ PMIB_TCP6ROW Row,
__in TCP_ESTATS_TYPE EstatsType, _In_ TCP_ESTATS_TYPE EstatsType,
__in_bcount(RwSize) PUCHAR Rw, _In_reads_bytes_(RwSize) PUCHAR Rw,
__in ULONG RwVersion, _In_ ULONG RwVersion,
__in ULONG RwSize, _In_ ULONG RwSize,
__in ULONG Offset _In_ ULONG Offset
); );
#endif // _WS2IPDEF_ #endif // _WS2IPDEF_
#endif // WINAPI #endif // WINAPI
DWORD DWORD
WINAPI WINAPI
GetOwnerModuleFromTcp6Entry( GetOwnerModuleFromTcp6Entry(
__in PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, _In_ PMIB_TCP6ROW_OWNER_MODULE pTcpEntry,
__in TCPIP_OWNER_MODULE_INFO_CLASS Class, _In_ TCPIP_OWNER_MODULE_INFO_CLASS Class,
__out_bcount(*pdwSize) PVOID pBuffer, _Out_writes_bytes_(*pdwSize) PVOID pBuffer,
__inout PDWORD pdwSize _Inout_ PDWORD pdwSize
); );
ULONG ULONG
WINAPI WINAPI
GetUdp6Table( GetUdp6Table(
__out_bcount(*SizePointer) PMIB_UDP6TABLE Udp6Table, _Out_writes_bytes_opt_(*SizePointer) PMIB_UDP6TABLE Udp6Table,
__inout PULONG SizePointer, _Inout_ PULONG SizePointer,
__in BOOL Order _In_ BOOL Order
); );
DWORD DWORD
WINAPI WINAPI
GetOwnerModuleFromUdp6Entry( GetOwnerModuleFromUdp6Entry(
__in PMIB_UDP6ROW_OWNER_MODULE pUdpEntry, _In_ PMIB_UDP6ROW_OWNER_MODULE pUdpEntry,
__in TCPIP_OWNER_MODULE_INFO_CLASS Class, _In_ TCPIP_OWNER_MODULE_INFO_CLASS Class,
__out_bcount(*pdwSize) PVOID pBuffer, _Out_writes_bytes_(*pdwSize) PVOID pBuffer,
__inout PDWORD pdwSize _Inout_ PDWORD pdwSize
); );
#endif // _WS2IPDEF_ #endif // _WS2IPDEF_
DWORD DWORD
GetOwnerModuleFromPidAndInfo( GetOwnerModuleFromPidAndInfo(
__in ULONG ulPid, _In_ ULONG ulPid,
__in ULONGLONG *pInfo, _In_ ULONGLONG *pInfo,
__in TCPIP_OWNER_MODULE_INFO_CLASS Class, _In_ TCPIP_OWNER_MODULE_INFO_CLASS Class,
__out_bcount(*pdwSize) PVOID pBuffer, _Out_writes_bytes_(*pdwSize) PVOID pBuffer,
__inout PDWORD pdwSize _Inout_ PDWORD pdwSize
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets IP/ICMP/TCP/UDP Statistics // // Gets IP/ICMP/TCP/UDP Statistics //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
#if (NTDDI_VERSION >= NTDDI_WIN2K) #if (NTDDI_VERSION >= NTDDI_WIN2K)
ULONG ULONG
WINAPI WINAPI
GetIpStatistics( GetIpStatistics(
__out PMIB_IPSTATS Statistics _Out_ PMIB_IPSTATS Statistics
); );
ULONG ULONG
WINAPI WINAPI
GetIcmpStatistics( GetIcmpStatistics(
__out PMIB_ICMP Statistics _Out_ PMIB_ICMP Statistics
); );
ULONG ULONG
WINAPI WINAPI
GetTcpStatistics( GetTcpStatistics(
__out PMIB_TCPSTATS Statistics _Out_ PMIB_TCPSTATS Statistics
); );
ULONG ULONG
WINAPI WINAPI
GetUdpStatistics( GetUdpStatistics(
__out PMIB_UDPSTATS Stats _Out_ PMIB_UDPSTATS Stats
); );
#endif #endif
#if (NTDDI_VERSION >= NTDDI_XP) #if (NTDDI_VERSION >= NTDDI_WINXP)
ULONG ULONG
WINAPI WINAPI
GetIpStatisticsEx( GetIpStatisticsEx(
__out PMIB_IPSTATS Statistics, _Out_ PMIB_IPSTATS Statistics,
__in ULONG Family _In_ ULONG Family
); );
ULONG ULONG
WINAPI WINAPI
SetIpStatisticsEx( SetIpStatisticsEx(
__in PMIB_IPSTATS Statistics, _In_ PMIB_IPSTATS Statistics,
__in ULONG Family _In_ ULONG Family
); );
ULONG ULONG
WINAPI WINAPI
GetIcmpStatisticsEx( GetIcmpStatisticsEx(
__out PMIB_ICMP_EX Statistics, _Out_ PMIB_ICMP_EX Statistics,
__in ULONG Family _In_ ULONG Family
); );
ULONG ULONG
WINAPI WINAPI
GetTcpStatisticsEx( GetTcpStatisticsEx(
__out PMIB_TCPSTATS Statistics, _Out_ PMIB_TCPSTATS Statistics,
__in ULONG Family _In_ ULONG Family
); );
ULONG ULONG
WINAPI WINAPI
GetUdpStatisticsEx( GetUdpStatisticsEx(
__out PMIB_UDPSTATS Statistics, _Out_ PMIB_UDPSTATS Statistics,
__in ULONG Family _In_ ULONG Family
); );
#endif #endif
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// 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 //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
SetIfEntry( SetIfEntry(
__in PMIB_IFROW pIfRow _In_ PMIB_IFROW pIfRow
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Used to create, modify or delete a route. In all cases the // // Used to create, modify or delete a route. In all cases the //
// dwForwardIfIndex, dwForwardDest, dwForwardMask, dwForwardNextHop and // // dwForwardIfIndex, dwForwardDest, dwForwardMask, dwForwardNextHop and //
// dwForwardPolicy MUST BE SPECIFIED. Currently dwForwardPolicy is unused // // dwForwardPolicy MUST BE SPECIFIED. Currently dwForwardPolicy is unused //
// and MUST BE 0. // // and MUST BE 0. //
// For a set, the complete MIB_IPFORWARDROW structure must be specified // // For a set, the complete MIB_IPFORWARDROW structure must be specified //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
CreateIpForwardEntry( CreateIpForwardEntry(
__in PMIB_IPFORWARDROW pRoute _In_ PMIB_IPFORWARDROW pRoute
); );
DWORD DWORD
WINAPI WINAPI
SetIpForwardEntry( SetIpForwardEntry(
__in PMIB_IPFORWARDROW pRoute _In_ PMIB_IPFORWARDROW pRoute
); );
DWORD DWORD
WINAPI WINAPI
DeleteIpForwardEntry( DeleteIpForwardEntry(
__in PMIB_IPFORWARDROW pRoute _In_ PMIB_IPFORWARDROW pRoute
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// 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) #if (NTDDI_VERSION >= NTDDI_WIN2K)
DWORD DWORD
WINAPI WINAPI
SetIpStatistics( SetIpStatistics(
__in PMIB_IPSTATS pIpStats _In_ PMIB_IPSTATS pIpStats
); );
#endif #endif
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Used to set the defaultTTL. // // Used to set the defaultTTL. //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
SetIpTTL( SetIpTTL(
__in UINT nTTL _In_ UINT nTTL
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Used to create, modify or delete an ARP entry. In all cases the dwIndex // // Used to create, modify or delete an ARP entry. In all cases the dwIndex //
// dwAddr field MUST BE SPECIFIED. // // dwAddr field MUST BE SPECIFIED. //
// For a set, the complete MIB_IPNETROW structure must be specified // // For a set, the complete MIB_IPNETROW structure must be specified //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
CreateIpNetEntry( CreateIpNetEntry(
__in PMIB_IPNETROW pArpEntry _In_ PMIB_IPNETROW pArpEntry
); );
DWORD DWORD
WINAPI WINAPI
SetIpNetEntry( SetIpNetEntry(
__in PMIB_IPNETROW pArpEntry _In_ PMIB_IPNETROW pArpEntry
); );
DWORD DWORD
WINAPI WINAPI
DeleteIpNetEntry( DeleteIpNetEntry(
__in PMIB_IPNETROW pArpEntry _In_ PMIB_IPNETROW pArpEntry
); );
DWORD DWORD
WINAPI WINAPI
FlushIpNetTable( FlushIpNetTable(
__in DWORD dwIfIndex _In_ DWORD dwIfIndex
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Used to create or delete a Proxy ARP entry. The dwIndex is the index of // // Used to create or delete a Proxy ARP entry. The dwIndex is the index of //
// the interface on which to PARP for the dwAddress. If the interface is // // the interface on which to PARP for the dwAddress. If the interface is //
// of a type that doesnt support ARP, e.g. PPP, then the call will fail // // of a type that doesnt support ARP, e.g. PPP, then the call will fail //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
CreateProxyArpEntry( CreateProxyArpEntry(
__in DWORD dwAddress, _In_ DWORD dwAddress,
__in DWORD dwMask, _In_ DWORD dwMask,
__in DWORD dwIfIndex _In_ DWORD dwIfIndex
); );
DWORD DWORD
WINAPI WINAPI
DeleteProxyArpEntry( DeleteProxyArpEntry(
__in DWORD dwAddress, _In_ DWORD dwAddress,
__in DWORD dwMask, _In_ DWORD dwMask,
__in DWORD dwIfIndex _In_ DWORD dwIfIndex
); );
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Used to set the state of a TCP Connection. The only state that it can be // // Used to set the state of a TCP Connection. The only state that it can be //
// set to is MIB_TCP_STATE_DELETE_TCB. The complete MIB_TCPROW structure // // set to is MIB_TCP_STATE_DELETE_TCB. The complete MIB_TCPROW structure //
// MUST BE SPECIFIED // // MUST BE SPECIFIED //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
SetTcpEntry( SetTcpEntry(
__in PMIB_TCPROW pTcpRow _In_ PMIB_TCPROW pTcpRow
); );
DWORD DWORD
WINAPI WINAPI
GetInterfaceInfo( GetInterfaceInfo(
__out_bcount_opt(*dwOutBufLen) PIP_INTERFACE_INFO pIfTable, _Out_writes_bytes_opt_(*dwOutBufLen) PIP_INTERFACE_INFO pIfTable,
__inout PULONG dwOutBufLen _Inout_ PULONG dwOutBufLen
); );
DWORD DWORD
WINAPI WINAPI
GetUniDirectionalAdapterInfo( GetUniDirectionalAdapterInfo(
__out_bcount_opt(*dwOutBufLen) PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, _Out_writes_bytes_opt_(*dwOutBufLen) PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPI
__inout PULONG dwOutBufLe fInfo,
n _Inout_ PULONG dwOutBufLe
n
); );
#if (NTDDI_VERSION >= NTDDI_WIN2KSP1) #if (NTDDI_VERSION >= NTDDI_WIN2KSP1)
#ifndef NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED #ifndef NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED
#define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED #define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED
DWORD DWORD
WINAPI WINAPI
NhpAllocateAndGetInterfaceInfoFromStack( NhpAllocateAndGetInterfaceInfoFromStack(
__deref_out IP_INTERFACE_NAME_INFO **ppTable, _Outptr_ 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) #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(
__in IPAddr dwDestAddr, _In_ IPAddr dwDestAddr,
__out PDWORD pdwBestIfIndex _Out_ PDWORD pdwBestIfIndex
); );
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4115) #pragma warning(disable:4115)
DWORD DWORD
WINAPI WINAPI
GetBestInterfaceEx( GetBestInterfaceEx(
__in struct sockaddr *pDestAddr, _In_ struct sockaddr *pDestAddr,
__out PDWORD pdwBestIfIndex _Out_ PDWORD pdwBestIfIndex
); );
#pragma warning(pop) #pragma warning(pop)
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// // // //
// Gets the best (longest matching prefix) route for the given destination // // Gets the best (longest matching prefix) route for the given destination //
// If the source address is also specified (i.e. is not 0x00000000), and // // If the source address is also specified (i.e. is not 0x00000000), and //
// there are multiple "best" routes to the given destination, the returned // // there are multiple "best" routes to the given destination, the returned //
// route will be one that goes out over the interface which has an address // // route will be one that goes out over the interface which has an address //
// that matches the source address // // that matches the source address //
// // // //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
DWORD DWORD
WINAPI WINAPI
GetBestRoute( GetBestRoute(
__in DWORD dwDestAddr, _In_ DWORD dwDestAddr,
__in_opt DWORD dwSourceAddr, _In_opt_ DWORD dwSourceAddr,
__out PMIB_IPFORWARDROW pBestRoute _Out_ PMIB_IPFORWARDROW pBestRoute
); );
DWORD DWORD
WINAPI WINAPI
NotifyAddrChange( NotifyAddrChange(
__out PHANDLE Handle, _Out_ PHANDLE Handle,
__in LPOVERLAPPED overlapped _In_ LPOVERLAPPED overlapped
); );
DWORD DWORD
WINAPI WINAPI
NotifyRouteChange( NotifyRouteChange(
__out PHANDLE Handle, _Out_ PHANDLE Handle,
__in LPOVERLAPPED overlapped _In_ LPOVERLAPPED overlapped
); );
BOOL BOOL
WINAPI WINAPI
CancelIPChangeNotify( CancelIPChangeNotify(
__in LPOVERLAPPED notifyOverlapped _In_ LPOVERLAPPED notifyOverlapped
); );
DWORD DWORD
WINAPI WINAPI
GetAdapterIndex( GetAdapterIndex(
__in LPWSTR AdapterName, _In_ LPWSTR AdapterName,
__inout PULONG IfIndex _Inout_ PULONG IfIndex
); );
DWORD DWORD
WINAPI WINAPI
AddIPAddress( AddIPAddress(
__in IPAddr Address, _In_ IPAddr Address,
__in IPMask IpMask, _In_ IPMask IpMask,
__in DWORD IfIndex, _In_ DWORD IfIndex,
__out PULONG NTEContext, _Out_ PULONG NTEContext,
__out PULONG NTEInstance _Out_ PULONG NTEInstance
); );
DWORD DWORD
WINAPI WINAPI
DeleteIPAddress( DeleteIPAddress(
__in ULONG NTEContext _In_ ULONG NTEContext
); );
#if (NTDDI_VERSION >= NTDDI_WIN2KSP1) #if (NTDDI_VERSION >= NTDDI_WIN2KSP1)
DWORD DWORD
WINAPI WINAPI
GetNetworkParams( GetNetworkParams(
__out_bcount_opt(*pOutBufLen) PFIXED_INFO pFixedInfo, _Out_writes_bytes_opt_(*pOutBufLen) PFIXED_INFO pFixedInfo,
__inout PULONG pOutBufLen _Inout_ PULONG pOutBufLen
); );
#endif #endif
ULONG ULONG
WINAPI WINAPI
GetAdaptersInfo( GetAdaptersInfo(
__out_bcount_opt(*SizePointer) PIP_ADAPTER_INFO AdapterInfo, _Out_writes_bytes_opt_(*SizePointer) PIP_ADAPTER_INFO AdapterInfo,
__inout PULONG SizePointer _Inout_ 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.
// //
ULONG ULONG
WINAPI WINAPI
GetAdaptersAddresses( GetAdaptersAddresses(
__in ULONG Family, _In_ ULONG Family,
__in ULONG Flags, _In_ ULONG Flags,
__reserved PVOID Reserved, _Reserved_ PVOID Reserved,
__out_bcount_opt(*SizePointer) PIP_ADAPTER_ADDRESSES AdapterAddresses, _Out_writes_bytes_opt_(*SizePointer) PIP_ADAPTER_ADDRESSES AdapterAddresses,
__inout PULONG SizePointer _Inout_ PULONG SizePointer
); );
#endif #endif
#if (NTDDI_VERSION >= NTDDI_WIN2KSP1) #if (NTDDI_VERSION >= NTDDI_WIN2KSP1)
DWORD DWORD
WINAPI WINAPI
GetPerAdapterInfo( GetPerAdapterInfo(
__in ULONG IfIndex, _In_ ULONG IfIndex,
__out_bcount_opt(*pOutBufLen) PIP_PER_ADAPTER_INFO pPerAdapterInfo, _Out_writes_bytes_opt_(*pOutBufLen) PIP_PER_ADAPTER_INFO pPerAdapterInfo,
__inout PULONG pOutBufLen _Inout_ PULONG pOutBufLen
); );
#endif #endif
DWORD DWORD
WINAPI WINAPI
IpReleaseAddress( IpReleaseAddress(
__in PIP_ADAPTER_INDEX_MAP AdapterInfo _In_ PIP_ADAPTER_INDEX_MAP AdapterInfo
); );
DWORD DWORD
WINAPI WINAPI
IpRenewAddress( IpRenewAddress(
__in PIP_ADAPTER_INDEX_MAP AdapterInfo _In_ PIP_ADAPTER_INDEX_MAP AdapterInfo
); );
DWORD DWORD
WINAPI WINAPI
SendARP( SendARP(
__in IPAddr DestIP, _In_ IPAddr DestIP,
__in IPAddr SrcIP, _In_ IPAddr SrcIP,
__out_bcount(*PhyAddrLen) PVOID pMacAddr, _Out_writes_bytes_(*PhyAddrLen) PVOID pMacAddr,
__inout PULONG PhyAddrLen _Inout_ PULONG PhyAddrLen
); );
BOOL BOOL
WINAPI WINAPI
GetRTTAndHopCount( GetRTTAndHopCount(
__in IPAddr DestIpAddress, _In_ IPAddr DestIpAddress,
__out PULONG HopCount, _Out_ PULONG HopCount,
__in ULONG MaxHops, _In_ ULONG MaxHops,
__out PULONG RTT _Out_ PULONG RTT
); );
DWORD DWORD
WINAPI WINAPI
GetFriendlyIfIndex( GetFriendlyIfIndex(
__in DWORD IfIndex _In_ DWORD IfIndex
); );
DWORD DWORD
WINAPI WINAPI
EnableRouter( EnableRouter(
__out HANDLE* pHandle, _Out_ HANDLE* pHandle,
__out OVERLAPPED* pOverlapped _Out_ OVERLAPPED* pOverlapped
); );
DWORD DWORD
WINAPI WINAPI
UnenableRouter( UnenableRouter(
__in OVERLAPPED* pOverlapped, _In_ OVERLAPPED* pOverlapped,
__out_opt LPDWORD lpdwEnableCount _Out_opt_ LPDWORD lpdwEnableCount
); );
DWORD DWORD
WINAPI WINAPI
DisableMediaSense( DisableMediaSense(
__out HANDLE *pHandle, _Out_ HANDLE *pHandle,
__in OVERLAPPED *pOverLapped _In_ OVERLAPPED *pOverLapped
); );
DWORD DWORD
WINAPI WINAPI
RestoreMediaSense( RestoreMediaSense(
__in OVERLAPPED* pOverlapped, _In_ OVERLAPPED* pOverlapped,
__out_opt LPDWORD lpdwEnableCount _Out_opt_ LPDWORD lpdwEnableCount
); );
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
DWORD DWORD
WINAPI WINAPI
GetIpErrorString( GetIpErrorString(
__in IP_STATUS ErrorCode, _In_ IP_STATUS ErrorCode,
__out_ecount_opt(*Size + 1) PWSTR Buffer, _Out_writes_opt_(*Size + 1) PWSTR Buffer,
__inout PDWORD Size _Inout_ PDWORD Size
); );
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
#ifdef _WS2DEF_ #ifdef _WS2DEF_
ULONG ULONG
WINAPI WINAPI
ResolveNeighbor( ResolveNeighbor(
__in SOCKADDR *NetworkAddress, _In_ SOCKADDR *NetworkAddress,
__out_bcount(*PhysicalAddressLength) PVOID PhysicalAddress, _Out_writes_bytes_(*PhysicalAddressLength) PVOID PhysicalAddress,
__inout PULONG PhysicalAddressLength _Inout_ PULONG PhysicalAddressLength
); );
#endif #endif
#endif #endif
// //
// Port reservation API routines. // Port reservation API routines.
// //
ULONG ULONG
WINAPI WINAPI
CreatePersistentTcpPortReservation( CreatePersistentTcpPortReservation(
__in USHORT StartPort, _In_ USHORT StartPort,
__in USHORT NumberOfPorts, _In_ USHORT NumberOfPorts,
__out PULONG64 Token _Out_ PULONG64 Token
); );
ULONG ULONG
WINAPI WINAPI
CreatePersistentUdpPortReservation( CreatePersistentUdpPortReservation(
__in USHORT StartPort, _In_ USHORT StartPort,
__in USHORT NumberOfPorts, _In_ USHORT NumberOfPorts,
__out PULONG64 Token _Out_ PULONG64 Token
); );
ULONG ULONG
WINAPI WINAPI
DeletePersistentTcpPortReservation( DeletePersistentTcpPortReservation(
__in USHORT StartPort, _In_ USHORT StartPort,
__in USHORT NumberOfPorts _In_ USHORT NumberOfPorts
); );
ULONG ULONG
WINAPI WINAPI
DeletePersistentUdpPortReservation( DeletePersistentUdpPortReservation(
__in USHORT StartPort, _In_ USHORT StartPort,
__in USHORT NumberOfPorts _In_ USHORT NumberOfPorts
); );
ULONG ULONG
WINAPI WINAPI
LookupPersistentTcpPortReservation( LookupPersistentTcpPortReservation(
__in USHORT StartPort, _In_ USHORT StartPort,
__in USHORT NumberOfPorts, _In_ USHORT NumberOfPorts,
__out PULONG64 Token _Out_ PULONG64 Token
); );
ULONG ULONG
WINAPI WINAPI
LookupPersistentUdpPortReservation( LookupPersistentUdpPortReservation(
__in USHORT StartPort, _In_ USHORT StartPort,
__in USHORT NumberOfPorts, _In_ USHORT NumberOfPorts,
__out PULONG64 Token _Out_ PULONG64 Token
); );
// //
// Network String parsing API // Network String parsing API
// //
#define NET_STRING_IPV4_ADDRESS 0x00000001 #define NET_STRING_IPV4_ADDRESS 0x00000001
// The string identifies an IPv4 Host/router using literal address. // The string identifies an IPv4 Host/router using literal address.
// (port or prefix not allowed) // (port or prefix not allowed)
#define NET_STRING_IPV4_SERVICE 0x00000002 #define NET_STRING_IPV4_SERVICE 0x00000002
skipping to change at line 960 skipping to change at line 976
SOCKADDR_IN Ipv4Address; SOCKADDR_IN Ipv4Address;
SOCKADDR_IN6 Ipv6Address; SOCKADDR_IN6 Ipv6Address;
SOCKADDR IpAddress; SOCKADDR IpAddress;
}; };
} NET_ADDRESS_INFO, *PNET_ADDRESS_INFO; } NET_ADDRESS_INFO, *PNET_ADDRESS_INFO;
DWORD DWORD
WINAPI WINAPI
ParseNetworkString( ParseNetworkString(
__in CONST WCHAR* NetworkString, _In_z_ CONST WCHAR* NetworkString,
__in DWORD Types, _In_ DWORD Types,
__out_opt PNET_ADDRESS_INFO AddressInfo, _Out_opt_ PNET_ADDRESS_INFO AddressInfo,
__out_opt USHORT* PortNumber, _Out_opt_ USHORT* PortNumber,
__out_opt BYTE* PrefixLength _Out_opt_ BYTE* PrefixLength
); );
#endif #endif
#endif // (NTDDI_VERSION >= NTDDI_VISTA) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
#include <netioapi.h> #include <netioapi.h>
#endif // (NTDDI_VERSION >= NTDDI_VISTA) #endif // (NTDDI_VERSION >= NTDDI_VISTA)
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif //__IPHLPAPI_H__ #endif //__IPHLPAPI_H__
 End of changes. 84 change blocks. 
229 lines changed or deleted 249 lines changed or added


 netioapi.h (6.1.7601.17514-Windows_7.0)   netioapi.h (6.3.9600.17415-Windows_8.1) 
//
// Copyright (C) Microsoft. All rights reserved.
//
/*++ /*++
Module Name: Module Name:
netioapi.h netioapi.h
Abstract: Abstract:
This module contains definitions for version agnostic IP helper APIs. This module contains definitions for version agnostic IP helper APIs.
skipping to change at line 53 skipping to change at line 56
append a version number to the constructs. append a version number to the constructs.
4. The functions in this file are grouped by the object they operate upon. 4. The functions in this file are grouped by the object they operate upon.
Within the group, they are sorted alphabetically. Within the group, they are sorted alphabetically.
--*/ --*/
#ifndef _NETIOAPI_H_ #ifndef _NETIOAPI_H_
#define _NETIOAPI_H_ #define _NETIOAPI_H_
#pragma once #pragma once
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// //
// General types. // General types.
// //
// //
skipping to change at line 83 skipping to change at line 90
#ifdef __IPHLPAPI_H__ #ifdef __IPHLPAPI_H__
// //
// User Mode. This file should be included from iphlpapi.h // User Mode. This file should be included from iphlpapi.h
// User should include ws2ipdef.h to use these APIs. // User should include ws2ipdef.h to use these APIs.
// //
#define NETIO_STATUS DWORD #define NETIO_STATUS DWORD
#define NETIO_SUCCESS(x) ((x) == NO_ERROR) #define NETIO_SUCCESS(x) ((x) == NO_ERROR)
#define NETIOAPI_API_ WINAPI #define NETIOAPI_API_ WINAPI
#define _NETIOAPI_SUCCESS_ _Success_(return==NO_ERROR)
#else #else
// //
// Kernel Mode. // Kernel Mode.
// //
#include <ws2def.h> #include <ws2def.h>
#include <ws2ipdef.h> #include <ws2ipdef.h>
#include <ifdef.h> #include <ifdef.h>
#include <nldef.h> #include <nldef.h>
#define NETIO_STATUS NTSTATUS #define NETIO_STATUS NTSTATUS
#define NETIO_SUCCESS(x) NT_SUCCESS(x) #define NETIO_SUCCESS(x) NT_SUCCESS(x)
#define NETIOAPI_API_ NTAPI #define NETIOAPI_API_ NTAPI
#define _NETIOAPI_SUCCESS_
#endif #endif
#define NETIOAPI_API NETIO_STATUS NETIOAPI_API_ #define NETIOAPI_API NETIO_STATUS NETIOAPI_API_
typedef enum _MIB_NOTIFICATION_TYPE { typedef enum _MIB_NOTIFICATION_TYPE {
// //
// ParameterChange. // ParameterChange.
// //
MibParameterNotification, MibParameterNotification,
// //
skipping to change at line 205 skipping to change at line 212
ULONG64 OutMulticastOctets; ULONG64 OutMulticastOctets;
ULONG64 OutBroadcastOctets; ULONG64 OutBroadcastOctets;
ULONG64 OutQLen; ULONG64 OutQLen;
} MIB_IF_ROW2, *PMIB_IF_ROW2; } MIB_IF_ROW2, *PMIB_IF_ROW2;
typedef struct _MIB_IF_TABLE2 { typedef struct _MIB_IF_TABLE2 {
ULONG NumEntries; ULONG NumEntries;
MIB_IF_ROW2 Table[ANY_SIZE]; MIB_IF_ROW2 Table[ANY_SIZE];
} MIB_IF_TABLE2, *PMIB_IF_TABLE2; } MIB_IF_TABLE2, *PMIB_IF_TABLE2;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIfEntry2( GetIfEntry2(
__inout PMIB_IF_ROW2 Row _Inout_ PMIB_IF_ROW2 Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified interface on the local computer. Retrieves information for the specified interface on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IF_ROW2 structure with either the Luid or Index Row - Supplies a MIB_IF_ROW2 structure with either the Luid or Index
skipping to change at line 238 skipping to change at line 245
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIfTable2( GetIfTable2(
__deref_out PMIB_IF_TABLE2 *Table _Outptr_ PMIB_IF_TABLE2 *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the MIB-II interface table. Retrieves the MIB-II interface table.
Arguments: Arguments:
Table - Returns the table of interfaces in a MIB_IFTABLE2 structure. Table - Returns the table of interfaces in a MIB_IFTABLE2 structure.
skipping to change at line 272 skipping to change at line 279
The API allocates the buffer for Table. Use FreeMibTable to free it. The API allocates the buffer for Table. Use FreeMibTable to free it.
--*/ --*/
typedef enum _MIB_IF_TABLE_LEVEL { typedef enum _MIB_IF_TABLE_LEVEL {
MibIfTableNormal, MibIfTableNormal,
MibIfTableRaw MibIfTableRaw
} MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL; } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIfTable2Ex( GetIfTable2Ex(
__in MIB_IF_TABLE_LEVEL Level, _In_ MIB_IF_TABLE_LEVEL Level,
__deref_out PMIB_IF_TABLE2 *Table _Outptr_ PMIB_IF_TABLE2 *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the MIB-II interface table. Retrieves the MIB-II interface table.
Arguments: Arguments:
Table - Returns the table of interfaces in a MIB_IFTABLE2 structure. Table - Returns the table of interfaces in a MIB_IFTABLE2 structure.
skipping to change at line 403 skipping to change at line 410
} MIB_IFSTACK_TABLE, *PMIB_IFSTACK_TABLE; } MIB_IFSTACK_TABLE, *PMIB_IFSTACK_TABLE;
typedef struct _MIB_INVERTEDIFSTACK_TABLE { typedef struct _MIB_INVERTEDIFSTACK_TABLE {
ULONG NumEntries; ULONG NumEntries;
MIB_INVERTEDIFSTACK_ROW Table[ANY_SIZE]; MIB_INVERTEDIFSTACK_ROW Table[ANY_SIZE];
} MIB_INVERTEDIFSTACK_TABLE, *PMIB_INVERTEDIFSTACK_TABLE; } MIB_INVERTEDIFSTACK_TABLE, *PMIB_INVERTEDIFSTACK_TABLE;
typedef typedef
VOID VOID
(NETIOAPI_API_ *PIPINTERFACE_CHANGE_CALLBACK) ( (NETIOAPI_API_ *PIPINTERFACE_CHANGE_CALLBACK) (
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in PMIB_IPINTERFACE_ROW Row OPTIONAL, _In_ PMIB_IPINTERFACE_ROW Row OPTIONAL,
__in MIB_NOTIFICATION_TYPE NotificationType _In_ MIB_NOTIFICATION_TYPE NotificationType
); );
__drv_maxIRQL(PASSIVE_LEVEL) typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES {
__success(return==STATUS_SUCCESS) NL_BANDWIDTH_INFORMATION InboundBandwidthInformation;
NL_BANDWIDTH_INFORMATION OutboundBandwidthInformation;
} MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES,
*PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES;
_IRQL_requires_max_(PASSIVE_LEVEL)
_NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIfStackTable( GetIfStackTable(
__deref_out PMIB_IFSTACK_TABLE *Table _Outptr_ PMIB_IFSTACK_TABLE *Table
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetInvertedIfStackTable( GetInvertedIfStackTable(
__deref_out PMIB_INVERTEDIFSTACK_TABLE *Table _Outptr_ PMIB_INVERTEDIFSTACK_TABLE *Table
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpInterfaceEntry( GetIpInterfaceEntry(
__inout PMIB_IPINTERFACE_ROW Row _Inout_ PMIB_IPINTERFACE_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves IP information for the specified interface on the local computer. Retrieves IP information for the specified interface on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IPINTERFACE_ROW structure with either the Luid or Row - Supplies a MIB_IPINTERFACE_ROW structure with either the Luid or
skipping to change at line 456 skipping to change at line 469
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. Family: it must be either AF_INET or AF_INET6 1. Family: it must be either AF_INET or AF_INET6
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpInterfaceTable( GetIpInterfaceTable(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_IPINTERFACE_TABLE *Table _Outptr_ PMIB_IPINTERFACE_TABLE *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the network-layer interface table. Retrieves the network-layer interface table.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 494 skipping to change at line 507
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
The API allocates the buffer for Table. Use FreeMibTable to free it. The API allocates the buffer for Table. Use FreeMibTable to free it.
--*/ --*/
_IRQL_requires_max_(PASSIVE_LEVEL)
VOID VOID
__drv_maxIRQL(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
InitializeIpInterfaceEntry( InitializeIpInterfaceEntry(
__inout PMIB_IPINTERFACE_ROW Row _Inout_ PMIB_IPINTERFACE_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Initialize the MIB_IPINTERFACE_ROW entry for use in SetIpInterfaceRow. Initialize the MIB_IPINTERFACE_ROW entry for use in SetIpInterfaceRow.
Arguments: Arguments:
Row - Returns an initialized MIB_IPINTERFACE_ROW structure. Row - Returns an initialized MIB_IPINTERFACE_ROW structure.
skipping to change at line 522 skipping to change at line 535
None. None.
Notes: Notes:
InitializeIpInterfaceEntry must be used to initialize the fields of InitializeIpInterfaceEntry must be used to initialize the fields of
MIB_IPINTERFACE_ROW with default values. The caller can then update the MIB_IPINTERFACE_ROW with default values. The caller can then update the
fields it wishes to modify and invoke SetIpInterfaceEntry. fields it wishes to modify and invoke SetIpInterfaceEntry.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
NotifyIpInterfaceChange( NotifyIpInterfaceChange(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__in PIPINTERFACE_CHANGE_CALLBACK Callback, _In_ PIPINTERFACE_CHANGE_CALLBACK Callback,
__in PVOID CallerContext, _In_opt_ PVOID CallerContext,
__in BOOLEAN InitialNotification, _In_ BOOLEAN InitialNotification,
__inout OUT HANDLE *NotificationHandle _Inout_ HANDLE *NotificationHandle
); );
/*++ /*++
Routine Description: Routine Description:
Register for notification for IP interface changes. Register for notification for IP interface changes.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 573 skipping to change at line 586
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
1. Invokation of the callback function is serialized. 1. Invokation of the callback function is serialized.
2. Use CancelMibChangeNotify2 to deregister for change notifications. 2. Use CancelMibChangeNotify2 to deregister for change notifications.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
SetIpInterfaceEntry( SetIpInterfaceEntry(
__inout PMIB_IPINTERFACE_ROW Row _Inout_ PMIB_IPINTERFACE_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Set the properties of an IP interface. Set the properties of an IP interface.
Arguments: Arguments:
Row - Supplies a MIB_IPINTERFACE_ROW structure. Row - Supplies a MIB_IPINTERFACE_ROW structure.
skipping to change at line 608 skipping to change at line 621
MIB_IPINTERFACE_ROW with default values. The caller can then update the MIB_IPINTERFACE_ROW with default values. The caller can then update the
fields it wishes to modify and invoke SetIpInterfaceEntry. fields it wishes to modify and invoke SetIpInterfaceEntry.
On input, the following key fields of Row must be initialized after On input, the following key fields of Row must be initialized after
invoking InitializeIpInterfaceEntry: invoking InitializeIpInterfaceEntry:
1. Family: To AF_INET or AF_INET6. 1. Family: To AF_INET or AF_INET6.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
--*/ --*/
_IRQL_requires_max_(PASSIVE_LEVEL)
_NETIOAPI_SUCCESS_
NETIOAPI_API
GetIpNetworkConnectionBandwidthEstimates(
_In_ NET_IFINDEX InterfaceIndex,
_In_ ADDRESS_FAMILY AddressFamily,
_Out_ PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES BandwidthEstimates
);
/*++
Routine Description:
Retrieves historical bandwidth estimates for the network connection of
the specified interface.
Arguments:
InterfaceIndex - Supplies the interface index.
AddressFamily - Supplies the address family associated with the interface.
BandwidthEstimates - Returns the historical bandwidth estimates.
Return Value:
User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/
// //
// Unicast address management routines. // Unicast address management routines.
// //
// //
// The structure for unicast IP Address management. // The structure for unicast IP Address management.
// //
typedef struct _MIB_UNICASTIPADDRESS_ROW { typedef struct _MIB_UNICASTIPADDRESS_ROW {
// //
// Key Structure. // Key Structure.
skipping to change at line 649 skipping to change at line 693
} MIB_UNICASTIPADDRESS_ROW, *PMIB_UNICASTIPADDRESS_ROW; } MIB_UNICASTIPADDRESS_ROW, *PMIB_UNICASTIPADDRESS_ROW;
typedef struct _MIB_UNICASTIPADDRESS_TABLE { typedef struct _MIB_UNICASTIPADDRESS_TABLE {
ULONG NumEntries; ULONG NumEntries;
MIB_UNICASTIPADDRESS_ROW Table[ANY_SIZE]; MIB_UNICASTIPADDRESS_ROW Table[ANY_SIZE];
} MIB_UNICASTIPADDRESS_TABLE, *PMIB_UNICASTIPADDRESS_TABLE; } MIB_UNICASTIPADDRESS_TABLE, *PMIB_UNICASTIPADDRESS_TABLE;
typedef typedef
VOID VOID
(NETIOAPI_API_ *PUNICAST_IPADDRESS_CHANGE_CALLBACK) ( (NETIOAPI_API_ *PUNICAST_IPADDRESS_CHANGE_CALLBACK) (
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in_opt PMIB_UNICASTIPADDRESS_ROW Row, _In_opt_ PMIB_UNICASTIPADDRESS_ROW Row,
__in MIB_NOTIFICATION_TYPE NotificationType _In_ MIB_NOTIFICATION_TYPE NotificationType
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
CreateUnicastIpAddressEntry( CreateUnicastIpAddressEntry(
__in CONST MIB_UNICASTIPADDRESS_ROW *Row _In_ CONST MIB_UNICASTIPADDRESS_ROW *Row
); );
/*++ /*++
Routine Description: Routine Description:
Create a unicast IP address entry on the local computer. Create a unicast IP address entry on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_UNICASTIPADDRESS_ROW structure. Row - Supplies a MIB_UNICASTIPADDRESS_ROW structure.
skipping to change at line 689 skipping to change at line 733
MIB_UNICASTIPADDRESS_ROW with default values. The caller can then update MIB_UNICASTIPADDRESS_ROW with default values. The caller can then update
the fields it wishes to modify and invoke CreateIpInterfaceEntry. the fields it wishes to modify and invoke CreateIpInterfaceEntry.
On input, the following key fields of Row must be initialized after On input, the following key fields of Row must be initialized after
invoking InitializeUnicastIpAddressEntry: invoking InitializeUnicastIpAddressEntry:
1. Address to a valid IPv4 or IPv6 unicast address. 1. Address to a valid IPv4 or IPv6 unicast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
DeleteUnicastIpAddressEntry( DeleteUnicastIpAddressEntry(
__in CONST MIB_UNICASTIPADDRESS_ROW *Row _In_ CONST MIB_UNICASTIPADDRESS_ROW *Row
); );
/*++ /*++
Routine Description: Routine Description:
Delete a unicast IP address entry on the local computer. Delete a unicast IP address entry on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_UNICASTIPADDRESS_ROW structure. Row - Supplies a MIB_UNICASTIPADDRESS_ROW structure.
skipping to change at line 719 skipping to change at line 763
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. Address to a valid IPv4 or IPv6 unicast address. 1. Address to a valid IPv4 or IPv6 unicast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetUnicastIpAddressEntry( GetUnicastIpAddressEntry(
__inout PMIB_UNICASTIPADDRESS_ROW Row _Inout_ PMIB_UNICASTIPADDRESS_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified unicast IP address entry on the Retrieves information for the specified unicast IP address entry on the
local computer. local computer.
Arguments: Arguments:
skipping to change at line 752 skipping to change at line 796
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. Address to a valid IPv4 or IPv6 unicast address. 1. Address to a valid IPv4 or IPv6 unicast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetUnicastIpAddressTable( GetUnicastIpAddressTable(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_UNICASTIPADDRESS_TABLE *Table _Outptr_ PMIB_UNICASTIPADDRESS_TABLE *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the unicast IP address table on a local computer. Retrieves the unicast IP address table on a local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 791 skipping to change at line 835
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
The API allocates the buffer for Table. Use FreeMibTable to free it. The API allocates the buffer for Table. Use FreeMibTable to free it.
--*/ --*/
_IRQL_requires_max_(PASSIVE_LEVEL)
VOID VOID
__drv_maxIRQL(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
InitializeUnicastIpAddressEntry( InitializeUnicastIpAddressEntry(
__out PMIB_UNICASTIPADDRESS_ROW Row _Out_ PMIB_UNICASTIPADDRESS_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Initialize the MIB_UNICASTIPADDRESS_ROW entry for use in Initialize the MIB_UNICASTIPADDRESS_ROW entry for use in
CreateUnicastIpAddressEntry and SetUnicastIpAddressEntry. CreateUnicastIpAddressEntry and SetUnicastIpAddressEntry.
Arguments: Arguments:
skipping to change at line 821 skipping to change at line 865
Notes: Notes:
InitializeUnicastIpAddressEntry must be used to initialize the fields of InitializeUnicastIpAddressEntry must be used to initialize the fields of
MIB_UNICASTIPADDRESS_ROW with default values. The caller can then update MIB_UNICASTIPADDRESS_ROW with default values. The caller can then update
the fields it wishes to modify and invoke CreateUnicastIpAddressEntry or the fields it wishes to modify and invoke CreateUnicastIpAddressEntry or
SetUnicastIpAddressEntry. SetUnicastIpAddressEntry.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
NotifyUnicastIpAddressChange( NotifyUnicastIpAddressChange(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__in PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback, _In_ PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback,
__in PVOID CallerContext, _In_opt_ PVOID CallerContext,
__in BOOLEAN InitialNotification, _In_ BOOLEAN InitialNotification,
__inout HANDLE *NotificationHandle _Inout_ HANDLE *NotificationHandle
); );
/*++ /*++
Routine Description: Routine Description:
Register for notification for unicast IP address changes. Register for notification for unicast IP address changes.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 875 skipping to change at line 919
1. Invokation of the callback function is serialized. 1. Invokation of the callback function is serialized.
2. Use CancelMibChangeNotify2 to deregister for change notifications. 2. Use CancelMibChangeNotify2 to deregister for change notifications.
--*/ --*/
typedef typedef
VOID VOID
(NETIOAPI_API_ *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) ( (NETIOAPI_API_ *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) (
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in PMIB_UNICASTIPADDRESS_TABLE AddressTable _In_ PMIB_UNICASTIPADDRESS_TABLE AddressTable
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
NotifyStableUnicastIpAddressTable( NotifyStableUnicastIpAddressTable(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_UNICASTIPADDRESS_TABLE* Table, _Outptr_ PMIB_UNICASTIPADDRESS_TABLE* Table,
__in PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback, _In_ PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
__in PVOID CallerContext, _In_ PVOID CallerContext,
__inout HANDLE *NotificationHandle _Inout_ HANDLE *NotificationHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
SetUnicastIpAddressEntry( SetUnicastIpAddressEntry(
__in CONST MIB_UNICASTIPADDRESS_ROW *Row _In_ CONST MIB_UNICASTIPADDRESS_ROW *Row
); );
/*++ /*++
Routine Description: Routine Description:
Set the properties of an unicast IP address. Set the properties of an unicast IP address.
Arguments: Arguments:
Address - Supplies a MIB_UNICASTIPADDRESS_ROW structure. Address - Supplies a MIB_UNICASTIPADDRESS_ROW structure.
skipping to change at line 948 skipping to change at line 992
// Read-Only Fields. // Read-Only Fields.
// //
SCOPE_ID ScopeId; SCOPE_ID ScopeId;
} MIB_ANYCASTIPADDRESS_ROW, *PMIB_ANYCASTIPADDRESS_ROW; } MIB_ANYCASTIPADDRESS_ROW, *PMIB_ANYCASTIPADDRESS_ROW;
typedef struct _MIB_ANYCASTIPADDRESS_TABLE { typedef struct _MIB_ANYCASTIPADDRESS_TABLE {
ULONG NumEntries; ULONG NumEntries;
MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE]; MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE];
} MIB_ANYCASTIPADDRESS_TABLE, *PMIB_ANYCASTIPADDRESS_TABLE; } MIB_ANYCASTIPADDRESS_TABLE, *PMIB_ANYCASTIPADDRESS_TABLE;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
CreateAnycastIpAddressEntry( CreateAnycastIpAddressEntry(
__in CONST MIB_ANYCASTIPADDRESS_ROW *Row _In_ CONST MIB_ANYCASTIPADDRESS_ROW *Row
); );
/*++ /*++
Routine Description: Routine Description:
Create an anycast IP address entry on the local computer. Create an anycast IP address entry on the local computer.
Arguments: Arguments:
Address - Supplies a MIB_ANYCASTIPADDRESS_ROW structure. Address - Supplies a MIB_ANYCASTIPADDRESS_ROW structure.
skipping to change at line 978 skipping to change at line 1022
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. Address to a valid IPv4 or IPv6 anycast address. 1. Address to a valid IPv4 or IPv6 anycast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
DeleteAnycastIpAddressEntry( DeleteAnycastIpAddressEntry(
__in CONST MIB_ANYCASTIPADDRESS_ROW *Row _In_ CONST MIB_ANYCASTIPADDRESS_ROW *Row
); );
/*++ /*++
Routine Description: Routine Description:
Delete an anycast IP address entry on the local computer. Delete an anycast IP address entry on the local computer.
Arguments: Arguments:
Address - Supplies a MIB_ANYCASTIPADDRESS_ROW structure. Address - Supplies a MIB_ANYCASTIPADDRESS_ROW structure.
skipping to change at line 1008 skipping to change at line 1052
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. Address to a valid IPv4 or IPv6 anycast address. 1. Address to a valid IPv4 or IPv6 anycast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetAnycastIpAddressEntry( GetAnycastIpAddressEntry(
__inout PMIB_ANYCASTIPADDRESS_ROW Row _Inout_ PMIB_ANYCASTIPADDRESS_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified anycast IP address entry on the Retrieves information for the specified anycast IP address entry on the
local computer. local computer.
Arguments: Arguments:
skipping to change at line 1041 skipping to change at line 1085
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. Address to a valid IPv4 or IPv6 anycast address. 1. Address to a valid IPv4 or IPv6 anycast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetAnycastIpAddressTable( GetAnycastIpAddressTable(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_ANYCASTIPADDRESS_TABLE *Table _Outptr_ PMIB_ANYCASTIPADDRESS_TABLE *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the anycast IP address table. Retrieves the anycast IP address table.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1102 skipping to change at line 1146
// Read-Only Fields. // Read-Only Fields.
// //
SCOPE_ID ScopeId; SCOPE_ID ScopeId;
} MIB_MULTICASTIPADDRESS_ROW, *PMIB_MULTICASTIPADDRESS_ROW; } MIB_MULTICASTIPADDRESS_ROW, *PMIB_MULTICASTIPADDRESS_ROW;
typedef struct _MIB_MULTICASTIPADDRESS_TABLE { typedef struct _MIB_MULTICASTIPADDRESS_TABLE {
ULONG NumEntries; ULONG NumEntries;
MIB_MULTICASTIPADDRESS_ROW Table[ANY_SIZE]; MIB_MULTICASTIPADDRESS_ROW Table[ANY_SIZE];
} MIB_MULTICASTIPADDRESS_TABLE, *PMIB_MULTICASTIPADDRESS_TABLE; } MIB_MULTICASTIPADDRESS_TABLE, *PMIB_MULTICASTIPADDRESS_TABLE;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetMulticastIpAddressEntry( GetMulticastIpAddressEntry(
__inout PMIB_MULTICASTIPADDRESS_ROW Row _Inout_ PMIB_MULTICASTIPADDRESS_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified mulitcast IP address entry on the Retrieves information for the specified mulitcast IP address entry on the
local computer. local computer.
Arguments: Arguments:
skipping to change at line 1135 skipping to change at line 1179
Notes: Notes:
On input, the following key fields of Row must be initialized. On input, the following key fields of Row must be initialized.
1. Address to a valid IPv4 or IPv6 multicast address. 1. Address to a valid IPv4 or IPv6 multicast address.
2. At least one of InterfaceLuid or InterfaceIndex must be specified. 2. At least one of InterfaceLuid or InterfaceIndex must be specified.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetMulticastIpAddressTable( GetMulticastIpAddressTable(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_MULTICASTIPADDRESS_TABLE *Table _Outptr_ PMIB_MULTICASTIPADDRESS_TABLE *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the multicast IP address table on the local computer. Retrieves the multicast IP address table on the local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1221 skipping to change at line 1265
} MIB_IPFORWARD_ROW2, *PMIB_IPFORWARD_ROW2; } MIB_IPFORWARD_ROW2, *PMIB_IPFORWARD_ROW2;
typedef struct _MIB_IPFORWARD_TABLE2 { typedef struct _MIB_IPFORWARD_TABLE2 {
ULONG NumEntries; ULONG NumEntries;
MIB_IPFORWARD_ROW2 Table[ANY_SIZE]; MIB_IPFORWARD_ROW2 Table[ANY_SIZE];
} MIB_IPFORWARD_TABLE2, *PMIB_IPFORWARD_TABLE2; } MIB_IPFORWARD_TABLE2, *PMIB_IPFORWARD_TABLE2;
typedef typedef
VOID VOID
(NETIOAPI_API_ *PIPFORWARD_CHANGE_CALLBACK) ( (NETIOAPI_API_ *PIPFORWARD_CHANGE_CALLBACK) (
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in_opt PMIB_IPFORWARD_ROW2 Row, _In_opt_ PMIB_IPFORWARD_ROW2 Row,
__in MIB_NOTIFICATION_TYPE NotificationType _In_ MIB_NOTIFICATION_TYPE NotificationType
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
CreateIpForwardEntry2( CreateIpForwardEntry2(
__in CONST MIB_IPFORWARD_ROW2 *Row _In_ CONST MIB_IPFORWARD_ROW2 *Row
); );
/*++ /*++
Routine Description: Routine Description:
Create a route on the local computer. Create a route on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IPFORWARD_ROW2 structure. Row - Supplies a MIB_IPFORWARD_ROW2 structure.
skipping to change at line 1262 skipping to change at line 1306
fields it wishes to modify and invoke CreateIpForwardEntry2. fields it wishes to modify and invoke CreateIpForwardEntry2.
On input, the following key fields of Row must be initialized after On input, the following key fields of Row must be initialized after
invoking InitializeIpForwardEntry: invoking InitializeIpForwardEntry:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. DestinationPrefix. 2. DestinationPrefix.
3. NextHop. 3. NextHop.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
DeleteIpForwardEntry2( DeleteIpForwardEntry2(
__in CONST MIB_IPFORWARD_ROW2 *Row _In_ CONST MIB_IPFORWARD_ROW2 *Row
); );
/*++ /*++
Routine Description: Routine Description:
Delete a route on the local computer. Delete a route on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IPFORWARD_ROW2 structure. Row - Supplies a MIB_IPFORWARD_ROW2 structure.
skipping to change at line 1293 skipping to change at line 1337
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. DestinationPrefix. 2. DestinationPrefix.
3. NextHop. 3. NextHop.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetBestRoute2( GetBestRoute2(
__in_opt NET_LUID *InterfaceLuid, _In_opt_ NET_LUID *InterfaceLuid,
__in NET_IFINDEX InterfaceIndex, _In_ NET_IFINDEX InterfaceIndex,
__in_opt CONST SOCKADDR_INET *SourceAddress, _In_opt_ CONST SOCKADDR_INET *SourceAddress,
__in CONST SOCKADDR_INET *DestinationAddress, _In_ CONST SOCKADDR_INET *DestinationAddress,
__in ULONG AddressSortOptions, _In_ ULONG AddressSortOptions,
__out PMIB_IPFORWARD_ROW2 BestRoute, _Out_ PMIB_IPFORWARD_ROW2 BestRoute,
__out SOCKADDR_INET *BestSourceAddress _Out_ SOCKADDR_INET *BestSourceAddress
); );
/*++ /*++
Routine Description: Routine Description:
Retrieve the best route between source and destination address on a local Retrieve the best route between source and destination address on a local
computer. computer.
Arguments: Arguments:
skipping to change at line 1343 skipping to change at line 1387
Notes: Notes:
On input, the following parameters must be supplied: On input, the following parameters must be supplied:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. SourceAddress. 2. SourceAddress.
3. DestinationAddress. 3. DestinationAddress.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpForwardEntry2( GetIpForwardEntry2(
__inout PMIB_IPFORWARD_ROW2 Row _Inout_ PMIB_IPFORWARD_ROW2 Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified route entry on the local computer. Retrieves information for the specified route entry on the local computer.
Arguments: Arguments:
Route - Supplies a MIB_IPFORWARD_ROW2 structure. Route - Supplies a MIB_IPFORWARD_ROW2 structure.
skipping to change at line 1378 skipping to change at line 1422
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. DestinationPrefix and NextHop can be specified. 2. DestinationPrefix and NextHop can be specified.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
If one or more routes matches the specified criteria, If one or more routes matches the specified criteria,
this API matches the first entry. this API matches the first entry.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpForwardTable2( GetIpForwardTable2(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_IPFORWARD_TABLE2 *Table _Outptr_ PMIB_IPFORWARD_TABLE2 *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the route table on a local computer. Retrieves the route table on a local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1416 skipping to change at line 1460
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
The API allocates the buffer for Table. Use FreeMibTable to free it. The API allocates the buffer for Table. Use FreeMibTable to free it.
--*/ --*/
_IRQL_requires_max_(PASSIVE_LEVEL)
VOID VOID
__drv_maxIRQL(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
InitializeIpForwardEntry( InitializeIpForwardEntry(
__out PMIB_IPFORWARD_ROW2 Row _Out_ PMIB_IPFORWARD_ROW2 Row
); );
/*++ /*++
Routine Description: Routine Description:
Initialize the MIB_IPFORWARD_ROW2 entry for use in SetIpForwardEntry2. Initialize the MIB_IPFORWARD_ROW2 entry for use in SetIpForwardEntry2.
Arguments: Arguments:
Row - Returns an initialized PMIB_IPFORWARD_ROW2 structure. Row - Returns an initialized PMIB_IPFORWARD_ROW2 structure.
skipping to change at line 1444 skipping to change at line 1488
None. None.
Notes: Notes:
InitializeIpForwardEntry must be used to initialize the fields of InitializeIpForwardEntry must be used to initialize the fields of
MIB_IPFORWARD_ROW2 with default values. The caller can then update the MIB_IPFORWARD_ROW2 with default values. The caller can then update the
fields it wishes to modify and invoke SetIpForwardEntry2. fields it wishes to modify and invoke SetIpForwardEntry2.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
NotifyRouteChange2( NotifyRouteChange2(
__in ADDRESS_FAMILY AddressFamily, _In_ ADDRESS_FAMILY AddressFamily,
__in PIPFORWARD_CHANGE_CALLBACK Callback, _In_ PIPFORWARD_CHANGE_CALLBACK Callback,
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in BOOLEAN InitialNotification, _In_ BOOLEAN InitialNotification,
__inout HANDLE *NotificationHandle _Inout_ HANDLE *NotificationHandle
); );
/*++ /*++
Routine Description: Routine Description:
Register for notification for route changes. Register for notification for route changes.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1495 skipping to change at line 1539
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
1. Invokation of the callback function is serialized. 1. Invokation of the callback function is serialized.
2. Use CancelMibChangeNotify2 to deregister for change notifications. 2. Use CancelMibChangeNotify2 to deregister for change notifications.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
SetIpForwardEntry2( SetIpForwardEntry2(
__in CONST MIB_IPFORWARD_ROW2 *Route _In_ CONST MIB_IPFORWARD_ROW2 *Route
); );
/*++ /*++
Routine Description: Routine Description:
Set the properties of a route entry. Set the properties of a route entry.
Arguments: Arguments:
Route - Supplies a MIB_UNICASTIPADDRESS_ROW structure. Route - Supplies a MIB_UNICASTIPADDRESS_ROW structure.
skipping to change at line 1586 skipping to change at line 1630
ULONG64 LinkTransmitSpeed; ULONG64 LinkTransmitSpeed;
ULONG64 LinkReceiveSpeed; ULONG64 LinkReceiveSpeed;
} MIB_IPPATH_ROW, *PMIB_IPPATH_ROW; } MIB_IPPATH_ROW, *PMIB_IPPATH_ROW;
typedef struct _MIB_IPPATH_TABLE { typedef struct _MIB_IPPATH_TABLE {
ULONG NumEntries; ULONG NumEntries;
MIB_IPPATH_ROW Table[ANY_SIZE]; MIB_IPPATH_ROW Table[ANY_SIZE];
} MIB_IPPATH_TABLE, *PMIB_IPPATH_TABLE; } MIB_IPPATH_TABLE, *PMIB_IPPATH_TABLE;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
FlushIpPathTable( FlushIpPathTable(
__in ADDRESS_FAMILY Family _In_ ADDRESS_FAMILY Family
); );
/*++ /*++
Routine Description: Routine Description:
Flush the IP Path table on the local computer. Flush the IP Path table on the local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1616 skipping to change at line 1660
AF_UNSPEC: Flush both IPv4 and IPv6 path table. AF_UNSPEC: Flush both IPv4 and IPv6 path table.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpPathEntry( GetIpPathEntry(
__inout PMIB_IPPATH_ROW Row _Inout_ PMIB_IPPATH_ROW Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified path entry on the local computer. Retrieves information for the specified path entry on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IPPATH_ROW structure. Row - Supplies a MIB_IPPATH_ROW structure.
skipping to change at line 1649 skipping to change at line 1693
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. Source. 2. Source.
3. Destination. 3. Destination.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpPathTable( GetIpPathTable(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_IPPATH_TABLE *Table _Outptr_ PMIB_IPPATH_TABLE *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the path table on a local computer. Retrieves the path table on a local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1729 skipping to change at line 1773
ULONG LastReachable; ULONG LastReachable;
ULONG LastUnreachable; ULONG LastUnreachable;
} ReachabilityTime; } ReachabilityTime;
} MIB_IPNET_ROW2, *PMIB_IPNET_ROW2; } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;
typedef struct _MIB_IPNET_TABLE2 { typedef struct _MIB_IPNET_TABLE2 {
ULONG NumEntries; ULONG NumEntries;
MIB_IPNET_ROW2 Table[ANY_SIZE]; MIB_IPNET_ROW2 Table[ANY_SIZE];
} MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2; } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2;
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
CreateIpNetEntry2( CreateIpNetEntry2(
__in CONST MIB_IPNET_ROW2 *Row _In_ CONST MIB_IPNET_ROW2 *Row
); );
/*++ /*++
Routine Description: Routine Description:
Create a neighbor entry on the local computer. Create a neighbor entry on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IPNET_ROW2 structure. Row - Supplies a MIB_IPNET_ROW2 structure.
skipping to change at line 1760 skipping to change at line 1804
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. Address. 2. Address.
3. PhysicalAddress. 3. PhysicalAddress.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
DeleteIpNetEntry2( DeleteIpNetEntry2(
__in CONST MIB_IPNET_ROW2 *Row _In_ CONST MIB_IPNET_ROW2 *Row
); );
/*++ /*++
Routine Description: Routine Description:
Delete a neighbor entry on the local computer. Delete a neighbor entry on the local computer.
Arguments: Arguments:
Row - Supplies a MIB_IPNET_ROW2 structure. Row - Supplies a MIB_IPNET_ROW2 structure.
skipping to change at line 1790 skipping to change at line 1834
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. Address. 2. Address.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
FlushIpNetTable2( FlushIpNetTable2(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__in NET_IFINDEX InterfaceIndex _In_ NET_IFINDEX InterfaceIndex
); );
/*++ /*++
Routine Description: Routine Description:
Flush the neighbor entry table on the local computer. Flush the neighbor entry table on the local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1825 skipping to change at line 1869
neighbor entries on all the interfaces. neighbor entries on all the interfaces.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpNetEntry2( GetIpNetEntry2(
__inout PMIB_IPNET_ROW2 Row _Inout_ PMIB_IPNET_ROW2 Row
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves information for the specified neighbor entry on the local Retrieves information for the specified neighbor entry on the local
computer. computer.
Arguments: Arguments:
skipping to change at line 1858 skipping to change at line 1902
Notes: Notes:
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. Address. 2. Address.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetIpNetTable2( GetIpNetTable2(
__in ADDRESS_FAMILY Family, _In_ ADDRESS_FAMILY Family,
__deref_out PMIB_IPNET_TABLE2 *Table _Outptr_ PMIB_IPNET_TABLE2 *Table
); );
/*++ /*++
Routine Description: Routine Description:
Retrieves the neighbor table on the local computer. Retrieves the neighbor table on the local computer.
Arguments: Arguments:
Family - Supplies the address family. Family - Supplies the address family.
skipping to change at line 1896 skipping to change at line 1940
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
Notes: Notes:
The API allocates the buffer for Table. Use FreeMibTable to free it. The API allocates the buffer for Table. Use FreeMibTable to free it.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ResolveIpNetEntry2( ResolveIpNetEntry2(
__inout PMIB_IPNET_ROW2 Row, _Inout_ PMIB_IPNET_ROW2 Row,
__in_opt CONST SOCKADDR_INET *SourceAddress _In_opt_ CONST SOCKADDR_INET *SourceAddress
); );
/*++ /*++
Routine Description: Routine Description:
Resolve the physical address of a specific neighbor. Resolve the physical address of a specific neighbor.
Arguments: Arguments:
NetEntry - Supplies a MIB_IPNET_ROW2 structure. NetEntry - Supplies a MIB_IPNET_ROW2 structure.
skipping to change at line 1936 skipping to change at line 1980
best interface to send the request on. best interface to send the request on.
On input, the following key fields of Row must be initialized: On input, the following key fields of Row must be initialized:
1. At least one of InterfaceLuid or InterfaceIndex must be specified. 1. At least one of InterfaceLuid or InterfaceIndex must be specified.
2. Address. 2. Address.
On output, the remaining fields of Row are filled in. On output, the remaining fields of Row are filled in.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
SetIpNetEntry2( SetIpNetEntry2(
__in PMIB_IPNET_ROW2 Row _In_ PMIB_IPNET_ROW2 Row
); );
/*++ /*++
Routine Description: Routine Description:
Set the physical address of a neighbor entry. Set the physical address of a neighbor entry.
Arguments: Arguments:
NetEntry - Supplies a MIB_IPNET_ROW2 structure. NetEntry - Supplies a MIB_IPNET_ROW2 structure.
skipping to change at line 1975 skipping to change at line 2019
--*/ --*/
// //
// Teredo APIs. // Teredo APIs.
// //
#define MIB_INVALID_TEREDO_PORT_NUMBER 0 #define MIB_INVALID_TEREDO_PORT_NUMBER 0
typedef typedef
VOID VOID
(NETIOAPI_API_ *PTEREDO_PORT_CHANGE_CALLBACK) ( (NETIOAPI_API_ *PTEREDO_PORT_CHANGE_CALLBACK) (
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in USHORT Port, _In_ USHORT Port,
__inout MIB_NOTIFICATION_TYPE NotificationType _Inout_ MIB_NOTIFICATION_TYPE NotificationType
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
NotifyTeredoPortChange( NotifyTeredoPortChange(
__in PTEREDO_PORT_CHANGE_CALLBACK Callback, _In_ PTEREDO_PORT_CHANGE_CALLBACK Callback,
__in PVOID CallerContext, _In_ PVOID CallerContext,
__in BOOLEAN InitialNotification, _In_ BOOLEAN InitialNotification,
__inout HANDLE *NotificationHandle _Inout_ HANDLE *NotificationHandle
); );
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
GetTeredoPort( GetTeredoPort(
__out USHORT *Port _Out_ USHORT *Port
); );
/*++ /*++
Routine Description: Routine Description:
Get the Teredo client port. Get the Teredo client port.
Arguments: Arguments:
Port - returns the Teredo port. Port - returns the Teredo port.
skipping to change at line 2030 skipping to change at line 2074
#pragma deprecated(NotifyTeredoPortChange) #pragma deprecated(NotifyTeredoPortChange)
#pragma deprecated(GetTeredoPort) #pragma deprecated(GetTeredoPort)
#endif // TEREDO_API_NO_DEPRECATE #endif // TEREDO_API_NO_DEPRECATE
// //
// Generic (not IP-specific) interface definitions. // Generic (not IP-specific) interface definitions.
// //
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API NETIOAPI_API
CancelMibChangeNotify2( CancelMibChangeNotify2(
__in HANDLE NotificationHandle _In_ HANDLE NotificationHandle
); );
/*++ /*++
Routine Description: Routine Description:
Deregister for change notifications. Deregister for change notifications.
Arguments: Arguments:
NotificationHandle - Supplies the handle returned from a notification NotificationHandle - Supplies the handle returned from a notification
skipping to change at line 2061 skipping to change at line 2105
Notes: Notes:
Blocks until all callback have returned. Blocks until all callback have returned.
--*/ --*/
VOID VOID
NETIOAPI_API_ NETIOAPI_API_
FreeMibTable( FreeMibTable(
__in PVOID Memory _In_ PVOID Memory
); );
/*++ /*++
Routine Description: Routine Description:
Free the buffer allocated by Get*Table APIs. Free the buffer allocated by Get*Table APIs.
Arguments: Arguments:
Memory - Supplies the buffer to free. Memory - Supplies the buffer to free.
Return Value: Return Value:
None. None.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
CreateSortedAddressPairs( CreateSortedAddressPairs(
__in_opt const PSOCKADDR_IN6 SourceAddressList, _In_opt_ const PSOCKADDR_IN6 SourceAddressList,
__in ULONG SourceAddressCount, _In_ ULONG SourceAddressCount,
__in const PSOCKADDR_IN6 DestinationAddressList, _In_ const PSOCKADDR_IN6 DestinationAddressList,
__in ULONG DestinationAddressCount, _In_ ULONG DestinationAddressCount,
__in ULONG AddressSortOptions, _In_ ULONG AddressSortOptions,
__in PSOCKADDR_IN6_PAIR *SortedAddressPairList, _Outptr_result_buffer_(*SortedAddressPairCount)
__out ULONG *SortedAddressPairCount PSOCKADDR_IN6_PAIR *SortedAddressPairList,
_Out_ ULONG *SortedAddressPairCount
); );
/*++ /*++
Routine Description: Routine Description:
Given a list of source and destination addresses, returns a list of Given a list of source and destination addresses, returns a list of
pairs of addresses in sorted order. The list is sorted by which address pairs of addresses in sorted order. The list is sorted by which address
pair is best suited for communication between two peers. pair is best suited for communication between two peers.
The list of source addresses is optional, in which case the function The list of source addresses is optional, in which case the function
skipping to change at line 2136 skipping to change at line 2181
SortedAddressPairList. SortedAddressPairList.
Return Value: Return Value:
ERROR_SUCCESS on success. WIN32 error code on error. ERROR_SUCCESS on success. WIN32 error code on error.
--*/ --*/
#endif //_WS2IPDEF_ #endif //_WS2IPDEF_
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API
ConvertCompartmentGuidToId(
_In_ CONST GUID *CompartmentGuid,
_Out_ PNET_IF_COMPARTMENT_ID CompartmentId
);
/*++
Routine Description:
Converts a compartment GUID to a compartment ID.
Arguments:
CompartmentGuid - Supplies the compartment GUID.
CompartmentId - Returns the compartment ID.
Return Value:
User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/
_IRQL_requires_max_(PASSIVE_LEVEL)
_NETIOAPI_SUCCESS_
NETIOAPI_API
ConvertCompartmentIdToGuid(
_In_ NET_IF_COMPARTMENT_ID CompartmentId,
_Out_ GUID *CompartmentGuid
);
/*++
Routine Description:
Converts a compartment ID to a compartment GUID.
Arguments:
CompartmentId - Supplies the compartment ID.
CompartmentGuid - Returns the compartment GUID.
Return Value:
User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/
_IRQL_requires_max_(PASSIVE_LEVEL)
_NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceNameToLuidA( ConvertInterfaceNameToLuidA(
__in CONST CHAR *InterfaceName, _In_z_ CONST CHAR *InterfaceName,
__out NET_LUID *InterfaceLuid _Out_ NET_LUID *InterfaceLuid
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Name to Luid. Convert an Interface Name to Luid.
Arguments: Arguments:
InterfaceName - Supplies the interface name to be converted. InterfaceName - Supplies the interface name to be converted.
skipping to change at line 2163 skipping to change at line 2262
InterfaceLuid - Returns the interface Luid. InterfaceLuid - Returns the interface Luid.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceNameToLuidW( ConvertInterfaceNameToLuidW(
__in CONST WCHAR *InterfaceName, _In_z_ CONST WCHAR *InterfaceName,
__out NET_LUID *InterfaceLuid _Out_ NET_LUID *InterfaceLuid
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Name to Luid. Convert an Interface Name to Luid.
Arguments: Arguments:
InterfaceName - Supplies the interface name to be converted. InterfaceName - Supplies the interface name to be converted.
skipping to change at line 2190 skipping to change at line 2289
InterfaceLuid - Returns the interface Luid. InterfaceLuid - Returns the interface Luid.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceLuidToNameA( ConvertInterfaceLuidToNameA(
__in CONST NET_LUID *InterfaceLuid, _In_ CONST NET_LUID *InterfaceLuid,
__out_ecount(Length) PSTR InterfaceName, _Out_writes_(Length) PSTR InterfaceName,
__in SIZE_T Length _In_ SIZE_T Length
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Luid to Name. Convert an Interface Luid to Name.
Arguments: Arguments:
InterfaceLuid - Supplies the interface Luid to be converted. InterfaceLuid - Supplies the interface Luid to be converted.
skipping to change at line 2220 skipping to change at line 2319
Lenght - Supplies the length of the InterfaceName buffer. Lenght - Supplies the length of the InterfaceName buffer.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceLuidToNameW( ConvertInterfaceLuidToNameW(
__in CONST NET_LUID *InterfaceLuid, _In_ CONST NET_LUID *InterfaceLuid,
__out_ecount(Length) PWSTR InterfaceName, _Out_writes_(Length) PWSTR InterfaceName,
__in SIZE_T Length _In_ SIZE_T Length
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Luid to Name. Convert an Interface Luid to Name.
Arguments: Arguments:
InterfaceLuid - Supplies the interface Luid to be converted. InterfaceLuid - Supplies the interface Luid to be converted.
skipping to change at line 2250 skipping to change at line 2349
Length - Supplies the length of the InterfaceName buffer. Length - Supplies the length of the InterfaceName buffer.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceLuidToIndex( ConvertInterfaceLuidToIndex(
__in CONST NET_LUID *InterfaceLuid, _In_ CONST NET_LUID *InterfaceLuid,
__out PNET_IFINDEX InterfaceIndex _Out_ PNET_IFINDEX InterfaceIndex
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Luid to Index. Convert an Interface Luid to Index.
Arguments: Arguments:
InterfaceLuid - Supplies the interface Luid to be converted. InterfaceLuid - Supplies the interface Luid to be converted.
skipping to change at line 2277 skipping to change at line 2376
InterfaceName - Returns the interface Index. InterfaceName - Returns the interface Index.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceIndexToLuid( ConvertInterfaceIndexToLuid(
__in NET_IFINDEX InterfaceIndex, _In_ NET_IFINDEX InterfaceIndex,
__out PNET_LUID InterfaceLuid _Out_ PNET_LUID InterfaceLuid
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Index to Luid. Convert an Interface Index to Luid.
Arguments: Arguments:
InterfaceName - Supplies the interface Index to be converted. InterfaceName - Supplies the interface Index to be converted.
skipping to change at line 2304 skipping to change at line 2403
InterfaceLuid - Returns the interface Luid. InterfaceLuid - Returns the interface Luid.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceLuidToAlias( ConvertInterfaceLuidToAlias(
__in CONST NET_LUID *InterfaceLuid, _In_ CONST NET_LUID *InterfaceLuid,
__out_ecount(Length) PWSTR InterfaceAlias, _Out_writes_(Length) PWSTR InterfaceAlias,
__in SIZE_T Length _In_ SIZE_T Length
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Luid to Alias. Convert an Interface Luid to Alias.
Arguments: Arguments:
InterfaceLuid - Supplies the interface Luid to be converted. InterfaceLuid - Supplies the interface Luid to be converted.
skipping to change at line 2334 skipping to change at line 2433
Length - Supplies the length of InterfaceAlias buffer. Length - Supplies the length of InterfaceAlias buffer.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceAliasToLuid( ConvertInterfaceAliasToLuid(
IN CONST WCHAR *InterfaceAlias, _In_z_ CONST WCHAR *InterfaceAlias,
OUT PNET_LUID InterfaceLuid _Out_ PNET_LUID InterfaceLuid
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Alias to Luid. Convert an Interface Alias to Luid.
Arguments: Arguments:
InterfaceAlias - Supplies the null terminated interface Alias. InterfaceAlias - Supplies the null terminated interface Alias.
skipping to change at line 2361 skipping to change at line 2460
InterfaceLuid - Returns the interface Luid. InterfaceLuid - Returns the interface Luid.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceLuidToGuid( ConvertInterfaceLuidToGuid(
__in CONST NET_LUID *InterfaceLuid, _In_ CONST NET_LUID *InterfaceLuid,
__out GUID *InterfaceGuid _Out_ GUID *InterfaceGuid
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Luid to Guid. Convert an Interface Luid to Guid.
Arguments: Arguments:
InterfaceLuid - Supplies the interface Luid to be converted. InterfaceLuid - Supplies the interface Luid to be converted.
skipping to change at line 2388 skipping to change at line 2487
InterfaceGuid - Returns the interface Guid. InterfaceGuid - Returns the interface Guid.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
__success(return==STATUS_SUCCESS) _NETIOAPI_SUCCESS_
NETIOAPI_API NETIOAPI_API
ConvertInterfaceGuidToLuid( ConvertInterfaceGuidToLuid(
__in CONST GUID *InterfaceGuid, _In_ CONST GUID *InterfaceGuid,
__out PNET_LUID InterfaceLuid _Out_ PNET_LUID InterfaceLuid
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface Luid to Guid. Convert an Interface Luid to Guid.
Arguments: Arguments:
InterfaceGuid - Supplies the interface Guid to be converted. InterfaceGuid - Supplies the interface Guid to be converted.
skipping to change at line 2418 skipping to change at line 2517
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
#define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE #define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE
NET_IFINDEX NET_IFINDEX
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
if_nametoindex( if_nametoindex(
__in PCSTR InterfaceName _In_ PCSTR InterfaceName
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface name to Index. Convert an Interface name to Index.
Arguments: Arguments:
InterfaceName - Supplies the null terminated interface name to convert. InterfaceName - Supplies the null terminated interface name to convert.
Return Value: Return Value:
Interface index on success, 0 otherwise. Interface index on success, 0 otherwise.
--*/ --*/
PCHAR PCHAR
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
if_indextoname( if_indextoname(
__in NET_IFINDEX InterfaceIndex, _In_ NET_IFINDEX InterfaceIndex,
__out_ecount(IF_NAMESIZE) PCHAR InterfaceName _Out_writes_(IF_NAMESIZE) PCHAR InterfaceName
); );
/*++ /*++
Routine Description: Routine Description:
Convert an Interface index to Name. Convert an Interface index to Name.
Arguments: Arguments:
InterfaceIndex - Supplies the Interface index to convert. InterfaceIndex - Supplies the Interface index to convert.
skipping to change at line 2470 skipping to change at line 2569
Interface name on success, NULL otherwise. Interface name on success, NULL otherwise.
Notes: Notes:
The length of InterfaceName buffer must be equal to or greater than The length of InterfaceName buffer must be equal to or greater than
IF_NAMESIZE. IF_NAMESIZE.
--*/ --*/
NET_IF_COMPARTMENT_ID NET_IF_COMPARTMENT_ID
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
GetCurrentThreadCompartmentId( GetCurrentThreadCompartmentId(
VOID VOID
); );
/*++ /*++
Routine Description: Routine Description:
Get the compartment ID of current thread. Get the compartment ID of current thread.
Arguments: Arguments:
None. None.
Return Value: Return Value:
The compartment ID of current thread. The compartment ID of current thread.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API NETIOAPI_API
SetCurrentThreadCompartmentId( SetCurrentThreadCompartmentId(
__in NET_IF_COMPARTMENT_ID CompartmentId _In_ NET_IF_COMPARTMENT_ID CompartmentId
); );
/*++ /*++
Routine Description: Routine Description:
Set the compartment ID of current thread. Set the compartment ID of current thread.
Arguments: Arguments:
CompartmentId - Supplies the compartment ID to be set. CompartmentId - Supplies the compartment ID to be set.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
NET_IF_COMPARTMENT_ID NET_IF_COMPARTMENT_ID
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API_ NETIOAPI_API_
GetSessionCompartmentId( GetSessionCompartmentId(
__in ULONG SessionId _In_ ULONG SessionId
); );
/*++ /*++
Routine Description: Routine Description:
Get the compartment ID of the session. Get the compartment ID of the session.
Arguments: Arguments:
SessionId - Supplies the session ID. SessionId - Supplies the session ID.
Return Value: Return Value:
The compartment ID of the session. The compartment ID of the session.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API NETIOAPI_API
SetSessionCompartmentId( SetSessionCompartmentId(
__in ULONG SessionId, _In_ ULONG SessionId,
__in NET_IF_COMPARTMENT_ID CompartmentId _In_ NET_IF_COMPARTMENT_ID CompartmentId
); );
/*++ /*++
Routine Description: Routine Description:
Set the compartment ID of the session. Set the compartment ID of the session.
Arguments: Arguments:
SessionId - Supplies the session ID. SessionId - Supplies the session ID.
skipping to change at line 2562 skipping to change at line 2661
CompartmentId - Supplies the compartment ID to be set. CompartmentId - Supplies the compartment ID to be set.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API NETIOAPI_API
GetNetworkInformation( GetNetworkInformation(
__in CONST NET_IF_NETWORK_GUID *NetworkGuid, _In_ CONST NET_IF_NETWORK_GUID *NetworkGuid,
__out PNET_IF_COMPARTMENT_ID CompartmentId, _Out_ PNET_IF_COMPARTMENT_ID CompartmentId,
__out PULONG SiteId, _Out_ PULONG SiteId,
__out_ecount(Length) PWCHAR NetworkName, _Out_writes_(Length) PWCHAR NetworkName,
__in ULONG Length _In_ ULONG Length
); );
/*++ /*++
Routine Description: Routine Description:
Get the network information. Get the network information.
Arguments: Arguments:
NetworkGuid - Supplies the Network GUID. NetworkGuid - Supplies the Network GUID.
skipping to change at line 2597 skipping to change at line 2696
Length - Supplies the length of NetworkName buffer. Length - Supplies the length of NetworkName buffer.
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
__drv_maxIRQL(PASSIVE_LEVEL) _IRQL_requires_max_(PASSIVE_LEVEL)
NETIOAPI_API NETIOAPI_API
SetNetworkInformation( SetNetworkInformation(
__in CONST NET_IF_NETWORK_GUID *NetworkGuid, _In_ CONST NET_IF_NETWORK_GUID *NetworkGuid,
__in NET_IF_COMPARTMENT_ID CompartmentId, _In_ NET_IF_COMPARTMENT_ID CompartmentId,
__in CONST WCHAR *NetworkName _In_z_ CONST WCHAR *NetworkName
); );
/*++ /*++
Routine Description: Routine Description:
Set the Network Information. Set the Network Information.
Arguments: Arguments:
NetworkGuid - Supplies the session ID. NetworkGuid - Supplies the session ID.
skipping to change at line 2630 skipping to change at line 2729
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
#pragma warning(pop) #pragma warning(pop)
NETIOAPI_API NETIOAPI_API
ConvertLengthToIpv4Mask( ConvertLengthToIpv4Mask(
__in ULONG MaskLength, _In_ ULONG MaskLength,
__out PULONG Mask _Out_ PULONG Mask
); );
/*++ /*++
Routine Description: Routine Description:
Converts a prefixLength to a subnet mask. Converts a prefixLength to a subnet mask.
Arguments: Arguments:
MaskLength - Prefix Length. MaskLength - Prefix Length.
skipping to change at line 2655 skipping to change at line 2754
Return Value: Return Value:
User-Mode: NO_ERROR on success, error code on failure. User-Mode: NO_ERROR on success, error code on failure.
Kernel-Mode: STATUS_SUCCESS on success, error code on failure. Kernel-Mode: STATUS_SUCCESS on success, error code on failure.
--*/ --*/
NETIOAPI_API NETIOAPI_API
ConvertIpv4MaskToLength( ConvertIpv4MaskToLength(
__in ULONG Mask, _In_ ULONG Mask,
__out PUINT8 MaskLength _Out_ PUINT8 MaskLength
); );
/*++ /*++
Routine Description: Routine Description:
Converts a subnet mask to a prefix length. Converts a subnet mask to a prefix length.
Arguments: Arguments:
Mask - Subnet mask to use. Mask - Subnet mask to use.
skipping to change at line 2685 skipping to change at line 2784
--*/ --*/
// //
//4201. //4201.
// //
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // _NETIOAPI_H_. #endif // _NETIOAPI_H_.
 End of changes. 144 change blocks. 
262 lines changed or deleted 364 lines changed or added

This html diff was produced by rfcdiff 1.41.