INetworkCostManager::SetDestinationAddresses 方法 (netlistmgr.h)

SetDestinationAddresses 方法注册指定的目标 IPv4/IPv6 地址,以接收成本或数据计划状态更改通知。

语法

HRESULT SetDestinationAddresses(
  [in] UINT32       length,
  [in] NLM_SOCKADDR *pDestIPAddrList,
       VARIANT_BOOL bAppend
);

参数

[in] length

列表中的目标 IPv4/IPv6 地址数。

[in] pDestIPAddrList

包含目标 IPv4/IPv6 地址列表 的NLM_SOCKADDR 结构,用于注册成本或数据计划状态更改通知。

bAppend

如果为 true, 则 pDestIPAddrList 将追加到现有地址列表;否则,将覆盖现有列表。

返回值

成功时返回S_OK,否则返回 HRESULT 错误代码。

返回代码 说明
E_INVALIDARG
如果发生以下情况之一,则返回 :
  • 长度 为 0。
  • 长度 大于 NLM_MAX_ADDRESS_LIST_SIZE (10)
  • bAppend VARIANT_TRUE,但包含现有列表中 长度 值为 的订阅目标数超过 NLM_MAX_ADDRESS_SIZE。
  • 提供的列表中的目标地址无效。
E_POINTER
destIPAddrList 为 NULL。
HRESULT_FROM_WIN32 (ERROR_NOT_SUPPORTED)
不支持该请求。 如果本地计算机上不存在 IPv4 或 IPv6 堆栈,但 destIPAddr 指定了 IPv4 或 IPv6 地址,则返回此错误。
HRESULT_FROM_WIN32 (ERROR_ALREADY_INITIALIZED)
此方法是在通过调用 IConnectionPoint::Advise 注册 INetworkCostManagerEvents 后调用的。 有关详细信息,请参阅“备注”。

注解

必须在 IConnectionPoint::Advise 之前调用此方法。 调用 IConnectionPoint::Advise 后,此方法在最后一个接收器调用 IConnectionPoint::UnAdvise 之前不会成功完成。 但是,在调用 IConnectionPoint::Advise 之前,可以多次调用此方法。

如果 pDestIPAddrList 指示的目标地址列表包含重复地址,则每个地址中只有一个将用于通知成本更改。 调用方可以通过调用 长度 设置为 0、 destIPAddrList 设置为 NULL 和 bAppend 设置为 FALSE 的函数来清除目标列表。

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 netlistmgr.h

另请参阅

IConnectionPoint::Advise

IConnectionPoint::UnAdvise

INetworkCostManager