IUPnPAddressFamilyControl::SetAddressFamily 方法 (upnp.h)

SetAddressFamily 方法设置 Device Finder 对象的地址系列标志,该对象使用此标志筛选找到的设备。

应用程序在开始搜索之前设置地址系列标志。 应用程序将仅收到有关具有指定地址系列 IP 地址的设备通知。

语法

HRESULT SetAddressFamily(
  [in] LONG dwFlags
);

参数

[in] dwFlags

整数 (4 字节值) ,指定设备查找器对象用于筛选找到的设备的地址系列。

以下值有效。

含义
UPNP_ADDRESSFAMILY_IPv4
IPv4 (IP 版本 4)
UPNP_ADDRESSFAMILY_IPv6
IPv6 (IP 版本 6)
UPNP_ADDRESSFAMILY_BOTH
IPv4 和 IPv6

返回值

如果方法成功,则返回值S_OK。 否则,方法将返回 WinError.h 中定义的 COM 错误代码之一。

注解

设置标志

必须在适当的时间设置地址系列标志,以便影响搜索:

筛选找到的设备

方案 1:控制点应用程序将地址系列标志设置为UPNP_ADDRESSFAMILY_IPV4,然后开始搜索:

  • 如果设备查找器发现具有 IPv6 地址的设备,设备查找器不会通知应用程序该设备。 如果同一设备以后获取 IPv4 地址,设备查找器将通知应用程序该设备并提供 IPv4 地址。
  • 如果设备查找器发现具有 IPv4 地址的设备,设备查找器将通知应用程序该设备并提供 IPv4 地址。 如果同一设备后来获取 IPv6 地址,设备查找器不会通知应用程序设备的其他地址。
  • 如果设备查找器发现同时具有 IPv4 和 IPv6 地址的设备,它将通知应用程序该设备,但它将仅提供 IPv4 地址。
  • 如果应用程序已知的设备宣布地址更改,则仅当新地址为 IPv4 地址时,设备查找器才会通知应用程序更改。
  • 如果应用程序已知的设备同时具有 IPv4 和 IPv6 地址,并且设备查找器从设备的 IPv6 地址收到一条告别消息,则即使应用程序仅知道 IPv4 地址,设备查找器也会通知应用程序。 换句话说,如果应用程序已知的设备离开网络,设备查找器将通知应用程序,而不考虑设备的地址。

方案 2:应用程序将地址系列标志设置为UPNP_ADDRESSFAMILY_IPV6,然后开始搜索:

  • 应用场景 1 中所述的一组类似的规则,但适用于相反的地址系列。

方案 3:应用程序将地址系列标志设置为UPNP_ADDRESSFAMILY_BOTH,然后开始搜索:

  • 如果设备查找器发现具有 IPv4 地址或 IPv6 地址的设备,设备查找器将通知应用程序该设备并提供地址。 如果同一设备后来获取了不同地址系列的地址,则设备查找器不会通知应用程序设备的其他地址。
  • 如果设备查找器发现同时具有 IPv4 和 IPv6 地址的设备,它将通知应用程序该设备,但它只提供随机选择的其中一个地址。
  • 如果应用程序已知的设备宣布地址更改,设备查找器将通知应用程序更改。
  • 如果应用程序已知的设备离开网络,设备查找器将通知应用程序。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 upnp.h
DLL Upnp.dll

另请参阅

GetAddressFamily

IUPnPAddressFamilyControl