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. ///