diff --git a/PInvoke/NetListMgr/NetListMgr.cs b/PInvoke/NetListMgr/NetListMgr.cs
index bc01c3a6..84beea7d 100644
--- a/PInvoke/NetListMgr/NetListMgr.cs
+++ b/PInvoke/NetListMgr/NetListMgr.cs
@@ -485,13 +485,79 @@ namespace Vanara.PInvoke.NetListMgr
void GetDataPlanStatus(out NLM_DATAPLAN_STATUS pDataPlanStatus, [In, Optional] NLM_SOCKADDR pDestIPAddr);
///
- /// The SetDestinationAddresses method registers specified destination IPv4/IPv6 addresses to receive cost or data plan status change notifications.
+ /// The SetDestinationAddresses method registers specified destination IPv4/IPv6 addresses to receive cost or data plan
+ /// status change notifications.
///
/// The number of destination IPv4/IPv6 addresses in the list.
///
- /// A structure containing a list of destination IPv4/IPv6 addresses to register for cost or data plan status change notification.
+ /// A NLM_SOCKADDR structure containing a list of destination IPv4/IPv6 addresses to register for cost or data plan status change notification.
///
- /// If true, pDestIPAddrList will be appended to the existing address list; otherwise the existing list will be overwritten.
+ ///
+ /// If true, pDestIPAddrList will be appended to the existing address list; otherwise the existing list will be overwritten.
+ ///
+ ///
+ /// Returns S_OK on success, otherwise an HRESULT error code is returned.
+ ///
+ ///
+ /// Return code
+ /// Description
+ ///
+ /// -
+ /// E_INVALIDARG
+ ///
+ /// Returned if one of the following occurs:
+ ///
+ /// -
+ /// length is 0.
+ ///
+ /// -
+ /// length is larger than NLM_MAX_ADDRESS_LIST_SIZE(10)
+ ///
+ /// -
+ ///
+ /// bAppend is VARIANT_TRUE, but including the number of subscribed destinations in the existing list with the value of length
+ /// exceeds NLM_MAX_ADDRESS_SIZE.
+ ///
+ ///
+ /// -
+ /// A destination address in the supplied list is invalid.
+ ///
+ ///
+ ///
+ ///
+ /// -
+ /// E_POINTER
+ /// destIPAddrList is NULL.
+ ///
+ /// -
+ /// HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
+ ///
+ /// The request is not supported. This error is returned if either an IPv4 or IPv6 stack is not present on the local computer but
+ /// either an IPv4 or IPv6 address was specified bydestIPAddr.
+ ///
+ ///
+ /// -
+ /// HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
+ ///
+ /// This method was called after registering for INetworkCostManagerEvents by calling IConnectionPoint::Advise. See Remark for more information.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// This method must be called before IConnectionPoint::Advise. Once IConnectionPoint::Advise is called, this method will not
+ /// complete successfully until last sink calls IConnectionPoint::UnAdvise. However, this method can be called multiple times prior
+ /// to the call to IConnectionPoint::Advise.
+ ///
+ ///
+ /// If a list of destination addresses indicated by pDestIPAddrList contains duplicate addresses, only one of each will be used to
+ /// notify cost changes. Callers can clear a list of destinations by calling this function with length set to 0, destIPAddrList set
+ /// NULL, and bAppend set FALSE.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows/win32/api/netlistmgr/nf-netlistmgr-inetworkcostmanager-setdestinationaddresses
+ // HRESULT SetDestinationAddresses( UINT32 length, NLM_SOCKADDR *pDestIPAddrList, VARIANT_BOOL bAppend );
void SetDestinationAddresses([In] uint length, [In, Optional, MarshalAs(UnmanagedType.LPArray)] NLM_SOCKADDR[] pDestIPAddrList, [In] bool bAppend);
}
@@ -700,6 +766,9 @@ namespace Vanara.PInvoke.NetListMgr
[PInvokeData("Netlistmgr.h", MSDNShortId = "hh448265")]
public struct NLM_DATAPLAN_STATUS
{
+ /// Default value for unavailable field in data plan status structure.
+ public const uint NLM_UNKNOWN_DATAPLAN_STATUS = 0xFFFFFFFF;
+
///
/// The unique ID of the interface associated with the data plan. This GUID is determined by the system when a data plan is first used by a system connection.
///